Adjust assertions in the incremental marking.
Now we are completely transfering marks when shifting arrays in-place. This might lead to white free space objects in the marking deque. R=mstarzinger@chromium.org Review URL: http://codereview.chromium.org/8230009 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9580 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
ba8a7f374e
commit
4deaad3ccc
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user