Index: src/math.js |
diff --git a/src/math.js b/src/math.js |
index 47938a3ce22418c2a1b44450142c862ab4b76194..efab63a186d4f8b924894dad9c1f0be59ef9846a 100644 |
--- a/src/math.js |
+++ b/src/math.js |
@@ -45,59 +45,51 @@ var $Math = new MathConstructor(); |
// ECMA 262 - 15.8.2.1 |
function MathAbs(x) { |
if (%_IsSmi(x)) return x >= 0 ? x : -x; |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
+ x = TO_NUMBER_INLINE(x); |
if (x === 0) return 0; // To handle -0. |
return x > 0 ? x : -x; |
} |
// ECMA 262 - 15.8.2.2 |
function MathAcos(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %Math_acos(x); |
+ return %Math_acos(TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.3 |
function MathAsin(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %Math_asin(x); |
+ return %Math_asin(TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.4 |
function MathAtan(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %Math_atan(x); |
+ return %Math_atan(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) { |
- if (!IS_NUMBER(y)) y = NonNumberToNumber(y); |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %Math_atan2(y, x); |
+ return %Math_atan2(TO_NUMBER_INLINE(y), TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.6 |
function MathCeil(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %Math_ceil(x); |
+ return %Math_ceil(TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.7 |
function MathCos(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %_MathCos(x); |
+ return %_MathCos(TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.8 |
function MathExp(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %Math_exp(x); |
+ return %Math_exp(TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.9 |
function MathFloor(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
+ x = TO_NUMBER_INLINE(x); |
// It's more common to call this with a positive number that's out |
// of range than negative numbers; check the upper bound first. |
if (x < 0x80000000 && x > 0) { |
@@ -113,16 +105,15 @@ function MathFloor(x) { |
// ECMA 262 - 15.8.2.10 |
function MathLog(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %_MathLog(x); |
+ return %_MathLog(TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.11 |
function MathMax(arg1, arg2) { // length == 2 |
var length = %_ArgumentsLength(); |
if (length == 2) { |
- if (!IS_NUMBER(arg1)) arg1 = NonNumberToNumber(arg1); |
- if (!IS_NUMBER(arg2)) arg2 = NonNumberToNumber(arg2); |
+ arg1 = TO_NUMBER_INLINE(arg1); |
+ arg2 = TO_NUMBER_INLINE(arg2); |
if (arg2 > arg1) return arg2; |
if (arg1 > arg2) return arg1; |
if (arg1 == arg2) { |
@@ -151,8 +142,8 @@ function MathMax(arg1, arg2) { // length == 2 |
function MathMin(arg1, arg2) { // length == 2 |
var length = %_ArgumentsLength(); |
if (length == 2) { |
- if (!IS_NUMBER(arg1)) arg1 = NonNumberToNumber(arg1); |
- if (!IS_NUMBER(arg2)) arg2 = NonNumberToNumber(arg2); |
+ arg1 = TO_NUMBER_INLINE(arg1); |
+ arg2 = TO_NUMBER_INLINE(arg2); |
if (arg2 > arg1) return arg1; |
if (arg1 > arg2) return arg2; |
if (arg1 == arg2) { |
@@ -179,9 +170,7 @@ function MathMin(arg1, arg2) { // length == 2 |
// ECMA 262 - 15.8.2.13 |
function MathPow(x, y) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- if (!IS_NUMBER(y)) y = NonNumberToNumber(y); |
- return %_MathPow(x, y); |
+ return %_MathPow(TO_NUMBER_INLINE(x), TO_NUMBER_INLINE(y)); |
} |
// ECMA 262 - 15.8.2.14 |
@@ -191,33 +180,27 @@ function MathRandom() { |
// ECMA 262 - 15.8.2.15 |
function MathRound(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %RoundNumber(x); |
+ return %RoundNumber(TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.16 |
function MathSin(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %_MathSin(x); |
+ return %_MathSin(TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.17 |
function MathSqrt(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %_MathSqrt(x); |
+ return %_MathSqrt(TO_NUMBER_INLINE(x)); |
} |
// ECMA 262 - 15.8.2.18 |
function MathTan(x) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- return %_MathTan(x); |
+ return %_MathTan(TO_NUMBER_INLINE(x)); |
} |
// Non-standard extension. |
function MathImul(x, y) { |
- if (!IS_NUMBER(x)) x = NonNumberToNumber(x); |
- if (!IS_NUMBER(y)) y = NonNumberToNumber(y); |
- return %NumberImul(x, y); |
+ return %NumberImul(TO_NUMBER_INLINE(x), TO_NUMBER_INLINE(y)); |
} |