From ddd6e3024daf7b93f65dfa38f6d063de87ab135c Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Wed, 16 Apr 2014 23:57:52 -0700 Subject: [PATCH] Skip jals when replacing funcs. Improves performance in God Eater (when replacements enabled.) --- Core/MIPS/x86/Jit.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Core/MIPS/x86/Jit.cpp b/Core/MIPS/x86/Jit.cpp index a70d0ce359..3f9d885b24 100644 --- a/Core/MIPS/x86/Jit.cpp +++ b/Core/MIPS/x86/Jit.cpp @@ -453,7 +453,15 @@ bool Jit::ReplaceJalTo(u32 dest) { blocks.ProxyBlock(js.blockStart, dest, 4, GetCodePtr()); return true; } else { - return false; + gpr.SetImm(MIPS_REG_RA, js.compilerPC + 8); + CompileDelaySlot(DELAYSLOT_NICE); + FlushAll(); + ABI_CallFunction(entry->replaceFunc); + SUB(32, M(¤tMIPS->downcount), R(EAX)); + js.downcountAmount = 0; // we just subtracted most of it + js.compilerPC += 4; + js.compiling = true; + return true; } }