Chromium Code Reviews| Index: runtime/vm/object.cc |
| =================================================================== |
| --- runtime/vm/object.cc (revision 17155) |
| +++ runtime/vm/object.cc (working copy) |
| @@ -515,7 +515,7 @@ |
| // Make unused space in an object whose type has been transformed safe |
| // for traversing during GC. |
| -// The unused part of the transformed object is marked as an Array |
| +// The unused part of the transformed object is marked as an Int8Array |
| // object or a regular Object so that it can be traversed during garbage |
| // collection. |
| void Object::MakeUnusedSpaceTraversable(const Object& obj, |
| @@ -528,18 +528,17 @@ |
| intptr_t leftover_size = original_size - used_size; |
| uword addr = RawObject::ToAddr(obj.raw()) + used_size; |
|
Ivan Posva
2013/01/16 21:30:06
How about adding
ASSERT(Object::InstanceSize() + k
siva
2013/01/16 21:43:08
Changed code a bit as discussed offline.
ASSERT(ob
|
| - if (leftover_size >= Array::InstanceSize(0)) { |
| - // As we have enough space to use an array object, update the leftover |
| - // space as an Array object. |
| - RawArray* raw = reinterpret_cast<RawArray*>(RawObject::FromAddr(addr)); |
| + if (leftover_size >= Int8Array::InstanceSize(0)) { |
| + // As we have enough space to use an Int8Array object, update the |
| + // leftover space as an Int8Array object. |
| + RawInt8Array* raw = |
| + reinterpret_cast<RawInt8Array*>(RawObject::FromAddr(addr)); |
| uword tags = 0; |
| tags = RawObject::SizeTag::update(leftover_size, tags); |
| - tags = RawObject::ClassIdTag::update(kArrayCid, tags); |
| + tags = RawObject::ClassIdTag::update(kInt8ArrayCid, tags); |
| raw->ptr()->tags_ = tags; |
| - intptr_t leftover_len = |
| - ((leftover_size - Array::InstanceSize(0)) / kWordSize); |
| - ASSERT(Array::InstanceSize(leftover_len) == leftover_size); |
| - raw->ptr()->tags_ = tags; |
| + intptr_t leftover_len = (leftover_size - Int8Array::InstanceSize(0)); |
| + ASSERT(Int8Array::InstanceSize(leftover_len) == leftover_size); |
| raw->ptr()->length_ = Smi::New(leftover_len); |
| } else { |
| // Update the leftover space as a basic object. |