From 8c46ad81d5a1023bd9de6849a0f6e8270fa0c925 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Wed, 20 Jun 2018 23:29:44 +0200 Subject: [PATCH] Extract common code. --- client/TracyProfiler.hpp | 76 +++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 40 deletions(-) diff --git a/client/TracyProfiler.hpp b/client/TracyProfiler.hpp index a31ff4e6..649f2b60 100644 --- a/client/TracyProfiler.hpp +++ b/client/TracyProfiler.hpp @@ -203,21 +203,7 @@ public: const auto thread = GetThreadHandle(); s_profiler.m_serialLock.lock(); - auto item = s_profiler.m_serialQueue.push_next(); - MemWrite( &item->hdr.type, QueueType::MemAlloc ); - MemWrite( &item->memAlloc.time, GetTime() ); - MemWrite( &item->memAlloc.thread, thread ); - MemWrite( &item->memAlloc.ptr, (uint64_t)ptr ); - if( sizeof( size ) == 4 ) - { - memcpy( &item->memAlloc.size, &size, 4 ); - memset( &item->memAlloc.size + 4, 0, 2 ); - } - else - { - assert( sizeof( size ) == 8 ); - memcpy( &item->memAlloc.size, &size, 6 ); - } + SendMemAlloc( QueueType::MemAlloc, thread, ptr, size ); s_profiler.m_serialLock.unlock(); } @@ -226,11 +212,7 @@ public: const auto thread = GetThreadHandle(); s_profiler.m_serialLock.lock(); - auto item = s_profiler.m_serialQueue.push_next(); - MemWrite( &item->hdr.type, QueueType::MemFree ); - MemWrite( &item->memFree.time, GetTime() ); - MemWrite( &item->memFree.thread, thread ); - MemWrite( &item->memFree.ptr, (uint64_t)ptr ); + SendMemFree( QueueType::MemFree, thread, ptr ); s_profiler.m_serialLock.unlock(); } @@ -239,21 +221,7 @@ public: const auto thread = GetThreadHandle(); s_profiler.m_serialLock.lock(); - auto item = s_profiler.m_serialQueue.push_next(); - MemWrite( &item->hdr.type, QueueType::MemAllocCallstack ); - MemWrite( &item->memAlloc.time, GetTime() ); - MemWrite( &item->memAlloc.thread, thread ); - MemWrite( &item->memAlloc.ptr, (uint64_t)ptr ); - if( sizeof( size ) == 4 ) - { - memcpy( &item->memAlloc.size, &size, 4 ); - memset( &item->memAlloc.size + 4, 0, 2 ); - } - else - { - assert( sizeof( size ) == 8 ); - memcpy( &item->memAlloc.size, &size, 6 ); - } + SendMemAlloc( QueueType::MemAllocCallstack, thread, ptr, size ); SendCallstackMemory( depth ); s_profiler.m_serialLock.unlock(); } @@ -263,11 +231,7 @@ public: const auto thread = GetThreadHandle(); s_profiler.m_serialLock.lock(); - auto item = s_profiler.m_serialQueue.push_next(); - MemWrite( &item->hdr.type, QueueType::MemFreeCallstack ); - MemWrite( &item->memFree.time, GetTime() ); - MemWrite( &item->memFree.thread, thread ); - MemWrite( &item->memFree.ptr, (uint64_t)ptr ); + SendMemFree( QueueType::MemFreeCallstack, thread, ptr ); SendCallstackMemory( depth ); s_profiler.m_serialLock.unlock(); } @@ -308,6 +272,38 @@ private: void CalibrateTimer(); void CalibrateDelay(); + static tracy_force_inline void SendMemAlloc( QueueType type, const uint64_t thread, const void* ptr, size_t size ) + { + assert( type == QueueType::MemAlloc || type == QueueType::MemAllocCallstack ); + + auto item = s_profiler.m_serialQueue.push_next(); + MemWrite( &item->hdr.type, type ); + MemWrite( &item->memAlloc.time, GetTime() ); + MemWrite( &item->memAlloc.thread, thread ); + MemWrite( &item->memAlloc.ptr, (uint64_t)ptr ); + if( sizeof( size ) == 4 ) + { + memcpy( &item->memAlloc.size, &size, 4 ); + memset( &item->memAlloc.size + 4, 0, 2 ); + } + else + { + assert( sizeof( size ) == 8 ); + memcpy( &item->memAlloc.size, &size, 6 ); + } + } + + static tracy_force_inline void SendMemFree( QueueType type, const uint64_t thread, const void* ptr ) + { + assert( type == QueueType::MemFree || type == QueueType::MemFreeCallstack ); + + auto item = s_profiler.m_serialQueue.push_next(); + MemWrite( &item->hdr.type, type ); + MemWrite( &item->memFree.time, GetTime() ); + MemWrite( &item->memFree.thread, thread ); + MemWrite( &item->memFree.ptr, (uint64_t)ptr ); + } + double m_timerMul; uint64_t m_resolution; uint64_t m_delay;