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. |