| Index: src/crankshaft/x64/lithium-codegen-x64.cc
|
| diff --git a/src/crankshaft/x64/lithium-codegen-x64.cc b/src/crankshaft/x64/lithium-codegen-x64.cc
|
| index 2ec98126c949bd2aae6793a35bfc9622f21bc912..493bfd49f43f7e8b6f50de39c3a30055d3ba6365 100644
|
| --- a/src/crankshaft/x64/lithium-codegen-x64.cc
|
| +++ b/src/crankshaft/x64/lithium-codegen-x64.cc
|
| @@ -1887,13 +1887,12 @@ void LCodeGen::DoArithmeticD(LArithmeticD* instr) {
|
| __ Movapd(result, result);
|
| break;
|
| case Token::MOD: {
|
| - XMMRegister xmm_scratch = double_scratch0();
|
| - __ PrepareCallCFunction(2);
|
| - __ Movapd(xmm_scratch, left);
|
| + DCHECK(left.is(xmm0));
|
| DCHECK(right.is(xmm1));
|
| + DCHECK(result.is(xmm0));
|
| + __ PrepareCallCFunction(2);
|
| __ CallCFunction(
|
| ExternalReference::mod_two_doubles_operation(isolate()), 2);
|
| - __ Movapd(result, xmm_scratch);
|
| break;
|
| }
|
| default:
|
| @@ -4768,20 +4767,21 @@ void LCodeGen::DoDeferredTaggedToI(LTaggedToI* instr, Label* done) {
|
| __ Set(input_reg, 0);
|
| } else {
|
| XMMRegister scratch = ToDoubleRegister(instr->temp());
|
| - DCHECK(!scratch.is(xmm0));
|
| + DCHECK(!scratch.is(double_scratch0()));
|
| __ CompareRoot(FieldOperand(input_reg, HeapObject::kMapOffset),
|
| Heap::kHeapNumberMapRootIndex);
|
| DeoptimizeIf(not_equal, instr, Deoptimizer::kNotAHeapNumber);
|
| - __ Movsd(xmm0, FieldOperand(input_reg, HeapNumber::kValueOffset));
|
| - __ Cvttsd2si(input_reg, xmm0);
|
| + __ Movsd(double_scratch0(),
|
| + FieldOperand(input_reg, HeapNumber::kValueOffset));
|
| + __ Cvttsd2si(input_reg, double_scratch0());
|
| __ Cvtlsi2sd(scratch, input_reg);
|
| - __ Ucomisd(xmm0, scratch);
|
| + __ Ucomisd(double_scratch0(), scratch);
|
| DeoptimizeIf(not_equal, instr, Deoptimizer::kLostPrecision);
|
| DeoptimizeIf(parity_even, instr, Deoptimizer::kNaN);
|
| if (instr->hydrogen()->GetMinusZeroMode() == FAIL_ON_MINUS_ZERO) {
|
| __ testl(input_reg, input_reg);
|
| __ j(not_zero, done);
|
| - __ Movmskpd(input_reg, xmm0);
|
| + __ Movmskpd(input_reg, double_scratch0());
|
| __ andl(input_reg, Immediate(1));
|
| DeoptimizeIf(not_zero, instr, Deoptimizer::kMinusZero);
|
| }
|
|
|