Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1177)

Unified Diff: src/heap/mark-compact.cc

Issue 997093002: When scanning for grey objects, fill the deque until it flows over (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap/mark-compact.cc
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc
index 44262e42b162b58974cf7b2092ea141047856d2a..83c2cd28714e59852f0dd70ae13f07d464fd36c5 100644
--- a/src/heap/mark-compact.cc
+++ b/src/heap/mark-compact.cc
@@ -1764,7 +1764,7 @@ static void DiscoverGreyObjectsWithIterator(Heap* heap,
T* it) {
// The caller should ensure that the marking stack is initially not full,
// so that we don't waste effort pointlessly scanning for objects.
- DCHECK(!marking_deque->IsFull());
+ DCHECK(!marking_deque->overflowed());
Map* filler_map = heap->one_pointer_filler_map();
for (HeapObject* object = it->Next(); object != NULL; object = it->Next()) {
@@ -1773,7 +1773,7 @@ static void DiscoverGreyObjectsWithIterator(Heap* heap,
Marking::GreyToBlack(markbit);
MemoryChunk::IncrementLiveBytesFromGC(object->address(), object->Size());
marking_deque->PushBlack(object);
- if (marking_deque->IsFull()) return;
+ if (marking_deque->overflowed()) return;
}
}
}
@@ -1784,7 +1784,7 @@ static inline int MarkWordToObjectStarts(uint32_t mark_bits, int* starts);
static void DiscoverGreyObjectsOnPage(MarkingDeque* marking_deque,
MemoryChunk* p) {
- DCHECK(!marking_deque->IsFull());
+ DCHECK(!marking_deque->overflowed());
DCHECK(strcmp(Marking::kWhiteBitPattern, "00") == 0);
DCHECK(strcmp(Marking::kBlackBitPattern, "10") == 0);
DCHECK(strcmp(Marking::kGreyBitPattern, "11") == 0);
@@ -1818,7 +1818,7 @@ static void DiscoverGreyObjectsOnPage(MarkingDeque* marking_deque,
HeapObject* object = HeapObject::FromAddress(addr);
MemoryChunk::IncrementLiveBytesFromGC(object->address(), object->Size());
marking_deque->PushBlack(object);
- if (marking_deque->IsFull()) return;
+ if (marking_deque->overflowed()) return;
offset += 2;
grey_objects >>= 2;
}
@@ -1896,7 +1896,7 @@ static void DiscoverGreyObjectsInSpace(Heap* heap, MarkingDeque* marking_deque,
while (it.has_next()) {
Page* p = it.next();
DiscoverGreyObjectsOnPage(marking_deque, p);
- if (marking_deque->IsFull()) return;
+ if (marking_deque->overflowed()) return;
}
}
@@ -1908,7 +1908,7 @@ static void DiscoverGreyObjectsInNewSpace(Heap* heap,
while (it.has_next()) {
NewSpacePage* page = it.next();
DiscoverGreyObjectsOnPage(marking_deque, page);
- if (marking_deque->IsFull()) return;
+ if (marking_deque->overflowed()) return;
}
}
@@ -2034,31 +2034,31 @@ void MarkCompactCollector::RefillMarkingDeque() {
DCHECK(marking_deque_.overflowed());
DiscoverGreyObjectsInNewSpace(heap(), &marking_deque_);
- if (marking_deque_.IsFull()) return;
+ if (marking_deque_.overflowed()) return;
DiscoverGreyObjectsInSpace(heap(), &marking_deque_,
heap()->old_pointer_space());
- if (marking_deque_.IsFull()) return;
+ if (marking_deque_.overflowed()) return;
DiscoverGreyObjectsInSpace(heap(), &marking_deque_, heap()->old_data_space());
- if (marking_deque_.IsFull()) return;
+ if (marking_deque_.overflowed()) return;
DiscoverGreyObjectsInSpace(heap(), &marking_deque_, heap()->code_space());
- if (marking_deque_.IsFull()) return;
+ if (marking_deque_.overflowed()) return;
DiscoverGreyObjectsInSpace(heap(), &marking_deque_, heap()->map_space());
- if (marking_deque_.IsFull()) return;
+ if (marking_deque_.overflowed()) return;
DiscoverGreyObjectsInSpace(heap(), &marking_deque_, heap()->cell_space());
- if (marking_deque_.IsFull()) return;
+ if (marking_deque_.overflowed()) return;
DiscoverGreyObjectsInSpace(heap(), &marking_deque_,
heap()->property_cell_space());
- if (marking_deque_.IsFull()) return;
+ if (marking_deque_.overflowed()) return;
LargeObjectIterator lo_it(heap()->lo_space());
DiscoverGreyObjectsWithIterator(heap(), &marking_deque_, &lo_it);
- if (marking_deque_.IsFull()) return;
+ if (marking_deque_.overflowed()) return;
marking_deque_.ClearOverflowed();
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698