From 2417f63bf2e8e9dfa061617c589088095d8d1725 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Wed, 25 Mar 2020 01:55:43 +0100 Subject: [PATCH] Build instruction pointers map when loading trace. --- server/TracyWorker.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 5b92eead..29525f90 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -1728,6 +1728,31 @@ Worker::Worker( FileRead& f, EventType::Type eventMask, bool bgTasks ) { it->second++; } + + const auto& callstack = GetCallstack( cs ); + auto& ip = callstack[0]; + auto frame = GetCallstackFrame( ip ); + if( frame ) + { + const auto symAddr = frame->data[0].symAddr; + auto it = m_data.instructionPointersMap.find( symAddr ); + if( it == m_data.instructionPointersMap.end() ) + { + m_data.instructionPointersMap.emplace( symAddr, unordered_flat_map { { ip, 1 } } ); + } + else + { + auto fit = it->second.find( ip ); + if( fit == it->second.end() ) + { + it->second.emplace( ip, 1 ); + } + else + { + fit->second++; + } + } + } } } for( auto& v : counts ) UpdateSampleStatistics( v.first, v.second, false );