Move jump range calculation to a separate function.

This commit is contained in:
Bartosz Taudul
2025-06-19 01:32:59 +02:00
parent 76fd44ea8a
commit 91cfc2e5b8
2 changed files with 28 additions and 21 deletions

View File

@@ -2382,6 +2382,31 @@ static int PrintHexBytes( const uint8_t* bytes, size_t len, CpuArchitecture arch
}
}
std::tuple<size_t, size_t> SourceView::GetJumpRange( const JumpData& jump )
{
size_t minIdx = 0, maxIdx = 0;
size_t i;
for( i=0; i<m_asm.size(); i++ )
{
if( m_asm[i].addr == jump.min )
{
minIdx = i++;
break;
}
}
assert( i != m_asm.size() );
for( ; i<m_asm.size(); i++ )
{
if( m_asm[i].addr == jump.max )
{
maxIdx = i+1;
break;
}
}
assert( i != m_asm.size() );
return std::make_tuple( minIdx, maxIdx );
}
uint64_t SourceView::RenderSymbolAsmView( const AddrStatData& as, Worker& worker, View& view )
{
const auto scale = GetScale();
@@ -2733,27 +2758,7 @@ uint64_t SourceView::RenderSymbolAsmView( const AddrStatData& as, Worker& worker
#ifndef TRACY_NO_FILESELECTOR
if( ImGui::MenuItem( ICON_FA_FILE_IMPORT " Save jump range" ) )
{
size_t minIdx = 0, maxIdx = 0;
size_t i;
for( i=0; i<m_asm.size(); i++ )
{
if( m_asm[i].addr == it->second.min )
{
minIdx = i++;
break;
}
}
assert( i != m_asm.size() );
for( ; i<m_asm.size(); i++ )
{
if( m_asm[i].addr == it->second.max )
{
maxIdx = i+1;
break;
}
}
assert( i != m_asm.size() );
auto [minIdx, maxIdx] = GetJumpRange( it->second );
Save( worker, minIdx, maxIdx );
ImGui::CloseCurrentPopup();
}

View File

@@ -3,6 +3,7 @@
#include <limits>
#include <string>
#include <tuple>
#include <vector>
#include "tracy_robin_hood.h"
@@ -213,6 +214,7 @@ private:
const std::vector<uint64_t>* GetAddressesForLocation( uint32_t fileStringIdx, uint32_t line, const Worker& worker );
tracy_force_inline float CalcJumpSeparation( float scale );
std::tuple<size_t, size_t> GetJumpRange( const JumpData& jump );
#ifndef TRACY_NO_FILESELECTOR
void Save( const Worker& worker, size_t start = 0, size_t stop = std::numeric_limits<size_t>::max() );