diff -r e3f671b50e93 -r 9cbf1f2ad7ee emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js --- a/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Wed Jan 30 22:23:21 2013 +0100 +++ b/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Thu Jan 31 13:42:14 2013 +0100 @@ -15,7 +15,7 @@ return low; } var l = new Number(low); - l.hi = this; + l.hi = this | 0; return l; }; @@ -28,7 +28,7 @@ }; Number.prototype.toLong = function() { var hi = (this > __m32) ? (Math.floor(this / (__m32+1))) | 0 : 0; - return hi.next32(this % (__m32+1)); + return hi.next32(Math.floor(this % (__m32+1))); }; Number.prototype.toExactString = function() { @@ -88,14 +88,15 @@ }; Number.prototype.shl64 = function(x) { - if (x > 32) { - var hi = (this << (x - 32)) & 0xFFFFFFFF; + if (x >= 32) { + var hi = (this << (x - 32)) | 0; return hi.next32(0); } else { - var hi = (this.high32() << x) & 0xFFFFFFFF; + var hi = (this.high32() << x) | 0; var low_reminder = this >> (32 - x); hi |= low_reminder; var low = this << x; + low += (low < 0) ? (__m32+1) : 0; return hi.next32(low); } };