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