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
diff options
context:
space:
mode:
authorBartosz Taudul <wolf.pld@gmail.com>2018-03-17 15:57:32 +0300
committerBartosz Taudul <wolf.pld@gmail.com>2018-03-17 15:57:32 +0300
commit41d8ca0814b7637cd62e892f476cdc4a020f4b2b (patch)
tree478f6343aebaf842984743a08f8f962c06bf7dfb /server/TracyFileRead.hpp
parent79418d0c57e6e437001da560cc276b2ed410d92a (diff)
Split read/write functions into small and big variants.
Diffstat (limited to 'server/TracyFileRead.hpp')
-rw-r--r--server/TracyFileRead.hpp52
1 files changed, 31 insertions, 21 deletions
diff --git a/server/TracyFileRead.hpp b/server/TracyFileRead.hpp
index 8ab600bd..2002f899 100644
--- a/server/TracyFileRead.hpp
+++ b/server/TracyFileRead.hpp
@@ -30,30 +30,11 @@ public:
{
if( size <= BufSize - m_offset )
{
- memcpy( ptr, m_buf[m_active] + m_offset, size );
- m_offset += size;
+ ReadSmall( ptr, size );
}
else
{
- auto dst = (char*)ptr;
- while( size > 0 )
- {
- if( m_offset == BufSize )
- {
- m_active = 1 - m_active;
- m_offset = 0;
- uint32_t sz;
- fread( &sz, 1, sizeof( sz ), m_file );
- fread( m_lz4buf, 1, sz, m_file );
- LZ4_decompress_safe_continue( m_stream, m_lz4buf, m_buf[m_active], sz, BufSize );
- }
-
- const auto sz = std::min( size, BufSize - m_offset );
- memcpy( dst, m_buf[m_active] + m_offset, sz );
- m_offset += sz;
- dst += sz;
- size -= sz;
- }
+ ReadBig( ptr, size );
}
}
@@ -65,6 +46,35 @@ private:
, m_active( 1 )
{}
+ tracy_force_inline void ReadSmall( void* ptr, size_t size )
+ {
+ memcpy( ptr, m_buf[m_active] + m_offset, size );
+ m_offset += size;
+ }
+
+ void ReadBig( void* ptr, size_t size )
+ {
+ auto dst = (char*)ptr;
+ while( size > 0 )
+ {
+ if( m_offset == BufSize )
+ {
+ m_active = 1 - m_active;
+ m_offset = 0;
+ uint32_t sz;
+ fread( &sz, 1, sizeof( sz ), m_file );
+ fread( m_lz4buf, 1, sz, m_file );
+ LZ4_decompress_safe_continue( m_stream, m_lz4buf, m_buf[m_active], sz, BufSize );
+ }
+
+ const auto sz = std::min( size, BufSize - m_offset );
+ memcpy( dst, m_buf[m_active] + m_offset, sz );
+ m_offset += sz;
+ dst += sz;
+ size -= sz;
+ }
+ }
+
enum { BufSize = 64 * 1024 };
enum { LZ4Size = LZ4_COMPRESSBOUND( BufSize ) };