1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java Tue Jan 26 07:28:25 2016 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/NumberOperations.java Tue Jan 26 08:43:29 2016 +0100
1.3 @@ -21,6 +21,7 @@
1.4 private static final int DIV32 = 1;
1.5 private static final int MOD32 = 2;
1.6 private static final int MUL32 = 4;
1.7 + private static final int BIT64 = 8;
1.8
1.9 private int used;
1.10
1.11 @@ -39,55 +40,68 @@
1.12 }
1.13
1.14 public String add64() {
1.15 - return "(@1).add64(@2)";
1.16 + used |= BIT64;
1.17 + return "__add64(@1,@2)";
1.18 }
1.19
1.20 public String sub64() {
1.21 - return "(@1).sub64(@2)";
1.22 + used |= BIT64;
1.23 + return "__sub64(@1,@2)";
1.24 }
1.25
1.26 public String mul64() {
1.27 - return "(@1).mul64(@2)";
1.28 + used |= BIT64;
1.29 + return "__mul64(@1,@2)";
1.30 }
1.31
1.32 public String div64() {
1.33 - return "(@1).div64(@2)";
1.34 + used |= BIT64;
1.35 + return "__div64(@1,@2)";
1.36 }
1.37
1.38 public String mod64() {
1.39 - return "(@1).mod64(@2)";
1.40 + used |= BIT64;
1.41 + return "__mod64(@1,@2)";
1.42 }
1.43
1.44 public String and64() {
1.45 - return "(@1).and64(@2)";
1.46 + used |= BIT64;
1.47 + return "__and64(@1,@2)";
1.48 }
1.49
1.50 public String or64() {
1.51 - return "(@1).or64(@2)";
1.52 + used |= BIT64;
1.53 + return "__or64(@1,@2)";
1.54 }
1.55
1.56 public String xor64() {
1.57 - return "(@1).xor64(@2)";
1.58 + used |= BIT64;
1.59 + return "__xor64(@1,@2)";
1.60 }
1.61
1.62 public String neg64() {
1.63 - return "(@1).neg64()";
1.64 + used |= BIT64;
1.65 + return "__neg64(@1)";
1.66 }
1.67
1.68 public String shl64() {
1.69 - return "(@1).shl64(@2)";
1.70 + used |= BIT64;
1.71 + return "__shl64(@1,@2)";
1.72 }
1.73
1.74 public String shr64() {
1.75 - return "(@1).shr64(@2)";
1.76 + used |= BIT64;
1.77 + return "__shr64(@1,@2)";
1.78 }
1.79
1.80 public String ushr64() {
1.81 - return "(@1).ushr64(@2)";
1.82 + used |= BIT64;
1.83 + return "__ushr64(@1,@2)";
1.84 }
1.85
1.86 public String compare64() {
1.87 - return "(@2).compare64(@1)";
1.88 + used |= BIT64;
1.89 + return "__compare64(@1,@2)";
1.90 }
1.91
1.92 public String generate() {
1.93 @@ -133,6 +147,24 @@
1.94 ""
1.95 );
1.96 }
1.97 + if ((used & BIT64) != 0) {
1.98 + sb.append(
1.99 + " var __add64 = function(x,y) { return x.add64(y); };\n" +
1.100 + " var __sub64 = function(x,y) { return x.sub64(y); };\n" +
1.101 + " var __mul64 = function(x,y) { return x.mul64(y); };\n" +
1.102 + " var __div64 = function(x,y) { return x.div64(y); };\n" +
1.103 + " var __mod64 = function(x,y) { return x.mod64(y); };\n" +
1.104 + " var __and64 = function(x,y) { return x.and64(y); };\n" +
1.105 + " var __or64 = function(x,y) { return x.or64(y); };\n" +
1.106 + " var __xor64 = function(x,y) { return x.xor64(y); };\n" +
1.107 + " var __neg64 = function(x) { return x.neg64(); };\n" +
1.108 + " var __shl64 = function(x,y) { return x.shl64(y); };\n" +
1.109 + " var __shr64 = function(x,y) { return x.shr64(y); };\n" +
1.110 + " var __ushr64 = function(x,y) { return x.ushr64(y); };\n" +
1.111 + " var __compare64 = function(x,y) { return y.compare64(x); };\n" +
1.112 + ""
1.113 + );
1.114 + }
1.115 return sb.toString();
1.116 }
1.117 }