summaryrefslogtreecommitdiff
path: root/indra/llcommon/llcommon.cpp
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2021-10-25 21:11:03 +0000
committerDave Parks <davep@lindenlab.com>2021-10-25 21:11:03 +0000
commit647d0224d321c706ba5936905db4265becde9d8e (patch)
tree3a9e1ddcd167d443c6f4e702b61cf68d522e704e /indra/llcommon/llcommon.cpp
parenta5b1c013542d93be3b4cac820f32000fa5e3cfd4 (diff)
SL-16243 Add Tracy timers to global new/delete overrides.
Diffstat (limited to 'indra/llcommon/llcommon.cpp')
-rw-r--r--indra/llcommon/llcommon.cpp24
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