diff --git a/public/client/TracyAlloc.cpp b/public/client/TracyAlloc.cpp index 0106a01a..c675b6d3 100644 --- a/public/client/TracyAlloc.cpp +++ b/public/client/TracyAlloc.cpp @@ -1,8 +1,9 @@ -#ifdef TRACY_ENABLE +#include "../common/TracyAlloc.hpp" + +#ifdef TRACY_USE_RPMALLOC #include -#include "../common/TracyAlloc.hpp" #include "../common/TracyForceInline.hpp" #include "../common/TracyYield.hpp" diff --git a/public/client/TracyProfiler.cpp b/public/client/TracyProfiler.cpp index 46904461..d95553cf 100644 --- a/public/client/TracyProfiler.cpp +++ b/public/client/TracyProfiler.cpp @@ -57,6 +57,7 @@ #include #include "../common/TracyAlign.hpp" +#include "../common/TracyAlloc.hpp" #include "../common/TracySocket.hpp" #include "../common/TracySystem.hpp" #include "../common/TracyYield.hpp" @@ -1547,7 +1548,9 @@ void Profiler::Worker() while( m_timeBegin.load( std::memory_order_relaxed ) == 0 ) std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) ); +#ifdef TRACY_USE_RPMALLOC rpmalloc_thread_initialize(); +#endif m_exectime = 0; const auto execname = GetProcessExecutablePath(); @@ -2019,7 +2022,10 @@ void Profiler::CompressWorker() ThreadExitHandler threadExitHandler; SetThreadName( "Tracy DXT1" ); while( m_timeBegin.load( std::memory_order_relaxed ) == 0 ) std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) ); + +#ifdef TRACY_USE_RPMALLOC rpmalloc_thread_initialize(); +#endif for(;;) { @@ -3291,7 +3297,10 @@ void Profiler::SymbolWorker() ThreadExitHandler threadExitHandler; SetThreadName( "Tracy Symbol Worker" ); while( m_timeBegin.load( std::memory_order_relaxed ) == 0 ) std::this_thread::sleep_for( std::chrono::milliseconds( 10 ) ); + +#ifdef TRACY_USE_RPMALLOC rpmalloc_thread_initialize(); +#endif for(;;) { diff --git a/public/common/TracyAlloc.hpp b/public/common/TracyAlloc.hpp index d3dec12b..d3b2f1f3 100644 --- a/public/common/TracyAlloc.hpp +++ b/public/common/TracyAlloc.hpp @@ -7,18 +7,21 @@ # include "TracyApi.h" # include "TracyForceInline.hpp" # include "../client/tracy_rpmalloc.hpp" +# define TRACY_USE_RPMALLOC #endif namespace tracy { -#ifdef TRACY_ENABLE +#ifdef TRACY_USE_RPMALLOC TRACY_API void InitRpmalloc(); +#else +static inline void InitRpmalloc() {} #endif static inline void* tracy_malloc( size_t size ) { -#ifdef TRACY_ENABLE +#ifdef TRACY_USE_RPMALLOC InitRpmalloc(); return rpmalloc( size ); #else @@ -28,7 +31,7 @@ static inline void* tracy_malloc( size_t size ) static inline void* tracy_malloc_fast( size_t size ) { -#ifdef TRACY_ENABLE +#ifdef TRACY_USE_RPMALLOC return rpmalloc( size ); #else return malloc( size ); @@ -37,7 +40,7 @@ static inline void* tracy_malloc_fast( size_t size ) static inline void tracy_free( void* ptr ) { -#ifdef TRACY_ENABLE +#ifdef TRACY_USE_RPMALLOC InitRpmalloc(); rpfree( ptr ); #else @@ -47,7 +50,7 @@ static inline void tracy_free( void* ptr ) static inline void tracy_free_fast( void* ptr ) { -#ifdef TRACY_ENABLE +#ifdef TRACY_USE_RPMALLOC rpfree( ptr ); #else free( ptr ); @@ -56,7 +59,7 @@ static inline void tracy_free_fast( void* ptr ) static inline void* tracy_realloc( void* ptr, size_t size ) { -#ifdef TRACY_ENABLE +#ifdef TRACY_USE_RPMALLOC InitRpmalloc(); return rprealloc( ptr, size ); #else