1
0
mirror of https://github.com/wolfpld/tracy.git synced 2025-03-20 07:40:02 +08:00

Split read/write functions into small and big variants.

This commit is contained in:
Bartosz Taudul
2018-03-17 13:57:32 +01:00
parent 79418d0c57
commit 41d8ca0814
2 changed files with 57 additions and 37 deletions
+26 -16
View File
@@ -34,25 +34,11 @@ public:
{
if( m_offset + size <= BufSize )
{
memcpy( m_buf[m_active] + m_offset, ptr, size );
m_offset += size;
WriteSmall( ptr, size );
}
else
{
auto src = (const char*)ptr;
while( size > 0 )
{
const auto sz = std::min( size, BufSize - m_offset );
memcpy( m_buf[m_active] + m_offset, src, sz );
m_offset += sz;
src += sz;
size -= sz;
if( m_offset == BufSize )
{
WriteLz4Block();
}
}
WriteBig( ptr, size );
}
}
@@ -64,6 +50,30 @@ private:
, m_active( 0 )
{}
tracy_force_inline void WriteSmall( const void* ptr, size_t size )
{
memcpy( m_buf[m_active] + m_offset, ptr, size );
m_offset += size;
}
void WriteBig( const void* ptr, size_t size )
{
auto src = (const char*)ptr;
while( size > 0 )
{
const auto sz = std::min( size, BufSize - m_offset );
memcpy( m_buf[m_active] + m_offset, src, sz );
m_offset += sz;
src += sz;
size -= sz;
if( m_offset == BufSize )
{
WriteLz4Block();
}
}
}
void WriteLz4Block()
{
char lz4[LZ4Size];