diff --git a/rpcs3/Emu/CPU/CPUThread.cpp b/rpcs3/Emu/CPU/CPUThread.cpp index fea5e15400..5990228a29 100644 --- a/rpcs3/Emu/CPU/CPUThread.cpp +++ b/rpcs3/Emu/CPU/CPUThread.cpp @@ -29,6 +29,7 @@ CPUThread::CPUThread(CPUThreadType type) , m_status(Stopped) , m_last_syscall(0) , m_trace_enabled(false) + , m_trace_call_stack(true) { } @@ -155,7 +156,7 @@ void CPUThread::SetBranch(const u32 pc, bool record_branch) m_is_branch = true; nPC = pc; - if(record_branch) + if(m_trace_call_stack && record_branch) CallStackBranch(pc); } diff --git a/rpcs3/Emu/CPU/CPUThread.h b/rpcs3/Emu/CPU/CPUThread.h index d15af1431d..35d48dd990 100644 --- a/rpcs3/Emu/CPU/CPUThread.h +++ b/rpcs3/Emu/CPU/CPUThread.h @@ -43,6 +43,8 @@ protected: CPUDecoder* m_dec; + bool m_trace_call_stack; + public: virtual void InitRegs()=0; @@ -177,6 +179,8 @@ public: u32 GetId() const { return m_id; } CPUThreadType GetType() const { return m_type; } + void SetCallStackTracing(bool trace_call_stack) { m_trace_call_stack = trace_call_stack; } + void Reset(); void Close(); void Run(); diff --git a/rpcs3/Emu/Cell/PPULLVMRecompiler.cpp b/rpcs3/Emu/Cell/PPULLVMRecompiler.cpp index 11f83eb8ca..eb7ad0fa8d 100644 --- a/rpcs3/Emu/Cell/PPULLVMRecompiler.cpp +++ b/rpcs3/Emu/Cell/PPULLVMRecompiler.cpp @@ -237,7 +237,7 @@ Executable Compiler::Compile(const std::string & name, const ControlFlowGraph & m_stats.ir_build_time += std::chrono::duration_cast(ir_build_end - compilation_start); // Optimize this function - //m_fpm->run(*m_state.function); + m_fpm->run(*m_state.function); auto optimize_end = std::chrono::high_resolution_clock::now(); m_stats.optimization_time += std::chrono::duration_cast(optimize_end - ir_build_end); diff --git a/rpcs3/Emu/Cell/PPUThread.cpp b/rpcs3/Emu/Cell/PPUThread.cpp index df7ce2740b..a74a64fa2d 100644 --- a/rpcs3/Emu/Cell/PPUThread.cpp +++ b/rpcs3/Emu/Cell/PPUThread.cpp @@ -111,6 +111,7 @@ void PPUThread::DoRun() break; case 2: + SetCallStackTracing(false); if (!m_dec) { m_dec = new ppu_recompiler_llvm::ExecutionEngine(*this); }