Cache last CheckSourceLocation query.

Just knowing that the query was performed is enough here -- this
function adds a new source location entry, if there already isn't one.
This commit is contained in:
Bartosz Taudul 2019-10-25 21:01:16 +02:00
parent 0f2503d334
commit 294793367f
2 changed files with 7 additions and 2 deletions

View File

@ -2563,9 +2563,13 @@ bool Worker::DispatchProcess( const QueueItem& ev, char*& ptr )
void Worker::CheckSourceLocation( uint64_t ptr )
{
if( m_data.sourceLocation.find( ptr ) == m_data.sourceLocation.end() )
if( m_data.checkSrclocLast != ptr )
{
NewSourceLocation( ptr );
m_data.checkSrclocLast = ptr;
if( m_data.sourceLocation.find( ptr ) == m_data.sourceLocation.end() )
{
NewSourceLocation( ptr );
}
}
}

View File

@ -214,6 +214,7 @@ private:
std::pair<uint64_t, ThreadData*> threadDataLast = std::make_pair( std::numeric_limits<uint64_t>::max(), nullptr );
std::pair<uint64_t, ContextSwitch*> ctxSwitchLast = std::make_pair( std::numeric_limits<uint64_t>::max(), nullptr );
uint64_t checkSrclocLast = 0;
};
struct MbpsBlock