| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 var rngstate; // Initialized to a Uint32Array during genesis. | 5 var rngstate; // Initialized to a Uint32Array during genesis. |
| 6 | 6 |
| 7 (function(global, utils) { | 7 (function(global, utils) { |
| 8 "use strict"; | 8 "use strict"; |
| 9 | 9 |
| 10 %CheckIsBootstrapping(); | 10 %CheckIsBootstrapping(); |
| 11 | 11 |
| 12 // ------------------------------------------------------------------- | 12 // ------------------------------------------------------------------- |
| 13 // Imports | 13 // Imports |
| 14 | 14 |
| 15 var GlobalMath = global.Math; |
| 15 var GlobalObject = global.Object; | 16 var GlobalObject = global.Object; |
| 16 var InternalArray = utils.InternalArray; | 17 var InternalArray = utils.InternalArray; |
| 17 | 18 |
| 18 //------------------------------------------------------------------- | 19 //------------------------------------------------------------------- |
| 19 | 20 |
| 20 // ECMA 262 - 15.8.2.1 | 21 // ECMA 262 - 15.8.2.1 |
| 21 function MathAbs(x) { | 22 function MathAbs(x) { |
| 22 x = +x; | 23 x = +x; |
| 23 return (x > 0) ? x : 0 - x; | 24 return (x > 0) ? x : 0 - x; |
| 24 } | 25 } |
| (...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 var approx_hi = MathFloorJS(%_DoubleHi(x) / 3) + 0x2A9F7893; | 281 var approx_hi = MathFloorJS(%_DoubleHi(x) / 3) + 0x2A9F7893; |
| 281 var approx = %_ConstructDouble(approx_hi, 0); | 282 var approx = %_ConstructDouble(approx_hi, 0); |
| 282 approx = NEWTON_ITERATION_CBRT(x, approx); | 283 approx = NEWTON_ITERATION_CBRT(x, approx); |
| 283 approx = NEWTON_ITERATION_CBRT(x, approx); | 284 approx = NEWTON_ITERATION_CBRT(x, approx); |
| 284 approx = NEWTON_ITERATION_CBRT(x, approx); | 285 approx = NEWTON_ITERATION_CBRT(x, approx); |
| 285 return NEWTON_ITERATION_CBRT(x, approx); | 286 return NEWTON_ITERATION_CBRT(x, approx); |
| 286 } | 287 } |
| 287 | 288 |
| 288 // ------------------------------------------------------------------- | 289 // ------------------------------------------------------------------- |
| 289 | 290 |
| 290 // Instance class name can only be set on functions. That is the only | 291 %AddNamedProperty(GlobalMath, symbolToStringTag, "Math", READ_ONLY | DONT_ENUM); |
| 291 // purpose for MathConstructor. | |
| 292 function MathConstructor() {} | |
| 293 | |
| 294 var Math = new MathConstructor(); | |
| 295 | |
| 296 %InternalSetPrototype(Math, GlobalObject.prototype); | |
| 297 %AddNamedProperty(global, "Math", Math, DONT_ENUM); | |
| 298 %FunctionSetInstanceClassName(MathConstructor, 'Math'); | |
| 299 | |
| 300 %AddNamedProperty(Math, symbolToStringTag, "Math", READ_ONLY | DONT_ENUM); | |
| 301 | 292 |
| 302 // Set up math constants. | 293 // Set up math constants. |
| 303 utils.InstallConstants(Math, [ | 294 utils.InstallConstants(GlobalMath, [ |
| 304 // ECMA-262, section 15.8.1.1. | 295 // ECMA-262, section 15.8.1.1. |
| 305 "E", 2.7182818284590452354, | 296 "E", 2.7182818284590452354, |
| 306 // ECMA-262, section 15.8.1.2. | 297 // ECMA-262, section 15.8.1.2. |
| 307 "LN10", 2.302585092994046, | 298 "LN10", 2.302585092994046, |
| 308 // ECMA-262, section 15.8.1.3. | 299 // ECMA-262, section 15.8.1.3. |
| 309 "LN2", 0.6931471805599453, | 300 "LN2", 0.6931471805599453, |
| 310 // ECMA-262, section 15.8.1.4. | 301 // ECMA-262, section 15.8.1.4. |
| 311 "LOG2E", 1.4426950408889634, | 302 "LOG2E", 1.4426950408889634, |
| 312 "LOG10E", 0.4342944819032518, | 303 "LOG10E", 0.4342944819032518, |
| 313 "PI", 3.1415926535897932, | 304 "PI", 3.1415926535897932, |
| 314 "SQRT1_2", 0.7071067811865476, | 305 "SQRT1_2", 0.7071067811865476, |
| 315 "SQRT2", 1.4142135623730951 | 306 "SQRT2", 1.4142135623730951 |
| 316 ]); | 307 ]); |
| 317 | 308 |
| 318 // Set up non-enumerable functions of the Math object and | 309 // Set up non-enumerable functions of the Math object and |
| 319 // set their names. | 310 // set their names. |
| 320 utils.InstallFunctions(Math, DONT_ENUM, [ | 311 utils.InstallFunctions(GlobalMath, DONT_ENUM, [ |
| 321 "random", MathRandom, | 312 "random", MathRandom, |
| 322 "abs", MathAbs, | 313 "abs", MathAbs, |
| 323 "acos", MathAcosJS, | 314 "acos", MathAcosJS, |
| 324 "asin", MathAsinJS, | 315 "asin", MathAsinJS, |
| 325 "atan", MathAtanJS, | 316 "atan", MathAtanJS, |
| 326 "ceil", MathCeil, | 317 "ceil", MathCeil, |
| 327 "exp", MathExp, | 318 "exp", MathExp, |
| 328 "floor", MathFloorJS, | 319 "floor", MathFloorJS, |
| 329 "log", MathLog, | 320 "log", MathLog, |
| 330 "round", MathRound, | 321 "round", MathRound, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 utils.Export(function(to) { | 356 utils.Export(function(to) { |
| 366 to.MathAbs = MathAbs; | 357 to.MathAbs = MathAbs; |
| 367 to.MathExp = MathExp; | 358 to.MathExp = MathExp; |
| 368 to.MathFloor = MathFloorJS; | 359 to.MathFloor = MathFloorJS; |
| 369 to.IntRandom = MathRandomRaw; | 360 to.IntRandom = MathRandomRaw; |
| 370 to.MathMax = MathMax; | 361 to.MathMax = MathMax; |
| 371 to.MathMin = MathMin; | 362 to.MathMin = MathMin; |
| 372 }); | 363 }); |
| 373 | 364 |
| 374 }) | 365 }) |
| OLD | NEW |