JIT: fix carry optimization on blocks that end early

I don't know if this shows up currently, but e.g. if you force blocks to be
under a certain length, this problem (a crash) shows up.
This commit is contained in:
Fiora 2014-12-26 12:32:42 -08:00
parent 339383b8dd
commit 354e255827

View File

@ -57,7 +57,7 @@ void Jit64::FinalizeCarry(CCFlags cond)
if (js.op->wantsCA) if (js.op->wantsCA)
{ {
// Be careful: a breakpoint kills flags in between instructions // Be careful: a breakpoint kills flags in between instructions
if (js.next_op->wantsCAInFlags && !js.next_inst_bp) if (!js.isLastInstruction && js.next_op->wantsCAInFlags && !js.next_inst_bp)
{ {
if (cond == CC_C || cond == CC_NC) if (cond == CC_C || cond == CC_NC)
{ {
@ -86,7 +86,7 @@ void Jit64::FinalizeCarry(bool ca)
js.carryFlagInverted = false; js.carryFlagInverted = false;
if (js.op->wantsCA) if (js.op->wantsCA)
{ {
if (js.next_op->wantsCAInFlags) if (!js.isLastInstruction && js.next_op->wantsCAInFlags && !js.next_inst_bp)
{ {
if (ca) if (ca)
STC(); STC();