Index: runtime/vm/profiler_service.h |
diff --git a/runtime/vm/profiler_service.h b/runtime/vm/profiler_service.h |
index d9205b3b7a1ee851107a8f1778c3f4e0d1de36b1..8045906e14442710f4cfed8e2663d27a4d32f1a6 100644 |
--- a/runtime/vm/profiler_service.h |
+++ b/runtime/vm/profiler_service.h |
@@ -29,6 +29,7 @@ class ProfileCodeTable; |
class RawCode; |
class RawFunction; |
class SampleFilter; |
+class ProcessedSample; |
class ProcessedSampleBuffer; |
class ProfileFunctionSourcePosition { |
@@ -257,7 +258,18 @@ class ProfileTrieNode : public ZoneAllocated { |
intptr_t count() const { return count_; } |
- void Tick() { count_++; } |
+ void Tick(ProcessedSample* sample, bool exclusive = false); |
+ |
+ void IncrementAllocation(intptr_t allocation, bool exclusive) { |
+ ASSERT(allocation >= 0); |
+ if (exclusive) { |
+ exclusive_allocations_ += allocation; |
+ } |
+ inclusive_allocations_ += allocation; |
+ } |
+ |
+ intptr_t inclusive_allocations() const { return inclusive_allocations_; } |
+ intptr_t exclusive_allocations() const { return exclusive_allocations_; } |
intptr_t NumChildren() const { return children_.length(); } |
@@ -284,6 +296,8 @@ class ProfileTrieNode : public ZoneAllocated { |
intptr_t table_index_; |
intptr_t count_; |
+ intptr_t exclusive_allocations_; |
+ intptr_t inclusive_allocations_; |
ZoneGrowableArray<ProfileTrieNode*> children_; |
intptr_t frame_id_; |
@@ -378,6 +392,10 @@ class ProfileTrieWalker : public ValueObject { |
intptr_t CurrentInclusiveTicks(); |
// Return the current node's peer's exclusive tick count. |
intptr_t CurrentExclusiveTicks(); |
+ // Return the current node's inclusive allocation count. |
+ intptr_t CurrentInclusiveAllocations(); |
+ // Return the current node's exclusive allocation count. |
+ intptr_t CurrentExclusiveAllocations(); |
// Return the current node's tick count. |
intptr_t CurrentNodeTickCount(); |
// Return the number siblings (including yourself). |