Revert of Use a slot that is located on a heap page when removing invalid entries...
authorishell <ishell@chromium.org>
Fri, 27 Mar 2015 06:34:30 +0000 (23:34 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 27 Mar 2015 06:34:45 +0000 (06:34 +0000)
Reason for revert:
Reverting risky GC changes that block v8 roll.

Original issue's description:
> Use a slot that is located on a heap page when removing invalid entries from the SlotsBuffer.
>
> BUG=chromium:470801
> LOG=Y
>
> Committed: https://crrev.com/2f3a42f9a1d66ffc9d260d9700ff831c3aa1cd41
> Cr-Commit-Position: refs/heads/master@{#27467}

TBR=hpayer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:470801

Review URL: https://codereview.chromium.org/1033163002

Cr-Commit-Position: refs/heads/master@{#27490}

src/heap/mark-compact.cc

index ca35d4a..eb35c1f 100644 (file)
@@ -4570,14 +4570,14 @@ bool SlotsBuffer::AddTo(SlotsBufferAllocator* allocator,
 }
 
 
+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_;
@@ -4605,6 +4605,8 @@ void SlotsBuffer::RemoveInvalidSlots(Heap* heap, SlotsBuffer* buffer) {
 
 
 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_;