Skip to content
Snippets Groups Projects
Commit c09532ac authored by Euclid Linden's avatar Euclid Linden
Browse files

Merged in merge-541 (pull request #686)

Merge to latest 541
parents a1a9c021 e6ae2400
No related branches found
No related tags found
1 merge request!83Merge Linden 6.6.7
...@@ -27,6 +27,14 @@ ...@@ -27,6 +27,14 @@
#ifndef LL_LINDEN_COMMON_H #ifndef LL_LINDEN_COMMON_H
#define LL_LINDEN_COMMON_H #define LL_LINDEN_COMMON_H
#include "llprofiler.h"
#if (TRACY_ENABLE) // hooks for memory profiling
void *tracy_aligned_malloc(size_t size, size_t alignment);
void tracy_aligned_free(void *memblock);
#define _aligned_malloc(X, Y) tracy_aligned_malloc((X), (Y))
#define _aligned_free(X) tracy_aligned_free((X))
#endif
// *NOTE: Please keep includes here to a minimum! // *NOTE: Please keep includes here to a minimum!
// //
// Files included here are included in every library .cpp file and // Files included here are included in every library .cpp file and
......
...@@ -33,6 +33,48 @@ ...@@ -33,6 +33,48 @@
#include "lltracethreadrecorder.h" #include "lltracethreadrecorder.h"
#include "llcleanup.h" #include "llcleanup.h"
#if (TRACY_ENABLE)
// Override new/delet for tracy memory profiling
void *operator new(size_t size)
{
auto ptr = (malloc) (size);
if (!ptr)
{
throw std::bad_alloc();
return nullptr;
}
TracyAlloc(ptr, size);
return ptr;
}
void operator delete(void *ptr) noexcept
{
TracyFree(ptr);
(free)(ptr);
}
// C-style malloc/free can't be so easily overridden, so we define tracy versions and use
// a pre-processor #define in linden_common.h to redirect to them. The parens around the native
// functions below prevents recursive substitution by the preprocessor.
//
// Unaligned mallocs are rare in LL code but hooking them causes problems in 3p lib code (looking at
// you, Havok), so we'll only capture the aligned version.
void *tracy_aligned_malloc(size_t size, size_t alignment)
{
auto ptr = (_aligned_malloc) (size, alignment);
if (ptr) TracyAlloc(ptr, size);
return ptr;
}
void tracy_aligned_free(void *memblock)
{
TracyFree(memblock);
(_aligned_free)(memblock);
}
#endif
//static //static
BOOL LLCommon::sAprInitialized = FALSE; BOOL LLCommon::sAprInitialized = FALSE;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment