Chromium Code Reviews| Index: src/incremental-marking.cc |
| diff --git a/src/incremental-marking.cc b/src/incremental-marking.cc |
| index 6cb7aa4858d80ca1e096a14b06d862a3a1b8e46a..56c8e89509ad7c9777e03a3ab80f3e1191c315e5 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->IsFreeSpace() && Marking::IsWhite(mark_bit))); |
|
Michael Starzinger
2011/10/11 11:31:46
Does IsFreeSpace() cover two-pointer-filler maps?
|
| +#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->IsFreeSpace() && Marking::IsWhite(mark_bit))); |
|
Michael Starzinger
2011/10/11 11:31:46
Same as above.
|
| +#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->IsFreeSpace() && Marking::IsWhite(obj_mark_bit))); |
|
Michael Starzinger
2011/10/11 11:31:46
Same as above.
|
| Marking::MarkBlack(obj_mark_bit); |
| MemoryChunk::IncrementLiveBytes(obj->address(), size); |
| } |