| Index: runtime/vm/pages.cc
|
| diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc
|
| index 60f26d3e03d03b1b4d3c591fb4844a463cdb5649..9376331b9f90f14bae1c8758f96041b10eb094f0 100644
|
| --- a/runtime/vm/pages.cc
|
| +++ b/runtime/vm/pages.cc
|
| @@ -45,6 +45,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();
|
| @@ -254,6 +266,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) {
|
|
|