summaryrefslogtreecommitdiffstats
path: root/V8Binding/v8/src/math.js
diff options
context:
space:
mode:
Diffstat (limited to 'V8Binding/v8/src/math.js')
-rw-r--r--V8Binding/v8/src/math.js250
1 files changed, 0 insertions, 250 deletions
diff --git a/V8Binding/v8/src/math.js b/V8Binding/v8/src/math.js
deleted file mode 100644
index e3d266e..0000000
--- a/V8Binding/v8/src/math.js
+++ /dev/null
@@ -1,250 +0,0 @@
-// Copyright 2006-2008 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following
-// disclaimer in the documentation and/or other materials provided
-// with the distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived
-// from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-// Keep reference to original values of some global properties. This
-// has the added benefit that the code in this file is isolated from
-// changes to these properties.
-const $Infinity = global.Infinity;
-const $floor = MathFloor;
-const $random = MathRandom;
-const $abs = MathAbs;
-
-// Instance class name can only be set on functions. That is the only
-// purpose for MathConstructor.
-function MathConstructor() {}
-%FunctionSetInstanceClassName(MathConstructor, 'Math');
-const $Math = new MathConstructor();
-$Math.__proto__ = global.Object.prototype;
-%SetProperty(global, "Math", $Math, DONT_ENUM);
-
-// ECMA 262 - 15.8.2.1
-function MathAbs(x) {
- if (%_IsSmi(x)) return x >= 0 ? x : -x;
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_abs(x);
-}
-
-// ECMA 262 - 15.8.2.2
-function MathAcos(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_acos(x);
-}
-
-// ECMA 262 - 15.8.2.3
-function MathAsin(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_asin(x);
-}
-
-// ECMA 262 - 15.8.2.4
-function MathAtan(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_atan(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 = ToNumber(y);
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_atan2(y, x);
-}
-
-// ECMA 262 - 15.8.2.6
-function MathCeil(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_ceil(x);
-}
-
-// ECMA 262 - 15.8.2.7
-function MathCos(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %_Math_cos(x);
-}
-
-// ECMA 262 - 15.8.2.8
-function MathExp(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_exp(x);
-}
-
-// ECMA 262 - 15.8.2.9
-function MathFloor(x) {
- if (!IS_NUMBER(x)) x = ToNumber(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 <= 0x7FFFFFFF && x > 0) {
- // Numbers in the range [0, 2^31) can be floored by converting
- // them to an unsigned 32-bit value using the shift operator.
- // We avoid doing so for -0, because the result of Math.floor(-0)
- // has to be -0, which wouldn't be the case with the shift.
- return x << 0;
- } else {
- return %Math_floor(x);
- }
-}
-
-// ECMA 262 - 15.8.2.10
-function MathLog(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_log(x);
-}
-
-// ECMA 262 - 15.8.2.11
-function MathMax(arg1, arg2) { // length == 2
- var r = -$Infinity;
- var length = %_ArgumentsLength();
- for (var i = 0; i < length; i++) {
- var n = ToNumber(%_Arguments(i));
- if (NUMBER_IS_NAN(n)) return n;
- // Make sure +0 is considered greater than -0.
- if (n > r || (r === 0 && n === 0 && !%_IsSmi(r))) r = n;
- }
- return r;
-}
-
-// ECMA 262 - 15.8.2.12
-function MathMin(arg1, arg2) { // length == 2
- var r = $Infinity;
- var length = %_ArgumentsLength();
- for (var i = 0; i < length; i++) {
- var n = ToNumber(%_Arguments(i));
- if (NUMBER_IS_NAN(n)) return n;
- // Make sure -0 is considered less than +0.
- if (n < r || (r === 0 && n === 0 && !%_IsSmi(n))) r = n;
- }
- return r;
-}
-
-// ECMA 262 - 15.8.2.13
-function MathPow(x, y) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- if (!IS_NUMBER(y)) y = ToNumber(y);
- return %Math_pow(x, y);
-}
-
-// ECMA 262 - 15.8.2.14
-function MathRandom() {
- return %_RandomPositiveSmi() / 0x40000000;
-}
-
-// ECMA 262 - 15.8.2.15
-function MathRound(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_round(x);
-}
-
-// ECMA 262 - 15.8.2.16
-function MathSin(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %_Math_sin(x);
-}
-
-// ECMA 262 - 15.8.2.17
-function MathSqrt(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_sqrt(x);
-}
-
-// ECMA 262 - 15.8.2.18
-function MathTan(x) {
- if (!IS_NUMBER(x)) x = ToNumber(x);
- return %Math_tan(x);
-}
-
-
-// -------------------------------------------------------------------
-
-function SetupMath() {
- // Setup math constants.
- // ECMA-262, section 15.8.1.1.
- %OptimizeObjectForAddingMultipleProperties($Math, 8);
- %SetProperty($Math,
- "E",
- 2.7182818284590452354,
- DONT_ENUM | DONT_DELETE | READ_ONLY);
- // ECMA-262, section 15.8.1.2.
- %SetProperty($Math,
- "LN10",
- 2.302585092994046,
- DONT_ENUM | DONT_DELETE | READ_ONLY);
- // ECMA-262, section 15.8.1.3.
- %SetProperty($Math,
- "LN2",
- 0.6931471805599453,
- DONT_ENUM | DONT_DELETE | READ_ONLY);
- // ECMA-262, section 15.8.1.4.
- %SetProperty($Math,
- "LOG2E",
- 1.4426950408889634,
- DONT_ENUM | DONT_DELETE | READ_ONLY);
- %SetProperty($Math,
- "LOG10E",
- 0.43429448190325176,
- DONT_ENUM | DONT_DELETE | READ_ONLY);
- %SetProperty($Math,
- "PI",
- 3.1415926535897932,
- DONT_ENUM | DONT_DELETE | READ_ONLY);
- %SetProperty($Math,
- "SQRT1_2",
- 0.7071067811865476,
- DONT_ENUM | DONT_DELETE | READ_ONLY);
- %SetProperty($Math,
- "SQRT2",
- 1.4142135623730951,
- DONT_ENUM | DONT_DELETE | READ_ONLY);
- %TransformToFastProperties($Math);
-
- // Setup non-enumerable functions of the Math object and
- // set their names.
- InstallFunctionsOnHiddenPrototype($Math, DONT_ENUM, $Array(
- "random", MathRandom,
- "abs", MathAbs,
- "acos", MathAcos,
- "asin", MathAsin,
- "atan", MathAtan,
- "ceil", MathCeil,
- "cos", MathCos,
- "exp", MathExp,
- "floor", MathFloor,
- "log", MathLog,
- "round", MathRound,
- "sin", MathSin,
- "sqrt", MathSqrt,
- "tan", MathTan,
- "atan2", MathAtan2,
- "pow", MathPow,
- "max", MathMax,
- "min", MathMin
- ));
-};
-
-
-SetupMath();