1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Apr 10 10:08:18 2013 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Apr 26 13:35:21 2013 +0200
1.3 @@ -1787,20 +1787,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 }