summaryrefslogtreecommitdiff
path: root/indra/llcommon/llcommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llcommon/llcommon.cpp')
-rw-r--r--indra/llcommon/llcommon.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/indra/llcommon/llcommon.cpp b/indra/llcommon/llcommon.cpp
index 5d4a623bf6..25a809dad2 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,15 @@ 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