| Index: src/mips/lithium-codegen-mips.cc
|
| diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc
|
| index a3bcdf608a3154c210767c017b7d47a5f075cc0e..7f6e86980872e1c79cd66f4bfdabecdfe81cf0ab 100644
|
| --- a/src/mips/lithium-codegen-mips.cc
|
| +++ b/src/mips/lithium-codegen-mips.cc
|
| @@ -2039,6 +2039,16 @@ void LCodeGen::EmitBranchF(InstrType instr,
|
|
|
|
|
| template<class InstrType>
|
| +void LCodeGen::EmitFalseBranch(InstrType instr,
|
| + Condition condition,
|
| + Register src1,
|
| + const Operand& src2) {
|
| + int false_block = instr->FalseDestination(chunk_);
|
| + __ Branch(chunk_->GetAssemblyLabel(false_block), condition, src1, src2);
|
| +}
|
| +
|
| +
|
| +template<class InstrType>
|
| void LCodeGen::EmitFalseBranchF(InstrType instr,
|
| Condition condition,
|
| FPURegister src1,
|
| @@ -2314,27 +2324,26 @@ void LCodeGen::DoCmpHoleAndBranch(LCmpHoleAndBranch* instr) {
|
| void LCodeGen::DoCompareMinusZeroAndBranch(LCompareMinusZeroAndBranch* instr) {
|
| Representation rep = instr->hydrogen()->value()->representation();
|
| ASSERT(!rep.IsInteger32());
|
| - Label if_false;
|
| Register scratch = ToRegister(instr->temp());
|
|
|
| if (rep.IsDouble()) {
|
| DoubleRegister value = ToDoubleRegister(instr->value());
|
| - __ BranchF(&if_false, NULL, ne, value, kDoubleRegZero);
|
| + EmitFalseBranchF(instr, ne, value, kDoubleRegZero);
|
| __ FmoveHigh(scratch, value);
|
| __ li(at, 0x80000000);
|
| } else {
|
| Register value = ToRegister(instr->value());
|
| - __ CheckMap(
|
| - value, scratch, Heap::kHeapNumberMapRootIndex, &if_false, DO_SMI_CHECK);
|
| + __ CheckMap(value,
|
| + scratch,
|
| + Heap::kHeapNumberMapRootIndex,
|
| + instr->FalseLabel(chunk()),
|
| + DO_SMI_CHECK);
|
| __ lw(scratch, FieldMemOperand(value, HeapNumber::kExponentOffset));
|
| - __ Branch(&if_false, ne, scratch, Operand(0x80000000));
|
| + EmitFalseBranch(instr, ne, scratch, Operand(0x80000000));
|
| __ lw(scratch, FieldMemOperand(value, HeapNumber::kMantissaOffset));
|
| __ mov(at, zero_reg);
|
| }
|
| EmitBranch(instr, eq, scratch, Operand(at));
|
| -
|
| - __ bind(&if_false);
|
| - EmitFalseBranchF(instr, al, kDoubleRegZero, kDoubleRegZero);
|
| }
|
|
|
|
|
|
|