Add cached thread retriever.

This commit is contained in:
Bartosz Taudul 2019-10-24 22:33:48 +02:00
parent 06bc802107
commit 5873561b54
2 changed files with 22 additions and 1 deletions

View File

@ -2654,6 +2654,21 @@ ThreadData* Worker::NoticeThreadReal( uint64_t thread )
} }
} }
ThreadData* Worker::RetrieveThreadReal( uint64_t thread )
{
auto it = m_threadMap.find( thread );
if( it != m_threadMap.end() )
{
m_data.threadDataLast.first = thread;
m_data.threadDataLast.second = it->second;
return it->second;
}
else
{
return nullptr;
}
}
const ThreadData* Worker::GetThreadData( uint64_t tid ) const const ThreadData* Worker::GetThreadData( uint64_t tid ) const
{ {
auto it = m_threadMap.find( tid ); auto it = m_threadMap.find( tid );

View File

@ -482,11 +482,17 @@ private:
ThreadData* NoticeThreadReal( uint64_t thread ); ThreadData* NoticeThreadReal( uint64_t thread );
ThreadData* NewThread( uint64_t thread ); ThreadData* NewThread( uint64_t thread );
ThreadData* NoticeThread( uint64_t thread ) tracy_force_inline ThreadData* NoticeThread( uint64_t thread )
{ {
if( m_data.threadDataLast.first == thread ) return m_data.threadDataLast.second; if( m_data.threadDataLast.first == thread ) return m_data.threadDataLast.second;
return NoticeThreadReal( thread ); return NoticeThreadReal( thread );
} }
ThreadData* RetrieveThreadReal( uint64_t thread );
tracy_force_inline ThreadData* RetrieveThread( uint64_t thread )
{
if( m_data.threadDataLast.first == thread ) return m_data.threadDataLast.second;
return RetrieveThreadReal( thread );
}
tracy_force_inline void NewZone( ZoneEvent* zone, uint64_t thread ); tracy_force_inline void NewZone( ZoneEvent* zone, uint64_t thread );