1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Feb 15 20:18:26 2014 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Feb 15 23:13:53 2014 +0100
1.3 @@ -340,6 +340,7 @@
1.4 }
1.5 }
1.6 if (lastStackFrame != stackMapIterator.getFrameIndex()) {
1.7 + smapper.flush(out);
1.8 if (i != 0) {
1.9 out.append(" }\n");
1.10 }
1.11 @@ -772,46 +773,46 @@
1.12 smapper.assign(out, VarType.REFERENCE, "null");
1.13 break;
1.14 case opc_iconst_m1:
1.15 - smapper.assign(out, VarType.INTEGER, "-1");
1.16 + smapper.assign(out, VarType.INTEGER, "(-1)");
1.17 break;
1.18 case opc_iconst_0:
1.19 - smapper.assign(out, VarType.INTEGER, "0");
1.20 + smapper.assign(out, VarType.INTEGER, "(0)");
1.21 break;
1.22 case opc_dconst_0:
1.23 - smapper.assign(out, VarType.DOUBLE, "0");
1.24 + smapper.assign(out, VarType.DOUBLE, "(0)");
1.25 break;
1.26 case opc_lconst_0:
1.27 - smapper.assign(out, VarType.LONG, "0");
1.28 + smapper.assign(out, VarType.LONG, "(0)");
1.29 break;
1.30 case opc_fconst_0:
1.31 - smapper.assign(out, VarType.FLOAT, "0");
1.32 + smapper.assign(out, VarType.FLOAT, "(0)");
1.33 break;
1.34 case opc_iconst_1:
1.35 - smapper.assign(out, VarType.INTEGER, "1");
1.36 + smapper.assign(out, VarType.INTEGER, "(1)");
1.37 break;
1.38 case opc_lconst_1:
1.39 - smapper.assign(out, VarType.LONG, "1");
1.40 + smapper.assign(out, VarType.LONG, "(1)");
1.41 break;
1.42 case opc_fconst_1:
1.43 - smapper.assign(out, VarType.FLOAT, "1");
1.44 + smapper.assign(out, VarType.FLOAT, "(1)");
1.45 break;
1.46 case opc_dconst_1:
1.47 - smapper.assign(out, VarType.DOUBLE, "1");
1.48 + smapper.assign(out, VarType.DOUBLE, "(1)");
1.49 break;
1.50 case opc_iconst_2:
1.51 - smapper.assign(out, VarType.INTEGER, "2");
1.52 + smapper.assign(out, VarType.INTEGER, "(2)");
1.53 break;
1.54 case opc_fconst_2:
1.55 - smapper.assign(out, VarType.FLOAT, "2");
1.56 + smapper.assign(out, VarType.FLOAT, "(2)");
1.57 break;
1.58 case opc_iconst_3:
1.59 - smapper.assign(out, VarType.INTEGER, "3");
1.60 + smapper.assign(out, VarType.INTEGER, "(3)");
1.61 break;
1.62 case opc_iconst_4:
1.63 - smapper.assign(out, VarType.INTEGER, "4");
1.64 + smapper.assign(out, VarType.INTEGER, "(4)");
1.65 break;
1.66 case opc_iconst_5:
1.67 - smapper.assign(out, VarType.INTEGER, "5");
1.68 + smapper.assign(out, VarType.INTEGER, "(5)");
1.69 break;
1.70 case opc_ldc: {
1.71 int indx = readUByte(byteCodes, ++i);
1.72 @@ -1542,10 +1543,10 @@
1.73 String mn = findMethodName(mi, cnt, returnType);
1.74
1.75 final int numArguments = cnt.length() + 1;
1.76 - final Variable[] vars = new Variable[numArguments];
1.77 + final CharSequence[] vars = new CharSequence[numArguments];
1.78
1.79 for (int j = numArguments - 1; j >= 0; --j) {
1.80 - vars[j] = mapper.pop(out);
1.81 + vars[j] = mapper.popValue();
1.82 }
1.83
1.84 if (returnType[0] != 'V') {