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

Unified Diff: runtime/vm/pages.cc

Issue 10452006: Implement a heap profiler for the Dart managed heap. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: address final review comments Created 8 years, 6 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
« no previous file with comments | « runtime/vm/pages.h ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « runtime/vm/pages.h ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698