MIPS: Fix code size assertions for branch delay slots.
TEST=mozilla/ecma_3/Date/15.9.4.3.js BUG= Review URL: https://codereview.chromium.org/12447010 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13848 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
a62cfd1db0
commit
922c22f0cf
@ -2527,11 +2527,12 @@ void LCodeGen::DoCmpT(LCmpT* instr) {
|
|||||||
// A minor optimization that relies on LoadRoot always emitting one
|
// A minor optimization that relies on LoadRoot always emitting one
|
||||||
// instruction.
|
// instruction.
|
||||||
Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm());
|
Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm());
|
||||||
Label done;
|
Label done, check;
|
||||||
__ Branch(USE_DELAY_SLOT, &done, condition, v0, Operand(zero_reg));
|
__ Branch(USE_DELAY_SLOT, &done, condition, v0, Operand(zero_reg));
|
||||||
|
__ bind(&check);
|
||||||
__ LoadRoot(ToRegister(instr->result()), Heap::kTrueValueRootIndex);
|
__ LoadRoot(ToRegister(instr->result()), Heap::kTrueValueRootIndex);
|
||||||
|
ASSERT_EQ(1, masm()->InstructionsGeneratedSince(&check));
|
||||||
__ LoadRoot(ToRegister(instr->result()), Heap::kFalseValueRootIndex);
|
__ LoadRoot(ToRegister(instr->result()), Heap::kFalseValueRootIndex);
|
||||||
ASSERT_EQ(3, masm()->InstructionsGeneratedSince(&done));
|
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3506,8 +3507,6 @@ void LCodeGen::EmitIntegerMathAbs(LUnaryMathOperation* instr) {
|
|||||||
Label done;
|
Label done;
|
||||||
__ Branch(USE_DELAY_SLOT, &done, ge, input, Operand(zero_reg));
|
__ Branch(USE_DELAY_SLOT, &done, ge, input, Operand(zero_reg));
|
||||||
__ mov(result, input);
|
__ mov(result, input);
|
||||||
ASSERT_EQ(2, masm()->InstructionsGeneratedSince(&done));
|
|
||||||
__ subu(result, zero_reg, input);
|
|
||||||
// Overflow if result is still negative, i.e. 0x80000000.
|
// Overflow if result is still negative, i.e. 0x80000000.
|
||||||
DeoptimizeIf(lt, instr->environment(), result, Operand(zero_reg));
|
DeoptimizeIf(lt, instr->environment(), result, Operand(zero_reg));
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
|
Loading…
Reference in New Issue
Block a user