From e086488928b0a3b3dbc13d6fd0f415babbb28417 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Wed, 30 Mar 2022 16:06:35 +0200 Subject: [PATCH] Extract source file caching functionality. --- server/TracyWorker.cpp | 21 +++++++++++++-------- server/TracyWorker.hpp | 1 + 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index fcb1718a..aac2d9bf 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -8705,14 +8705,7 @@ void Worker::CacheSource( const StringRef& str ) const auto execTime = GetExecutableTime(); if( SourceFileValid( file, execTime != 0 ? execTime : GetCaptureTime() ) ) { - FILE* f = fopen( file, "rb" ); - fseek( f, 0, SEEK_END ); - const auto sz = ftell( f ); - fseek( f, 0, SEEK_SET ); - auto src = (char*)m_slab.AllocBig( sz ); - fread( src, 1, sz, f ); - fclose( f ); - m_data.sourceFileCache.emplace( file, MemoryBlock{ src, uint32_t( sz ) } ); + CacheSourceFromFile( file ); } else if( execTime != 0 ) { @@ -8721,6 +8714,18 @@ void Worker::CacheSource( const StringRef& str ) } } +void Worker::CacheSourceFromFile( const char* fn ) +{ + FILE* f = fopen( fn, "rb" ); + fseek( f, 0, SEEK_END ); + const auto sz = ftell( f ); + fseek( f, 0, SEEK_SET ); + auto src = (char*)m_slab.AllocBig( sz ); + fread( src, 1, sz, f ); + fclose( f ); + m_data.sourceFileCache.emplace( fn, MemoryBlock{ src, uint32_t( sz ) } ); +} + uint64_t Worker::GetSourceFileCacheSize() const { uint64_t cnt = 0; diff --git a/server/TracyWorker.hpp b/server/TracyWorker.hpp index 7d59d442..b678f026 100644 --- a/server/TracyWorker.hpp +++ b/server/TracyWorker.hpp @@ -883,6 +883,7 @@ private: const ContextSwitch* const GetContextSwitchDataImpl( uint64_t thread ); void CacheSource( const StringRef& str ); + void CacheSourceFromFile( const char* fn ); tracy_force_inline Vector>& GetZoneChildrenMutable( int32_t idx ) { return m_data.zoneChildren[idx]; } tracy_force_inline Vector>& GetGpuChildrenMutable( int32_t idx ) { return m_data.gpuChildren[idx]; }