rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchclosure
changeset 1146 e499b0dddd12
parent 1104 47c1fc251d84
parent 1022 00ae3f46e54f
child 1485 2af07db15110
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Mon May 20 10:59:47 2013 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Fri May 24 18:04:55 2013 +0200
     1.3 @@ -1814,20 +1814,11 @@
     1.4              if (e.catch_cpx != 0) { //not finally
     1.5                  final String classInternalName = jc.getClassName(e.catch_cpx);
     1.6                  addReference(classInternalName);
     1.7 -                if ("java/lang/Throwable".equals(classInternalName)) {
     1.8 -                    out.append("if (e['$instOf_java_lang_Throwable']) {");
     1.9 -                    out.append("  var stA0 = e;");
    1.10 -                    out.append("} else {");
    1.11 -                    out.append("  var stA0 = vm.java_lang_Throwable(true);");
    1.12 -                    out.append("  vm.java_lang_Throwable['cons__VLjava_lang_String_2'].call(stA0, e.toString());");
    1.13 -                    out.append("}");
    1.14 -                    goTo(out, current, e.handler_pc, topMostLabel);
    1.15 -                } else {
    1.16 -                    out.append("if (e['$instOf_" + classInternalName.replace('/', '_') + "']) {");
    1.17 -                    out.append("var stA0 = e;");
    1.18 -                    goTo(out, current, e.handler_pc, topMostLabel);
    1.19 -                    out.append("}\n");
    1.20 -                }
    1.21 +                out.append("e = vm.java_lang_Throwable(false).bck2BrwsrCnvrt(e);");
    1.22 +                out.append("if (e['$instOf_" + classInternalName.replace('/', '_') + "']) {");
    1.23 +                out.append("var stA0 = e;");
    1.24 +                goTo(out, current, e.handler_pc, topMostLabel);
    1.25 +                out.append("}\n");
    1.26              } else {
    1.27                  finallyPC = e.handler_pc;
    1.28              }