mirror of
https://github.com/wolfpld/tracy.git
synced 2026-10-17 22:35:36 +00:00
Move jump range calculation to a separate function.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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() );
|
||||
|
||||
Reference in New Issue
Block a user