1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Jan 09 21:19:44 2014 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Feb 15 14:36:43 2014 +0100
1.3 @@ -367,72 +367,71 @@
1.4 final int c = readUByte(byteCodes, i);
1.5 switch (c) {
1.6 case opc_aload_0:
1.7 - emit(out, "var @1 = @2;", smapper.pushA(), lmapper.getA(0));
1.8 + smapper.assign(out, VarType.REFERENCE, lmapper.getA(0));
1.9 break;
1.10 case opc_iload_0:
1.11 - emit(out, "var @1 = @2;", smapper.pushI(), lmapper.getI(0));
1.12 + smapper.assign(out, VarType.INTEGER, lmapper.getI(0));
1.13 break;
1.14 case opc_lload_0:
1.15 - emit(out, "var @1 = @2;", smapper.pushL(), lmapper.getL(0));
1.16 + smapper.assign(out, VarType.LONG, lmapper.getL(0));
1.17 break;
1.18 case opc_fload_0:
1.19 - emit(out, "var @1 = @2;", smapper.pushF(), lmapper.getF(0));
1.20 + smapper.assign(out, VarType.FLOAT, lmapper.getF(0));
1.21 break;
1.22 case opc_dload_0:
1.23 - emit(out, "var @1 = @2;", smapper.pushD(), lmapper.getD(0));
1.24 + smapper.assign(out, VarType.DOUBLE, lmapper.getD(0));
1.25 break;
1.26 case opc_aload_1:
1.27 - emit(out, "var @1 = @2;", smapper.pushA(), lmapper.getA(1));
1.28 + smapper.assign(out, VarType.REFERENCE, lmapper.getA(1));
1.29 break;
1.30 case opc_iload_1:
1.31 - emit(out, "var @1 = @2;", smapper.pushI(), lmapper.getI(1));
1.32 + smapper.assign(out, VarType.INTEGER, lmapper.getI(1));
1.33 break;
1.34 case opc_lload_1:
1.35 - emit(out, "var @1 = @2;", smapper.pushL(), lmapper.getL(1));
1.36 + smapper.assign(out, VarType.LONG, lmapper.getL(1));
1.37 break;
1.38 case opc_fload_1:
1.39 - emit(out, "var @1 = @2;", smapper.pushF(), lmapper.getF(1));
1.40 + smapper.assign(out, VarType.FLOAT, lmapper.getF(1));
1.41 break;
1.42 case opc_dload_1:
1.43 - emit(out, "var @1 = @2;", smapper.pushD(), lmapper.getD(1));
1.44 + smapper.assign(out, VarType.DOUBLE, lmapper.getD(1));
1.45 break;
1.46 case opc_aload_2:
1.47 - emit(out, "var @1 = @2;", smapper.pushA(), lmapper.getA(2));
1.48 + smapper.assign(out, VarType.REFERENCE, lmapper.getA(2));
1.49 break;
1.50 case opc_iload_2:
1.51 - emit(out, "var @1 = @2;", smapper.pushI(), lmapper.getI(2));
1.52 + smapper.assign(out, VarType.INTEGER, lmapper.getI(2));
1.53 break;
1.54 case opc_lload_2:
1.55 - emit(out, "var @1 = @2;", smapper.pushL(), lmapper.getL(2));
1.56 + smapper.assign(out, VarType.LONG, lmapper.getL(2));
1.57 break;
1.58 case opc_fload_2:
1.59 - emit(out, "var @1 = @2;", smapper.pushF(), lmapper.getF(2));
1.60 + smapper.assign(out, VarType.FLOAT, lmapper.getF(2));
1.61 break;
1.62 case opc_dload_2:
1.63 - emit(out, "var @1 = @2;", smapper.pushD(), lmapper.getD(2));
1.64 + smapper.assign(out, VarType.DOUBLE, lmapper.getD(2));
1.65 break;
1.66 case opc_aload_3:
1.67 - emit(out, "var @1 = @2;", smapper.pushA(), lmapper.getA(3));
1.68 + smapper.assign(out, VarType.REFERENCE, lmapper.getA(3));
1.69 break;
1.70 case opc_iload_3:
1.71 - emit(out, "var @1 = @2;", smapper.pushI(), lmapper.getI(3));
1.72 + smapper.assign(out, VarType.INTEGER, lmapper.getI(3));
1.73 break;
1.74 case opc_lload_3:
1.75 - emit(out, "var @1 = @2;", smapper.pushL(), lmapper.getL(3));
1.76 + smapper.assign(out, VarType.LONG, lmapper.getL(3));
1.77 break;
1.78 case opc_fload_3:
1.79 - emit(out, "var @1 = @2;", smapper.pushF(), lmapper.getF(3));
1.80 + smapper.assign(out, VarType.FLOAT, lmapper.getF(3));
1.81 break;
1.82 case opc_dload_3:
1.83 - emit(out, "var @1 = @2;", smapper.pushD(), lmapper.getD(3));
1.84 + smapper.assign(out, VarType.DOUBLE, lmapper.getD(3));
1.85 break;
1.86 case opc_iload: {
1.87 ++i;
1.88 final int indx = wide ? readUShort(byteCodes, i++)
1.89 : readUByte(byteCodes, i);
1.90 wide = false;
1.91 - emit(out, "var @1 = @2;",
1.92 - smapper.pushI(), lmapper.getI(indx));
1.93 + smapper.assign(out, VarType.INTEGER, lmapper.getI(indx));
1.94 break;
1.95 }
1.96 case opc_lload: {
1.97 @@ -440,8 +439,7 @@
1.98 final int indx = wide ? readUShort(byteCodes, i++)
1.99 : readUByte(byteCodes, i);
1.100 wide = false;
1.101 - emit(out, "var @1 = @2;",
1.102 - smapper.pushL(), lmapper.getL(indx));
1.103 + smapper.assign(out, VarType.LONG, lmapper.getL(indx));
1.104 break;
1.105 }
1.106 case opc_fload: {
1.107 @@ -449,8 +447,7 @@
1.108 final int indx = wide ? readUShort(byteCodes, i++)
1.109 : readUByte(byteCodes, i);
1.110 wide = false;
1.111 - emit(out, "var @1 = @2;",
1.112 - smapper.pushF(), lmapper.getF(indx));
1.113 + smapper.assign(out, VarType.FLOAT, lmapper.getF(indx));
1.114 break;
1.115 }
1.116 case opc_dload: {
1.117 @@ -458,8 +455,7 @@
1.118 final int indx = wide ? readUShort(byteCodes, i++)
1.119 : readUByte(byteCodes, i);
1.120 wide = false;
1.121 - emit(out, "var @1 = @2;",
1.122 - smapper.pushD(), lmapper.getD(indx));
1.123 + smapper.assign(out, VarType.DOUBLE, lmapper.getD(indx));
1.124 break;
1.125 }
1.126 case opc_aload: {
1.127 @@ -467,8 +463,7 @@
1.128 final int indx = wide ? readUShort(byteCodes, i++)
1.129 : readUByte(byteCodes, i);
1.130 wide = false;
1.131 - emit(out, "var @1 = @2;",
1.132 - smapper.pushA(), lmapper.getA(indx));
1.133 + smapper.assign(out, VarType.REFERENCE, lmapper.getA(indx));
1.134 break;
1.135 }
1.136 case opc_istore: {
1.137 @@ -1935,7 +1930,7 @@
1.138 return ",";
1.139 }
1.140
1.141 - private static void emit(final Appendable out,
1.142 + static void emit(final Appendable out,
1.143 final String format,
1.144 final CharSequence... params) throws IOException {
1.145 final int length = format.length();