diff -r e606853325f1 -r 2d537f8cd604 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 Thu Jan 31 20:37:12 2013 +0100 +++ b/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Fri Feb 01 06:09:18 2013 +0100 @@ -121,10 +121,10 @@ Number.prototype.shl64 = function(x) { if (x >= 32) { - var hi = (this << (x - 32)) | 0; + var hi = this << (x - 32); return hi.next32(0); } else { - var hi = (this.high32() << x) | 0; + var hi = this.high32() << x; var low_reminder = this >> (32 - x); hi |= low_reminder; var low = this << x; @@ -135,11 +135,11 @@ Number.prototype.shr64 = function(x) { if (x >= 32) { - var low = (this.high32() >> (x - 32)) | 0; + var low = this.high32() >> (x - 32); low += (low < 0) ? (__m32+1) : 0; return low; } else { - var low = (this >> x) | 0; + var low = this >> x; var hi_reminder = this.high32() << (32 - x); low |= hi_reminder; low += (low < 0) ? (__m32+1) : 0; @@ -148,6 +148,21 @@ } }; +Number.prototype.ushr64 = function(x) { + if (x >= 32) { + var low = this.high32() >>> (x - 32); + low += (low < 0) ? (__m32+1) : 0; + return low; + } else { + var low = this >>> x; + var hi_reminder = this.high32() << (32 - x); + low |= hi_reminder; + low += (low < 0) ? (__m32+1) : 0; + var hi = this.high32() >>> x; + return hi.next32(low); + } +}; + Number.prototype.compare64 = function(x) { if (this.hi == x.hi) { return (this == x) ? 0 : ((this < x) ? -1 : 1);