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

Unified Diff: src/spaces.cc

Issue 6542047: Basic implementation of incremental marking. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/gc
Patch Set: Created 9 years, 10 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 586c5e5bf8235de3403e56832077fe5689262edc..6ec5fa685cdf04d9eca6959fbdc3bc188a3ad96e 100644
--- a/src/spaces.cc
+++ b/src/spaces.cc
@@ -74,6 +74,7 @@ void HeapObjectIterator::Initialize(Address cur, Address end,
cur_limit_ = (p == end_page_) ? end_addr_ : p->AllocationTop();
if (!p->IsFlagSet(Page::IS_CONTINUOUS)) {
+ ASSERT(IncrementalMarking::state() == IncrementalMarking::STOPPED);
cur_addr_ = Marking::FirstLiveObject(cur_addr_, cur_limit_);
if (cur_addr_ > cur_limit_) cur_addr_ = cur_limit_;
}
@@ -95,6 +96,7 @@ HeapObject* HeapObjectIterator::FromNextPage() {
cur_limit_ = (cur_page == end_page_) ? end_addr_ : cur_page->AllocationTop();
if (!cur_page->IsFlagSet(Page::IS_CONTINUOUS)) {
+ ASSERT(IncrementalMarking::state() == IncrementalMarking::STOPPED);
cur_addr_ = Marking::FirstLiveObject(cur_addr_, cur_limit_);
if (cur_addr_ > cur_limit_) cur_addr_ = cur_limit_;
}
@@ -109,6 +111,7 @@ HeapObject* HeapObjectIterator::FromNextPage() {
void HeapObjectIterator::AdvanceUsingMarkbits() {
+ ASSERT(IncrementalMarking::state() == IncrementalMarking::STOPPED);
HeapObject* obj = HeapObject::FromAddress(cur_addr_);
int obj_size = (size_func_ == NULL) ? obj->Size() : size_func_(obj);
ASSERT_OBJECT_SIZE(obj_size);
@@ -2310,6 +2313,8 @@ MaybeObject* LargeObjectSpace::AllocateRawInternal(int object_size,
page->set_next_page(first_page_);
first_page_ = page;
+
+ IncrementalMarking::Step(object_size);
return page->GetObject();
}

Powered by Google App Engine
This is Rietveld 408576698