Revision: 20328
Author:   [email protected]
Date:     Fri Mar 28 10:07:23 2014 UTC
Log:      Reland "Clean up runtime functions for Maths."
BUG=
[email protected]

Review URL: https://codereview.chromium.org/216643002
http://code.google.com/p/v8/source/detail?r=20328

Modified:
 /branches/bleeding_edge/src/arm/code-stubs-arm.cc
 /branches/bleeding_edge/src/arm/full-codegen-arm.cc
 /branches/bleeding_edge/src/arm64/code-stubs-arm64.cc
 /branches/bleeding_edge/src/arm64/full-codegen-arm64.cc
 /branches/bleeding_edge/src/harmony-math.js
 /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc
 /branches/bleeding_edge/src/ia32/full-codegen-ia32.cc
 /branches/bleeding_edge/src/math.js
 /branches/bleeding_edge/src/mips/code-stubs-mips.cc
 /branches/bleeding_edge/src/mips/full-codegen-mips.cc
 /branches/bleeding_edge/src/runtime.cc
 /branches/bleeding_edge/src/runtime.h
 /branches/bleeding_edge/src/x64/code-stubs-x64.cc
 /branches/bleeding_edge/src/x64/full-codegen-x64.cc

=======================================
--- /branches/bleeding_edge/src/arm/code-stubs-arm.cc Thu Mar 27 16:30:03 2014 UTC +++ /branches/bleeding_edge/src/arm/code-stubs-arm.cc Fri Mar 28 10:07:23 2014 UTC
@@ -1428,7 +1428,7 @@
   if (exponent_type_ == ON_STACK) {
     // The arguments are still on the stack.
     __ bind(&call_runtime);
-    __ TailCallRuntime(Runtime::kMath_pow_cfunction, 2, 1);
+    __ TailCallRuntime(Runtime::kHiddenMathPow, 2, 1);

     // The stub is called from non-optimized code, which expects the result
     // as heap number in exponent.
=======================================
--- /branches/bleeding_edge/src/arm/full-codegen-arm.cc Thu Mar 27 16:30:03 2014 UTC +++ /branches/bleeding_edge/src/arm/full-codegen-arm.cc Fri Mar 28 10:07:23 2014 UTC
@@ -3757,26 +3757,6 @@
   __ CallStub(&stub);
   context()->Plug(r0);
 }
-
-
-void FullCodeGenerator::EmitMathLog(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_log, 1);
-  context()->Plug(r0);
-}
-
-
-void FullCodeGenerator::EmitMathSqrt(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_sqrt, 1);
-  context()->Plug(r0);
-}


 void FullCodeGenerator::EmitCallFunction(CallRuntime* expr) {
=======================================
--- /branches/bleeding_edge/src/arm64/code-stubs-arm64.cc Thu Mar 27 16:30:03 2014 UTC +++ /branches/bleeding_edge/src/arm64/code-stubs-arm64.cc Fri Mar 28 10:07:23 2014 UTC
@@ -1389,7 +1389,7 @@
     __ Bind(&call_runtime);
     // Put the arguments back on the stack.
     __ Push(base_tagged, exponent_tagged);
-    __ TailCallRuntime(Runtime::kMath_pow_cfunction, 2, 1);
+    __ TailCallRuntime(Runtime::kHiddenMathPow, 2, 1);

     // Return.
     __ Bind(&done);
=======================================
--- /branches/bleeding_edge/src/arm64/full-codegen-arm64.cc Thu Mar 27 16:30:03 2014 UTC +++ /branches/bleeding_edge/src/arm64/full-codegen-arm64.cc Fri Mar 28 10:07:23 2014 UTC
@@ -3490,26 +3490,6 @@
   __ CallStub(&stub);
   context()->Plug(x0);
 }
