mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-27 00:04:35 +00:00
Reduce allocated source location size by 2 bytes.
This commit is contained in:
parent
a15964b2dc
commit
f718761905
@ -2236,16 +2236,17 @@ void Profiler::SendSourceLocationPayload( uint64_t _ptr )
|
|||||||
MemWrite( &item.hdr.type, QueueType::SourceLocationPayload );
|
MemWrite( &item.hdr.type, QueueType::SourceLocationPayload );
|
||||||
MemWrite( &item.stringTransfer.ptr, _ptr );
|
MemWrite( &item.stringTransfer.ptr, _ptr );
|
||||||
|
|
||||||
const auto len = *((uint32_t*)ptr);
|
uint16_t len;
|
||||||
assert( len <= std::numeric_limits<uint16_t>::max() );
|
memcpy( &len, ptr, sizeof( len ) );
|
||||||
assert( len > 4 );
|
assert( len > 2 );
|
||||||
const auto l16 = uint16_t( len - 4 );
|
len -= 2;
|
||||||
|
ptr += 2;
|
||||||
|
|
||||||
NeedDataSize( QueueDataSize[(int)QueueType::SourceLocationPayload] + sizeof( l16 ) + l16 );
|
NeedDataSize( QueueDataSize[(int)QueueType::SourceLocationPayload] + sizeof( len ) + len );
|
||||||
|
|
||||||
AppendDataUnsafe( &item, QueueDataSize[(int)QueueType::SourceLocationPayload] );
|
AppendDataUnsafe( &item, QueueDataSize[(int)QueueType::SourceLocationPayload] );
|
||||||
AppendDataUnsafe( &l16, sizeof( l16 ) );
|
AppendDataUnsafe( &len, sizeof( len ) );
|
||||||
AppendDataUnsafe( ptr + 4, l16 );
|
AppendDataUnsafe( ptr, len );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Profiler::SendCallstackPayload( uint64_t _ptr )
|
void Profiler::SendCallstackPayload( uint64_t _ptr )
|
||||||
|
@ -477,7 +477,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
// Allocated source location data layout:
|
// Allocated source location data layout:
|
||||||
// 4b payload size
|
// 2b payload size
|
||||||
// 4b color
|
// 4b color
|
||||||
// 4b source line
|
// 4b source line
|
||||||
// fsz function name
|
// fsz function name
|
||||||
@ -503,18 +503,20 @@ public:
|
|||||||
|
|
||||||
static tracy_force_inline uint64_t AllocSourceLocation( uint32_t line, const char* source, size_t sourceSz, const char* function, size_t functionSz, const char* name, size_t nameSz )
|
static tracy_force_inline uint64_t AllocSourceLocation( uint32_t line, const char* source, size_t sourceSz, const char* function, size_t functionSz, const char* name, size_t nameSz )
|
||||||
{
|
{
|
||||||
const uint32_t sz = uint32_t( 4 + 4 + 4 + functionSz + 1 + sourceSz + 1 + nameSz );
|
const auto sz32 = uint32_t( 2 + 4 + 4 + functionSz + 1 + sourceSz + 1 + nameSz );
|
||||||
|
assert( sz32 <= std::numeric_limits<uint16_t>::max() );
|
||||||
|
const auto sz = uint16_t( sz32 );
|
||||||
auto ptr = (char*)tracy_malloc( sz );
|
auto ptr = (char*)tracy_malloc( sz );
|
||||||
memcpy( ptr, &sz, 4 );
|
memcpy( ptr, &sz, 2 );
|
||||||
memset( ptr + 4, 0, 4 );
|
memset( ptr + 2, 0, 4 );
|
||||||
memcpy( ptr + 8, &line, 4 );
|
memcpy( ptr + 6, &line, 4 );
|
||||||
memcpy( ptr + 12, function, functionSz );
|
memcpy( ptr + 10, function, functionSz );
|
||||||
ptr[12 + functionSz] = '\0';
|
ptr[10 + functionSz] = '\0';
|
||||||
memcpy( ptr + 12 + functionSz + 1, source, sourceSz );
|
memcpy( ptr + 10 + functionSz + 1, source, sourceSz );
|
||||||
ptr[12 + functionSz + 1 + sourceSz] = '\0';
|
ptr[10 + functionSz + 1 + sourceSz] = '\0';
|
||||||
if( nameSz != 0 )
|
if( nameSz != 0 )
|
||||||
{
|
{
|
||||||
memcpy( ptr + 12 + functionSz + 1 + sourceSz + 1, name, nameSz );
|
memcpy( ptr + 10 + functionSz + 1 + sourceSz + 1, name, nameSz );
|
||||||
}
|
}
|
||||||
return uint64_t( ptr );
|
return uint64_t( ptr );
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user