mirror of
https://github.com/wolfpld/tracy
synced 2025-04-30 04:43:53 +00:00
Match ghost zones by symbol address.
This commit is contained in:
parent
b89874850f
commit
eb5f7a27e7
@ -1784,21 +1784,42 @@ Worker::Worker( FileRead& f, EventType::Type eventMask, bool bgTasks )
|
|||||||
zone.frame.SetVal( fid );
|
zone.frame.SetVal( fid );
|
||||||
zone.child = -1;
|
zone.child = -1;
|
||||||
}
|
}
|
||||||
else if( vec->back().frame.Val() == fid )
|
else
|
||||||
{
|
{
|
||||||
auto& zone = vec->back();
|
auto& back = vec->back();
|
||||||
zone.end.SetVal( time + m_samplingPeriod );
|
const auto backFrame = GetCallstackFrame( m_data.ghostFrames[back.frame.Val()] );
|
||||||
|
const auto thisFrame = GetCallstackFrame( entry );
|
||||||
|
bool match = false;
|
||||||
|
if( backFrame && thisFrame )
|
||||||
|
{
|
||||||
|
match = backFrame->size == thisFrame->size;
|
||||||
|
if( match )
|
||||||
|
{
|
||||||
|
for( uint8_t i=0; i<thisFrame->size; i++ )
|
||||||
|
{
|
||||||
|
if( backFrame->data[i].symAddr != thisFrame->data[i].symAddr )
|
||||||
|
{
|
||||||
|
match = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if( match )
|
||||||
|
{
|
||||||
|
back.end.SetVal( time + m_samplingPeriod );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gcnt++;
|
gcnt++;
|
||||||
vec->back().end.SetVal( time );
|
back.end.SetVal( time );
|
||||||
auto& zone = vec->push_next();
|
auto& zone = vec->push_next();
|
||||||
zone.start.SetVal( time );
|
zone.start.SetVal( time );
|
||||||
zone.end.SetVal( time + m_samplingPeriod );
|
zone.end.SetVal( time + m_samplingPeriod );
|
||||||
zone.frame.SetVal( fid );
|
zone.frame.SetVal( fid );
|
||||||
zone.child = -1;
|
zone.child = -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if( idx > 0 )
|
if( idx > 0 )
|
||||||
{
|
{
|
||||||
auto& zone = vec->back();
|
auto& zone = vec->back();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user