Commit db7c4f43 authored by hpayer's avatar hpayer Committed by Commit bot

[heap] MarkCompactCollector::EmptyMarkingDeque never expects filler objects.

BUG=

Review-Url: https://codereview.chromium.org/2205853002
Cr-Commit-Position: refs/heads/master@{#38239}
parent 8552e682
...@@ -2008,18 +2008,15 @@ void MarkCompactCollector::MarkImplicitRefGroups( ...@@ -2008,18 +2008,15 @@ void MarkCompactCollector::MarkImplicitRefGroups(
// After: the marking stack is empty, and all objects reachable from the // After: the marking stack is empty, and all objects reachable from the
// marking stack have been marked, or are overflowed in the heap. // marking stack have been marked, or are overflowed in the heap.
void MarkCompactCollector::EmptyMarkingDeque() { void MarkCompactCollector::EmptyMarkingDeque() {
Map* filler_map = heap_->one_pointer_filler_map();
while (!marking_deque_.IsEmpty()) { while (!marking_deque_.IsEmpty()) {
HeapObject* object = marking_deque_.Pop(); HeapObject* object = marking_deque_.Pop();
// Explicitly skip one word fillers. Incremental markbit patterns are
// correct only for objects that occupy at least two words.
Map* map = object->map();
if (map == filler_map) continue;
DCHECK(!object->IsFiller());
DCHECK(object->IsHeapObject()); DCHECK(object->IsHeapObject());
DCHECK(heap()->Contains(object)); DCHECK(heap()->Contains(object));
DCHECK(!Marking::IsWhite(ObjectMarking::MarkBitFrom(object))); DCHECK(!Marking::IsWhite(ObjectMarking::MarkBitFrom(object)));
Map* map = object->map();
MarkBit map_mark = ObjectMarking::MarkBitFrom(map); MarkBit map_mark = ObjectMarking::MarkBitFrom(map);
MarkObject(map, map_mark); MarkObject(map, map_mark);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment