| Index: src/incremental-marking.cc
|
| diff --git a/src/incremental-marking.cc b/src/incremental-marking.cc
|
| index 6cb7aa4858d80ca1e096a14b06d862a3a1b8e46a..6ecf553d9543026445f259bc60a78db054e3411b 100644
|
| --- a/src/incremental-marking.cc
|
| +++ b/src/incremental-marking.cc
|
| @@ -517,7 +517,11 @@ void IncrementalMarking::UpdateMarkingDequeAfterScavenge() {
|
| array[new_top] = dest;
|
| new_top = ((new_top + 1) & mask);
|
| ASSERT(new_top != marking_deque_.bottom());
|
| - ASSERT(Marking::IsGrey(Marking::MarkBitFrom(obj)));
|
| +#ifdef DEBUG
|
| + MarkBit mark_bit = Marking::MarkBitFrom(obj);
|
| + ASSERT(Marking::IsGrey(mark_bit) ||
|
| + (obj->IsFiller() && Marking::IsWhite(mark_bit)));
|
| +#endif
|
| }
|
| } else if (obj->map() != filler_map) {
|
| // Skip one word filler objects that appear on the
|
| @@ -525,7 +529,11 @@ void IncrementalMarking::UpdateMarkingDequeAfterScavenge() {
|
| array[new_top] = obj;
|
| new_top = ((new_top + 1) & mask);
|
| ASSERT(new_top != marking_deque_.bottom());
|
| - ASSERT(Marking::IsGrey(Marking::MarkBitFrom(obj)));
|
| +#ifdef DEBUG
|
| + MarkBit mark_bit = Marking::MarkBitFrom(obj);
|
| + ASSERT(Marking::IsGrey(mark_bit) ||
|
| + (obj->IsFiller() && Marking::IsWhite(mark_bit)));
|
| +#endif
|
| }
|
| }
|
| marking_deque_.set_top(new_top);
|
| @@ -710,7 +718,6 @@ void IncrementalMarking::Step(intptr_t allocated_bytes) {
|
| Map* map = obj->map();
|
| if (map == filler_map) continue;
|
|
|
| - ASSERT(Marking::IsGrey(Marking::MarkBitFrom(obj)));
|
| int size = obj->SizeFromMap(map);
|
| bytes_to_process -= size;
|
| MarkBit map_mark_bit = Marking::MarkBitFrom(map);
|
| @@ -733,7 +740,8 @@ void IncrementalMarking::Step(intptr_t allocated_bytes) {
|
| }
|
|
|
| MarkBit obj_mark_bit = Marking::MarkBitFrom(obj);
|
| - ASSERT(!Marking::IsBlack(obj_mark_bit));
|
| + ASSERT(Marking::IsGrey(obj_mark_bit) ||
|
| + (obj->IsFiller() && Marking::IsWhite(obj_mark_bit)));
|
| Marking::MarkBlack(obj_mark_bit);
|
| MemoryChunk::IncrementLiveBytes(obj->address(), size);
|
| }
|
|
|