Index: runtime/vm/thread.h |
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h |
index 576d57c19d1e637908acb34d5fd4a7c721f421cb..d82c483eeb930c04d2b777e785858faf24a20638 100644 |
--- a/runtime/vm/thread.h |
+++ b/runtime/vm/thread.h |
@@ -264,6 +264,22 @@ class Thread : public BaseThread { |
bool ZoneIsOwnedByThread(Zone* zone) const; |
+ void IncrementMemoryUsage(uintptr_t value) { |
+ current_thread_memory_ += value; |
+ if (current_thread_memory_ > memory_high_watermark_) { |
+ memory_high_watermark_ = current_thread_memory_; |
+ } |
+ } |
+ |
+ void DecrementMemoryUsage(uintptr_t value) { |
+ ASSERT(current_thread_memory_ >= value); |
+ current_thread_memory_ -= value; |
+ } |
+ |
+ uintptr_t memory_high_watermark() const { return memory_high_watermark_; } |
+ |
+ void ResetHighWatermark() { memory_high_watermark_ = current_thread_memory_; } |
+ |
// The reusable api local scope for this thread. |
ApiLocalScope* api_reusable_scope() const { return api_reusable_scope_; } |
void set_api_reusable_scope(ApiLocalScope* value) { |
@@ -679,6 +695,8 @@ class Thread : public BaseThread { |
OSThread* os_thread_; |
Monitor* thread_lock_; |
Zone* zone_; |
+ uintptr_t current_thread_memory_; |
+ uintptr_t memory_high_watermark_; |
ApiLocalScope* api_reusable_scope_; |
ApiLocalScope* api_top_scope_; |
StackResource* top_resource_; |