Index: src/store-buffer.cc |
diff --git a/src/store-buffer.cc b/src/store-buffer.cc |
index 4ab5c33c8cc439b59033c85c4be1ae5b92c67d49..e4cef27b4a5433d71e934425247767216aebbb02 100644 |
--- a/src/store-buffer.cc |
+++ b/src/store-buffer.cc |
@@ -552,8 +552,21 @@ void StoreBuffer::IteratePointersToNewSpace(ObjectSlotCallback slot_callback, |
FindPointersToNewSpaceInMapsRegion( |
start, end, slot_callback, clear_maps); |
} else { |
- FindPointersToNewSpaceInRegion( |
- start, end, slot_callback, clear_maps); |
+ ASSERT(page->WasSweptPrecisely()); |
+ HeapObjectIterator iterator(page, NULL); |
+ for (HeapObject* heap_object = iterator.Next(); |
+ heap_object != NULL; |
+ heap_object = iterator.Next()) { |
+ // We skip filler, free space, and constant pool objects. |
rmcilroy
2014/07/02 12:39:07
Could you add back the old comment here please:
/
|
+ if (!heap_object->IsFiller() && |
+ !heap_object->IsConstantPoolArray()) { |
+ FindPointersToNewSpaceInRegion( |
+ heap_object->address() + HeapObject::kHeaderSize, |
+ heap_object->address() + heap_object->Size(), |
+ slot_callback, |
+ clear_maps); |
+ } |
+ } |
} |
} |
} |