| Index: runtime/vm/pages.cc
|
| diff --git a/runtime/vm/pages.cc b/runtime/vm/pages.cc
|
| index 965e5b984fce0d1c7aa1b86239d4359b1435eb10..866ed4a9ec4ad1228b4c0b69cab55c8eb5982a43 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();
|
| @@ -249,6 +261,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) {
|
|
|