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

Unified Diff: src/spaces.cc

Issue 7326012: Split single slots buffer into per page slots buffers. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/gc
Patch Set: Created 9 years, 5 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
Index: src/spaces.cc
diff --git a/src/spaces.cc b/src/spaces.cc
index 1a2be4a9d969735fa097ea297d871c00b6870f68..c91de47c1cda473ca06a51dab3252b23005c90a7 100644
--- a/src/spaces.cc
+++ b/src/spaces.cc
@@ -436,6 +436,7 @@ MemoryChunk* MemoryChunk::Initialize(Heap* heap,
chunk->size_ = size;
chunk->flags_ = 0;
chunk->set_owner(owner);
+ chunk->slots_buffer_ = NULL;
Bitmap::Clear(chunk);
chunk->initialize_scan_on_scavenge(false);
@@ -1979,7 +1980,7 @@ void PagedSpace::PrepareForMarkCompact() {
PageIterator it(this);
while (it.has_next()) {
Page* page = it.next();
- page->ClearFlag(MemoryChunk::EVACUATED);
+ page->ClearSwept();
}
}
@@ -2023,7 +2024,9 @@ bool PagedSpace::AdvanceSweeper(intptr_t bytes_to_sweep) {
do {
Page* next_page = p->next_page();
// Evacuation candidates were swept by evacuator.
- if (!p->IsEvacuationCandidate() && !p->WasEvacuated()) {
+ if (!p->IsEvacuationCandidate() &&
+ !p->IsFlagSet(Page::RESCAN_ON_EVACUATION) &&
+ !p->WasSwept()) {
freed_bytes += MarkCompactCollector::SweepConservatively(this, p);
}
p = next_page;
« src/mark-compact.cc ('K') | « src/spaces.h ('k') | src/x64/code-stubs-x64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698