Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index 827d42c5afa8e3f0dc556b4853e15dcc62568e2f..ba94930faae6820e4e3431b3ed7e8468b68491b8 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -5885,7 +5885,8 @@ |
Address slot_addr = reinterpret_cast<Address>(slot); |
Page* page = Page::FromAddress(slot_addr); |
DCHECK_EQ(page->owner()->identity(), OLD_SPACE); |
- store_buffer()->DeleteEntry(slot_addr); |
+ store_buffer()->MoveAllEntriesToRememberedSet(); |
+ RememberedSet<OLD_TO_NEW>::Remove(page, slot_addr); |
RememberedSet<OLD_TO_OLD>::Remove(page, slot_addr); |
} |
} |
@@ -5906,7 +5907,9 @@ |
Page* page = Page::FromAddress(start); |
if (!page->InNewSpace()) { |
DCHECK_EQ(page->owner()->identity(), OLD_SPACE); |
- store_buffer()->DeleteEntry(start, end); |
+ store_buffer()->MoveAllEntriesToRememberedSet(); |
+ RememberedSet<OLD_TO_NEW>::RemoveRange(page, start, end, |
+ SlotSet::PREFREE_EMPTY_BUCKETS); |
RememberedSet<OLD_TO_OLD>::RemoveRange(page, start, end, |
SlotSet::FREE_EMPTY_BUCKETS); |
} |