mirror of
https://github.com/wolfpld/tracy
synced 2025-05-01 21:23:52 +00:00
Workaround gcc stupidity.
This commit is contained in:
parent
77dfefb5d0
commit
e23da05a65
@ -19,7 +19,7 @@ public:
|
|||||||
: m_id( s_lockCounter.fetch_add( 1, std::memory_order_relaxed ) )
|
: m_id( s_lockCounter.fetch_add( 1, std::memory_order_relaxed ) )
|
||||||
{
|
{
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockAnnounce;
|
item->hdr.type = QueueType::LockAnnounce;
|
||||||
@ -37,7 +37,7 @@ public:
|
|||||||
const auto thread = GetThreadHandle();
|
const auto thread = GetThreadHandle();
|
||||||
{
|
{
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockWait;
|
item->hdr.type = QueueType::LockWait;
|
||||||
@ -51,7 +51,7 @@ public:
|
|||||||
|
|
||||||
{
|
{
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockObtain;
|
item->hdr.type = QueueType::LockObtain;
|
||||||
@ -68,7 +68,7 @@ public:
|
|||||||
|
|
||||||
uint32_t cpu;
|
uint32_t cpu;
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockRelease;
|
item->hdr.type = QueueType::LockRelease;
|
||||||
@ -85,7 +85,7 @@ public:
|
|||||||
{
|
{
|
||||||
uint32_t cpu;
|
uint32_t cpu;
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockObtain;
|
item->hdr.type = QueueType::LockObtain;
|
||||||
@ -100,7 +100,7 @@ public:
|
|||||||
tracy_force_inline void Mark( const SourceLocation* srcloc ) const
|
tracy_force_inline void Mark( const SourceLocation* srcloc ) const
|
||||||
{
|
{
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::LockMark;
|
item->hdr.type = QueueType::LockMark;
|
||||||
|
@ -56,7 +56,7 @@ enum { QueuePrealloc = 256 * 1024 };
|
|||||||
|
|
||||||
static moodycamel::ConcurrentQueue<QueueItem> init_order(101) s_queue( QueueItemSize * QueuePrealloc );
|
static moodycamel::ConcurrentQueue<QueueItem> init_order(101) s_queue( QueueItemSize * QueuePrealloc );
|
||||||
static thread_local moodycamel::ProducerToken init_order(102) s_token_detail( s_queue );
|
static thread_local moodycamel::ProducerToken init_order(102) s_token_detail( s_queue );
|
||||||
thread_local moodycamel::ConcurrentQueue<QueueItem>::ExplicitProducer* init_order(103) s_token = s_queue.get_explicit_producer( s_token_detail );
|
thread_local ProducerWrapper init_order(103) s_token { s_queue.get_explicit_producer( s_token_detail ) };
|
||||||
|
|
||||||
std::atomic<uint64_t> s_id( 0 );
|
std::atomic<uint64_t> s_id( 0 );
|
||||||
|
|
||||||
@ -227,7 +227,7 @@ void Profiler::SendSourceLocation( uint64_t ptr )
|
|||||||
item.srcloc.function = (uint64_t)srcloc->function;
|
item.srcloc.function = (uint64_t)srcloc->function;
|
||||||
item.srcloc.line = srcloc->line;
|
item.srcloc.line = srcloc->line;
|
||||||
item.srcloc.color = srcloc->color;
|
item.srcloc.color = srcloc->color;
|
||||||
s_token->enqueue<moodycamel::CanAlloc>( std::move( item ) );
|
s_token.ptr->enqueue<moodycamel::CanAlloc>( std::move( item ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Profiler::HandleServerQuery()
|
bool Profiler::HandleServerQuery()
|
||||||
|
@ -31,7 +31,12 @@ struct SourceLocation
|
|||||||
uint32_t color;
|
uint32_t color;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern thread_local moodycamel::ConcurrentQueue<QueueItem>::ExplicitProducer* s_token;
|
struct ProducerWrapper
|
||||||
|
{
|
||||||
|
moodycamel::ConcurrentQueue<QueueItem>::ExplicitProducer* ptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern thread_local ProducerWrapper s_token;
|
||||||
|
|
||||||
using Magic = moodycamel::ConcurrentQueueDefaultTraits::index_t;
|
using Magic = moodycamel::ConcurrentQueueDefaultTraits::index_t;
|
||||||
|
|
||||||
@ -69,7 +74,7 @@ public:
|
|||||||
{
|
{
|
||||||
uint32_t cpu;
|
uint32_t cpu;
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::FrameMarkMsg;
|
item->hdr.type = QueueType::FrameMarkMsg;
|
||||||
|
@ -18,7 +18,7 @@ public:
|
|||||||
const auto thread = GetThreadHandle();
|
const auto thread = GetThreadHandle();
|
||||||
m_thread = thread;
|
m_thread = thread;
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::ZoneBegin;
|
item->hdr.type = QueueType::ZoneBegin;
|
||||||
@ -31,7 +31,7 @@ public:
|
|||||||
tracy_force_inline ~ScopedZone()
|
tracy_force_inline ~ScopedZone()
|
||||||
{
|
{
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::ZoneEnd;
|
item->hdr.type = QueueType::ZoneEnd;
|
||||||
@ -46,7 +46,7 @@ public:
|
|||||||
auto ptr = new char[size+1];
|
auto ptr = new char[size+1];
|
||||||
memcpy( ptr, txt, size );
|
memcpy( ptr, txt, size );
|
||||||
ptr[size] = '\0';
|
ptr[size] = '\0';
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::ZoneText;
|
item->hdr.type = QueueType::ZoneText;
|
||||||
@ -58,7 +58,7 @@ public:
|
|||||||
tracy_force_inline void Name( const char* name )
|
tracy_force_inline void Name( const char* name )
|
||||||
{
|
{
|
||||||
Magic magic;
|
Magic magic;
|
||||||
auto& token = s_token;
|
auto& token = s_token.ptr;
|
||||||
auto& tail = token->get_tail_index();
|
auto& tail = token->get_tail_index();
|
||||||
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
|
||||||
item->hdr.type = QueueType::ZoneName;
|
item->hdr.type = QueueType::ZoneName;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user