JitIL: Omitted extra SUBs when js.downcountAmount == 0. (Though it is not very often.)

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6117 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
nodchip 2010-08-22 08:38:56 +00:00
parent 43dc70eace
commit e740c4caa8
1 changed files with 8 additions and 4 deletions

View File

@ -294,6 +294,7 @@ void JitIL::Cleanup()
void JitIL::WriteExit(u32 destination, int exit_num) void JitIL::WriteExit(u32 destination, int exit_num)
{ {
Cleanup(); Cleanup();
if (js.downcountAmount)
SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount));
//If nobody has taken care of this yet (this can be removed when all branches are done) //If nobody has taken care of this yet (this can be removed when all branches are done)
@ -320,6 +321,7 @@ void JitIL::WriteExitDestInOpArg(const Gen::OpArg& arg, int exit_num)
{ {
MOV(32, M(&PC), arg); MOV(32, M(&PC), arg);
Cleanup(); Cleanup();
if (js.downcountAmount)
SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount));
JMP(asm_routines.dispatcher, true); JMP(asm_routines.dispatcher, true);
} }
@ -328,6 +330,7 @@ void JitIL::WriteRfiExitDestInOpArg(const Gen::OpArg& arg)
{ {
MOV(32, M(&PC), arg); MOV(32, M(&PC), arg);
Cleanup(); Cleanup();
if (js.downcountAmount)
SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount));
JMP(asm_routines.testExceptions, true); JMP(asm_routines.testExceptions, true);
} }
@ -335,6 +338,7 @@ void JitIL::WriteRfiExitDestInOpArg(const Gen::OpArg& arg)
void JitIL::WriteExceptionExit() void JitIL::WriteExceptionExit()
{ {
Cleanup(); Cleanup();
if (js.downcountAmount)
SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount));
JMP(asm_routines.testExceptions, true); JMP(asm_routines.testExceptions, true);
} }