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