neg64 is statically resolved now
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 27 Jan 2016 21:17:44 +0100
changeset 1870790cc8784820
parent 1869 764f32c645f9
child 1871 bcbc4c03d35d
neg64 is statically resolved now
rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js
rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java
     1.1 --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js	Wed Jan 27 20:57:20 2016 +0100
     1.2 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js	Wed Jan 27 21:17:44 2016 +0100
     1.3 @@ -50,7 +50,7 @@
     1.4              var digit;
     1.5              var neg = this.hi < 0;
     1.6              if (neg) {
     1.7 -                var x = this.neg64();
     1.8 +                var x = neg64(this);
     1.9                  var hi = x.hi;
    1.10                  var low = x;
    1.11              } else {
    1.12 @@ -214,9 +214,9 @@
    1.13          return (this.high32() < x.high32()) ? -1 : 1;
    1.14      };
    1.15  
    1.16 -    numberPrototype.neg64 = function() {
    1.17 -        var hi = this.high32();
    1.18 -        var low = this;
    1.19 +    function neg64(x) {
    1.20 +        var hi = x.high32();
    1.21 +        var low = x;
    1.22          if ((hi === 0) && (low < 0)) {
    1.23              return -low;
    1.24          }
    1.25 @@ -467,14 +467,14 @@
    1.26          var u, v;
    1.27  
    1.28          if ((x.high32() & 0x80000000) !== 0) {
    1.29 -            u = x.neg64();
    1.30 +            u = neg64(x);
    1.31              negateResult = !negateResult;
    1.32          } else {
    1.33              u = x;
    1.34          }
    1.35  
    1.36          if ((y.high32() & 0x80000000) !== 0) {
    1.37 -            v = y.neg64();
    1.38 +            v = neg64(y);
    1.39              negateResult = !negateResult;
    1.40          } else {
    1.41              v = y;
    1.42 @@ -487,7 +487,7 @@
    1.43          if (u.high32() === 0) {
    1.44              if (v.high32() === 0) {
    1.45                  var result = (u / v) | 0;
    1.46 -                return negateResult ? result.neg64() : result; 
    1.47 +                return negateResult ? neg64(result) : result;
    1.48              }
    1.49  
    1.50              return 0;
    1.51 @@ -501,33 +501,33 @@
    1.52          __div64(q64, r64, u64, v64);
    1.53  
    1.54          var result = q64.toNumber();
    1.55 -        return negateResult ? result.neg64() : result; 
    1.56 +        return negateResult ? neg64(result) : result;
    1.57      }
    1.58  
    1.59      function mod64(x, y) {
    1.60          var negateResult = false;
    1.61          var u, v;
    1.62          
    1.63 -        if ((x.high32() & 0x80000000) != 0) {
    1.64 -            u = x.neg64();
    1.65 +        if ((x.high32() & 0x80000000) !== 0) {
    1.66 +            u = neg64(x);
    1.67              negateResult = !negateResult;
    1.68          } else {
    1.69              u = x;
    1.70          }
    1.71  
    1.72 -        if ((y.high32() & 0x80000000) != 0) {
    1.73 -            v = y.neg64();
    1.74 +        if ((y.high32() & 0x80000000) !== 0) {
    1.75 +            v = neg64(y);
    1.76          } else {
    1.77              v = y;
    1.78          }
    1.79  
    1.80 -        if ((v == 0) && (v.high32() === 0)) {
    1.81 +        if ((v === 0) && (v.high32() === 0)) {
    1.82              __handleDivByZero();
    1.83          }
    1.84  
    1.85          if (u.high32() === 0) {
    1.86              var result = (v.high32() === 0) ? (u % v) : u;
    1.87 -            return negateResult ? result.neg64() : result; 
    1.88 +            return negateResult ? neg64(result) : result;
    1.89          }
    1.90  
    1.91          var u64 = new __Int64(u.high32(), u);
    1.92 @@ -538,7 +538,7 @@
    1.93          __div64(q64, r64, u64, v64);
    1.94  
    1.95          var result = r64.toNumber();
    1.96 -        return negateResult ? result.neg64() : result; 
    1.97 +        return negateResult ? neg64(result) : result;
    1.98      }
    1.99  
   1.100      var b = numberPrototype['__bit64'] = {};
   1.101 @@ -550,7 +550,7 @@
   1.102      b.and64 = and64;
   1.103      b.or64 = or64;
   1.104      b.xor64 = xor64;
   1.105 -    b.neg64 = function(x) { return x.neg64(); };
   1.106 +    b.neg64 = neg64;
   1.107      b.shl64 = shl64;
   1.108      b.shr64 = shr64;
   1.109      b.ushr64 = ushr64;
     2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java	Wed Jan 27 20:57:20 2016 +0100
     2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java	Wed Jan 27 21:17:44 2016 +0100
     2.3 @@ -157,7 +157,7 @@
     2.4                  "    var __and64 = Number.prototype['__bit64']['and64'];\n" +
     2.5                  "    var __or64 = Number.prototype['__bit64']['or64'];\n" +
     2.6                  "    var __xor64 = Number.prototype['__bit64']['xor64'];\n" +
     2.7 -                "    var __neg64 = function(x) { return x.neg64(); };\n" +
     2.8 +                "    var __neg64 = Number.prototype['__bit64']['neg64'];\n" +
     2.9                  "    var __shl64 = Number.prototype['__bit64']['shl64'];\n" +
    2.10                  "    var __shr64 = Number.prototype['__bit64']['shr64'];\n" +
    2.11                  "    var __ushr64 = Number.prototype['__bit64']['ushr64'];\n" +