fix for ZBody traversal

This commit is contained in:
Vern Paxson 2024-06-12 18:52:41 -07:00
parent 3dbaa141ec
commit 9b32d3f494
2 changed files with 9 additions and 5 deletions

View file

@ -522,11 +522,10 @@ void ProfileFunc::TrackID(const ID* id) {
// Already tracked. // Already tracked.
return; return;
if ( id->IsGlobal() ) if ( id->IsGlobal() ) {
{ globals.insert(id);
globals.insert(id); all_globals.insert(id);
all_globals.insert(id); }
}
ordered_ids.push_back(id); ordered_ids.push_back(id);
} }

View file

@ -591,6 +591,11 @@ TraversalCode ZBody::Traverse(TraversalCallback* cb) const {
TraversalCode tc = cb->PreStmt(this); TraversalCode tc = cb->PreStmt(this);
HANDLE_TC_STMT_PRE(tc); HANDLE_TC_STMT_PRE(tc);
for ( auto& gi : globals ) {
tc = gi.id->Traverse(cb);
HANDLE_TC_STMT_PRE(tc);
}
for ( size_t i = 0; i < NumInsts(); ++i ) { for ( size_t i = 0; i < NumInsts(); ++i ) {
tc = insts[i].Traverse(cb); tc = insts[i].Traverse(cb);
HANDLE_TC_STMT_PRE(tc); HANDLE_TC_STMT_PRE(tc);