Introducing Number.prototype.__bit64 with all 64-bit operations
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 27 Jan 2016 06:46:03 +0100
changeset 18665447274f0321
parent 1865 412cc2201b1a
child 1867 60e77363650a
Introducing Number.prototype.__bit64 with all 64-bit operations
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	Tue Jan 26 08:43:29 2016 +0100
     1.2 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_Number.js	Wed Jan 27 06:46:03 2016 +0100
     1.3 @@ -541,6 +541,21 @@
     1.4          var result = r64.toNumber();
     1.5          return negateResult ? result.neg64() : result; 
     1.6      }
     1.7 +
     1.8 +    var b = numberPrototype['__bit64'] = {};
     1.9 +    b.add64 = function(x,y) { return x.add64(y); };
    1.10 +    b.sub64 = function(x,y) { return x.sub64(y); };
    1.11 +    b.mul64 = function(x,y) { return x.mul64(y); };
    1.12 +    b.div64 = function(x,y) { return x.div64(y); };
    1.13 +    b.mod64 = function(x,y) { return x.mod64(y); };
    1.14 +    b.and64 = function(x,y) { return x.and64(y); };
    1.15 +    b.or64 = function(x,y) { return x.or64(y); };
    1.16 +    b.xor64 = function(x,y) { return x.xor64(y); };
    1.17 +    b.neg64 = function(x) { return x.neg64(); };
    1.18 +    b.shl64 = function(x,y) { return x.shl64(y); };
    1.19 +    b.shr64 = function(x,y) { return x.shr64(y); };
    1.20 +    b.ushr64 = function(x,y) { return x.ushr64(y); };
    1.21 +    b.compare64 = function(x,y) { return y.compare64(x); };
    1.22  })(Number.prototype);
    1.23  
    1.24  vm.java_lang_Number(false);
     2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java	Tue Jan 26 08:43:29 2016 +0100
     2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java	Wed Jan 27 06:46:03 2016 +0100
     2.3 @@ -149,19 +149,19 @@
     2.4          }
     2.5          if ((used & BIT64) != 0) {
     2.6              sb.append(
     2.7 -                "    var __add64 = function(x,y) { return x.add64(y); };\n" +
     2.8 -                "    var __sub64 = function(x,y) { return x.sub64(y); };\n" +
     2.9 -                "    var __mul64 = function(x,y) { return x.mul64(y); };\n" +
    2.10 -                "    var __div64 = function(x,y) { return x.div64(y); };\n" +
    2.11 -                "    var __mod64 = function(x,y) { return x.mod64(y); };\n" +
    2.12 -                "    var __and64 = function(x,y) { return x.and64(y); };\n" +
    2.13 -                "    var __or64 = function(x,y) { return x.or64(y); };\n" +
    2.14 -                "    var __xor64 = function(x,y) { return x.xor64(y); };\n" +
    2.15 +                "    var __add64 = Number.prototype['__bit64']['add64'];\n" +
    2.16 +                "    var __sub64 = Number.prototype['__bit64']['sub64'];\n" +
    2.17 +                "    var __mul64 = Number.prototype['__bit64']['mul64'];\n" +
    2.18 +                "    var __div64 = Number.prototype['__bit64']['div64'];\n" +
    2.19 +                "    var __mod64 = Number.prototype['__bit64']['mod64'];\n" +
    2.20 +                "    var __and64 = Number.prototype['__bit64']['and64'];\n" +
    2.21 +                "    var __or64 = Number.prototype['__bit64']['or64'];\n" +
    2.22 +                "    var __xor64 = Number.prototype['__bit64']['xor64'];\n" +
    2.23                  "    var __neg64 = function(x) { return x.neg64(); };\n" +
    2.24 -                "    var __shl64 = function(x,y) { return x.shl64(y); };\n" +
    2.25 -                "    var __shr64 = function(x,y) { return x.shr64(y); };\n" +
    2.26 -                "    var __ushr64 = function(x,y) { return x.ushr64(y); };\n" +
    2.27 -                "    var __compare64 = function(x,y) { return y.compare64(x); };\n" +
    2.28 +                "    var __shl64 = Number.prototype['__bit64']['shl64'];\n" +
    2.29 +                "    var __shr64 = Number.prototype['__bit64']['shr64'];\n" +
    2.30 +                "    var __ushr64 = Number.prototype['__bit64']['ushr64'];\n" +
    2.31 +                "    var __compare64 = Number.prototype['__bit64']['compare64'];\n" +
    2.32                  ""
    2.33              );
    2.34          }