From f285e0f5cc063e60b5c889ca5082cbd65add0843 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Tue, 13 Aug 2019 13:19:38 +0200 Subject: [PATCH] Save one byte on ContextSwitchData. --- server/TracyEvent.hpp | 6 ++++-- server/TracyWorker.cpp | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/server/TracyEvent.hpp b/server/TracyEvent.hpp index bc33045c..a376cfd2 100644 --- a/server/TracyEvent.hpp +++ b/server/TracyEvent.hpp @@ -222,11 +222,13 @@ enum { CrashEventSize = sizeof( CrashEvent ) }; struct ContextSwitchData { + static uint8_t Reason( const ContextSwitchData& cs ) { return cs.data & 0xF; } + static uint8_t State( const ContextSwitchData& cs ) { return cs.data >> 4; } + int64_t start; int64_t end; uint8_t cpu; - int8_t reason; - int8_t state; + uint8_t data; }; enum { ContextSwitchDataSize = sizeof( ContextSwitchData ) }; diff --git a/server/TracyWorker.cpp b/server/TracyWorker.cpp index 6e778e54..03ad19a4 100644 --- a/server/TracyWorker.cpp +++ b/server/TracyWorker.cpp @@ -1168,7 +1168,7 @@ Worker::Worker( FileRead& f, EventType::Type eventMask ) { ptr->start = ReadTimeOffset( f, refTime ); ptr->end = ReadTimeOffset( f, refTime ); - f.Read( &ptr->cpu, sizeof( ptr->cpu ) + sizeof( ptr->reason ) + sizeof( ptr->state ) ); + f.Read( &ptr->cpu, sizeof( ptr->cpu ) + sizeof( ptr->data ) ); ptr++; } m_data.ctxSwitch.emplace( thread, data ); @@ -3727,8 +3727,9 @@ void Worker::ProcessContextSwitch( const QueueContextSwitch& ev ) auto& item = data.back(); assert( item.start <= time ); item.end = time; - item.reason = ev.reason; - item.state = ev.state; + assert( ( ev.reason & 0xF ) == ev.reason ); + assert( ( ev.state & 0xF ) == ev.state ); + item.data = ev.reason | ( ev.state << 4 ); } } if( ev.newThread != 0 ) @@ -3745,8 +3746,7 @@ void Worker::ProcessContextSwitch( const QueueContextSwitch& ev ) item.start = time; item.end = -1; item.cpu = ev.cpu; - item.reason = -1; - item.state = -1; + item.data = ~0; } } @@ -4497,7 +4497,7 @@ void Worker::Write( FileWrite& f ) { WriteTimeOffset( f, refTime, cs.start ); WriteTimeOffset( f, refTime, cs.end ); - f.Write( &cs.cpu, sizeof( cs.cpu ) + sizeof( cs.reason ) + sizeof( cs.state ) ); + f.Write( &cs.cpu, sizeof( cs.cpu ) + sizeof( cs.data ) ); } } }