1.1 --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Wed Jan 27 06:46:03 2016 +0100
1.2 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Wed Jan 27 20:30:33 2016 +0100
1.3 @@ -77,39 +77,39 @@
1.4 return String(this);
1.5 };
1.6
1.7 - numberPrototype.add64 = function(x) {
1.8 - var low = this + x;
1.9 + function add64(x, y) {
1.10 + var low = x + y;
1.11 carry = 0;
1.12 if (low > __m32) {
1.13 carry = 1;
1.14 low -= (__m32 + 1);
1.15 }
1.16 - var hi = (this.high32() + x.high32() + carry) | 0;
1.17 + var hi = (x.high32() + y.high32() + carry) | 0;
1.18 return hi.next32(low);
1.19 };
1.20
1.21 - numberPrototype.sub64 = function(x) {
1.22 - var low = this - x;
1.23 + function sub64(x, y) {
1.24 + var low = x - y;
1.25 carry = 0;
1.26 if (low < 0) {
1.27 carry = 1;
1.28 low += (__m32 + 1);
1.29 }
1.30 - var hi = (this.high32() - x.high32() - carry) | 0;
1.31 + var hi = (x.high32() - y.high32() - carry) | 0;
1.32 return hi.next32(low);
1.33 };
1.34
1.35 - numberPrototype.mul64 = function(x) {
1.36 - var low = mul32(this, x);
1.37 + function mul64(x, y) {
1.38 + var low = mul32(x, y);
1.39 low += (low < 0) ? (__m32 + 1) : 0;
1.40 - // first count upper 32 bits of (this.low * x.low)
1.41 + // first count upper 32 bits of (x.low * x.low)
1.42 var hi_hi = 0;
1.43 var hi_low = 0;
1.44 var m = 1;
1.45 for (var i = 0; i < 32; i++) {
1.46 - if (x & m) {
1.47 - hi_hi += this >>> 16;
1.48 - hi_low += this & 0xFFFF
1.49 + if (y & m) {
1.50 + hi_hi += x >>> 16;
1.51 + hi_low += x & 0xFFFF
1.52 }
1.53 hi_low >>= 1;
1.54 hi_low += (hi_hi & 1) ? 0x8000 : 0;
1.55 @@ -118,8 +118,8 @@
1.56 }
1.57 var hi = (hi_hi << 16) + hi_low;
1.58
1.59 - var m1 = mul32(this.high32(), x);
1.60 - var m2 = mul32(this, x.high32());
1.61 + var m1 = mul32(x.high32(), y);
1.62 + var m2 = mul32(x, y.high32());
1.63 hi = add32(add32(hi, m1), m2);
1.64
1.65 return hi.next32(low);
1.66 @@ -225,7 +225,7 @@
1.67 low = ~low;
1.68 low += (low < 0) ? (__m32 + 1) : 0;
1.69 var ret = hi.next32(low);
1.70 - return ret.add64(1);
1.71 + return add64(ret, 1);
1.72 };
1.73
1.74 function __handleDivByZero() {
1.75 @@ -463,25 +463,25 @@
1.76 }
1.77 }
1.78
1.79 - numberPrototype.div64 = function(x) {
1.80 + function div64(x, y) {
1.81 var negateResult = false;
1.82 var u, v;
1.83
1.84 - if ((this.high32() & 0x80000000) != 0) {
1.85 - u = this.neg64();
1.86 + if ((x.high32() & 0x80000000) !== 0) {
1.87 + u = x.neg64();
1.88 negateResult = !negateResult;
1.89 } else {
1.90 - u = this;
1.91 + u = x;
1.92 }
1.93
1.94 - if ((x.high32() & 0x80000000) != 0) {
1.95 - v = x.neg64();
1.96 + if ((y.high32() & 0x80000000) !== 0) {
1.97 + v = y.neg64();
1.98 negateResult = !negateResult;
1.99 } else {
1.100 - v = x;
1.101 + v = y;
1.102 }
1.103
1.104 - if ((v == 0) && (v.high32() === 0)) {
1.105 + if ((v === 0) && (v.high32() === 0)) {
1.106 __handleDivByZero();
1.107 }
1.108
1.109 @@ -543,10 +543,10 @@
1.110 }
1.111
1.112 var b = numberPrototype['__bit64'] = {};
1.113 - b.add64 = function(x,y) { return x.add64(y); };
1.114 - b.sub64 = function(x,y) { return x.sub64(y); };
1.115 - b.mul64 = function(x,y) { return x.mul64(y); };
1.116 - b.div64 = function(x,y) { return x.div64(y); };
1.117 + b.add64 = add64;
1.118 + b.sub64 = sub64;
1.119 + b.mul64 = mul64;
1.120 + b.div64 = div64;
1.121 b.mod64 = function(x,y) { return x.mod64(y); };
1.122 b.and64 = function(x,y) { return x.and64(y); };
1.123 b.or64 = function(x,y) { return x.or64(y); };