rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchReducedStack
changeset 1458 5c8caf0ba8b8
parent 1457 b9386cc3ff7b
child 1459 6575d1848af3
     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') {