rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 1862 fa00fb053c72
parent 1858 4dea14fafc31
child 1863 14a122c18d73
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Mon Jan 25 08:14:42 2016 +0100
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Jan 26 05:54:37 2016 +0100
     1.3 @@ -735,7 +735,7 @@
     1.4                      smapper.replace(this, VarType.INTEGER, "(((@1) + (@2)) | 0)", smapper.getI(1), smapper.popI());
     1.5                      break;
     1.6                  case opc_ladd:
     1.7 -                    smapper.replace(this, VarType.LONG, "(@1).add64(@2)", smapper.getL(1), smapper.popL());
     1.8 +                    smapper.replace(this, VarType.LONG, numbers.add64(), smapper.getL(1), smapper.popL());
     1.9                      break;
    1.10                  case opc_fadd:
    1.11                      smapper.replace(this, VarType.FLOAT, "(@1 + @2)", smapper.getF(1), smapper.popF());
    1.12 @@ -747,7 +747,7 @@
    1.13                      smapper.replace(this, VarType.INTEGER, "(((@1) - (@2)) | 0)", smapper.getI(1), smapper.popI());
    1.14                      break;
    1.15                  case opc_lsub:
    1.16 -                    smapper.replace(this, VarType.LONG, "(@1).sub64(@2)", smapper.getL(1), smapper.popL());
    1.17 +                    smapper.replace(this, VarType.LONG, numbers.sub64(), smapper.getL(1), smapper.popL());
    1.18                      break;
    1.19                  case opc_fsub:
    1.20                      smapper.replace(this, VarType.FLOAT, "(@1 - @2)", smapper.getF(1), smapper.popF());
    1.21 @@ -759,7 +759,7 @@
    1.22                      smapper.replace(this, VarType.INTEGER, numbers.mul32(), smapper.getI(1), smapper.popI());
    1.23                      break;
    1.24                  case opc_lmul:
    1.25 -                    smapper.replace(this, VarType.LONG, "(@1).mul64(@2)", smapper.getL(1), smapper.popL());
    1.26 +                    smapper.replace(this, VarType.LONG, numbers.mul64(), smapper.getL(1), smapper.popL());
    1.27                      break;
    1.28                  case opc_fmul:
    1.29                      smapper.replace(this, VarType.FLOAT, "(@1 * @2)", smapper.getF(1), smapper.popF());
    1.30 @@ -772,7 +772,7 @@
    1.31                           smapper.getI(1), smapper.popI());
    1.32                      break;
    1.33                  case opc_ldiv:
    1.34 -                    smapper.replace(this, VarType.LONG, "(@1).div64(@2)",
    1.35 +                    smapper.replace(this, VarType.LONG, numbers.div64(),
    1.36                           smapper.getL(1), smapper.popL());
    1.37                      break;
    1.38                  case opc_fdiv:
    1.39 @@ -786,7 +786,7 @@
    1.40                           smapper.getI(1), smapper.popI());
    1.41                      break;
    1.42                  case opc_lrem:
    1.43 -                    smapper.replace(this, VarType.LONG, "(@1).mod64(@2)",
    1.44 +                    smapper.replace(this, VarType.LONG, numbers.mod64(),
    1.45                           smapper.getL(1), smapper.popL());
    1.46                      break;
    1.47                  case opc_frem:
    1.48 @@ -799,25 +799,25 @@
    1.49                      smapper.replace(this, VarType.INTEGER, "(@1 & @2)", smapper.getI(1), smapper.popI());
    1.50                      break;
    1.51                  case opc_land:
    1.52 -                    smapper.replace(this, VarType.LONG, "(@1).and64(@2)", smapper.getL(1), smapper.popL());
    1.53 +                    smapper.replace(this, VarType.LONG, numbers.and64(), smapper.getL(1), smapper.popL());
    1.54                      break;
    1.55                  case opc_ior:
    1.56                      smapper.replace(this, VarType.INTEGER, "(@1 | @2)", smapper.getI(1), smapper.popI());
    1.57                      break;
    1.58                  case opc_lor:
    1.59 -                    smapper.replace(this, VarType.LONG, "(@1).or64(@2)", smapper.getL(1), smapper.popL());
    1.60 +                    smapper.replace(this, VarType.LONG, numbers.or64(), smapper.getL(1), smapper.popL());
    1.61                      break;
    1.62                  case opc_ixor:
    1.63                      smapper.replace(this, VarType.INTEGER, "(@1 ^ @2)", smapper.getI(1), smapper.popI());
    1.64                      break;
    1.65                  case opc_lxor:
    1.66 -                    smapper.replace(this, VarType.LONG, "(@1).xor64(@2)", smapper.getL(1), smapper.popL());
    1.67 +                    smapper.replace(this, VarType.LONG, numbers.xor64(), smapper.getL(1), smapper.popL());
    1.68                      break;
    1.69                  case opc_ineg:
    1.70                      smapper.replace(this, VarType.INTEGER, "(-(@1))", smapper.getI(0));
    1.71                      break;
    1.72                  case opc_lneg:
    1.73 -                    smapper.replace(this, VarType.LONG, "(@1).neg64()", smapper.getL(0));
    1.74 +                    smapper.replace(this, VarType.LONG, numbers.neg64(), smapper.getL(0));
    1.75                      break;
    1.76                  case opc_fneg:
    1.77                      smapper.replace(this, VarType.FLOAT, "(-@1)", smapper.getF(0));
    1.78 @@ -829,19 +829,19 @@
    1.79                      smapper.replace(this, VarType.INTEGER, "(@1 << @2)", smapper.getI(1), smapper.popI());
    1.80                      break;
    1.81                  case opc_lshl:
    1.82 -                    smapper.replace(this, VarType.LONG, "(@1).shl64(@2)", smapper.getL(1), smapper.popI());
    1.83 +                    smapper.replace(this, VarType.LONG, numbers.shl64(), smapper.getL(1), smapper.popI());
    1.84                      break;
    1.85                  case opc_ishr:
    1.86                      smapper.replace(this, VarType.INTEGER, "(@1 >> @2)", smapper.getI(1), smapper.popI());
    1.87                      break;
    1.88                  case opc_lshr:
    1.89 -                    smapper.replace(this, VarType.LONG, "(@1).shr64(@2)", smapper.getL(1), smapper.popI());
    1.90 +                    smapper.replace(this, VarType.LONG, numbers.shr64(), smapper.getL(1), smapper.popI());
    1.91                      break;
    1.92                  case opc_iushr:
    1.93                      smapper.replace(this, VarType.INTEGER, "(@1 >>> @2)", smapper.getI(1), smapper.popI());
    1.94                      break;
    1.95                  case opc_lushr:
    1.96 -                    smapper.replace(this, VarType.LONG, "(@1).ushr64(@2)", smapper.getL(1), smapper.popI());
    1.97 +                    smapper.replace(this, VarType.LONG, numbers.ushr64(), smapper.getL(1), smapper.popI());
    1.98                      break;
    1.99                  case opc_iinc: {
   1.100                      ++i;
   1.101 @@ -1003,7 +1003,7 @@
   1.102                      break;
   1.103                  }
   1.104                  case opc_lcmp:
   1.105 -                    smapper.replace(this, VarType.INTEGER, "(@2).compare64(@1)", smapper.popL(), smapper.getL(0));
   1.106 +                    smapper.replace(this, VarType.INTEGER, numbers.compare64(), smapper.popL(), smapper.getL(0));
   1.107                      break;
   1.108                  case opc_fcmpl:
   1.109                  case opc_fcmpg: