Chromium Code Reviews

Unified Diff: src/mark-compact.cc

Issue 7935013: Implement verification of new space evacuation. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/gc
Patch Set: Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
« 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/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index 296b3c0b0f07530b08195f70479dd3e006ffe40e..b69a74f046e0d3e4572c65b996b311b2a123bd75 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -109,11 +109,6 @@ static void VerifyMarking(Address bottom, Address top) {
}
-static void VerifyMarking(Page* p) {
- VerifyMarking(p->ObjectAreaStart(), p->ObjectAreaEnd());
-}
-
-
static void VerifyMarking(NewSpace* space) {
Address end = space->top();
NewSpacePageIterator it(space->bottom(), end);
@@ -134,7 +129,8 @@ static void VerifyMarking(PagedSpace* space) {
PageIterator it(space);
while (it.has_next()) {
- VerifyMarking(it.next());
+ Page* p = it.next();
+ VerifyMarking(p->ObjectAreaStart(), p->ObjectAreaEnd());
}
}
@@ -158,14 +154,10 @@ class VerifyEvacuationVisitor: public ObjectVisitor {
for (Object** current = start; current < end; current++) {
if ((*current)->IsHeapObject()) {
HeapObject* object = HeapObject::cast(*current);
- if (MarkCompactCollector::IsOnEvacuationCandidate(object)) {
- CHECK(false);
- }
+ CHECK(!MarkCompactCollector::IsOnEvacuationCandidate(object));
}
}
}
-
- HeapObject* source_;
};
@@ -180,7 +172,6 @@ static void VerifyEvacuation(Address bottom, Address top) {
object = HeapObject::FromAddress(current);
if (MarkCompactCollector::IsMarked(object)) {
ASSERT(current >= next_object_must_be_here_or_later);
- visitor.source_ = object;
object->Iterate(&visitor);
next_object_must_be_here_or_later = current + object->Size();
}
@@ -188,15 +179,13 @@ static void VerifyEvacuation(Address bottom, Address top) {
}
-static void VerifyEvacuation(Page* p) {
- if (p->IsEvacuationCandidate()) return;
-
- VerifyEvacuation(p->ObjectAreaStart(), p->ObjectAreaEnd());
-}
-
-
static void VerifyEvacuation(NewSpace* space) {
- // TODO(gc) Verify evacution for new space.
+ NewSpacePageIterator it(space->bottom(), space->top());
+
+ while (it.has_next()) {
+ NewSpacePage* page = it.next();
+ VerifyEvacuation(page->body(), page->body_limit());
Vyacheslav Egorov (Chromium) 2011/09/19 10:39:17 I doubt that this actually works. We have copied m
Michael Starzinger 2011/09/19 13:02:59 Done.
+ }
}
@@ -204,7 +193,9 @@ static void VerifyEvacuation(PagedSpace* space) {
PageIterator it(space);
while (it.has_next()) {
- VerifyEvacuation(it.next());
+ Page* p = it.next();
+ if (p->IsEvacuationCandidate()) continue;
+ VerifyEvacuation(p->ObjectAreaStart(), p->ObjectAreaEnd());
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine