# HG changeset patch # User Jaroslav Tulach # Date 1399197777 -7200 # Node ID 0d32bf6b4436f36b2bc3c23253570d752f38a5da # Parent 6c709f05afa5b056a6fa92f8d7ec21a129984d82 Exporting widely used methods via Class, which is guaranteed to be available, rather than Throwable diff -r 6c709f05afa5 -r 0d32bf6b4436 rt/emul/mini/src/main/java/java/lang/Class.java --- a/rt/emul/mini/src/main/java/java/lang/Class.java Sat May 03 20:41:35 2014 +0200 +++ b/rt/emul/mini/src/main/java/java/lang/Class.java Sun May 04 12:02:57 2014 +0200 @@ -1790,4 +1790,23 @@ + "}\n" ) static native int activate(); + + private static Object bck2BrwsrCnvrt(Object o) { + if (o instanceof Throwable) { + return o; + } + final String msg = msg(o); + if (msg == null || msg.startsWith("TypeError")) { + return new NullPointerException(msg); + } + return new Throwable(msg); + } + + @JavaScriptBody(args = {"o"}, body = "return o ? o.toString() : null;") + private static native String msg(Object o); + + @JavaScriptOnly(name = "bck2BrwsrThrwrbl", value = "c.bck2BrwsrCnvrt__Ljava_lang_Object_2Ljava_lang_Object_2") + private static void bck2BrwsrCnvrtVM() { + } + } diff -r 6c709f05afa5 -r 0d32bf6b4436 rt/emul/mini/src/main/java/java/lang/Throwable.java --- a/rt/emul/mini/src/main/java/java/lang/Throwable.java Sat May 03 20:41:35 2014 +0200 +++ b/rt/emul/mini/src/main/java/java/lang/Throwable.java Sun May 04 12:02:57 2014 +0200 @@ -1025,22 +1025,4 @@ // else // return suppressedExceptions.toArray(EMPTY_THROWABLE_ARRAY); } - - private static Object bck2BrwsrCnvrt(Object o) { - if (o instanceof Throwable) { - return o; - } - final String msg = msg(o); - if (msg == null || msg.startsWith("TypeError")) { - return new NullPointerException(msg); - } - return new Throwable(msg); - } - - @JavaScriptBody(args = { "o" }, body = "return o ? o.toString() : null;") - private static native String msg(Object o); - - @JavaScriptOnly(name = "bck2BrwsrCnvrt", value = "c.bck2BrwsrCnvrt__Ljava_lang_Object_2Ljava_lang_Object_2") - private static void bck2BrwsrCnvrtVM() { - } } diff -r 6c709f05afa5 -r 0d32bf6b4436 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat May 03 20:41:35 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun May 04 12:02:57 2014 +0200 @@ -2062,7 +2062,7 @@ if (e.catch_cpx != 0) { //not finally final String classInternalName = jc.getClassName(e.catch_cpx); addReference(classInternalName); - append("e = vm.java_lang_Throwable(false).bck2BrwsrCnvrt(e);"); + append("e = vm.java_lang_Class(false).bck2BrwsrThrwrbl(e);"); append("if (e['$instOf_" + classInternalName.replace('/', '_') + "']) {"); append("var stA0 = e;"); goTo(this, current, e.handler_pc, topMostLabel); diff -r 6c709f05afa5 -r 0d32bf6b4436 rt/vm/src/main/java/org/apidesign/vm4brwsr/ClosureWrapper.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ClosureWrapper.java Sat May 03 20:41:35 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ClosureWrapper.java Sun May 04 12:02:57 2014 +0200 @@ -150,7 +150,7 @@ private static final String[] FIXED_EXTERNS = { "bck2brwsr", - "bck2BrwsrCnvrt", + "bck2BrwsrThrwrbl", "registerExtension", "$class", "anno",