DSP Jit removed useless push/pop (at least I hope they were useless).

enabled nr in jit after getting skid_au's help in writing the inscrease_addr_reg.
ector can you please take a look and see if the loop code makes sense? it seems
no one it really sure how loops suppose to work in jit 


git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5301 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
nakeee
2010-04-09 15:11:02 +00:00
parent 6136c94de5
commit 91c6f5acba
4 changed files with 106 additions and 93 deletions

View File

@ -110,7 +110,7 @@ void DSPEmitter::Default(UDSPInstruction _inst)
const u8 *DSPEmitter::Compile(int start_addr) {
AlignCode16();
const u8 *entryPoint = GetCodePtr();
ABI_PushAllCalleeSavedRegsAndAdjustStack();
// ABI_PushAllCalleeSavedRegsAndAdjustStack();
int addr = start_addr;
@ -129,8 +129,8 @@ const u8 *DSPEmitter::Compile(int start_addr) {
CMP(32, R(EAX), Imm32(0));
FixupBranch noExceptionOccurred = J_CC(CC_L);
ABI_CallFunction((void *)DSPInterpreter::HandleLoop);
ABI_PopAllCalleeSavedRegsAndAdjustStack();
// ABI_CallFunction((void *)DSPInterpreter::HandleLoop);
// ABI_PopAllCalleeSavedRegsAndAdjustStack();
RET();
SetJumpTarget(skipCheck);
@ -152,10 +152,10 @@ const u8 *DSPEmitter::Compile(int start_addr) {
CMP(32, R(EAX), Imm32(0));
FixupBranch rLoopCounterExit = J_CC(CC_LE);
// These functions branch and therefore only need to be called in the end
// of each block and in this order
// These functions branch and therefore only need to be called in the
// end of each block and in this order
ABI_CallFunction((void *)&DSPInterpreter::HandleLoop);
ABI_PopAllCalleeSavedRegsAndAdjustStack();
// ABI_PopAllCalleeSavedRegsAndAdjustStack();
RET();
SetJumpTarget(rLoopAddressExit);
@ -171,13 +171,13 @@ const u8 *DSPEmitter::Compile(int start_addr) {
}
if (opcode->branch || endBlock[addr]
|| DSPAnalyzer::code_flags[addr] & DSPAnalyzer::CODE_IDLE_SKIP)
|| (DSPAnalyzer::code_flags[addr] & DSPAnalyzer::CODE_IDLE_SKIP)) {
break;
}
addr += opcode->size;
}
ABI_PopAllCalleeSavedRegsAndAdjustStack();
// ABI_PopAllCalleeSavedRegsAndAdjustStack();
RET();
blocks[start_addr] = (CompiledCode)entryPoint;