diff --git a/src/xenia/cpu/exec_module.cc b/src/xenia/cpu/exec_module.cc index 742f4b61a..6475cf36f 100644 --- a/src/xenia/cpu/exec_module.cc +++ b/src/xenia/cpu/exec_module.cc @@ -153,7 +153,7 @@ int ExecModule::Init() { } FunctionSymbol* ExecModule::FindFunctionSymbol(uint32_t address) { - return sdb_->GetFunction(address); + return sdb_->GetFunction(address, true); } void ExecModule::Dump() { diff --git a/src/xenia/cpu/sdb/symbol_database.cc b/src/xenia/cpu/sdb/symbol_database.cc index 827a53c7a..dd5f329bd 100644 --- a/src/xenia/cpu/sdb/symbol_database.cc +++ b/src/xenia/cpu/sdb/symbol_database.cc @@ -147,7 +147,7 @@ VariableSymbol* SymbolDatabase::GetOrInsertVariable(uint32_t address) { return var; } -FunctionSymbol* SymbolDatabase::GetFunction(uint32_t address) { +FunctionSymbol* SymbolDatabase::GetFunction(uint32_t address, bool analyze) { SymbolMap::iterator i = symbols_.find(address); if (i != symbols_.end() && i->second->symbol_type == Symbol::Function) { return static_cast(i->second); @@ -161,7 +161,9 @@ FunctionSymbol* SymbolDatabase::GetFunction(uint32_t address) { symbols_.insert(SymbolMap::value_type(address, fn)); scan_queue_.push_back(fn); - FlushQueue(); + if (analyze) { + FlushQueue(); + } return fn; } diff --git a/src/xenia/cpu/sdb/symbol_database.h b/src/xenia/cpu/sdb/symbol_database.h index 5839e390f..ec7233da9 100644 --- a/src/xenia/cpu/sdb/symbol_database.h +++ b/src/xenia/cpu/sdb/symbol_database.h @@ -39,7 +39,7 @@ public: FunctionSymbol* GetOrInsertFunction( uint32_t address, FunctionSymbol* opt_call_source = NULL); VariableSymbol* GetOrInsertVariable(uint32_t address); - FunctionSymbol* GetFunction(uint32_t address); + FunctionSymbol* GetFunction(uint32_t address, bool analyze = false); VariableSymbol* GetVariable(uint32_t address); int GetAllVariables(std::vector& variables);