Index: src/heap/incremental-marking.cc |
diff --git a/src/heap/incremental-marking.cc b/src/heap/incremental-marking.cc |
index 4fc68ecc0f14903b886488bfd26e4a760e01c04f..835c5ceb7430f9d04cb4594a46286252d58a91bc 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 |
@@ -602,10 +600,10 @@ void IncrementalMarking::StartMarking() { |
void IncrementalMarking::StartBlackAllocation() { |
DCHECK(FLAG_black_allocation); |
DCHECK(IsMarking()); |
+ heap()->old_space()->EmptyAllocationInfo(); |
ulan
2016/07/19 13:23:32
Instead of dropping the linear allocation area, ho
Hannes Payer (out of office)
2016/07/19 14:42:53
I did the lazy approach. We can also mark it direc
|
+ heap()->map_space()->EmptyAllocationInfo(); |
+ heap()->code_space()->EmptyAllocationInfo(); |
black_allocation_ = true; |
- OldSpace* old_space = heap()->old_space(); |
- old_space->EmptyAllocationInfo(); |
- old_space->free_list()->Reset(); |
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); |