diff --git a/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp b/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp index 50ca9dbf85..2e741754cc 100644 --- a/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp +++ b/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp @@ -26,10 +26,10 @@ static bool IsStackBottom(const Core::CPUThreadGuard& guard, u32 addr) return !addr || !PowerPC::MMU::HostIsRAMAddress(guard, addr); } -static void WalkTheStack(Core::System& system, const Core::CPUThreadGuard& guard, +static void WalkTheStack(const Core::CPUThreadGuard& guard, const std::function& stack_step) { - auto& ppc_state = system.GetPPCState(); + const auto& ppc_state = guard.GetSystem().GetPPCState(); if (!IsStackBottom(guard, ppc_state.gpr[1])) { @@ -52,10 +52,9 @@ static void WalkTheStack(Core::System& system, const Core::CPUThreadGuard& guard // Returns callstack "formatted for debugging" - meaning that it // includes LR as the last item, and all items are the last step, // instead of "pointing ahead" -bool GetCallstack(Core::System& system, const Core::CPUThreadGuard& guard, - std::vector& output) +bool GetCallstack(const Core::CPUThreadGuard& guard, std::vector& output) { - auto& ppc_state = system.GetPPCState(); + const auto& ppc_state = guard.GetSystem().GetPPCState(); if (!Core::IsRunning() || !PowerPC::MMU::HostIsRAMAddress(guard, ppc_state.gpr[1])) return false; @@ -75,7 +74,7 @@ bool GetCallstack(Core::System& system, const Core::CPUThreadGuard& guard, entry.vAddress = LR(ppc_state) - 4; output.push_back(entry); - WalkTheStack(system, guard, [&entry, &output](u32 func_addr) { + WalkTheStack(guard, [&entry, &output](u32 func_addr) { std::string func_desc = g_symbolDB.GetDescription(func_addr); if (func_desc.empty() || func_desc == "Invalid") func_desc = "(unknown)"; @@ -87,10 +86,10 @@ bool GetCallstack(Core::System& system, const Core::CPUThreadGuard& guard, return true; } -void PrintCallstack(Core::System& system, const Core::CPUThreadGuard& guard, - Common::Log::LogType type, Common::Log::LogLevel level) +void PrintCallstack(const Core::CPUThreadGuard& guard, Common::Log::LogType type, + Common::Log::LogLevel level) { - auto& ppc_state = system.GetPPCState(); + const auto& ppc_state = guard.GetSystem().GetPPCState(); GENERIC_LOG_FMT(type, level, "== STACK TRACE - SP = {:08x} ==", ppc_state.gpr[1]); @@ -105,7 +104,7 @@ void PrintCallstack(Core::System& system, const Core::CPUThreadGuard& guard, LR(ppc_state)); } - WalkTheStack(system, guard, [type, level](u32 func_addr) { + WalkTheStack(guard, [type, level](u32 func_addr) { std::string func_desc = g_symbolDB.GetDescription(func_addr); if (func_desc.empty() || func_desc == "Invalid") func_desc = "(unknown)"; diff --git a/Source/Core/Core/Debugger/Debugger_SymbolMap.h b/Source/Core/Core/Debugger/Debugger_SymbolMap.h index 83dcfaa551..6e79e5f91a 100644 --- a/Source/Core/Core/Debugger/Debugger_SymbolMap.h +++ b/Source/Core/Core/Debugger/Debugger_SymbolMap.h @@ -13,8 +13,7 @@ namespace Core { class CPUThreadGuard; -class System; -} // namespace Core +} namespace Dolphin_Debugger { @@ -24,10 +23,9 @@ struct CallstackEntry u32 vAddress = 0; }; -bool GetCallstack(Core::System& system, const Core::CPUThreadGuard& guard, - std::vector& output); -void PrintCallstack(Core::System& system, const Core::CPUThreadGuard& guard, - Common::Log::LogType type, Common::Log::LogLevel level); +bool GetCallstack(const Core::CPUThreadGuard& guard, std::vector& output); +void PrintCallstack(const Core::CPUThreadGuard& guard, Common::Log::LogType type, + Common::Log::LogLevel level); void PrintDataBuffer(Common::Log::LogType type, const u8* data, size_t size, std::string_view title); } // namespace Dolphin_Debugger diff --git a/Source/Core/Core/PowerPC/Expression.cpp b/Source/Core/Core/PowerPC/Expression.cpp index 2fe2d8c036..79307f4460 100644 --- a/Source/Core/Core/PowerPC/Expression.cpp +++ b/Source/Core/Core/PowerPC/Expression.cpp @@ -115,9 +115,8 @@ static double CallstackFunc(expr_func* f, vec_expr_t* args, void* c) std::vector stack; { - auto& system = Core::System::GetInstance(); - Core::CPUThreadGuard guard(system); - bool success = Dolphin_Debugger::GetCallstack(system, guard, stack); + Core::CPUThreadGuard guard(Core::System::GetInstance()); + const bool success = Dolphin_Debugger::GetCallstack(guard, stack); if (!success) return 0; } diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp index 6b475e1204..929ec185c4 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp @@ -323,7 +323,7 @@ void Interpreter::unknown_instruction(Interpreter& interpreter, UGeckoInstructio const u32 opcode = PowerPC::MMU::HostRead_U32(guard, last_pc); const std::string disasm = Common::GekkoDisassembler::Disassemble(opcode, last_pc); NOTICE_LOG_FMT(POWERPC, "Last PC = {:08x} : {}", last_pc, disasm); - Dolphin_Debugger::PrintCallstack(system, guard, Common::Log::LogType::POWERPC, + Dolphin_Debugger::PrintCallstack(guard, Common::Log::LogType::POWERPC, Common::Log::LogLevel::LNOTICE); const auto& ppc_state = interpreter.m_ppc_state; diff --git a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp index 650e17e905..0bf2937dbf 100644 --- a/Source/Core/DolphinQt/Debugger/CodeWidget.cpp +++ b/Source/Core/DolphinQt/Debugger/CodeWidget.cpp @@ -344,7 +344,7 @@ void CodeWidget::UpdateCallstack() const bool success = [this, &stack] { Core::CPUThreadGuard guard(m_system); - return Dolphin_Debugger::GetCallstack(m_system, guard, stack); + return Dolphin_Debugger::GetCallstack(guard, stack); }(); if (!success)