-
-
-void FullCodeGenerator::EmitMathLog(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_log, 1);
-  context()->Plug(x0);
-}
-
-
-void FullCodeGenerator::EmitMathSqrt(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_sqrt, 1);
-  context()->Plug(x0);
-}


 void FullCodeGenerator::EmitCallFunction(CallRuntime* expr) {
=======================================
--- /branches/bleeding_edge/src/harmony-math.js Thu Mar 27 16:30:03 2014 UTC
+++ /branches/bleeding_edge/src/harmony-math.js Fri Mar 28 10:07:23 2014 UTC
@@ -156,7 +156,7 @@

 // ES6 draft 09-27-13, section 20.2.2.16.
 function MathFround(x) {
-  return %Math_fround(TO_NUMBER_INLINE(x));
+  return %MathFround(TO_NUMBER_INLINE(x));
 }


=======================================
--- /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Thu Mar 27 16:30:03 2014 UTC +++ /branches/bleeding_edge/src/ia32/code-stubs-ia32.cc Fri Mar 28 10:07:23 2014 UTC
@@ -1014,7 +1014,7 @@
   if (exponent_type_ == ON_STACK) {
     // The arguments are still on the stack.
     __ bind(&call_runtime);
-    __ TailCallRuntime(Runtime::kMath_pow_cfunction, 2, 1);
+    __ TailCallRuntime(Runtime::kHiddenMathPow, 2, 1);

     // The stub is called from non-optimized code, which expects the result
     // as heap number in exponent.
=======================================
--- /branches/bleeding_edge/src/ia32/full-codegen-ia32.cc Thu Mar 27 16:30:03 2014 UTC +++ /branches/bleeding_edge/src/ia32/full-codegen-ia32.cc Fri Mar 28 10:07:23 2014 UTC
@@ -3539,7 +3539,7 @@
     MathPowStub stub(MathPowStub::ON_STACK);
     __ CallStub(&stub);
   } else {
-    __ CallRuntime(Runtime::kMath_pow, 2);
+    __ CallRuntime(Runtime::kHiddenMathPowSlow, 2);
   }
   context()->Plug(eax);
 }
@@ -3724,26 +3724,6 @@
   __ CallStub(&stub);
   context()->Plug(eax);
 }
-
-
-void FullCodeGenerator::EmitMathLog(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_log, 1);
-  context()->Plug(eax);
-}
-
-
-void FullCodeGenerator::EmitMathSqrt(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_sqrt, 1);
-  context()->Plug(eax);
-}


 void FullCodeGenerator::EmitCallFunction(CallRuntime* expr) {
=======================================
--- /branches/bleeding_edge/src/math.js Thu Mar 27 16:30:03 2014 UTC
+++ /branches/bleeding_edge/src/math.js Fri Mar 28 10:07:23 2014 UTC
@@ -52,24 +52,24 @@

 // ECMA 262 - 15.8.2.2
 function MathAcos(x) {
-  return %Math_acos(TO_NUMBER_INLINE(x));
+  return %MathAcos(TO_NUMBER_INLINE(x));
 }

 // ECMA 262 - 15.8.2.3
 function MathAsin(x) {
-  return %Math_asin(TO_NUMBER_INLINE(x));
+  return %MathAsin(TO_NUMBER_INLINE(x));
 }

 // ECMA 262 - 15.8.2.4
 function MathAtan(x) {
-  return %Math_atan(TO_NUMBER_INLINE(x));
+  return %MathAtan(TO_NUMBER_INLINE(x));
 }

 // ECMA 262 - 15.8.2.5
 // The naming of y and x matches the spec, as does the order in which
 // ToNumber (valueOf) is called.
 function MathAtan2(y, x) {
-  return %Math_atan2(TO_NUMBER_INLINE(y), TO_NUMBER_INLINE(x));
+  return %MathAtan2(TO_NUMBER_INLINE(y), TO_NUMBER_INLINE(x));
 }

 // ECMA 262 - 15.8.2.6
@@ -85,7 +85,7 @@

 // ECMA 262 - 15.8.2.8
 function MathExp(x) {
-  return %Math_exp(TO_NUMBER_INLINE(x));
+  return %MathExp(TO_NUMBER_INLINE(x));
 }

 // ECMA 262 - 15.8.2.9
@@ -100,7 +100,7 @@
     // has to be -0, which wouldn't be the case with the shift.
     return TO_UINT32(x);
   } else {
-    return %Math_floor(x);
+    return %MathFloor(x);
   }
 }

=======================================
--- /branches/bleeding_edge/src/mips/code-stubs-mips.cc Thu Mar 27 16:30:03 2014 UTC +++ /branches/bleeding_edge/src/mips/code-stubs-mips.cc Fri Mar 28 10:07:23 2014 UTC
@@ -1511,7 +1511,7 @@
   if (exponent_type_ == ON_STACK) {
     // The arguments are still on the stack.
     __ bind(&call_runtime);
-    __ TailCallRuntime(Runtime::kMath_pow_cfunction, 2, 1);
+    __ TailCallRuntime(Runtime::kHiddenMathPow, 2, 1);

     // The stub is called from non-optimized code, which expects the result
     // as heap number in exponent.
=======================================
--- /branches/bleeding_edge/src/mips/full-codegen-mips.cc Thu Mar 27 16:30:03 2014 UTC +++ /branches/bleeding_edge/src/mips/full-codegen-mips.cc Fri Mar 28 10:07:23 2014 UTC
@@ -3796,26 +3796,6 @@
   __ CallStub(&stub);
   context()->Plug(v0);
 }
