Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index 489b92aca987fd251128e262404e03baafbeaa41..b4fafec10939aea23ddd4bc2aada41fee52eced9 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -4558,14 +4558,14 @@ |
} |
+static Object* g_smi_slot = NULL; |
+ |
+ |
void SlotsBuffer::RemoveInvalidSlots(Heap* heap, SlotsBuffer* buffer) { |
- // Remove entries by replacing them with an old-space slot containing a smi |
- // that is located in an unmovable page. |
- const ObjectSlot kRemovedEntry = |
- HeapObject::RawField(heap->empty_fixed_array(), |
- FixedArrayBase::kLengthOffset); |
- DCHECK(Page::FromAddress( |
- reinterpret_cast<Address>(kRemovedEntry))->NeverEvacuate()); |
+ DCHECK_EQ(Smi::FromInt(0), g_smi_slot); |
+ |
+ // Remove entries by replacing them with a dummy slot containing a smi. |
+ const ObjectSlot kRemovedEntry = &g_smi_slot; |
while (buffer != NULL) { |
SlotsBuffer::ObjectSlot* slots = buffer->slots_; |
@@ -4593,6 +4593,8 @@ |
void SlotsBuffer::VerifySlots(Heap* heap, SlotsBuffer* buffer) { |
+ DCHECK_EQ(Smi::FromInt(0), g_smi_slot); |
+ |
while (buffer != NULL) { |
SlotsBuffer::ObjectSlot* slots = buffer->slots_; |
intptr_t slots_count = buffer->idx_; |