# HG changeset patch # User Martin Soch # Date 1359639911 -3600 # Node ID 5134b1d78432589123327b1ef00f7c8be74f6c50 # Parent 171fa0ca3add3819d05c01cb3e1aa00ec840cb3d Fixed >> operator for 64-bit long diff -r 171fa0ca3add -r 5134b1d78432 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 13:59:34 2013 +0100 +++ b/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js Thu Jan 31 14:45:11 2013 +0100 @@ -102,13 +102,15 @@ }; Number.prototype.shr64 = function(x) { - if (x > 32) { - var low = (this.high32() >> (x - 32)) & 0xFFFFFFFF; + if (x >= 32) { + var low = (this.high32() >> (x - 32)) | 0; + low += (low < 0) ? (__m32+1) : 0; return low; } else { - var low = (this >> x) & 0xFFFFFFFF; - var hi_reminder = (this.high32() << (32 - x)) >> (32 - x); + var low = (this >> x) | 0; + 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); }