1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Remove one stack address load.

This commit is contained in:
Bartosz Taudul
2017-10-11 01:27:22 +02:00
parent af3773dc9a
commit 77dfefb5d0
5 changed files with 32 additions and 27 deletions
+12 -6
View File
@@ -20,11 +20,12 @@ public:
{
Magic magic;
auto& token = s_token;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockAnnounce;
item->lockAnnounce.id = m_id;
item->lockAnnounce.srcloc = (uint64_t)srcloc;
token->enqueue_finish( magic );
tail.store( magic + 1, std::memory_order_release );
}
Lockable( const Lockable& ) = delete;
@@ -37,12 +38,13 @@ public:
{
Magic magic;
auto& token = s_token;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockWait;
item->lockWait.id = m_id;
item->lockWait.thread = thread;
item->lockWait.time = Profiler::GetTime( cpu );
token->enqueue_finish( magic );
tail.store( magic + 1, std::memory_order_release );
}
m_lockable.lock();
@@ -50,12 +52,13 @@ public:
{
Magic magic;
auto& token = s_token;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockObtain;
item->lockObtain.id = m_id;
item->lockObtain.thread = thread;
item->lockObtain.time = Profiler::GetTime( cpu );
token->enqueue_finish( magic );
tail.store( magic + 1, std::memory_order_release );
}
}
@@ -66,12 +69,13 @@ public:
uint32_t cpu;
Magic magic;
auto& token = s_token;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockRelease;
item->lockRelease.id = m_id;
item->lockRelease.thread = GetThreadHandle();
item->lockRelease.time = Profiler::GetTime( cpu );
token->enqueue_finish( magic );
tail.store( magic + 1, std::memory_order_release );
}
tracy_force_inline bool try_lock()
@@ -82,12 +86,13 @@ public:
uint32_t cpu;
Magic magic;
auto& token = s_token;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockObtain;
item->lockObtain.id = (uint64_t)&m_lockable;
item->lockObtain.thread = GetThreadHandle();
item->lockObtain.time = Profiler::GetTime( cpu );
token->enqueue_finish( magic );
tail.store( magic + 1, std::memory_order_release );
}
return ret;
}
@@ -96,12 +101,13 @@ public:
{
Magic magic;
auto& token = s_token;
auto& tail = token->get_tail_index();
auto item = token->enqueue_begin<moodycamel::CanAlloc>( magic );
item->hdr.type = QueueType::LockMark;
item->lockMark.id = m_id;
item->lockMark.thread = GetThreadHandle();
item->lockMark.srcloc = (uint64_t)srcloc;
token->enqueue_finish( magic );
tail.store( magic + 1, std::memory_order_release );
}
private: