Core: Speed up some debugger usage in interepter if not being used
This commit is contained in:
parent
d918225639
commit
4a68941c08
|
@ -121,7 +121,10 @@ void R4300iOp::ExecuteOps(uint32_t Cycles)
|
||||||
g_Settings->SaveBool(Debugger_SteppingOps, true);
|
g_Settings->SaveBool(Debugger_SteppingOps, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_Debugger->CPUStepStarted(); // May set stepping ops/skip op
|
if (TrackCPUStepStarted())
|
||||||
|
{
|
||||||
|
g_Debugger->CPUStepStarted(); // May set stepping ops/skip op
|
||||||
|
}
|
||||||
|
|
||||||
if (isStepping())
|
if (isStepping())
|
||||||
{
|
{
|
||||||
|
@ -136,7 +139,10 @@ void R4300iOp::ExecuteOps(uint32_t Cycles)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_Debugger->CPUStep();
|
if (TrackCPUStep())
|
||||||
|
{
|
||||||
|
g_Debugger->CPUStep();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
(this->*Jump_Opcode[m_Opcode.op])();
|
(this->*Jump_Opcode[m_Opcode.op])();
|
||||||
|
@ -147,7 +153,7 @@ void R4300iOp::ExecuteOps(uint32_t Cycles)
|
||||||
Cycles -= CountPerOp;
|
Cycles -= CountPerOp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CDebugSettings::HaveDebugger())
|
if (TrackCPUStepEnded())
|
||||||
{
|
{
|
||||||
g_Debugger->CPUStepEnded();
|
g_Debugger->CPUStepEnded();
|
||||||
}
|
}
|
||||||
|
|
|
@ -344,6 +344,8 @@ void CSettings::AddHowToHandleSetting(const char * BaseDirectory)
|
||||||
AddHandler(Debugger_AppLogFlush, new CSettingTypeApplication("Logging", "Log Auto Flush", (uint32_t) false));
|
AddHandler(Debugger_AppLogFlush, new CSettingTypeApplication("Logging", "Log Auto Flush", (uint32_t) false));
|
||||||
AddHandler(Debugger_RecordRecompilerAsm, new CSettingTypeApplication("Debugger", "Record Recompiler Asm", false));
|
AddHandler(Debugger_RecordRecompilerAsm, new CSettingTypeApplication("Debugger", "Record Recompiler Asm", false));
|
||||||
AddHandler(Debugger_AutorunScripts, new CSettingTypeApplication("Debugger", "Autorun Scripts", ""));
|
AddHandler(Debugger_AutorunScripts, new CSettingTypeApplication("Debugger", "Autorun Scripts", ""));
|
||||||
|
AddHandler(Debugger_TrackCPUStepStarted, new CSettingTypeTempBool(false));
|
||||||
|
AddHandler(Debugger_TrackCPUStepEnded, new CSettingTypeTempBool(false));
|
||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
AddHandler(Debugger_TraceMD5, new CSettingTypeApplication("Logging", "MD5", (uint32_t)g_ModuleLogLevel[TraceMD5]));
|
AddHandler(Debugger_TraceMD5, new CSettingTypeApplication("Logging", "MD5", (uint32_t)g_ModuleLogLevel[TraceMD5]));
|
||||||
|
|
|
@ -26,6 +26,8 @@ bool CDebugSettings::m_EndOnPermLoop = false;
|
||||||
bool CDebugSettings::m_BreakOnUnhandledMemory = false;
|
bool CDebugSettings::m_BreakOnUnhandledMemory = false;
|
||||||
bool CDebugSettings::m_BreakOnAddressError = false;
|
bool CDebugSettings::m_BreakOnAddressError = false;
|
||||||
bool CDebugSettings::m_StepOnBreakOpCode = false;
|
bool CDebugSettings::m_StepOnBreakOpCode = false;
|
||||||
|
bool CDebugSettings::m_TrackCPUStepStarted = false;
|
||||||
|
bool CDebugSettings::m_TrackCPUStepEnded = false;
|
||||||
|
|
||||||
CDebugSettings::CDebugSettings()
|
CDebugSettings::CDebugSettings()
|
||||||
{
|
{
|
||||||
|
@ -52,6 +54,8 @@ CDebugSettings::CDebugSettings()
|
||||||
g_Settings->RegisterChangeCB(Debugger_BreakOnUnhandledMemory, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
g_Settings->RegisterChangeCB(Debugger_BreakOnUnhandledMemory, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
g_Settings->RegisterChangeCB(Debugger_BreakOnAddressError, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
g_Settings->RegisterChangeCB(Debugger_BreakOnAddressError, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
g_Settings->RegisterChangeCB(Debugger_StepOnBreakOpCode, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
g_Settings->RegisterChangeCB(Debugger_StepOnBreakOpCode, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
|
g_Settings->RegisterChangeCB(Debugger_TrackCPUStepStarted, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
|
g_Settings->RegisterChangeCB(Debugger_TrackCPUStepEnded, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
|
|
||||||
RefreshSettings();
|
RefreshSettings();
|
||||||
}
|
}
|
||||||
|
@ -80,6 +84,8 @@ CDebugSettings::~CDebugSettings()
|
||||||
g_Settings->UnregisterChangeCB(Debugger_BreakOnUnhandledMemory, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
g_Settings->UnregisterChangeCB(Debugger_BreakOnUnhandledMemory, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
g_Settings->UnregisterChangeCB(Debugger_BreakOnAddressError, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
g_Settings->UnregisterChangeCB(Debugger_BreakOnAddressError, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
g_Settings->UnregisterChangeCB(Debugger_StepOnBreakOpCode, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
g_Settings->UnregisterChangeCB(Debugger_StepOnBreakOpCode, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
|
g_Settings->UnregisterChangeCB(Debugger_TrackCPUStepStarted, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
|
g_Settings->UnregisterChangeCB(Debugger_TrackCPUStepEnded, this, (CSettings::SettingChangedFunc)StaticRefreshSettings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,6 +110,8 @@ void CDebugSettings::RefreshSettings()
|
||||||
m_BreakOnUnhandledMemory = m_HaveDebugger && g_Settings->LoadBool(Debugger_BreakOnUnhandledMemory);
|
m_BreakOnUnhandledMemory = m_HaveDebugger && g_Settings->LoadBool(Debugger_BreakOnUnhandledMemory);
|
||||||
m_BreakOnAddressError = m_HaveDebugger && g_Settings->LoadBool(Debugger_BreakOnAddressError);
|
m_BreakOnAddressError = m_HaveDebugger && g_Settings->LoadBool(Debugger_BreakOnAddressError);
|
||||||
m_StepOnBreakOpCode = m_HaveDebugger && g_Settings->LoadBool(Debugger_StepOnBreakOpCode);
|
m_StepOnBreakOpCode = m_HaveDebugger && g_Settings->LoadBool(Debugger_StepOnBreakOpCode);
|
||||||
|
m_TrackCPUStepStarted = m_Stepping || m_ExceptionBreakpoints || (m_HaveDebugger && g_Settings->LoadBool(Debugger_TrackCPUStepStarted));
|
||||||
|
m_TrackCPUStepEnded = m_HaveDebugger && g_Settings->LoadBool(Debugger_TrackCPUStepEnded);
|
||||||
|
|
||||||
m_Debugging = m_HaveDebugger && (m_HaveExecutionBP || m_WaitingForStep || m_HaveWriteBP || m_HaveReadBP);
|
m_Debugging = m_HaveDebugger && (m_HaveExecutionBP || m_WaitingForStep || m_HaveWriteBP || m_HaveReadBP);
|
||||||
}
|
}
|
|
@ -93,6 +93,21 @@ public:
|
||||||
return m_StepOnBreakOpCode;
|
return m_StepOnBreakOpCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool TrackCPUStepStarted(void)
|
||||||
|
{
|
||||||
|
return m_TrackCPUStepStarted;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool TrackCPUStepEnded(void)
|
||||||
|
{
|
||||||
|
return m_TrackCPUStepEnded;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline bool TrackCPUStep(void)
|
||||||
|
{
|
||||||
|
return m_bCPULoggingEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void StaticRefreshSettings(CDebugSettings * _this)
|
static void StaticRefreshSettings(CDebugSettings * _this)
|
||||||
{
|
{
|
||||||
|
@ -122,6 +137,8 @@ private:
|
||||||
static bool m_BreakOnUnhandledMemory;
|
static bool m_BreakOnUnhandledMemory;
|
||||||
static bool m_BreakOnAddressError;
|
static bool m_BreakOnAddressError;
|
||||||
static bool m_StepOnBreakOpCode;
|
static bool m_StepOnBreakOpCode;
|
||||||
|
static bool m_TrackCPUStepStarted;
|
||||||
|
static bool m_TrackCPUStepEnded;
|
||||||
|
|
||||||
static int32_t m_RefCount;
|
static int32_t m_RefCount;
|
||||||
static bool m_Registered;
|
static bool m_Registered;
|
||||||
|
|
|
@ -270,6 +270,8 @@ enum SettingID
|
||||||
Debugger_IntrBreakpoints,
|
Debugger_IntrBreakpoints,
|
||||||
Debugger_RcpIntrBreakpoints,
|
Debugger_RcpIntrBreakpoints,
|
||||||
Debugger_AutorunScripts,
|
Debugger_AutorunScripts,
|
||||||
|
Debugger_TrackCPUStepStarted,
|
||||||
|
Debugger_TrackCPUStepEnded,
|
||||||
|
|
||||||
// Trace
|
// Trace
|
||||||
Debugger_TraceMD5,
|
Debugger_TraceMD5,
|
||||||
|
|
|
@ -318,6 +318,7 @@ void CBreakpoints::ToggleMemLock(uint32_t address)
|
||||||
if (m_MemLocks.count(address) == 0)
|
if (m_MemLocks.count(address) == 0)
|
||||||
{
|
{
|
||||||
m_MemLocks.insert(address);
|
m_MemLocks.insert(address);
|
||||||
|
g_Settings->SaveBool(Debugger_TrackCPUStepStarted, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_MemLocks.erase(address);
|
m_MemLocks.erase(address);
|
||||||
|
@ -348,6 +349,10 @@ size_t CBreakpoints::NumMemLocks()
|
||||||
void CBreakpoints::UpdateHaveRegBP(void)
|
void CBreakpoints::UpdateHaveRegBP(void)
|
||||||
{
|
{
|
||||||
m_bHaveRegBP = HaveAnyGPRWriteBP() || HaveAnyGPRReadBP() || HaveHIWriteBP() || HaveHIReadBP() || HaveLOWriteBP() || HaveLOReadBP();
|
m_bHaveRegBP = HaveAnyGPRWriteBP() || HaveAnyGPRReadBP() || HaveHIWriteBP() || HaveHIReadBP() || HaveLOWriteBP() || HaveLOReadBP();
|
||||||
|
if (m_bHaveRegBP)
|
||||||
|
{
|
||||||
|
g_Settings->SaveBool(Debugger_TrackCPUStepStarted, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CBreakpoints::ToggleGPRWriteBP(int nReg)
|
void CBreakpoints::ToggleGPRWriteBP(int nReg)
|
||||||
|
|
|
@ -427,6 +427,7 @@ void CDebuggerUI::OpenStackTraceWindow(void)
|
||||||
if (m_StackTrace == nullptr)
|
if (m_StackTrace == nullptr)
|
||||||
{
|
{
|
||||||
m_StackTrace = new CDebugStackTrace(this);
|
m_StackTrace = new CDebugStackTrace(this);
|
||||||
|
g_Settings->SaveBool(Debugger_TrackCPUStepEnded, true);
|
||||||
}
|
}
|
||||||
m_StackTrace->ShowWindow();
|
m_StackTrace->ShowWindow();
|
||||||
}
|
}
|
||||||
|
|
|
@ -487,6 +487,7 @@ JSAppCallbackID CScriptSystem::RawAddAppCallback(JSAppHookID hookId, JSAppCallba
|
||||||
return JS_INVALID_CALLBACK;
|
return JS_INVALID_CALLBACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_Settings->SaveBool(Debugger_TrackCPUStepStarted, true);
|
||||||
callback.m_Instance->IncRefCount();
|
callback.m_Instance->IncRefCount();
|
||||||
callback.m_CallbackId = m_NextAppCallbackId++;
|
callback.m_CallbackId = m_NextAppCallbackId++;
|
||||||
m_AppCallbackHooks[hookId].push_back(callback);
|
m_AppCallbackHooks[hookId].push_back(callback);
|
||||||
|
|
Loading…
Reference in New Issue