emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js
brancharithmetic
changeset 616 9cbf1f2ad7ee
parent 615 e3f671b50e93
child 619 5134b1d78432
     1.1 --- a/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js	Wed Jan 30 22:23:21 2013 +0100
     1.2 +++ b/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js	Thu Jan 31 13:42:14 2013 +0100
     1.3 @@ -15,7 +15,7 @@
     1.4      return low;
     1.5    }
     1.6    var l = new Number(low);
     1.7 -  l.hi = this;
     1.8 +  l.hi = this | 0;
     1.9    return l;
    1.10  };
    1.11  
    1.12 @@ -28,7 +28,7 @@
    1.13  };
    1.14  Number.prototype.toLong = function() {
    1.15      var hi = (this > __m32) ? (Math.floor(this / (__m32+1))) | 0 : 0;
    1.16 -    return hi.next32(this % (__m32+1));
    1.17 +    return hi.next32(Math.floor(this % (__m32+1)));
    1.18  };
    1.19  
    1.20  Number.prototype.toExactString = function() {
    1.21 @@ -88,14 +88,15 @@
    1.22  };
    1.23  
    1.24  Number.prototype.shl64 = function(x) {
    1.25 -    if (x > 32) {
    1.26 -        var hi = (this << (x - 32)) & 0xFFFFFFFF;
    1.27 +    if (x >= 32) {
    1.28 +        var hi = (this << (x - 32)) | 0;
    1.29          return hi.next32(0);
    1.30      } else {
    1.31 -        var hi = (this.high32() << x) & 0xFFFFFFFF;
    1.32 +        var hi = (this.high32() << x) | 0;
    1.33          var low_reminder = this >> (32 - x);
    1.34          hi |= low_reminder;
    1.35          var low = this << x;
    1.36 +        low += (low < 0) ? (__m32+1) : 0;
    1.37          return hi.next32(low);
    1.38      }
    1.39  };