Index: runtime/vm/object.cc |
=================================================================== |
--- runtime/vm/object.cc (revision 22083) |
+++ runtime/vm/object.cc (working copy) |
@@ -1260,6 +1260,7 @@ |
RawObject* raw_obj = *curr; |
if (raw_obj->IsHeapObject() && raw_obj->IsNewObject()) { |
uword ptr = reinterpret_cast<uword>(old_obj_); |
+ old_obj_->SetRememberedBit(); |
isolate()->store_buffer()->AddPointer(ptr); |
// Remembered this object. There is no need to continue searching. |
return; |
@@ -1291,7 +1292,7 @@ |
RawObject* raw_obj = Object::Allocate(cls.id(), size, space); |
NoGCScope no_gc; |
memmove(raw_obj->ptr(), src.raw()->ptr(), size); |
- if (space == Heap::kOld) { |
+ if ((space == Heap::kOld) && !raw_obj->IsRemembered()) { |
StoreBufferUpdateVisitor visitor(Isolate::Current(), raw_obj); |
raw_obj->VisitPointers(&visitor); |
} |