| Index: runtime/vm/pages.cc
|
| diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc
|
| index 9194db706929bba0878cf8cb99152001e32b1dba..785ad16f4441c9929ebe355210e25341e127d60f 100644
|
| --- a/runtime/vm/pages.cc
|
| +++ b/runtime/vm/pages.cc
|
| @@ -38,6 +38,18 @@ void HeapPage::Deallocate() {
|
| }
|
|
|
|
|
| +void HeapPage::VisitObjects(ObjectVisitor* visitor) const {
|
| + uword obj_addr = first_object_start();
|
| + uword end_addr = top();
|
| + while (obj_addr < end_addr) {
|
| + RawObject* raw_obj = RawObject::FromAddr(obj_addr);
|
| + visitor->VisitObject(raw_obj);
|
| + obj_addr += raw_obj->Size();
|
| + }
|
| + ASSERT(obj_addr == end_addr);
|
| +}
|
| +
|
| +
|
| void HeapPage::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
|
| uword obj_addr = first_object_start();
|
| uword end_addr = top();
|
| @@ -235,6 +247,21 @@ bool PageSpace::Contains(uword addr) const {
|
| }
|
|
|
|
|
| +void PageSpace::VisitObjects(ObjectVisitor* visitor) const {
|
| + HeapPage* page = pages_;
|
| + while (page != NULL) {
|
| + page->VisitObjects(visitor);
|
| + page = page->next();
|
| + }
|
| +
|
| + page = large_pages_;
|
| + while (page != NULL) {
|
| + page->VisitObjects(visitor);
|
| + page = page->next();
|
| + }
|
| +}
|
| +
|
| +
|
| void PageSpace::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
|
| HeapPage* page = pages_;
|
| while (page != NULL) {
|
|
|