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); |
} |