| Index: runtime/lib/math_patch.dart
|
| diff --git a/runtime/lib/math_patch.dart b/runtime/lib/math_patch.dart
|
| index a09ad93b62a3f85891cbae5ee7d353b7f4f4e1d8..b07a6bd9bf1c5f47b546e219c88bf8239ead4245 100644
|
| --- a/runtime/lib/math_patch.dart
|
| +++ b/runtime/lib/math_patch.dart
|
| @@ -8,8 +8,7 @@ import "dart:typed_data";
|
|
|
| // If [x] is an [int] and [exponent] is a non-negative [int], the result is
|
| // an [int], otherwise the result is a [double].
|
| -@patch
|
| -num pow(num x, num exponent) {
|
| +@patch num pow(num x, num exponent) {
|
| if ((x is int) && (exponent is int) && (exponent >= 0)) {
|
| return _intPow(x, exponent);
|
| }
|
| @@ -18,7 +17,7 @@ num pow(num x, num exponent) {
|
|
|
| double _doublePow(double base, double exponent) {
|
| if (exponent == 0.0) {
|
| - return 1.0; // ECMA-262 15.8.2.13
|
| + return 1.0; // ECMA-262 15.8.2.13
|
| }
|
| // Speed up simple cases.
|
| if (exponent == 1.0) return base;
|
| @@ -57,26 +56,16 @@ int _intPow(int base, int exponent) {
|
| return result;
|
| }
|
|
|
| -@patch
|
| -double atan2(num a, num b) => _atan2(a.toDouble(), b.toDouble());
|
| -@patch
|
| -double sin(num x) => _sin(x.toDouble());
|
| -@patch
|
| -double cos(num x) => _cos(x.toDouble());
|
| -@patch
|
| -double tan(num x) => _tan(x.toDouble());
|
| -@patch
|
| -double acos(num x) => _acos(x.toDouble());
|
| -@patch
|
| -double asin(num x) => _asin(x.toDouble());
|
| -@patch
|
| -double atan(num x) => _atan(x.toDouble());
|
| -@patch
|
| -double sqrt(num x) => _sqrt(x.toDouble());
|
| -@patch
|
| -double exp(num x) => _exp(x.toDouble());
|
| -@patch
|
| -double log(num x) => _log(x.toDouble());
|
| +@patch double atan2(num a, num b) => _atan2(a.toDouble(), b.toDouble());
|
| +@patch double sin(num x) => _sin(x.toDouble());
|
| +@patch double cos(num x) => _cos(x.toDouble());
|
| +@patch double tan(num x) => _tan(x.toDouble());
|
| +@patch double acos(num x) => _acos(x.toDouble());
|
| +@patch double asin(num x) => _asin(x.toDouble());
|
| +@patch double atan(num x) => _atan(x.toDouble());
|
| +@patch double sqrt(num x) => _sqrt(x.toDouble());
|
| +@patch double exp(num x) => _exp(x.toDouble());
|
| +@patch double log(num x) => _log(x.toDouble());
|
|
|
| double _atan2(double a, double b) native "Math_atan2";
|
| double _sin(double x) native "Math_sin";
|
| @@ -89,31 +78,30 @@ double _sqrt(double x) native "Math_sqrt";
|
| double _exp(double x) native "Math_exp";
|
| double _log(double x) native "Math_log";
|
|
|
| +
|
| // TODO(iposva): Handle patch methods within a patch class correctly.
|
| -@patch
|
| -class Random {
|
| - @patch
|
| - factory Random([int seed]) {
|
| +@patch class Random {
|
| +
|
| + @patch factory Random([int seed]) {
|
| var state = _Random._setupSeed((seed == null) ? _Random._nextSeed() : seed);
|
| // Crank a couple of times to distribute the seed bits a bit further.
|
| - return new _Random._withState(state)
|
| - .._nextState()
|
| - .._nextState()
|
| - .._nextState()
|
| - .._nextState();
|
| + return new _Random._withState(state).._nextState()
|
| + .._nextState()
|
| + .._nextState()
|
| + .._nextState();
|
| }
|
|
|
| - @patch
|
| - factory Random.secure() {
|
| + @patch factory Random.secure() {
|
| return new _SecureRandom();
|
| }
|
| }
|
|
|
| +
|
| class _Random implements Random {
|
| // Internal state of the random number generator.
|
| final Uint32List _state;
|
| static const _kSTATE_LO = 0;
|
| - static const _kSTATE_HI = 1; // Unused in Dart code.
|
| + static const _kSTATE_HI = 1; // Unused in Dart code.
|
|
|
| _Random._withState(this._state);
|
|
|
| @@ -134,8 +122,8 @@ class _Random implements Random {
|
| int nextInt(int max) {
|
| const limit = 0x3FFFFFFF;
|
| if ((max <= 0) || ((max > limit) && (max > _POW2_32))) {
|
| - throw new RangeError.range(
|
| - max, 1, _POW2_32, "max", "Must be positive and <= 2^32");
|
| + throw new RangeError.range(max, 1, _POW2_32, "max",
|
| + "Must be positive and <= 2^32");
|
| }
|
| if ((max & -max) == max) {
|
| // Fast case for powers of two.
|
| @@ -185,6 +173,7 @@ class _Random implements Random {
|
| }
|
| }
|
|
|
| +
|
| class _SecureRandom implements Random {
|
| _SecureRandom() {
|
| // Throw early in constructor if entropy source is not hooked up.
|
| @@ -199,7 +188,7 @@ class _SecureRandom implements Random {
|
| max, 1, _POW2_32, "max", "Must be positive and <= 2^32");
|
| final byteCount = ((max - 1).bitLength + 7) >> 3;
|
| if (byteCount == 0) {
|
| - return 0; // Not random if max == 1.
|
| + return 0; // Not random if max == 1.
|
| }
|
| var rnd;
|
| var result;
|
| @@ -222,3 +211,4 @@ class _SecureRandom implements Random {
|
| static const _POW2_32 = 1 << 32;
|
| static const _POW2_53_D = 1.0 * (1 << 53);
|
| }
|
| +
|
|
|