Index: src/heap/store-buffer.cc |
diff --git a/src/heap/store-buffer.cc b/src/heap/store-buffer.cc |
index 7de8632b2ec71636f08ca6bb6470fbfd0c9f77e1..8613e2f24b995b9ce64a2fc69864099bdec65698 100644 |
--- a/src/heap/store-buffer.cc |
+++ b/src/heap/store-buffer.cc |
@@ -379,8 +379,7 @@ void StoreBuffer::GCEpilogue() { |
void StoreBuffer::ProcessOldToNewSlot(Address slot_address, |
- ObjectSlotCallback slot_callback, |
- bool clear_maps) { |
+ ObjectSlotCallback slot_callback) { |
Object** slot = reinterpret_cast<Object**>(slot_address); |
Object* object = reinterpret_cast<Object*>( |
base::NoBarrier_Load(reinterpret_cast<base::AtomicWord*>(slot))); |
@@ -390,9 +389,6 @@ void StoreBuffer::ProcessOldToNewSlot(Address slot_address, |
if (heap_->InFromSpace(object)) { |
HeapObject* heap_object = reinterpret_cast<HeapObject*>(object); |
DCHECK(heap_object->IsHeapObject()); |
- // The new space object was not promoted if it still contains a map |
- // pointer. Clear the map field now lazily (during full GC). |
- if (clear_maps) ClearDeadObject(heap_object); |
slot_callback(reinterpret_cast<HeapObject**>(slot), heap_object); |
object = reinterpret_cast<Object*>( |
base::NoBarrier_Load(reinterpret_cast<base::AtomicWord*>(slot))); |
@@ -408,17 +404,16 @@ void StoreBuffer::ProcessOldToNewSlot(Address slot_address, |
void StoreBuffer::FindPointersToNewSpaceInRegion( |
- Address start, Address end, ObjectSlotCallback slot_callback, |
- bool clear_maps) { |
+ Address start, Address end, ObjectSlotCallback slot_callback) { |
for (Address slot_address = start; slot_address < end; |
slot_address += kPointerSize) { |
- ProcessOldToNewSlot(slot_address, slot_callback, clear_maps); |
+ ProcessOldToNewSlot(slot_address, slot_callback); |
} |
} |
-void StoreBuffer::IteratePointersInStoreBuffer(ObjectSlotCallback slot_callback, |
- bool clear_maps) { |
+void StoreBuffer::IteratePointersInStoreBuffer( |
+ ObjectSlotCallback slot_callback) { |
Address* limit = old_top_; |
old_top_ = old_start_; |
{ |
@@ -427,7 +422,7 @@ void StoreBuffer::IteratePointersInStoreBuffer(ObjectSlotCallback slot_callback, |
#ifdef DEBUG |
Address* saved_top = old_top_; |
#endif |
- ProcessOldToNewSlot(*current, slot_callback, clear_maps); |
+ ProcessOldToNewSlot(*current, slot_callback); |
DCHECK(old_top_ == saved_top + 1 || old_top_ == saved_top); |
} |
} |
@@ -478,18 +473,6 @@ void StoreBuffer::VerifyValidStoreBufferEntries() { |
void StoreBuffer::IteratePointersToNewSpace(ObjectSlotCallback slot_callback) { |
- IteratePointersToNewSpace(slot_callback, false); |
-} |
- |
- |
-void StoreBuffer::IteratePointersToNewSpaceAndClearMaps( |
- ObjectSlotCallback slot_callback) { |
- IteratePointersToNewSpace(slot_callback, true); |
-} |
- |
- |
-void StoreBuffer::IteratePointersToNewSpace(ObjectSlotCallback slot_callback, |
- bool clear_maps) { |
// We do not sort or remove duplicated entries from the store buffer because |
// we expect that callback will rebuild the store buffer thus removing |
// all duplicates and pointers to old space. |
@@ -498,7 +481,7 @@ void StoreBuffer::IteratePointersToNewSpace(ObjectSlotCallback slot_callback, |
// TODO(gc): we want to skip slots on evacuation candidates |
// but we can't simply figure that out from slot address |
// because slot can belong to a large object. |
- IteratePointersInStoreBuffer(slot_callback, clear_maps); |
+ IteratePointersInStoreBuffer(slot_callback); |
// We are done scanning all the pointers that were in the store buffer, but |
// there may be some pages marked scan_on_scavenge that have pointers to new |
@@ -527,7 +510,7 @@ void StoreBuffer::IteratePointersToNewSpace(ObjectSlotCallback slot_callback, |
DCHECK(array->IsFixedArray()); |
Address start = array->address(); |
Address end = start + array->Size(); |
- FindPointersToNewSpaceInRegion(start, end, slot_callback, clear_maps); |
+ FindPointersToNewSpaceInRegion(start, end, slot_callback); |
} else { |
Page* page = reinterpret_cast<Page*>(chunk); |
PagedSpace* owner = reinterpret_cast<PagedSpace*>(page->owner()); |
@@ -542,7 +525,7 @@ void StoreBuffer::IteratePointersToNewSpace(ObjectSlotCallback slot_callback, |
FindPointersToNewSpaceInRegion( |
heap_object->address() + Map::kPointerFieldsBeginOffset, |
heap_object->address() + Map::kPointerFieldsEndOffset, |
- slot_callback, clear_maps); |
+ slot_callback); |
} |
} |
} else { |
@@ -577,8 +560,7 @@ void StoreBuffer::IteratePointersToNewSpace(ObjectSlotCallback slot_callback, |
&end_of_region_offset)) { |
FindPointersToNewSpaceInRegion( |
obj_address + offset, |
- obj_address + end_of_region_offset, slot_callback, |
- clear_maps); |
+ obj_address + end_of_region_offset, slot_callback); |
} |
offset = end_of_region_offset; |
} |
@@ -588,7 +570,7 @@ void StoreBuffer::IteratePointersToNewSpace(ObjectSlotCallback slot_callback, |
Address end_address = obj_address + end_offset; |
// Object has only tagged fields. |
FindPointersToNewSpaceInRegion(start_address, end_address, |
- slot_callback, clear_maps); |
+ slot_callback); |
#if V8_DOUBLE_FIELDS_UNBOXING |
} |
#endif |