Index: src/heap/incremental-marking.cc |
diff --git a/src/heap/incremental-marking.cc b/src/heap/incremental-marking.cc |
index 95f522bd991fe83fadb9baa8445fd7768b736f6f..2184c72d31a3b091a11d5336d413662d9e897b60 100644 |
--- a/src/heap/incremental-marking.cc |
+++ b/src/heap/incremental-marking.cc |
@@ -188,7 +188,12 @@ class IncrementalMarkingMarkingVisitor |
} while (scan_until_end && start_offset < object_size); |
chunk->set_progress_bar(start_offset); |
if (start_offset < object_size) { |
Hannes Payer (out of office)
2015/05/15 15:26:06
As discussed offline, let's figure out the reason
|
- heap->mark_compact_collector()->marking_deque()->UnshiftGrey(object); |
+ if (Marking::IsGrey(Marking::MarkBitFrom(object))) { |
+ heap->mark_compact_collector()->marking_deque()->UnshiftGrey(object); |
+ } else { |
+ DCHECK(Marking::IsBlack(Marking::MarkBitFrom(object))); |
+ heap->mark_compact_collector()->marking_deque()->UnshiftBlack(object); |
+ } |
heap->incremental_marking()->NotifyIncompleteScanOfObject( |
object_size - (start_offset - already_scanned_offset)); |
} |