Handle-ize Array.
Handle-ize Array.
1.1 --- a/jitcraft/Array.cpp Tue Jul 03 00:25:29 2012 -0700
1.2 +++ b/jitcraft/Array.cpp Tue Jul 03 00:28:21 2012 -0700
1.3 @@ -25,12 +25,11 @@
1.4 ArrayMap *
1.5 ArrayMap::New(Zone *zone, Handle<Type> type, Handle<ArrayMap> contained)
1.6 {
1.7 - // :TODO: use Local
1.8 - Map *obj = zone->allocateMap(MapKind_Array, sizeof(ArrayMap), MapKind_MetaArray);
1.9 + Local<Map> obj(zone, zone->allocateMap(MapKind_Array, sizeof(ArrayMap), MapKind_MetaArray));
1.10 if (!obj)
1.11 return NULL;
1.12
1.13 - ArrayMap *map = ArrayMap::cast(obj);
1.14 + Local<ArrayMap> map(zone, ArrayMap::cast(obj));
1.15 map->type_ = type;
1.16 map->contained_ = contained;
1.17 return map;
1.18 @@ -52,14 +51,13 @@
1.19 Array *
1.20 Array::New(Zone *zone, Handle<ArrayMap> map, uint32 elements, Heap::Tenure tenure)
1.21 {
1.22 - // :TODO: handles
1.23 size_t bytes = SizeFor(map->type(), elements);
1.24 - Object *obj = zone->allocate(map, bytes, tenure);
1.25 - if (!obj)
1.26 + Local<Array> array(zone, Array::cast(zone->allocate(map, bytes, tenure)));
1.27 + if (!array)
1.28 return NULL;
1.29
1.30 - Array *array = Array::cast(obj);
1.31 array->nelements_ = elements;
1.32 - array->elements_ = VoidPtr(array + 1);
1.33 - return Array::cast(obj);
1.34 + array->elements_ = VoidPtr((Array *)array + 1);
1.35 + return array;
1.36 }
1.37 +
2.1 --- a/jitcraft/Array.h Tue Jul 03 00:25:29 2012 -0700
2.2 +++ b/jitcraft/Array.h Tue Jul 03 00:28:21 2012 -0700
2.3 @@ -87,7 +87,7 @@
2.4 }
2.5
2.6 static Array *cast(Object *obj) {
2.7 - assert(obj->is(MapKind_Array));
2.8 + assert(!obj || obj->is(MapKind_Array));
2.9 return reinterpret_cast<Array *>(obj);
2.10 }
2.11 };