src/ObjectVisitor.h
changeset 188 bab29bcec7fe
parent 168 4d0fff61d65e
child 195 c1ba166f3fc4
     1.1 --- a/src/ObjectVisitor.h	Sun Sep 16 19:02:23 2012 -0700
     1.2 +++ b/src/ObjectVisitor.h	Sun Sep 16 21:34:10 2012 -0700
     1.3 @@ -117,14 +117,9 @@
     1.4      }
     1.5  
     1.6      size_t iterateArray(Array *array, ArrayMap *map) {
     1.7 -        assert(map->type()->isArray());
     1.8 -        if (map->type()->contained()->isTraceable()) {
     1.9 -            unsigned length = array->length();
    1.10 -            Object **vec = array->objVec();
    1.11 -            for (unsigned i = 0; i < length; i++)
    1.12 -                this->visit(vec + i);
    1.13 -        }
    1.14 -        return Array::SizeOf(array);
    1.15 +        if (!map->type()->fixedLength() || map->type()->contained()->isTraceable())
    1.16 +            visitField(array, Array::offsetOfElements());
    1.17 +        return array->objSize(map);
    1.18      }
    1.19  
    1.20      size_t iterateBox(Box *obj) {
    1.21 @@ -289,7 +284,7 @@
    1.22          return sizeof(Native);
    1.23  
    1.24        case MapKind_Array:
    1.25 -        return Align(Array::SizeOf(Array::cast(obj)), kObjectAlignment);
    1.26 +        return Align(Array::cast(obj)->objSize(ArrayMap::cast(map)), kObjectAlignment);
    1.27  
    1.28        case MapKind_Box:
    1.29          return sizeof(Box);