1.1 --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Wed Jan 27 21:24:22 2016 +0100
1.2 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Wed Jan 27 21:37:10 2016 +0100
1.3 @@ -19,7 +19,10 @@
1.4 };
1.5
1.6 numberPrototype.high32 = function() {
1.7 - return this.hi ? this.hi : (Math.floor(this / (__m32 + 1))) | 0;
1.8 + return high32(this);
1.9 + };
1.10 + function high32(x) {
1.11 + return x.hi ? x.hi : (Math.floor(x / (__m32 + 1))) | 0;
1.12 };
1.13 numberPrototype.toFP = function() {
1.14 return this.hi ? this.hi * (__m32 + 1) + this : this;
1.15 @@ -84,7 +87,7 @@
1.16 carry = 1;
1.17 low -= (__m32 + 1);
1.18 }
1.19 - var hi = (x.high32() + y.high32() + carry) | 0;
1.20 + var hi = (high32(x) + high32(y) + carry) | 0;
1.21 return hi.next32(low);
1.22 };
1.23
1.24 @@ -95,7 +98,7 @@
1.25 carry = 1;
1.26 low += (__m32 + 1);
1.27 }
1.28 - var hi = (x.high32() - y.high32() - carry) | 0;
1.29 + var hi = (high32(x) - high32(y) - carry) | 0;
1.30 return hi.next32(low);
1.31 };
1.32
1.33 @@ -118,8 +121,8 @@
1.34 }
1.35 var hi = (hi_hi << 16) + hi_low;
1.36
1.37 - var m1 = mul32(x.high32(), y);
1.38 - var m2 = mul32(x, y.high32());
1.39 + var m1 = mul32(high32(x), y);
1.40 + var m2 = mul32(x, high32(y));
1.41 hi = add32(add32(hi, m1), m2);
1.42
1.43 return hi.next32(low);
1.44 @@ -159,12 +162,12 @@
1.45
1.46 function shl64(thiz, x) {
1.47 x &= 0x3f;
1.48 - if (x == 0) return thiz;
1.49 + if (x === 0) return thiz;
1.50 if (x >= 32) {
1.51 var hi = thiz << (x - 32);
1.52 return hi.next32(0);
1.53 } else {
1.54 - var hi = thiz.high32() << x;
1.55 + var hi = high32(thiz) << x;
1.56 var low_reminder = thiz >> (32 - x);
1.57 hi |= low_reminder;
1.58 var low = thiz << x;
1.59 @@ -175,47 +178,47 @@
1.60
1.61 function shr64(thiz, x) {
1.62 x &= 0x3f;
1.63 - if (x == 0) return thiz;
1.64 + if (x === 0) return thiz;
1.65 if (x >= 32) {
1.66 - var low = thiz.high32() >> (x - 32);
1.67 + var low = high32(thiz) >> (x - 32);
1.68 low += (low < 0) ? (__m32 + 1) : 0;
1.69 return low;
1.70 } else {
1.71 var low = thiz >>> x;
1.72 - var hi_reminder = thiz.high32() << (32 - x);
1.73 + var hi_reminder = high32(thiz) << (32 - x);
1.74 low |= hi_reminder;
1.75 low += (low < 0) ? (__m32 + 1) : 0;
1.76 - var hi = thiz.high32() >> x;
1.77 + var hi = high32(thiz) >> x;
1.78 return hi.next32(low);
1.79 }
1.80 };
1.81
1.82 function ushr64(thiz, x) {
1.83 x &= 0x3f;
1.84 - if (x == 0) return thiz;
1.85 + if (x === 0) return thiz;
1.86 if (x >= 32) {
1.87 - var low = thiz.high32() >>> (x - 32);
1.88 + var low = high32(thiz) >>> (x - 32);
1.89 low += (low < 0) ? (__m32 + 1) : 0;
1.90 return low;
1.91 } else {
1.92 var low = thiz >>> x;
1.93 - var hi_reminder = thiz.high32() << (32 - x);
1.94 + var hi_reminder = high32(thiz) << (32 - x);
1.95 low |= hi_reminder;
1.96 low += (low < 0) ? (__m32 + 1) : 0;
1.97 - var hi = thiz.high32() >>> x;
1.98 + var hi = high32(thiz) >>> x;
1.99 return hi.next32(low);
1.100 }
1.101 };
1.102
1.103 function compare64(x, y) {
1.104 - if (x.high32() === y.high32()) {
1.105 + if (high32(x) === high32(y)) {
1.106 return (x < y) ? -1 : ((x > y) ? 1 : 0);
1.107 }
1.108 - return (x.high32() < y.high32()) ? -1 : 1;
1.109 + return (high32(x) < high32(y)) ? -1 : 1;
1.110 };
1.111
1.112 function neg64(x) {
1.113 - var hi = x.high32();
1.114 + var hi = high32(x);
1.115 var low = x;
1.116 if ((hi === 0) && (low < 0)) {
1.117 return -low;
1.118 @@ -466,26 +469,26 @@
1.119 var negateResult = false;
1.120 var u, v;
1.121
1.122 - if ((x.high32() & 0x80000000) !== 0) {
1.123 + if ((high32(x) & 0x80000000) !== 0) {
1.124 u = neg64(x);
1.125 negateResult = !negateResult;
1.126 } else {
1.127 u = x;
1.128 }
1.129
1.130 - if ((y.high32() & 0x80000000) !== 0) {
1.131 + if ((high32(y) & 0x80000000) !== 0) {
1.132 v = neg64(y);
1.133 negateResult = !negateResult;
1.134 } else {
1.135 v = y;
1.136 }
1.137
1.138 - if ((v === 0) && (v.high32() === 0)) {
1.139 + if ((v === 0) && (high32(v) === 0)) {
1.140 __handleDivByZero();
1.141 }
1.142
1.143 - if (u.high32() === 0) {
1.144 - if (v.high32() === 0) {
1.145 + if (high32(u) === 0) {
1.146 + if (high32(v) === 0) {
1.147 var result = (u / v) | 0;
1.148 return negateResult ? neg64(result) : result;
1.149 }
1.150 @@ -493,8 +496,8 @@
1.151 return 0;
1.152 }
1.153
1.154 - var u64 = new __Int64(u.high32(), u);
1.155 - var v64 = new __Int64(v.high32(), v);
1.156 + var u64 = new __Int64(high32(u), u);
1.157 + var v64 = new __Int64(high32(v), v);
1.158 var q64 = new __Int64(0, 0);
1.159 var r64 = new __Int64(0, 0);
1.160
1.161 @@ -508,30 +511,30 @@
1.162 var negateResult = false;
1.163 var u, v;
1.164
1.165 - if ((x.high32() & 0x80000000) !== 0) {
1.166 + if ((high32(x) & 0x80000000) !== 0) {
1.167 u = neg64(x);
1.168 negateResult = !negateResult;
1.169 } else {
1.170 u = x;
1.171 }
1.172
1.173 - if ((y.high32() & 0x80000000) !== 0) {
1.174 + if ((high32(y) & 0x80000000) !== 0) {
1.175 v = neg64(y);
1.176 } else {
1.177 v = y;
1.178 }
1.179
1.180 - if ((v === 0) && (v.high32() === 0)) {
1.181 + if ((v === 0) && (high32(v) === 0)) {
1.182 __handleDivByZero();
1.183 }
1.184
1.185 - if (u.high32() === 0) {
1.186 - var result = (v.high32() === 0) ? (u % v) : u;
1.187 + if (high32(u) === 0) {
1.188 + var result = (high32(v) === 0) ? (u % v) : u;
1.189 return negateResult ? neg64(result) : result;
1.190 }
1.191
1.192 - var u64 = new __Int64(u.high32(), u);
1.193 - var v64 = new __Int64(v.high32(), v);
1.194 + var u64 = new __Int64(high32(u), u);
1.195 + var v64 = new __Int64(high32(v), v);
1.196 var q64 = new __Int64(0, 0);
1.197 var r64 = new __Int64(0, 0);
1.198