From 2f35c785ee2d8ce7d11c37defd06f236cbcdcd2f Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sat, 23 May 2020 15:43:42 +0200 Subject: [PATCH] Save/load cached source files. --- server/TracyVersion.hpp | 2 +- server/TracyWorker.cpp | 43 +++++++++++++++++++++++++++++++++++++++++ server/TracyWorker.hpp | 1 + 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/server/TracyVersion.hpp b/server/TracyVersion.hpp index 791a330f..4e9d7870 100644 --- a/server/TracyVersion.hpp +++ b/server/TracyVersion.hpp @@ -7,7 +7,7 @@ namespace Version { enum { Major = 0 }; enum { Minor = 6 }; -enum { Patch = 12 }; +enum { Patch = 13 }; } } diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 12d45208..c845a154 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -1837,6 +1837,38 @@ Worker::Worker( FileRead& f, EventType::Type eventMask, bool bgTasks ) } } + if( fileVer >= FileVersion( 0, 6, 13 ) ) + { + f.Read( sz ); + if( eventMask & EventType::SourceCache ) + { + m_data.sourceFileCache.reserve( sz ); + for( uint64_t i=0; i( len+1 ); + f.Read( key, len ); + key[len] = '\0'; + f.Read( len ); + auto data = (char*)m_slab.AllocBig( len ); + f.Read( data, len ); + m_data.sourceFileCache.emplace( key, MemoryBlock { data, len } ); + } + } + else + { + for( uint64_t i=0; i( std::chrono::high_resolution_clock::now() - loadStart ).count(); @@ -7195,6 +7227,17 @@ void Worker::Write( FileWrite& f ) f.Write( &diff, sizeof( diff ) ); } } + + sz = m_data.sourceFileCache.size(); + f.Write( &sz, sizeof( sz ) ); + for( auto& v : m_data.sourceFileCache ) + { + uint32_t s32 = strlen( v.first ); + f.Write( &s32, sizeof( s32 ) ); + f.Write( v.first, s32 ); + f.Write( &v.second.len, sizeof( v.second.len ) ); + f.Write( v.second.data, v.second.len ); + } } void Worker::WriteTimeline( FileWrite& f, const Vector>& vec, int64_t& refTime ) diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index e3059aec..8148bc31 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -44,6 +44,7 @@ namespace EventType ContextSwitches = 1 << 5, Samples = 1 << 6, SymbolCode = 1 << 7, + SourceCache = 1 << 8, None = 0, All = std::numeric_limits::max()