MIPS: Fix ambiguous double constant loading after adding checked load/store operators.
authorDusan Milosavljevic <dusan.milosavljevic@imgtec.com>
Wed, 3 Dec 2014 12:50:38 +0000 (13:50 +0100)
committerDusan Milosavljevic <dusan.milosavljevic@imgtec.com>
Wed, 3 Dec 2014 12:51:14 +0000 (12:51 +0000)
The V8_INFINITY macro expands to constant expression of type float.

TEST=mjsunit/constant-folding-2
BUG=
R=balazs.kilvady@imgtec.com

Review URL: https://codereview.chromium.org/779433003

Cr-Commit-Position: refs/heads/master@{#25635}

src/mips/code-stubs-mips.cc
src/mips/lithium-codegen-mips.cc

index 1ef6af9a999d391821df1d878595592561ec7c38..62318d6493073840bb4a49c3284c9999b7f1bca0 100644 (file)
@@ -844,7 +844,6 @@ void MathPowStub::Generate(MacroAssembler* masm) {
       // compile time and uses DoMathPowHalf instead.  We then skip this check
       // for non-constant cases of +/-0.5 as these hardly occur.
       Label not_plus_half;
-
       // Test for 0.5.
       __ Move(double_scratch, 0.5);
       __ BranchF(USE_DELAY_SLOT,
@@ -856,7 +855,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
       // double_scratch can be overwritten in the delay slot.
       // Calculates square root of base.  Check for the special case of
       // Math.pow(-Infinity, 0.5) == Infinity (ECMA spec, 15.8.2.13).
-      __ Move(double_scratch, -V8_INFINITY);
+      __ Move(double_scratch, static_cast<double>(-V8_INFINITY));
       __ BranchF(USE_DELAY_SLOT, &done, NULL, eq, double_base, double_scratch);
       __ neg_d(double_result, double_scratch);
 
@@ -876,7 +875,7 @@ void MathPowStub::Generate(MacroAssembler* masm) {
       // double_scratch can be overwritten in the delay slot.
       // Calculates square root of base.  Check for the special case of
       // Math.pow(-Infinity, -0.5) == 0 (ECMA spec, 15.8.2.13).
-      __ Move(double_scratch, -V8_INFINITY);
+      __ Move(double_scratch, static_cast<double>(-V8_INFINITY));
       __ BranchF(USE_DELAY_SLOT, &done, NULL, eq, double_base, double_scratch);
       __ Move(double_result, kDoubleRegZero);
 
index 07f32de344b4f2049b2adef7a9b3b7068eeb68d4..d60659ba9b90588fa0ca18ff71b0de7f935dea33 100644 (file)
@@ -3837,7 +3837,7 @@ void LCodeGen::DoMathPowHalf(LMathPowHalf* instr) {
   // Math.pow(-Infinity, 0.5) == Infinity
   // Math.sqrt(-Infinity) == NaN
   Label done;
-  __ Move(temp, -V8_INFINITY);
+  __ Move(temp, static_cast<double>(-V8_INFINITY));
   __ BranchF(USE_DELAY_SLOT, &done, NULL, eq, temp, input);
   // Set up Infinity in the delay slot.
   // result is overwritten if the branch is not taken.