Index: runtime/vm/object.h |
=================================================================== |
--- runtime/vm/object.h (revision 22083) |
+++ runtime/vm/object.h (working copy) |
@@ -440,7 +440,9 @@ |
*addr = value; |
// Filter stores based on source and target. |
if (!value->IsHeapObject()) return; |
- if (value->IsNewObject() && raw()->IsOldObject()) { |
+ if (value->IsNewObject() && raw()->IsOldObject() && |
+ !raw()->IsRemembered()) { |
+ raw()->SetRememberedBit(); |
uword ptr = reinterpret_cast<uword>(raw()); |
Isolate::Current()->store_buffer()->AddPointer(ptr); |
} |
@@ -4963,7 +4965,9 @@ |
*addr = value; |
// Filter stores based on source and target. |
if (!value->IsHeapObject()) return; |
- if (value->IsNewObject() && data()->IsOldObject()) { |
+ if (value->IsNewObject() && data()->IsOldObject() && |
+ !data()->IsRemembered()) { |
+ data()->SetRememberedBit(); |
uword ptr = reinterpret_cast<uword>(data()); |
Isolate::Current()->store_buffer()->AddPointer(ptr); |
} |