| Index: src/heap/incremental-marking.cc
|
| diff --git a/src/heap/incremental-marking.cc b/src/heap/incremental-marking.cc
|
| index 4fc68ecc0f14903b886488bfd26e4a760e01c04f..d4a1b64bb6a233b312c2f2ae2d1fcd04dabeb9cf 100644
|
| --- a/src/heap/incremental-marking.cc
|
| +++ b/src/heap/incremental-marking.cc
|
| @@ -164,9 +164,7 @@ void IncrementalMarking::TransferMark(Heap* heap, Address old_start,
|
| DCHECK(MemoryChunk::FromAddress(old_start) ==
|
| MemoryChunk::FromAddress(new_start));
|
|
|
| - if (!heap->incremental_marking()->IsMarking() ||
|
| - Page::FromAddress(old_start)->IsFlagSet(Page::BLACK_PAGE))
|
| - return;
|
| + if (!heap->incremental_marking()->IsMarking()) return;
|
|
|
| // If the mark doesn't move, we don't check the color of the object.
|
| // It doesn't matter whether the object is black, since it hasn't changed
|
| @@ -603,9 +601,9 @@ void IncrementalMarking::StartBlackAllocation() {
|
| DCHECK(FLAG_black_allocation);
|
| DCHECK(IsMarking());
|
| black_allocation_ = true;
|
| - OldSpace* old_space = heap()->old_space();
|
| - old_space->EmptyAllocationInfo();
|
| - old_space->free_list()->Reset();
|
| + heap()->old_space()->MarkAllocationInfoBlack();
|
| + heap()->map_space()->MarkAllocationInfoBlack();
|
| + heap()->code_space()->MarkAllocationInfoBlack();
|
| if (FLAG_trace_incremental_marking) {
|
| PrintF("[IncrementalMarking] Black allocation started\n");
|
| }
|
| @@ -833,7 +831,7 @@ void IncrementalMarking::UpdateMarkingDequeAfterScavenge() {
|
| // them.
|
| if (map_word.IsForwardingAddress()) {
|
| HeapObject* dest = map_word.ToForwardingAddress();
|
| - if (Page::FromAddress(dest->address())->IsFlagSet(Page::BLACK_PAGE))
|
| + if (Marking::IsBlack(ObjectMarking::MarkBitFrom(dest->address())))
|
| continue;
|
| array[new_top] = dest;
|
| new_top = ((new_top + 1) & mask);
|
|
|