# HG changeset patch # User Jaroslav Tulach # Date 1354425928 -3600 # Node ID 36f16c49bdef60b82a6f492cd4afaa7d29d25145 # Parent 907a52ed10e3bc23b110717c88ef7125b7e5d195 Throw exception when reaching native method without JavaScript implementation diff -r 907a52ed10e3 -r 36f16c49bdef emul/src/main/java/java/lang/ClassLoader.java --- a/emul/src/main/java/java/lang/ClassLoader.java Sat Dec 01 10:35:24 2012 +0100 +++ b/emul/src/main/java/java/lang/ClassLoader.java Sun Dec 02 06:25:28 2012 +0100 @@ -29,6 +29,7 @@ import java.net.URL; import java.util.Enumeration; import java.util.NoSuchElementException; +import org.apidesign.bck2brwsr.core.JavaScriptBody; /** * A class loader is an object that is responsible for loading classes. The @@ -147,6 +148,7 @@ */ public abstract class ClassLoader { + @JavaScriptBody(args = {}, body = "") private static native void registerNatives(); static { registerNatives(); diff -r 907a52ed10e3 -r 36f16c49bdef emul/src/main/java/java/lang/Object.java --- a/emul/src/main/java/java/lang/Object.java Sat Dec 01 10:35:24 2012 +0100 +++ b/emul/src/main/java/java/lang/Object.java Sun Dec 02 06:25:28 2012 +0100 @@ -25,6 +25,8 @@ package java.lang; +import org.apidesign.bck2brwsr.core.JavaScriptBody; + /** * Class {@code Object} is the root of the class hierarchy. * Every class has {@code Object} as a superclass. All objects, @@ -36,6 +38,7 @@ */ public class Object { + @JavaScriptBody(args = {}, body = "") private static native void registerNatives(); static { registerNatives(); diff -r 907a52ed10e3 -r 36f16c49bdef vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Dec 01 10:35:24 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Dec 02 06:25:28 2012 +0100 @@ -167,7 +167,7 @@ out.append(" var s = new Array();\n"); produceCode(code); } else { - out.append(" /* no code found for ").append(m.getInternalSig()).append(" */\n"); + out.append(" throw 'no code found for ").append(m.getInternalSig()).append("';\n"); } out.append("};"); } @@ -201,7 +201,7 @@ out.append(";\n var s = new Array();\n"); produceCode(code); } else { - out.append(" /* no code found for ").append(m.getInternalSig()).append(" */\n"); + out.append(" throw 'no code found for ").append(m.getInternalSig()).append("';\n"); } out.append("};"); }