jitcraft/Array.cpp
changeset 31 0f330cf7e09a
parent 27 28697d267222
child 53 13bd3a8df334
     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 +