Chromium Code Reviews| Index: runtime/vm/thread.cc |
| diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc |
| index 3ff121d7af1443efd7851151d3453df6ab1198cc..16091844b0ee92302c0885f62fb57482e5b61685 100644 |
| --- a/runtime/vm/thread.cc |
| +++ b/runtime/vm/thread.cc |
| @@ -38,8 +38,6 @@ Thread::~Thread() { |
| delete compiler_stats_; |
| compiler_stats_ = NULL; |
| } |
| - // All zone allocated memory should be free by this point. |
| - ASSERT(current_thread_memory_ == 0); |
| // There should be no top api scopes at this point. |
| ASSERT(api_top_scope() == NULL); |
| // Delete the resusable api scope if there is one. |
| @@ -135,6 +133,19 @@ Thread::Thread(Isolate* isolate) |
| compiler_stats_->EnableBenchmark(); |
| } |
| } |
| + // This thread should not yet own any zones. If it does, we need to make sure |
| + // we've accounted for any memory it has already allocated. |
| + if (zone_ == NULL) { |
| + ASSERT(current_thread_memory_ == 0); |
| + } else { |
| + Zone* current = zone_; |
| + uintptr_t total_zone_capacity = 0; |
| + while (current != NULL) { |
|
Cutch
2017/01/31 17:12:41
is there not already a function that computes this
|
| + total_zone_capacity += static_cast<uintptr_t>(current->CapacityInBytes()); |
| + current = current->previous(); |
| + } |
| + ASSERT(current_thread_memory_ == total_zone_capacity); |
| + } |
| } |