LLE JIT: The block linker will now recompile all blocks that it encounters immediately. Gives a speed boost in some games. Also removed an extraneous check for external exceptions.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6801 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
skidau 2011-01-10 03:03:03 +00:00
parent a92fd2b4a1
commit f49efa8868
3 changed files with 18 additions and 6 deletions

View File

@ -174,10 +174,6 @@ void DSPCore_SetException(u8 level)
// Comming from the CPU // Comming from the CPU
void DSPCore_CheckExternalInterrupt() void DSPCore_CheckExternalInterrupt()
{ {
// check if there is an external interrupt
if (! (g_dsp.cr & CR_EXTERNAL_INT))
return;
if (! dsp_SR_is_flag_set(SR_EXT_INT_ENABLE)) if (! dsp_SR_is_flag_set(SR_EXT_INT_ENABLE))
return; return;
@ -291,6 +287,23 @@ void DSPCore_Step()
void CompileCurrent() void CompileCurrent()
{ {
jit->Compile(g_dsp.pc); jit->Compile(g_dsp.pc);
bool retry = true;
while (retry)
{
retry = false;
for(u16 i = 0x0000; i < 0xffff; ++i)
{
if (!jit->unresolvedJumps[i].empty())
{
u16 addrToCompile = jit->unresolvedJumps[i].front();
jit->Compile(addrToCompile);
if (!jit->unresolvedJumps[i].empty())
retry = true;
}
}
}
} }
u16 DSPCore_ReadRegister(int reg) { u16 DSPCore_ReadRegister(int reg) {

View File

@ -30,8 +30,6 @@
using namespace Gen; using namespace Gen;
const u8 *stubEntryPoint;
DSPEmitter::DSPEmitter() : storeIndex(-1), storeIndex2(-1) DSPEmitter::DSPEmitter() : storeIndex(-1), storeIndex2(-1)
{ {
m_compiledCode = NULL; m_compiledCode = NULL;

View File

@ -250,6 +250,7 @@ public:
// CALL this to start the dispatcher // CALL this to start the dispatcher
const u8 *enterDispatcher; const u8 *enterDispatcher;
const u8 *stubEntryPoint;
u16 compilePC; u16 compilePC;
u16 startAddr; u16 startAddr;
CompiledCode *blockLinks; CompiledCode *blockLinks;