-
-
-void FullCodeGenerator::EmitMathLog(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_log, 1);
-  context()->Plug(v0);
-}
-
-
-void FullCodeGenerator::EmitMathSqrt(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_sqrt, 1);
-  context()->Plug(v0);
-}


 void FullCodeGenerator::EmitCallFunction(CallRuntime* expr) {
=======================================
--- /branches/bleeding_edge/src/runtime.cc      Fri Mar 28 09:49:27 2014 UTC
+++ /branches/bleeding_edge/src/runtime.cc      Fri Mar 28 10:07:23 2014 UTC
@@ -7751,19 +7751,19 @@
 }


-#define RUNTIME_UNARY_MATH(NAME) \ -RUNTIME_FUNCTION(MaybeObject*, Runtime_Math_##NAME) { \ +#define RUNTIME_UNARY_MATH(Name, name) \ +RUNTIME_FUNCTION(MaybeObject*, Runtime_Math##Name) { \ SealHandleScope shs(isolate); \ ASSERT(args.length() == 1); \ - isolate->counters()->math_##NAME()->Increment(); \ + isolate->counters()->math_##name()->Increment(); \ CONVERT_DOUBLE_ARG_CHECKED(x, 0); \ - return isolate->heap()->AllocateHeapNumber(std::NAME(x)); \ + return isolate->heap()->AllocateHeapNumber(std::name(x)); \
 }

-RUNTIME_UNARY_MATH(acos)
-RUNTIME_UNARY_MATH(asin)
-RUNTIME_UNARY_MATH(atan)
-RUNTIME_UNARY_MATH(log)
+RUNTIME_UNARY_MATH(Acos, acos)
+RUNTIME_UNARY_MATH(Asin, asin)
+RUNTIME_UNARY_MATH(Atan, atan)
+RUNTIME_UNARY_MATH(Log, log)
 #undef RUNTIME_UNARY_MATH


@@ -7799,7 +7799,7 @@
 static const double kPiDividedBy4 = 0.78539816339744830962;


