Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorBartosz Taudul <wolf@nereid.pl>2022-10-12 01:27:12 +0300
committerBartosz Taudul <wolf@nereid.pl>2022-10-12 01:27:12 +0300
commitc041b962c07a10fe1576a1e45e01716e03ae61a7 (patch)
tree1a55a20b90b6a3997fd44b06aaa7dad7b6ae4199 /server
parented455339b3591ae5dc8a490162d0fd0c11ab91e5 (diff)
Construct fake callstack frames for code location data.
Diffstat (limited to 'server')
-rw-r--r--server/TracyWorker.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp
index 8c8bc274..9a222b7a 100644
--- a/server/TracyWorker.cpp
+++ b/server/TracyWorker.cpp
@@ -1775,7 +1775,26 @@ Worker::Worker( FileRead& f, EventType::Type eventMask, bool bgTasks )
uint64_t packed;
uint16_t lsz;
f.Read2( packed, lsz );
- f.Skip( lsz * sizeof( uint64_t ) );
+ uint32_t line;
+ const auto fidx = UnpackFileLine( packed, line );
+ uint64_t ref = 0;
+ for( uint16_t j=0; j<lsz; j++ )
+ {
+ uint64_t diff;
+ f.Read( diff );
+ ref += diff;
+ auto frameId = PackPointer( ref );
+ if( m_data.callstackFrameMap.find( frameId ) == m_data.callstackFrameMap.end() )
+ {
+ auto cs = m_slab.AllocInit<CallstackFrameData>();
+ cs->size = 1;
+ cs->data = m_slab.AllocInit<CallstackFrame>( 1 );
+ cs->data->file = StringIdx( fidx );
+ cs->data->line = line;
+ cs->data->symAddr = 0;
+ m_data.callstackFrameMap.emplace( frameId, cs );
+ }
+ }
}
}