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(); |
} |