-RUNTIME_FUNCTION(MaybeObject*, Runtime_Math_atan2) {
+RUNTIME_FUNCTION(MaybeObject*, Runtime_MathAtan2) {
   SealHandleScope shs(isolate);
   ASSERT(args.length() == 2);
   isolate->counters()->math_atan2()->Increment();
@@ -7822,7 +7822,7 @@
 }


-RUNTIME_FUNCTION(MaybeObject*, Runtime_Math_exp) {
+RUNTIME_FUNCTION(MaybeObject*, Runtime_MathExp) {
   SealHandleScope shs(isolate);
   ASSERT(args.length() == 1);
   isolate->counters()->math_exp()->Increment();
@@ -7833,7 +7833,7 @@
 }


-RUNTIME_FUNCTION(MaybeObject*, Runtime_Math_floor) {
+RUNTIME_FUNCTION(MaybeObject*, Runtime_MathFloor) {
   SealHandleScope shs(isolate);
   ASSERT(args.length() == 1);
   isolate->counters()->math_floor()->Increment();
@@ -7845,7 +7845,7 @@

 // Slow version of Math.pow.  We check for fast paths for special cases.
 // Used if SSE2/VFP3 is not available.
-RUNTIME_FUNCTION(MaybeObject*, Runtime_Math_pow) {
+RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_MathPowSlow) {
   SealHandleScope shs(isolate);
   ASSERT(args.length() == 2);
   isolate->counters()->math_pow()->Increment();
@@ -7868,7 +7868,7 @@

// Fast version of Math.pow if we know that y is not an integer and y is not
 // -0.5 or 0.5.  Used as slow case from full codegen.
-RUNTIME_FUNCTION(MaybeObject*, Runtime_Math_pow_cfunction) {
+RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_MathPow) {
   SealHandleScope shs(isolate);
   ASSERT(args.length() == 2);
   isolate->counters()->math_pow()->Increment();
@@ -7928,7 +7928,7 @@
 }


-RUNTIME_FUNCTION(MaybeObject*, Runtime_Math_sqrt) {
+RUNTIME_FUNCTION(MaybeObject*, Runtime_MathSqrt) {
   SealHandleScope shs(isolate);
   ASSERT(args.length() == 1);
   isolate->counters()->math_sqrt()->Increment();
@@ -7938,7 +7938,7 @@
 }


-RUNTIME_FUNCTION(MaybeObject*, Runtime_Math_fround) {
+RUNTIME_FUNCTION(MaybeObject*, Runtime_MathFround) {
   SealHandleScope shs(isolate);
   ASSERT(args.length() == 1);

=======================================
--- /branches/bleeding_edge/src/runtime.h       Fri Mar 28 09:49:27 2014 UTC
+++ /branches/bleeding_edge/src/runtime.h       Fri Mar 28 10:07:23 2014 UTC
@@ -157,18 +157,14 @@
   F(SmiLexicographicCompare, 2, 1) \
   \
   /* Math */ \
-  F(Math_acos, 1, 1) \
-  F(Math_asin, 1, 1) \
-  F(Math_atan, 1, 1) \
-  F(Math_log, 1, 1) \
-  F(Math_sqrt, 1, 1) \
-  F(Math_exp, 1, 1) \
-  F(Math_floor, 1, 1) \
-  F(Math_pow, 2, 1) \
-  F(Math_pow_cfunction, 2, 1) \
-  F(Math_atan2, 2, 1) \
+  F(MathAcos, 1, 1) \
+  F(MathAsin, 1, 1) \
+  F(MathAtan, 1, 1) \
+  F(MathFloor, 1, 1) \
+  F(MathAtan2, 2, 1) \
+  F(MathExp, 1, 1) \
   F(RoundNumber, 1, 1) \
-  F(Math_fround, 1, 1) \
+  F(MathFround, 1, 1) \
   \
   /* Regular expressions */ \
   F(RegExpCompile, 3, 1) \
@@ -556,6 +552,7 @@
 // by id from code generator, but not via native call by name.
// Entries have the form F(name, number of arguments, number of return values).
 #define RUNTIME_HIDDEN_FUNCTION_LIST(F) \
+  /* String and Regexp */ \
   F(NumberToString, 1, 1) \
   F(RegExpConstructResult, 3, 1) \
   F(RegExpExec, 4, 1) \
@@ -634,7 +631,11 @@
   F(InitializeConstContextSlot, 3, 1) \
   \
   /* Eval */ \
-  F(ResolvePossiblyDirectEval, 5, 2)
+  F(ResolvePossiblyDirectEval, 5, 2) \
+  \
+  /* Maths */ \
+  F(MathPowSlow, 2, 1) \
+  F(MathPow, 2, 1)

// ----------------------------------------------------------------------------
 // INLINE_FUNCTION_LIST defines all inlined functions accessed
@@ -663,8 +664,6 @@
F(IsSpecObject, 1, 1) \ F(IsStringWrapperSafeForDefaultValueOf, 1, 1) \ F(MathPow, 2, 1) \ - F(MathSqrt, 1, 1) \ - F(MathLog, 1, 1) \ F(IsMinusZero, 1, 1) \ F(HasCachedArrayIndex, 1, 1) \ F(GetCachedArrayIndex, 1, 1) \
@@ -690,13 +689,18 @@
// a corresponding runtime function, that is called from non-optimized code. // Entries have the form F(name, number of arguments, number of return values).
 #define INLINE_OPTIMIZED_FUNCTION_LIST(F) \
- F(DoubleHi, 1, 1) \ - F(DoubleLo, 1, 1) \ + /* Typed Arrays */ \ F(ConstructDouble, 2, 1) \ F(TypedArrayInitialize, 5, 1) \ F(DataViewInitialize, 4, 1) \ F(MaxSmi, 0, 1) \
-  F(TypedArrayMaxSizeInHeap, 0, 1)
+ F(TypedArrayMaxSizeInHeap, 0, 1) \
+  \
+ /* Maths */ \ + F(DoubleHi, 1, 1) \ + F(DoubleLo, 1, 1) \ + F(MathSqrt, 1, 1) \
+  F(MathLog, 1, 1)


//---------------------------------------------------------------------------
=======================================
--- /branches/bleeding_edge/src/x64/code-stubs-x64.cc Fri Mar 28 04:55:00 2014 UTC +++ /branches/bleeding_edge/src/x64/code-stubs-x64.cc Fri Mar 28 10:07:23 2014 UTC
@@ -875,7 +875,7 @@
   if (exponent_type_ == ON_STACK) {
     // The arguments are still on the stack.
     __ bind(&call_runtime);
-    __ TailCallRuntime(Runtime::kMath_pow_cfunction, 2, 1);
+    __ TailCallRuntime(Runtime::kHiddenMathPow, 2, 1);

     // The stub is called from non-optimized code, which expects the result
     // as heap number in rax.
=======================================
--- /branches/bleeding_edge/src/x64/full-codegen-x64.cc Fri Mar 28 04:55:00 2014 UTC +++ /branches/bleeding_edge/src/x64/full-codegen-x64.cc Fri Mar 28 10:07:23 2014 UTC
@@ -3696,26 +3696,6 @@
   __ CallStub(&stub);
   context()->Plug(rax);
 }
-
-
-void FullCodeGenerator::EmitMathLog(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_log, 1);
-  context()->Plug(rax);
-}
-
-
-void FullCodeGenerator::EmitMathSqrt(CallRuntime* expr) {
-  // Load the argument on the stack and call the runtime function.
-  ZoneList<Expression*>* args = expr->arguments();
-  ASSERT(args->length() == 1);
-  VisitForStackValue(args->at(0));
-  __ CallRuntime(Runtime::kMath_sqrt, 1);
-  context()->Plug(rax);
-}


 void FullCodeGenerator::EmitCallFunction(CallRuntime* expr) {

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to