rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 1022 00ae3f46e54f
parent 962 787578f33c21
child 1146 e499b0dddd12
child 1239 b6317079abe1
     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              }