| Index: src/a64/code-stubs-a64.cc
 | 
| diff --git a/src/a64/code-stubs-a64.cc b/src/a64/code-stubs-a64.cc
 | 
| index 2b472da6484d351bc4e01f74ff470e6d72e32169..5b1b688cc9689123b2aadfeaef88e2ec6b31e166 100644
 | 
| --- a/src/a64/code-stubs-a64.cc
 | 
| +++ b/src/a64/code-stubs-a64.cc
 | 
| @@ -1182,7 +1182,6 @@ void MathPowStub::Generate(MacroAssembler* masm) {
 | 
|      if (exponent_type_ == ON_STACK) {
 | 
|        FPRegister  half_double = d3;
 | 
|        FPRegister  minus_half_double = d4;
 | 
| -      FPRegister  zero_double = d5;
 | 
|        // Detect square root case. Crankshaft detects constant +/-0.5 at compile
 | 
|        // time and uses DoMathPowHalf instead. We then skip this check for
 | 
|        // non-constant cases of +/-0.5 as these hardly occur.
 | 
| @@ -1215,26 +1214,24 @@ void MathPowStub::Generate(MacroAssembler* masm) {
 | 
|        // where base is -INFINITY or -0.
 | 
|  
 | 
|        // Add +0 to base. This has no effect other than turning -0 into +0.
 | 
| -      __ Fmov(zero_double, 0.0);
 | 
| -      __ Fadd(base_double, base_double, zero_double);
 | 
| +      __ Fadd(base_double, base_double, fp_zero);
 | 
|        // The operation -0+0 results in +0 in all cases except where the
 | 
|        // FPCR rounding mode is 'round towards minus infinity' (RM). The
 | 
|        // A64 simulator does not currently simulate FPCR (where the rounding
 | 
|        // mode is set), so test the operation with some debug code.
 | 
|        if (masm->emit_debug_code()) {
 | 
|          Register temp = masm->Tmp1();
 | 
| -        //  d5  zero_double   The value +0.0 as a double.
 | 
| -        __ Fneg(scratch0_double, zero_double);
 | 
| +        __ Fneg(scratch0_double, fp_zero);
 | 
|          // Verify that we correctly generated +0.0 and -0.0.
 | 
|          //  bits(+0.0) = 0x0000000000000000
 | 
|          //  bits(-0.0) = 0x8000000000000000
 | 
| -        __ Fmov(temp, zero_double);
 | 
| +        __ Fmov(temp, fp_zero);
 | 
|          __ CheckRegisterIsClear(temp, kCouldNotGenerateZero);
 | 
|          __ Fmov(temp, scratch0_double);
 | 
|          __ Eor(temp, temp, kDSignMask);
 | 
|          __ CheckRegisterIsClear(temp, kCouldNotGenerateNegativeZero);
 | 
|          // Check that -0.0 + 0.0 == +0.0.
 | 
| -        __ Fadd(scratch0_double, scratch0_double, zero_double);
 | 
| +        __ Fadd(scratch0_double, scratch0_double, fp_zero);
 | 
|          __ Fmov(temp, scratch0_double);
 | 
|          __ CheckRegisterIsClear(temp, kExpectedPositiveZero);
 | 
|        }
 | 
| @@ -1791,6 +1788,9 @@ void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
 | 
|  
 | 
|    ProfileEntryHookStub::MaybeCallEntryHook(masm);
 | 
|  
 | 
| +  // Set up the reserved register for 0.0.
 | 
| +  __ Fmov(fp_zero, 0.0);
 | 
| +
 | 
|    // Build an entry frame (see layout below).
 | 
|    Isolate* isolate = masm->isolate();
 | 
|  
 | 
| 
 |