Maintain a history of viewed symbols.

This commit is contained in:
Bartosz Taudul
2023-10-07 01:00:59 +02:00
parent 5e31910510
commit 2a6a082c93
2 changed files with 26 additions and 2 deletions

View File

@@ -606,7 +606,7 @@ void SourceView::OpenSource( const char* fileName, int line, const View& view, c
assert( !m_source.empty() );
}
void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, Worker& worker, const View& view )
void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr, uint64_t symAddr, Worker& worker, const View& view, bool updateHistory )
{
m_targetLine = line;
m_targetAddr = symAddr;
@@ -623,6 +623,19 @@ void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr,
SelectViewMode();
if( !worker.GetInlineSymbolList( baseAddr, m_codeLen ) ) m_calcInlineStats = false;
if( updateHistory )
{
m_history.erase( m_history.begin() + m_historyCursor, m_history.end() );
History entry = { fileName, line, baseAddr, symAddr };
if( m_history.empty() || memcmp( &m_history.back(), &entry, sizeof( History ) ) != 0 )
{
m_history.emplace_back( entry );
if( m_history.size() > 100 ) m_history.erase( m_history.begin() );
m_historyCursor = m_history.size();
}
}
}
void SourceView::SelectViewMode()