mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
DebuggerWX: Added jit block linking option to the code window
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1958 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -174,8 +174,6 @@ namespace CPUCompare
|
|||||||
void Jit64::Init()
|
void Jit64::Init()
|
||||||
{
|
{
|
||||||
asm_routines.compareEnabled = ::Core::g_CoreStartupParameter.bRunCompareClient;
|
asm_routines.compareEnabled = ::Core::g_CoreStartupParameter.bRunCompareClient;
|
||||||
if (Core::g_CoreStartupParameter.bJITUnlimitedCache)
|
|
||||||
CODE_SIZE = 1024*1024*8*8;
|
|
||||||
|
|
||||||
jo.optimizeStack = true;
|
jo.optimizeStack = true;
|
||||||
jo.enableBlocklink = false; // Speed boost, but not 100% safe
|
jo.enableBlocklink = false; // Speed boost, but not 100% safe
|
||||||
@ -193,6 +191,12 @@ namespace CPUCompare
|
|||||||
gpr.SetEmitter(this);
|
gpr.SetEmitter(this);
|
||||||
fpr.SetEmitter(this);
|
fpr.SetEmitter(this);
|
||||||
|
|
||||||
|
// Custom settings
|
||||||
|
if (Core::g_CoreStartupParameter.bJITUnlimitedCache)
|
||||||
|
CODE_SIZE = 1024*1024*8*8;
|
||||||
|
if (Core::g_CoreStartupParameter.bJITBlockLinking)
|
||||||
|
{ jo.enableBlocklink = true; SuccessAlert("Your game was started with JIT Block Linking"); }
|
||||||
|
|
||||||
trampolines.Init();
|
trampolines.Init();
|
||||||
AllocCodeSpace(CODE_SIZE);
|
AllocCodeSpace(CODE_SIZE);
|
||||||
|
|
||||||
|
@ -467,13 +467,19 @@ void CCodeWindow::CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParam
|
|||||||
, wxITEM_CHECK);
|
, wxITEM_CHECK);
|
||||||
automaticstart->Check(bAutomaticStart);
|
automaticstart->Check(bAutomaticStart);
|
||||||
|
|
||||||
#ifdef JIT_OFF_OPTIONS
|
|
||||||
pCoreMenu->AppendSeparator();
|
pCoreMenu->AppendSeparator();
|
||||||
|
|
||||||
|
jitblocklinking = pCoreMenu->Append(IDM_JITBLOCKLINKING, _T("&JIT Block Linking"),
|
||||||
|
_T("Speed up the execution by linking the JIT blocks."
|
||||||
|
), wxITEM_CHECK);
|
||||||
|
|
||||||
jitunlimited = pCoreMenu->Append(IDM_JITUNLIMITED, _T("&Unlimited JIT Cache"),
|
jitunlimited = pCoreMenu->Append(IDM_JITUNLIMITED, _T("&Unlimited JIT Cache"),
|
||||||
_T("Avoid any involuntary JIT cache clearing, this may prevent Zelda TP from crashing."
|
_T("Avoid any involuntary JIT cache clearing, this may prevent Zelda TP from crashing."
|
||||||
" [This option must be selected before a game is started.]"
|
" [This option must be selected before a game is started.]"
|
||||||
),
|
), wxITEM_CHECK);
|
||||||
wxITEM_CHECK);
|
|
||||||
|
|
||||||
|
#ifdef JIT_OFF_OPTIONS
|
||||||
pCoreMenu->AppendSeparator();
|
pCoreMenu->AppendSeparator();
|
||||||
jitoff = pCoreMenu->Append(IDM_JITOFF, _T("&JIT off (JIT core)"),
|
jitoff = pCoreMenu->Append(IDM_JITOFF, _T("&JIT off (JIT core)"),
|
||||||
_T("Turn off all JIT functions, but still use the JIT core from Jit.cpp"),
|
_T("Turn off all JIT functions, but still use the JIT core from Jit.cpp"),
|
||||||
@ -602,6 +608,11 @@ bool CCodeWindow::UnlimitedJITCache()
|
|||||||
{
|
{
|
||||||
return GetMenuBar()->IsChecked(IDM_JITUNLIMITED);
|
return GetMenuBar()->IsChecked(IDM_JITUNLIMITED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CCodeWindow::JITBlockLinking()
|
||||||
|
{
|
||||||
|
return GetMenuBar()->IsChecked(IDM_JITBLOCKLINKING);
|
||||||
|
}
|
||||||
// =========================
|
// =========================
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,6 +62,7 @@ class CCodeWindow
|
|||||||
bool BootToPause();
|
bool BootToPause();
|
||||||
bool AutomaticStart();
|
bool AutomaticStart();
|
||||||
bool UnlimitedJITCache();
|
bool UnlimitedJITCache();
|
||||||
|
bool JITBlockLinking();
|
||||||
//bool UseDualCore(); // not used
|
//bool UseDualCore(); // not used
|
||||||
void JumpToAddress(u32 _Address);
|
void JumpToAddress(u32 _Address);
|
||||||
|
|
||||||
@ -75,7 +76,8 @@ class CCodeWindow
|
|||||||
IDM_INTERPRETER = 2000, // These cannot interfere with enums in Globals.h!
|
IDM_INTERPRETER = 2000, // These cannot interfere with enums in Globals.h!
|
||||||
//IDM_DUALCORE, // not used
|
//IDM_DUALCORE, // not used
|
||||||
IDM_AUTOMATICSTART, IDM_BOOTTOPAUSE,
|
IDM_AUTOMATICSTART, IDM_BOOTTOPAUSE,
|
||||||
IDM_JITUNLIMITED, IDM_JITOFF, // jit
|
IDM_JITUNLIMITED, IDM_JITBLOCKLINKING, // JIT
|
||||||
|
IDM_JITOFF,
|
||||||
IDM_JITLSOFF, IDM_JITLSLXZOFF, IDM_JITLSLWZOFF, IDM_JITLSLBZXOFF,
|
IDM_JITLSOFF, IDM_JITLSLXZOFF, IDM_JITLSLWZOFF, IDM_JITLSLBZXOFF,
|
||||||
IDM_JITLSPOFF, IDM_JITLSFOFF,
|
IDM_JITLSPOFF, IDM_JITLSFOFF,
|
||||||
IDM_JITIOFF,
|
IDM_JITIOFF,
|
||||||
@ -161,7 +163,7 @@ class CCodeWindow
|
|||||||
CMemoryWindow* m_MemoryWindow;
|
CMemoryWindow* m_MemoryWindow;
|
||||||
CJitWindow* m_JitWindow;
|
CJitWindow* m_JitWindow;
|
||||||
|
|
||||||
wxMenuItem* jitunlimited, *jitoff;
|
wxMenuItem* jitblocklinking, *jitunlimited, *jitoff;
|
||||||
wxMenuItem* jitlsoff, *jitlslxzoff, *jitlslwzoff, *jitlslbzxoff;
|
wxMenuItem* jitlsoff, *jitlslxzoff, *jitlslwzoff, *jitlslbzxoff;
|
||||||
wxMenuItem* jitlspoff;
|
wxMenuItem* jitlspoff;
|
||||||
wxMenuItem* jitlsfoff;
|
wxMenuItem* jitlsfoff;
|
||||||
|
@ -101,6 +101,7 @@ bool BootCore(const std::string& _rFilename)
|
|||||||
StartUp.bBootToPause = g_pCodeWindow->BootToPause();
|
StartUp.bBootToPause = g_pCodeWindow->BootToPause();
|
||||||
StartUp.bAutomaticStart = g_pCodeWindow->AutomaticStart();
|
StartUp.bAutomaticStart = g_pCodeWindow->AutomaticStart();
|
||||||
StartUp.bJITUnlimitedCache = g_pCodeWindow->UnlimitedJITCache();
|
StartUp.bJITUnlimitedCache = g_pCodeWindow->UnlimitedJITCache();
|
||||||
|
StartUp.bJITBlockLinking = g_pCodeWindow->JITBlockLinking();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user