diff options
author | Dave Parks <davep@lindenlab.com> | 2021-10-25 21:11:03 +0000 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2021-10-25 21:11:03 +0000 |
commit | 647d0224d321c706ba5936905db4265becde9d8e (patch) | |
tree | 3a9e1ddcd167d443c6f4e702b61cf68d522e704e /indra/llcommon/llcommon.cpp | |
parent | a5b1c013542d93be3b4cac820f32000fa5e3cfd4 (diff) |
SL-16243 Add Tracy timers to global new/delete overrides.
Diffstat (limited to 'indra/llcommon/llcommon.cpp')
-rw-r--r-- | indra/llcommon/llcommon.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/indra/llcommon/llcommon.cpp b/indra/llcommon/llcommon.cpp index 5d4a623bf6..abc6af2cfc 100644 --- a/indra/llcommon/llcommon.cpp +++ b/indra/llcommon/llcommon.cpp @@ -33,11 +33,22 @@ #include "lltracethreadrecorder.h" #include "llcleanup.h" +thread_local bool gProfilerEnabled = false; + #if (TRACY_ENABLE) // Override new/delete for tracy memory profiling void *operator new(size_t size) { - auto ptr = (malloc) (size); + void* ptr; + if (gProfilerEnabled) + { + LL_PROFILE_ZONE_SCOPED; + ptr = (malloc)(size); + } + else + { + ptr = (malloc)(size); + } if (!ptr) { throw std::bad_alloc(); @@ -49,7 +60,16 @@ void *operator new(size_t size) void operator delete(void *ptr) noexcept { TracyFree(ptr); - (free)(ptr); + + if (gProfilerEnabled) + { + LL_PROFILE_ZONE_SCOPED; + (free)(ptr); + } + else + { + (free)(ptr); + } } // C-style malloc/free can't be so easily overridden, so we define tracy versions and use |