1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Oct 11 10:43:17 2012 -0700
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Oct 16 11:55:56 2012 +0200
1.3 @@ -370,7 +370,7 @@
1.4 break;
1.5 case bc_iinc: {
1.6 final int varIndx = (byteCodes[++i] + 256) % 256;
1.7 - final int incrBy = (byteCodes[++i] + 256) % 256;
1.8 + final int incrBy = byteCodes[++i];
1.9 if (incrBy == 1) {
1.10 out.append("arg" + varIndx).append("++;");
1.11 } else {
1.12 @@ -465,6 +465,12 @@
1.13 out.append("{ var delta = stack.pop() - stack.pop(); stack.push(delta < 0 ?-1 : (delta == 0 ? 0 : 1)); }");
1.14 break;
1.15 }
1.16 + case bc_if_acmpeq:
1.17 + i = generateIf(byteCodes, i, "===");
1.18 + break;
1.19 + case bc_if_acmpne:
1.20 + i = generateIf(byteCodes, i, "!=");
1.21 + break;
1.22 case bc_if_icmpeq: {
1.23 i = generateIf(byteCodes, i, "==");
1.24 break;
1.25 @@ -676,6 +682,13 @@
1.26 i += 2;
1.27 break;
1.28 }
1.29 + case bc_athrow: {
1.30 + out.append("{ var t = stack.pop(); stack = new Array(1); stack[0] = t; throw t; }");
1.31 + break;
1.32 + }
1.33 + default: {
1.34 + out.append("throw 'unknown bytecode " + c + "';");
1.35 + }
1.36
1.37 }
1.38 out.append(" //");