1.1 --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Wed Jan 27 20:57:20 2016 +0100
1.2 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Wed Jan 27 21:17:44 2016 +0100
1.3 @@ -50,7 +50,7 @@
1.4 var digit;
1.5 var neg = this.hi < 0;
1.6 if (neg) {
1.7 - var x = this.neg64();
1.8 + var x = neg64(this);
1.9 var hi = x.hi;
1.10 var low = x;
1.11 } else {
1.12 @@ -214,9 +214,9 @@
1.13 return (this.high32() < x.high32()) ? -1 : 1;
1.14 };
1.15
1.16 - numberPrototype.neg64 = function() {
1.17 - var hi = this.high32();
1.18 - var low = this;
1.19 + function neg64(x) {
1.20 + var hi = x.high32();
1.21 + var low = x;
1.22 if ((hi === 0) && (low < 0)) {
1.23 return -low;
1.24 }
1.25 @@ -467,14 +467,14 @@
1.26 var u, v;
1.27
1.28 if ((x.high32() & 0x80000000) !== 0) {
1.29 - u = x.neg64();
1.30 + u = neg64(x);
1.31 negateResult = !negateResult;
1.32 } else {
1.33 u = x;
1.34 }
1.35
1.36 if ((y.high32() & 0x80000000) !== 0) {
1.37 - v = y.neg64();
1.38 + v = neg64(y);
1.39 negateResult = !negateResult;
1.40 } else {
1.41 v = y;
1.42 @@ -487,7 +487,7 @@
1.43 if (u.high32() === 0) {
1.44 if (v.high32() === 0) {
1.45 var result = (u / v) | 0;
1.46 - return negateResult ? result.neg64() : result;
1.47 + return negateResult ? neg64(result) : result;
1.48 }
1.49
1.50 return 0;
1.51 @@ -501,33 +501,33 @@
1.52 __div64(q64, r64, u64, v64);
1.53
1.54 var result = q64.toNumber();
1.55 - return negateResult ? result.neg64() : result;
1.56 + return negateResult ? neg64(result) : result;
1.57 }
1.58
1.59 function mod64(x, y) {
1.60 var negateResult = false;
1.61 var u, v;
1.62
1.63 - if ((x.high32() & 0x80000000) != 0) {
1.64 - u = x.neg64();
1.65 + if ((x.high32() & 0x80000000) !== 0) {
1.66 + u = neg64(x);
1.67 negateResult = !negateResult;
1.68 } else {
1.69 u = x;
1.70 }
1.71
1.72 - if ((y.high32() & 0x80000000) != 0) {
1.73 - v = y.neg64();
1.74 + if ((y.high32() & 0x80000000) !== 0) {
1.75 + v = neg64(y);
1.76 } else {
1.77 v = y;
1.78 }
1.79
1.80 - if ((v == 0) && (v.high32() === 0)) {
1.81 + if ((v === 0) && (v.high32() === 0)) {
1.82 __handleDivByZero();
1.83 }
1.84
1.85 if (u.high32() === 0) {
1.86 var result = (v.high32() === 0) ? (u % v) : u;
1.87 - return negateResult ? result.neg64() : result;
1.88 + return negateResult ? neg64(result) : result;
1.89 }
1.90
1.91 var u64 = new __Int64(u.high32(), u);
1.92 @@ -538,7 +538,7 @@
1.93 __div64(q64, r64, u64, v64);
1.94
1.95 var result = r64.toNumber();
1.96 - return negateResult ? result.neg64() : result;
1.97 + return negateResult ? neg64(result) : result;
1.98 }
1.99
1.100 var b = numberPrototype['__bit64'] = {};
1.101 @@ -550,7 +550,7 @@
1.102 b.and64 = and64;
1.103 b.or64 = or64;
1.104 b.xor64 = xor64;
1.105 - b.neg64 = function(x) { return x.neg64(); };
1.106 + b.neg64 = neg64;
1.107 b.shl64 = shl64;
1.108 b.shr64 = shr64;
1.109 b.ushr64 = ushr64;
2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java Wed Jan 27 20:57:20 2016 +0100
2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java Wed Jan 27 21:17:44 2016 +0100
2.3 @@ -157,7 +157,7 @@
2.4 " var __and64 = Number.prototype['__bit64']['and64'];\n" +
2.5 " var __or64 = Number.prototype['__bit64']['or64'];\n" +
2.6 " var __xor64 = Number.prototype['__bit64']['xor64'];\n" +
2.7 - " var __neg64 = function(x) { return x.neg64(); };\n" +
2.8 + " var __neg64 = Number.prototype['__bit64']['neg64'];\n" +
2.9 " var __shl64 = Number.prototype['__bit64']['shl64'];\n" +
2.10 " var __shr64 = Number.prototype['__bit64']['shr64'];\n" +
2.11 " var __ushr64 = Number.prototype['__bit64']['ushr64'];\n" +