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

Side by Side Diff: src/heap-profiler.h

Issue 10049002: Introduce a way to grab heap stats. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: comments addressed Created 8 years, 8 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 2009-2010 the V8 project authors. All rights reserved. 1 // Copyright 2009-2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 26 matching lines...) Expand all
37 class HeapSnapshotsCollection; 37 class HeapSnapshotsCollection;
38 38
39 #define HEAP_PROFILE(heap, call) \ 39 #define HEAP_PROFILE(heap, call) \
40 do { \ 40 do { \
41 v8::internal::HeapProfiler* profiler = heap->isolate()->heap_profiler(); \ 41 v8::internal::HeapProfiler* profiler = heap->isolate()->heap_profiler(); \
42 if (profiler != NULL && profiler->is_profiling()) { \ 42 if (profiler != NULL && profiler->is_profiling()) { \
43 profiler->call; \ 43 profiler->call; \
44 } \ 44 } \
45 } while (false) 45 } while (false)
46 46
47 // The HeapProfiler writes data to the log files, which can be postprocessed
48 // to generate .hp files for use by the GHC/Valgrind tool hp2ps.
49 class HeapProfiler { 47 class HeapProfiler {
50 public: 48 public:
51 static void SetUp(); 49 static void SetUp();
52 static void TearDown(); 50 static void TearDown();
53 51
54 static HeapSnapshot* TakeSnapshot(const char* name, 52 static HeapSnapshot* TakeSnapshot(const char* name,
55 int type, 53 int type,
56 v8::ActivityControl* control); 54 v8::ActivityControl* control);
57 static HeapSnapshot* TakeSnapshot(String* name, 55 static HeapSnapshot* TakeSnapshot(String* name,
58 int type, 56 int type,
59 v8::ActivityControl* control); 57 v8::ActivityControl* control);
58
59 static void StartHeapObjectsTracking();
60 static void StopHeapObjectsTracking();
61 static void PushHeapObjectsStats(OutputStream* stream);
60 static int GetSnapshotsCount(); 62 static int GetSnapshotsCount();
61 static HeapSnapshot* GetSnapshot(int index); 63 static HeapSnapshot* GetSnapshot(int index);
62 static HeapSnapshot* FindSnapshot(unsigned uid); 64 static HeapSnapshot* FindSnapshot(unsigned uid);
63 static void DeleteAllSnapshots(); 65 static void DeleteAllSnapshots();
64 66
65 void ObjectMoveEvent(Address from, Address to); 67 void ObjectMoveEvent(Address from, Address to);
66 68
67 void DefineWrapperClass( 69 void DefineWrapperClass(
68 uint16_t class_id, v8::HeapProfiler::WrapperInfoCallback callback); 70 uint16_t class_id, v8::HeapProfiler::WrapperInfoCallback callback);
69 71
70 v8::RetainedObjectInfo* ExecuteWrapperClassCallback(uint16_t class_id, 72 v8::RetainedObjectInfo* ExecuteWrapperClassCallback(uint16_t class_id,
71 Object** wrapper); 73 Object** wrapper);
72 INLINE(bool is_profiling()) { 74 INLINE(bool is_profiling()) {
73 return snapshots_->is_tracking_objects(); 75 return snapshots_->is_tracking_objects();
74 } 76 }
75 77
76 private: 78 private:
77 HeapProfiler(); 79 HeapProfiler();
78 ~HeapProfiler(); 80 ~HeapProfiler();
79 HeapSnapshot* TakeSnapshotImpl(const char* name, 81 HeapSnapshot* TakeSnapshotImpl(const char* name,
80 int type, 82 int type,
81 v8::ActivityControl* control); 83 v8::ActivityControl* control);
82 HeapSnapshot* TakeSnapshotImpl(String* name, 84 HeapSnapshot* TakeSnapshotImpl(String* name,
83 int type, 85 int type,
84 v8::ActivityControl* control); 86 v8::ActivityControl* control);
85 void ResetSnapshots(); 87 void ResetSnapshots();
86 88
89 void StartHeapObjectsTrackingImpl();
90 void StopHeapObjectsTrackingImpl();
91 void PushHeapObjectsStatsImpl(OutputStream* stream);
92
87 HeapSnapshotsCollection* snapshots_; 93 HeapSnapshotsCollection* snapshots_;
88 unsigned next_snapshot_uid_; 94 unsigned next_snapshot_uid_;
89 List<v8::HeapProfiler::WrapperInfoCallback> wrapper_callbacks_; 95 List<v8::HeapProfiler::WrapperInfoCallback> wrapper_callbacks_;
90 }; 96 };
91 97
92 } } // namespace v8::internal 98 } } // namespace v8::internal
93 99
94 #endif // V8_HEAP_PROFILER_H_ 100 #endif // V8_HEAP_PROFILER_H_
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/heap-profiler.cc » ('j') | test/cctest/test-heap-profiler.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698