Skip to content

Commit

Permalink
Revert of Use a slot that is located on a heap page when removing inv…
Browse files Browse the repository at this point in the history
…alid entries from the SlotsBuffer. (patchset nwjs#1 id:1 of https://codereview.chromium.org/1020853022/)

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}
  • Loading branch information
isheludko authored and Commit bot committed Mar 27, 2015
1 parent ab027ae commit d23a9f7
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions src/heap/mark-compact.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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_;
Expand Down Expand Up @@ -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_;
Expand Down

0 comments on commit d23a9f7

Please sign in to comment.