jitcraft/Zone.h
changeset 65 7c942b5adebc
parent 61 864e4b02a4c1
child 69 dfce0539a77d
     1.1 --- a/jitcraft/Zone.h	Sun Jul 08 17:57:44 2012 -0700
     1.2 +++ b/jitcraft/Zone.h	Mon Jul 09 01:22:03 2012 -0700
     1.3 @@ -33,6 +33,7 @@
     1.4  class String;
     1.5  class StringPool;
     1.6  class GlobalRoots;
     1.7 +class ArrayMap;
     1.8  
     1.9  class Zone
    1.10  {
    1.11 @@ -42,6 +43,8 @@
    1.12  
    1.13      // Map cache.
    1.14      Unbarriered<Map> maps_[MapKinds_Total];
    1.15 +    Unbarriered<ArrayMap> genericArrayMap_;
    1.16 +    Unbarriered<ArrayMap> charArrayMap_;
    1.17  
    1.18      TypeManager *types_;
    1.19      StringPool *symbols_;
    1.20 @@ -77,10 +80,17 @@
    1.21          return maps_[kind];
    1.22      }
    1.23      Map *allocateMap(MapKind kind, size_t bytes, MapKind parent = MapKind_Meta);
    1.24 +
    1.25 +    ArrayMap *genericArrayMap() {
    1.26 +        return genericArrayMap_;
    1.27 +    }
    1.28 +    ArrayMap *charArrayMap() {
    1.29 +        return charArrayMap_;
    1.30 +    }
    1.31 +
    1.32      TypeManager *types() const {
    1.33          return types_;
    1.34      }
    1.35 -
    1.36      Local<Object> **lastLocalRoot() {
    1.37          return &lastLocalRoot_;
    1.38      }
    1.39 @@ -112,25 +122,6 @@
    1.40      return SingleThreadedZone;
    1.41  }
    1.42  
    1.43 -class LocalTop
    1.44 -{
    1.45 -    Top &mine_;
    1.46 -    Top *prev_;
    1.47 -
    1.48 -  public:
    1.49 -    LocalTop(Top &mine)
    1.50 -      : mine_(mine),
    1.51 -        prev_(ZONE()->stack().top())
    1.52 -    {
    1.53 -        ZONE()->stack().setTop(&mine_);
    1.54 -    }
    1.55 -
    1.56 -    ~LocalTop()
    1.57 -    {
    1.58 -        ZONE()->stack().setTop(prev_);
    1.59 -    }
    1.60 -};
    1.61 -
    1.62  template <typename T>
    1.63  Local<T>::Local(Zone *zone, T *thing)
    1.64    : zone_(zone),