| Index: src/arm/lithium-codegen-arm.cc
|
| ===================================================================
|
| --- src/arm/lithium-codegen-arm.cc (revision 6352)
|
| +++ src/arm/lithium-codegen-arm.cc (working copy)
|
| @@ -1296,7 +1296,10 @@
|
|
|
|
|
| void LCodeGen::DoConstantD(LConstantD* instr) {
|
| - Abort("DoConstantD unimplemented.");
|
| + ASSERT(instr->result()->IsDoubleRegister());
|
| + DwVfpRegister result = ToDoubleRegister(instr->result());
|
| + double v = instr->value();
|
| + __ vmov(result, v);
|
| }
|
|
|
|
|
| @@ -2339,6 +2342,15 @@
|
|
|
| // Move the result back to general purpose register r0.
|
| __ vmov(result, single_scratch);
|
| +
|
| + // Test for -0.
|
| + Label done;
|
| + __ cmp(result, Operand(0));
|
| + __ b(ne, &done);
|
| + __ vmov(scratch, input.high());
|
| + __ tst(scratch, Operand(HeapNumber::kSignMask));
|
| + DeoptimizeIf(ne, instr->environment());
|
| + __ bind(&done);
|
| }
|
|
|
|
|
|
|