1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Dec 31 12:44:51 2012 +0100
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Dec 31 17:50:27 2012 +0100
1.3 @@ -1585,6 +1585,7 @@
1.4
1.5 private void generateCatch(TrapData[] traps) throws IOException {
1.6 out.append("} catch (e) {\n");
1.7 + int finallyPC = -1;
1.8 for (TrapData e : traps) {
1.9 if (e == null) {
1.10 break;
1.11 @@ -1596,10 +1597,14 @@
1.12 out.append("gt=" + e.handler_pc + "; stA0 = e; continue;");
1.13 out.append("}\n");
1.14 } else {
1.15 - //finally - todo
1.16 + finallyPC = e.handler_pc;
1.17 }
1.18 }
1.19 - out.append("throw e;");
1.20 + if (finallyPC == -1) {
1.21 + out.append("throw e;");
1.22 + } else {
1.23 + out.append("gt=" + finallyPC + "; stA0 = e; continue;");
1.24 + }
1.25 out.append("\n}");
1.26 }
1.27 }