vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 401 a9be982d9b9c
parent 400 5452b9fbd253
child 405 e41809be6106
child 408 21da8e2f5911
     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  }