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

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: Created 8 years, 7 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
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) {
« runtime/vm/heap_profiler.cc ('K') | « 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