Chromium Code Reviews| Index: runtime/vm/malloc_hooks.cc |
| diff --git a/runtime/vm/malloc_hooks.cc b/runtime/vm/malloc_hooks.cc |
| index 08a053a81d19b0b32f277a71a89a9095e50dce7d..64e889270dc850c6b8c602a7fd1409ba020e8e29 100644 |
| --- a/runtime/vm/malloc_hooks.cc |
| +++ b/runtime/vm/malloc_hooks.cc |
| @@ -203,52 +203,64 @@ AddressMap* MallocHooksState::address_map_ = NULL; |
| void MallocHooks::InitOnce() { |
| - MutexLocker ml(MallocHooksState::malloc_hook_mutex()); |
| - ASSERT(!MallocHooksState::Active()); |
| + if (FLAG_enable_malloc_hooks) { |
|
zra
2017/02/17 23:43:27
if (!FLAG_enable_malloc_hooks) {
return;
}
bkonyi
2017/02/18 00:01:11
Done.
|
| + MutexLocker ml(MallocHooksState::malloc_hook_mutex()); |
| + ASSERT(!MallocHooksState::Active()); |
| - MallocHookScope::InitMallocHookFlag(); |
| - MallocHooksState::Init(); |
| + MallocHookScope::InitMallocHookFlag(); |
| + MallocHooksState::Init(); |
| - // Register malloc hooks. |
| - bool success = false; |
| - success = MallocHook::AddNewHook(&MallocHooksState::RecordAllocHook); |
| - ASSERT(success); |
| - success = MallocHook::AddDeleteHook(&MallocHooksState::RecordFreeHook); |
| - ASSERT(success); |
| + // Register malloc hooks. |
| + bool success = false; |
| + success = MallocHook::AddNewHook(&MallocHooksState::RecordAllocHook); |
| + ASSERT(success); |
| + success = MallocHook::AddDeleteHook(&MallocHooksState::RecordFreeHook); |
| + ASSERT(success); |
| + } |
| } |
| void MallocHooks::TearDown() { |
| - MutexLocker ml(MallocHooksState::malloc_hook_mutex()); |
| - ASSERT(MallocHooksState::Active()); |
| + if (FLAG_enable_malloc_hooks) { |
|
zra
2017/02/17 23:43:27
ditto
bkonyi
2017/02/18 00:01:11
Done.
|
| + MutexLocker ml(MallocHooksState::malloc_hook_mutex()); |
| + ASSERT(MallocHooksState::Active()); |
| - // Remove malloc hooks. |
| - bool success = false; |
| - success = MallocHook::RemoveNewHook(&MallocHooksState::RecordAllocHook); |
| - ASSERT(success); |
| - success = MallocHook::RemoveDeleteHook(&MallocHooksState::RecordFreeHook); |
| - ASSERT(success); |
| + // Remove malloc hooks. |
| + bool success = false; |
| + success = MallocHook::RemoveNewHook(&MallocHooksState::RecordAllocHook); |
| + ASSERT(success); |
| + success = MallocHook::RemoveDeleteHook(&MallocHooksState::RecordFreeHook); |
| + ASSERT(success); |
| - MallocHooksState::TearDown(); |
| - MallocHookScope::DestroyMallocHookFlag(); |
| + MallocHooksState::TearDown(); |
| + MallocHookScope::DestroyMallocHookFlag(); |
| + } |
| } |
| void MallocHooks::ResetStats() { |
| - MutexLocker ml(MallocHooksState::malloc_hook_mutex()); |
| - if (MallocHooksState::Active()) { |
| - MallocHooksState::ResetStats(); |
| + if (FLAG_enable_malloc_hooks) { |
|
zra
2017/02/17 23:43:27
ditto
bkonyi
2017/02/18 00:01:11
Done.
|
| + MutexLocker ml(MallocHooksState::malloc_hook_mutex()); |
| + if (MallocHooksState::Active()) { |
| + MallocHooksState::ResetStats(); |
| + } |
| } |
| } |
| bool MallocHooks::Active() { |
| + if (!FLAG_enable_malloc_hooks) { |
| + return false; |
| + } |
| ASSERT(MallocHooksState::malloc_hook_mutex()->IsOwnedByCurrentThread()); |
| return MallocHooksState::Active(); |
| } |
| void MallocHooks::PrintToJSONObject(JSONObject* jsobj) { |
| + if (!FLAG_enable_malloc_hooks) { |
| + return; |
| + } |
| intptr_t allocated_memory = 0; |
| intptr_t allocation_count = 0; |
| bool add_usage = false; |
| @@ -271,12 +283,18 @@ void MallocHooks::PrintToJSONObject(JSONObject* jsobj) { |
| intptr_t MallocHooks::allocation_count() { |
| + if (!FLAG_enable_malloc_hooks) { |
| + return 0; |
| + } |
| MutexLocker ml(MallocHooksState::malloc_hook_mutex()); |
| return MallocHooksState::allocation_count(); |
| } |
| intptr_t MallocHooks::heap_allocated_memory_in_bytes() { |
| + if (!FLAG_enable_malloc_hooks) { |
| + return 0; |
| + } |
| MutexLocker ml(MallocHooksState::malloc_hook_mutex()); |
| return MallocHooksState::heap_allocated_memory_in_bytes(); |
| } |