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

Input data *must not* be changed.

Not even for a short moment.
This commit is contained in:
Bartosz Taudul 2019-11-07 01:29:11 +01:00
parent 4a4fe82a1b
commit ea2c329510
2 changed files with 27 additions and 27 deletions

View File

@ -2522,7 +2522,7 @@ void Worker::Exec()
} }
if( netbuf.bufferOffset < 0 ) goto close; if( netbuf.bufferOffset < 0 ) goto close;
char* ptr = m_buffer + netbuf.bufferOffset; const char* ptr = m_buffer + netbuf.bufferOffset;
const char* end = ptr + netbuf.size; const char* end = ptr + netbuf.size;
{ {
@ -2623,7 +2623,7 @@ void Worker::QueryTerminate()
m_sock.Send( &query, ServerQueryPacketSize ); m_sock.Send( &query, ServerQueryPacketSize );
} }
bool Worker::DispatchProcess( const QueueItem& ev, char*& ptr ) bool Worker::DispatchProcess( const QueueItem& ev, const char*& ptr )
{ {
if( ev.hdr.idx >= (int)QueueType::StringData ) if( ev.hdr.idx >= (int)QueueType::StringData )
{ {
@ -2991,7 +2991,7 @@ void Worker::AddSourceLocation( const QueueSourceLocation& srcloc )
it->second = SourceLocation { srcloc.name == 0 ? StringRef() : StringRef( StringRef::Ptr, srcloc.name ), StringRef( StringRef::Ptr, srcloc.function ), StringRef( StringRef::Ptr, srcloc.file ), srcloc.line, color }; it->second = SourceLocation { srcloc.name == 0 ? StringRef() : StringRef( StringRef::Ptr, srcloc.name ), StringRef( StringRef::Ptr, srcloc.function ), StringRef( StringRef::Ptr, srcloc.file ), srcloc.line, color };
} }
void Worker::AddSourceLocationPayload( uint64_t ptr, char* data, size_t sz ) void Worker::AddSourceLocationPayload( uint64_t ptr, const char* data, size_t sz )
{ {
const auto start = data; const auto start = data;
@ -3046,7 +3046,7 @@ void Worker::AddSourceLocationPayload( uint64_t ptr, char* data, size_t sz )
} }
} }
void Worker::AddString( uint64_t ptr, char* str, size_t sz ) void Worker::AddString( uint64_t ptr, const char* str, size_t sz )
{ {
assert( m_pendingStrings > 0 ); assert( m_pendingStrings > 0 );
m_pendingStrings--; m_pendingStrings--;
@ -3056,7 +3056,7 @@ void Worker::AddString( uint64_t ptr, char* str, size_t sz )
it->second = sl.ptr; it->second = sl.ptr;
} }
void Worker::AddThreadString( uint64_t id, char* str, size_t sz ) void Worker::AddThreadString( uint64_t id, const char* str, size_t sz )
{ {
assert( m_pendingThreads > 0 ); assert( m_pendingThreads > 0 );
m_pendingThreads--; m_pendingThreads--;
@ -3066,13 +3066,13 @@ void Worker::AddThreadString( uint64_t id, char* str, size_t sz )
it->second = sl.ptr; it->second = sl.ptr;
} }
void Worker::AddCustomString( uint64_t ptr, char* str, size_t sz ) void Worker::AddCustomString( uint64_t ptr, const char* str, size_t sz )
{ {
assert( m_pendingCustomStrings.find( ptr ) == m_pendingCustomStrings.end() ); assert( m_pendingCustomStrings.find( ptr ) == m_pendingCustomStrings.end() );
m_pendingCustomStrings.emplace( ptr, StoreString( str, sz ) ); m_pendingCustomStrings.emplace( ptr, StoreString( str, sz ) );
} }
void Worker::AddExternalName( uint64_t ptr, char* str, size_t sz ) void Worker::AddExternalName( uint64_t ptr, const char* str, size_t sz )
{ {
assert( m_pendingExternalNames > 0 ); assert( m_pendingExternalNames > 0 );
m_pendingExternalNames--; m_pendingExternalNames--;
@ -3082,7 +3082,7 @@ void Worker::AddExternalName( uint64_t ptr, char* str, size_t sz )
it->second.first = sl.ptr; it->second.first = sl.ptr;
} }
void Worker::AddExternalThreadName( uint64_t ptr, char* str, size_t sz ) void Worker::AddExternalThreadName( uint64_t ptr, const char* str, size_t sz )
{ {
assert( m_pendingExternalNames > 0 ); assert( m_pendingExternalNames > 0 );
m_pendingExternalNames--; m_pendingExternalNames--;
@ -3111,7 +3111,7 @@ static const uint8_t DxtcIndexTable[256] = {
5, 7, 6, 4, 13, 15, 14, 12, 9, 11, 10, 8, 1, 3, 2, 0 5, 7, 6, 4, 13, 15, 14, 12, 9, 11, 10, 8, 1, 3, 2, 0
}; };
void Worker::AddFrameImageData( uint64_t ptr, char* data, size_t sz ) void Worker::AddFrameImageData( uint64_t ptr, const char* data, size_t sz )
{ {
assert( m_pendingFrameImageData.find( ptr ) == m_pendingFrameImageData.end() ); assert( m_pendingFrameImageData.find( ptr ) == m_pendingFrameImageData.end() );
assert( sz % 8 == 0 ); assert( sz % 8 == 0 );
@ -3142,7 +3142,7 @@ uint64_t Worker::GetCanonicalPointer( const CallstackFrameId& id ) const
return ( id.idx & 0x7FFFFFFFFFFFFFFF ) | ( ( id.idx & 0x4000000000000000 ) << 1 ); return ( id.idx & 0x7FFFFFFFFFFFFFFF ) | ( ( id.idx & 0x4000000000000000 ) << 1 );
} }
void Worker::AddCallstackPayload( uint64_t ptr, char* _data, size_t _sz ) void Worker::AddCallstackPayload( uint64_t ptr, const char* _data, size_t _sz )
{ {
assert( m_pendingCallstackPtr == 0 ); assert( m_pendingCallstackPtr == 0 );
@ -3189,7 +3189,7 @@ void Worker::AddCallstackPayload( uint64_t ptr, char* _data, size_t _sz )
m_pendingCallstackId = idx; m_pendingCallstackId = idx;
} }
void Worker::AddCallstackAllocPayload( uint64_t ptr, char* data, size_t _sz ) void Worker::AddCallstackAllocPayload( uint64_t ptr, const char* data, size_t _sz )
{ {
assert( m_pendingCallstackPtr != 0 ); assert( m_pendingCallstackPtr != 0 );
@ -3298,7 +3298,7 @@ void Worker::InsertPlot( PlotData* plot, int64_t time, double val )
} }
} }
void Worker::HandlePlotName( uint64_t name, char* str, size_t sz ) void Worker::HandlePlotName( uint64_t name, const char* str, size_t sz )
{ {
const auto sl = StoreString( str, sz ); const auto sl = StoreString( str, sz );
m_data.plots.StringDiscovered( name, sl, m_data.strings, [this] ( PlotData* dst, PlotData* src ) { m_data.plots.StringDiscovered( name, sl, m_data.strings, [this] ( PlotData* dst, PlotData* src ) {
@ -3309,7 +3309,7 @@ void Worker::HandlePlotName( uint64_t name, char* str, size_t sz )
} ); } );
} }
void Worker::HandleFrameName( uint64_t name, char* str, size_t sz ) void Worker::HandleFrameName( uint64_t name, const char* str, size_t sz )
{ {
const auto sl = StoreString( str, sz ); const auto sl = StoreString( str, sz );
m_data.frames.StringDiscovered( name, sl, m_data.strings, [] ( FrameData* dst, FrameData* src ) { m_data.frames.StringDiscovered( name, sl, m_data.strings, [] ( FrameData* dst, FrameData* src ) {
@ -3342,7 +3342,7 @@ void Worker::HandlePostponedPlots()
} }
} }
StringLocation Worker::StoreString( char* str, size_t sz ) StringLocation Worker::StoreString( const char* str, size_t sz )
{ {
StringLocation ret; StringLocation ret;
charutil::StringKey key = { str, sz }; charutil::StringKey key = { str, sz };

View File

@ -425,7 +425,7 @@ private:
void Query( ServerQuery type, uint64_t data ); void Query( ServerQuery type, uint64_t data );
void QueryTerminate(); void QueryTerminate();
tracy_force_inline bool DispatchProcess( const QueueItem& ev, char*& ptr ); tracy_force_inline bool DispatchProcess( const QueueItem& ev, const char*& ptr );
tracy_force_inline bool Process( const QueueItem& ev ); tracy_force_inline bool Process( const QueueItem& ev );
tracy_force_inline void ProcessThreadContext( const QueueThreadContext& ev ); tracy_force_inline void ProcessThreadContext( const QueueThreadContext& ev );
tracy_force_inline void ProcessZoneBegin( const QueueZoneBegin& ev ); tracy_force_inline void ProcessZoneBegin( const QueueZoneBegin& ev );
@ -544,25 +544,25 @@ private:
void CheckExternalName( uint64_t id ); void CheckExternalName( uint64_t id );
void AddSourceLocation( const QueueSourceLocation& srcloc ); void AddSourceLocation( const QueueSourceLocation& srcloc );
void AddSourceLocationPayload( uint64_t ptr, char* data, size_t sz ); void AddSourceLocationPayload( uint64_t ptr, const char* data, size_t sz );
void AddString( uint64_t ptr, char* str, size_t sz ); void AddString( uint64_t ptr, const char* str, size_t sz );
void AddThreadString( uint64_t id, char* str, size_t sz ); void AddThreadString( uint64_t id, const char* str, size_t sz );
void AddCustomString( uint64_t ptr, char* str, size_t sz ); void AddCustomString( uint64_t ptr, const char* str, size_t sz );
void AddExternalName( uint64_t ptr, char* str, size_t sz ); void AddExternalName( uint64_t ptr, const char* str, size_t sz );
void AddExternalThreadName( uint64_t ptr, char* str, size_t sz ); void AddExternalThreadName( uint64_t ptr, const char* str, size_t sz );
void AddFrameImageData( uint64_t ptr, char* data, size_t sz ); void AddFrameImageData( uint64_t ptr, const char* data, size_t sz );
tracy_force_inline void AddCallstackPayload( uint64_t ptr, char* data, size_t sz ); tracy_force_inline void AddCallstackPayload( uint64_t ptr, const char* data, size_t sz );
tracy_force_inline void AddCallstackAllocPayload( uint64_t ptr, char* data, size_t sz ); tracy_force_inline void AddCallstackAllocPayload( uint64_t ptr, const char* data, size_t sz );
void InsertPlot( PlotData* plot, int64_t time, double val ); void InsertPlot( PlotData* plot, int64_t time, double val );
void HandlePlotName( uint64_t name, char* str, size_t sz ); void HandlePlotName( uint64_t name, const char* str, size_t sz );
void HandleFrameName( uint64_t name, char* str, size_t sz ); void HandleFrameName( uint64_t name, const char* str, size_t sz );
void HandlePostponedPlots(); void HandlePostponedPlots();
StringLocation StoreString( char* str, size_t sz ); StringLocation StoreString( const char* str, size_t sz );
const ContextSwitch* const GetContextSwitchDataImpl( uint64_t thread ); const ContextSwitch* const GetContextSwitchDataImpl( uint64_t thread );
tracy_force_inline Vector<short_ptr<ZoneEvent>>& GetZoneChildrenMutable( int32_t idx ) { return m_data.zoneChildren[idx]; } tracy_force_inline Vector<short_ptr<ZoneEvent>>& GetZoneChildrenMutable( int32_t idx ) { return m_data.zoneChildren[idx]; }