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),