Turning shifts into direct operations
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 27 Jan 2016 20:57:20 +0100
changeset 1869764f32c645f9
parent 1868 cb3c8fb1245d
child 1870 790cc8784820
Turning shifts into direct operations
rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js
     1.1 --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js	Wed Jan 27 20:45:14 2016 +0100
     1.2 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js	Wed Jan 27 20:57:20 2016 +0100
     1.3 @@ -157,52 +157,52 @@
     1.4          return low;
     1.5      };
     1.6  
     1.7 -    numberPrototype.shl64 = function(x) {
     1.8 +    function shl64(thiz, x) {
     1.9          x &= 0x3f;
    1.10 -        if (x == 0) return this;
    1.11 +        if (x == 0) return thiz;
    1.12          if (x >= 32) {
    1.13 -            var hi = this << (x - 32);
    1.14 +            var hi = thiz << (x - 32);
    1.15              return hi.next32(0);
    1.16          } else {
    1.17 -            var hi = this.high32() << x;
    1.18 -            var low_reminder = this >> (32 - x);
    1.19 +            var hi = thiz.high32() << x;
    1.20 +            var low_reminder = thiz >> (32 - x);
    1.21              hi |= low_reminder;
    1.22 -            var low = this << x;
    1.23 +            var low = thiz << x;
    1.24              low += (low < 0) ? (__m32 + 1) : 0;
    1.25              return hi.next32(low);
    1.26          }
    1.27      };
    1.28  
    1.29 -    numberPrototype.shr64 = function(x) {
    1.30 +    function shr64(thiz, x) {
    1.31          x &= 0x3f;
    1.32 -        if (x == 0) return this;
    1.33 +        if (x == 0) return thiz;
    1.34          if (x >= 32) {
    1.35 -            var low = this.high32() >> (x - 32);
    1.36 +            var low = thiz.high32() >> (x - 32);
    1.37              low += (low < 0) ? (__m32 + 1) : 0;
    1.38              return low;
    1.39          } else {
    1.40 -            var low = this >>> x;
    1.41 -            var hi_reminder = this.high32() << (32 - x);
    1.42 +            var low = thiz >>> x;
    1.43 +            var hi_reminder = thiz.high32() << (32 - x);
    1.44              low |= hi_reminder;
    1.45              low += (low < 0) ? (__m32 + 1) : 0;
    1.46 -            var hi = this.high32() >> x;
    1.47 +            var hi = thiz.high32() >> x;
    1.48              return hi.next32(low);
    1.49          }
    1.50      };
    1.51  
    1.52 -    numberPrototype.ushr64 = function(x) {
    1.53 +    function ushr64(thiz, x) {
    1.54          x &= 0x3f;
    1.55 -        if (x == 0) return this;
    1.56 +        if (x == 0) return thiz;
    1.57          if (x >= 32) {
    1.58 -            var low = this.high32() >>> (x - 32);
    1.59 +            var low = thiz.high32() >>> (x - 32);
    1.60              low += (low < 0) ? (__m32 + 1) : 0;
    1.61              return low;
    1.62          } else {
    1.63 -            var low = this >>> x;
    1.64 -            var hi_reminder = this.high32() << (32 - x);
    1.65 +            var low = thiz >>> x;
    1.66 +            var hi_reminder = thiz.high32() << (32 - x);
    1.67              low |= hi_reminder;
    1.68              low += (low < 0) ? (__m32 + 1) : 0;
    1.69 -            var hi = this.high32() >>> x;
    1.70 +            var hi = thiz.high32() >>> x;
    1.71              return hi.next32(low);
    1.72          }
    1.73      };
    1.74 @@ -551,9 +551,9 @@
    1.75      b.or64 = or64;
    1.76      b.xor64 = xor64;
    1.77      b.neg64 = function(x) { return x.neg64(); };
    1.78 -    b.shl64 = function(x,y) { return x.shl64(y); };
    1.79 -    b.shr64 = function(x,y) { return x.shr64(y); };
    1.80 -    b.ushr64 = function(x,y) { return x.ushr64(y); };
    1.81 +    b.shl64 = shl64;
    1.82 +    b.shr64 = shr64;
    1.83 +    b.ushr64 = ushr64;
    1.84      b.compare64 = function(x,y) { return y.compare64(x); };
    1.85  })(Number.prototype);
    1.86