1
0
mirror of https://github.com/wolfpld/tracy synced 2025-04-29 04:23:51 +00:00

Workaround gcc stupidity.

This commit is contained in:
Bartosz Taudul 2017-10-11 01:44:35 +02:00
parent 77dfefb5d0
commit e23da05a65
4 changed files with 19 additions and 14 deletions

View File

@ -19,7 +19,7 @@ public:
: m_id( s_lockCounter.fetch_add( 1, std::memory_order_relaxed ) )
{
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockAnnounce;
@ -37,7 +37,7 @@ public:
const auto thread = GetThreadHandle();
{
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockWait;
@ -51,7 +51,7 @@ public:
{
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockObtain;
@ -68,7 +68,7 @@ public:
uint32_t cpu;
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockRelease;
@ -85,7 +85,7 @@ public:
{
uint32_t cpu;
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockObtain;
@ -100,7 +100,7 @@ public:
tracy_force_inline void Mark( const SourceLocation* srcloc ) const
{
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockMark;

View File

@ -56,7 +56,7 @@ enum { QueuePrealloc = 256 * 1024 };
static moodycamel::ConcurrentQueue<QueueItem> init_order(101) s_queue( QueueItemSize * QueuePrealloc );
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 );
@ -227,7 +227,7 @@ void Profiler::SendSourceLocation( uint64_t ptr )
item.srcloc.function = (uint64_t)srcloc->function;
item.srcloc.line = srcloc->line;
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()

View File

@ -31,7 +31,12 @@ struct SourceLocation
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;
@ -69,7 +74,7 @@ public:
{
uint32_t cpu;
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::FrameMarkMsg;

View File

@ -18,7 +18,7 @@ public:
const auto thread = GetThreadHandle();
m_thread = thread;
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::ZoneBegin;
@ -31,7 +31,7 @@ public:
tracy_force_inline ~ScopedZone()
{
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::ZoneEnd;
@ -46,7 +46,7 @@ public:
auto ptr = new char[size+1];
memcpy( ptr, txt, size );
ptr[size] = '\0';
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::ZoneText;
@ -58,7 +58,7 @@ public:
tracy_force_inline void Name( const char* name )
{
Magic magic;
auto& token = s_token;
auto& token = s_token.ptr;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::ZoneName;