| Index: src/math.js
|
| diff --git a/src/math.js b/src/math.js
|
| index d7e5f948a5c35811e8a5f61d79bada0dd378de52..ed9bdbd04be7ac6aae1b5fd860ebd41666a5a454 100644
|
| --- a/src/math.js
|
| +++ b/src/math.js
|
| @@ -23,10 +23,9 @@ var GlobalArray = global.Array;
|
|
|
| // ECMA 262 - 15.8.2.1
|
| function MathAbs(x) {
|
| - if (%_IsSmi(x)) return x >= 0 ? x : -x;
|
| - x = TO_NUMBER_INLINE(x);
|
| - if (x === 0) return 0; // To handle -0.
|
| - return x > 0 ? x : -x;
|
| + x = +x;
|
| + if (x > 0) return x;
|
| + return 0 - x;
|
| }
|
|
|
| // ECMA 262 - 15.8.2.2
|
| @@ -148,7 +147,7 @@ function MathRound(x) {
|
|
|
| // ECMA 262 - 15.8.2.17
|
| function MathSqrt(x) {
|
| - return %_MathSqrtRT(TO_NUMBER_INLINE(x));
|
| + return %_MathSqrt(+x);
|
| }
|
|
|
| // Non-standard extension.
|
| @@ -191,9 +190,9 @@ function MathAsinh(x) {
|
| if (!IS_NUMBER(x)) x = NonNumberToNumber(x);
|
| // Idempotent for NaN, +/-0 and +/-Infinity.
|
| if (x === 0 || !NUMBER_IS_FINITE(x)) return x;
|
| - if (x > 0) return MathLog(x + MathSqrt(x * x + 1));
|
| + if (x > 0) return MathLog(x + %_MathSqrt(x * x + 1));
|
| // This is to prevent numerical errors caused by large negative x.
|
| - return -MathLog(-x + MathSqrt(x * x + 1));
|
| + return -MathLog(-x + %_MathSqrt(x * x + 1));
|
| }
|
|
|
| // ES6 draft 09-27-13, section 20.2.2.3.
|
| @@ -202,7 +201,7 @@ function MathAcosh(x) {
|
| if (x < 1) return NAN;
|
| // Idempotent for NaN and +Infinity.
|
| if (!NUMBER_IS_FINITE(x)) return x;
|
| - return MathLog(x + MathSqrt(x + 1) * MathSqrt(x - 1));
|
| + return MathLog(x + %_MathSqrt(x + 1) * %_MathSqrt(x - 1));
|
| }
|
|
|
| // ES6 draft 09-27-13, section 20.2.2.7.
|
| @@ -244,7 +243,7 @@ function MathHypot(x, y) { // Function length is 2.
|
| compensation = (preliminary - sum) - summand;
|
| sum = preliminary;
|
| }
|
| - return MathSqrt(sum) * max;
|
| + return %_MathSqrt(sum) * max;
|
| }
|
|
|
| // ES6 draft 09-27-13, section 20.2.2.16.
|
| @@ -350,9 +349,11 @@ InstallFunctions(Math, DONT_ENUM, GlobalArray(
|
| "cbrt", MathCbrt
|
| ));
|
|
|
| +%SetInlineBuiltinFlag(MathAbs);
|
| %SetInlineBuiltinFlag(MathCeil);
|
| %SetInlineBuiltinFlag(MathFloor);
|
| %SetInlineBuiltinFlag(MathRandom);
|
| +%SetInlineBuiltinFlag(MathSqrt);
|
|
|
| // Expose to the global scope.
|
| $abs = MathAbs;
|
|
|