| Index: src/heap/incremental-marking.cc
|
| diff --git a/src/heap/incremental-marking.cc b/src/heap/incremental-marking.cc
|
| index db19165f0a310eb0dec219df1226b8333c17e96e..cb2ac1e75d95f2b9ab0e02a4b0495291f5bae2eb 100644
|
| --- a/src/heap/incremental-marking.cc
|
| +++ b/src/heap/incremental-marking.cc
|
| @@ -198,11 +198,15 @@ class IncrementalMarkingMarkingVisitor
|
| } while (scan_until_end && start_offset < object_size);
|
| chunk->set_progress_bar(start_offset);
|
| if (start_offset < object_size) {
|
| + MarkCompactCollector* collector = heap->mark_compact_collector();
|
| if (Marking::IsGrey(Marking::MarkBitFrom(object))) {
|
| - heap->mark_compact_collector()->marking_deque()->UnshiftGrey(object);
|
| + collector->marking_deque()->UnshiftGrey(object);
|
| } else {
|
| DCHECK(Marking::IsBlack(Marking::MarkBitFrom(object)));
|
| - heap->mark_compact_collector()->marking_deque()->UnshiftBlack(object);
|
| + if (!collector->marking_deque()->UnshiftBlack(object)) {
|
| + MemoryChunk::IncrementLiveBytesFromGC(object, -object->Size());
|
| + Marking::BlackToGrey(object);
|
| + }
|
| }
|
| heap->incremental_marking()->NotifyIncompleteScanOfObject(
|
| object_size - (start_offset - already_scanned_offset));
|
|
|