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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/pages.h" 5 #include "vm/pages.h"
6 6
7 #include "platform/assert.h" 7 #include "platform/assert.h"
8 #include "vm/gc_marker.h" 8 #include "vm/gc_marker.h"
9 #include "vm/gc_sweeper.h" 9 #include "vm/gc_sweeper.h"
10 #include "vm/object.h" 10 #include "vm/object.h"
(...skipping 20 matching lines...) Expand all
31 return Initialize(memory, is_executable); 31 return Initialize(memory, is_executable);
32 } 32 }
33 33
34 34
35 void HeapPage::Deallocate() { 35 void HeapPage::Deallocate() {
36 // The memory for this object will become unavailable after the delete below. 36 // The memory for this object will become unavailable after the delete below.
37 delete memory_; 37 delete memory_;
38 } 38 }
39 39
40 40
41 void HeapPage::VisitObjects(ObjectVisitor* visitor) const {
42 uword obj_addr = first_object_start();
43 uword end_addr = top();
44 while (obj_addr < end_addr) {
45 RawObject* raw_obj = RawObject::FromAddr(obj_addr);
46 visitor->VisitObject(raw_obj);
47 obj_addr += raw_obj->Size();
48 }
49 ASSERT(obj_addr == end_addr);
50 }
51
52
41 void HeapPage::VisitObjectPointers(ObjectPointerVisitor* visitor) const { 53 void HeapPage::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
42 uword obj_addr = first_object_start(); 54 uword obj_addr = first_object_start();
43 uword end_addr = top(); 55 uword end_addr = top();
44 while (obj_addr < end_addr) { 56 while (obj_addr < end_addr) {
45 RawObject* raw_obj = RawObject::FromAddr(obj_addr); 57 RawObject* raw_obj = RawObject::FromAddr(obj_addr);
46 obj_addr += raw_obj->VisitPointers(visitor); 58 obj_addr += raw_obj->VisitPointers(visitor);
47 } 59 }
48 ASSERT(obj_addr == end_addr); 60 ASSERT(obj_addr == end_addr);
49 } 61 }
50 62
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 while (page != NULL) { 240 while (page != NULL) {
229 if (page->Contains(addr)) { 241 if (page->Contains(addr)) {
230 return true; 242 return true;
231 } 243 }
232 page = page->next(); 244 page = page->next();
233 } 245 }
234 return false; 246 return false;
235 } 247 }
236 248
237 249
250 void PageSpace::VisitObjects(ObjectVisitor* visitor) const {
251 HeapPage* page = pages_;
252 while (page != NULL) {
253 page->VisitObjects(visitor);
254 page = page->next();
255 }
256
257 page = large_pages_;
258 while (page != NULL) {
259 page->VisitObjects(visitor);
260 page = page->next();
261 }
262 }
263
264
238 void PageSpace::VisitObjectPointers(ObjectPointerVisitor* visitor) const { 265 void PageSpace::VisitObjectPointers(ObjectPointerVisitor* visitor) const {
239 HeapPage* page = pages_; 266 HeapPage* page = pages_;
240 while (page != NULL) { 267 while (page != NULL) {
241 page->VisitObjectPointers(visitor); 268 page->VisitObjectPointers(visitor);
242 page = page->next(); 269 page = page->next();
243 } 270 }
244 271
245 page = large_pages_; 272 page = large_pages_;
246 while (page != NULL) { 273 while (page != NULL) {
247 page->VisitObjectPointers(visitor); 274 page->VisitObjectPointers(visitor);
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 OS::PrintErr(" done.\n"); 378 OS::PrintErr(" done.\n");
352 } 379 }
353 380
354 count_++; 381 count_++;
355 // Done, reset the marker. 382 // Done, reset the marker.
356 ASSERT(sweeping_); 383 ASSERT(sweeping_);
357 sweeping_ = false; 384 sweeping_ = false;
358 } 385 }
359 386
360 } // namespace dart 387 } // namespace dart
OLDNEW
« 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