Throw exception when reaching native method without JavaScript implementation
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 02 Dec 2012 06:25:28 +0100
changeset 23236f16c49bdef
parent 226 907a52ed10e3
child 233 5e8f219d60ba
child 239 8ceee38f5840
Throw exception when reaching native method without JavaScript implementation
emul/src/main/java/java/lang/ClassLoader.java
emul/src/main/java/java/lang/Object.java
vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
     1.1 --- a/emul/src/main/java/java/lang/ClassLoader.java	Sat Dec 01 10:35:24 2012 +0100
     1.2 +++ b/emul/src/main/java/java/lang/ClassLoader.java	Sun Dec 02 06:25:28 2012 +0100
     1.3 @@ -29,6 +29,7 @@
     1.4  import java.net.URL;
     1.5  import java.util.Enumeration;
     1.6  import java.util.NoSuchElementException;
     1.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
     1.8  
     1.9  /**
    1.10   * A class loader is an object that is responsible for loading classes. The
    1.11 @@ -147,6 +148,7 @@
    1.12   */
    1.13  public abstract class ClassLoader {
    1.14  
    1.15 +    @JavaScriptBody(args = {}, body = "")
    1.16      private static native void registerNatives();
    1.17      static {
    1.18          registerNatives();
     2.1 --- a/emul/src/main/java/java/lang/Object.java	Sat Dec 01 10:35:24 2012 +0100
     2.2 +++ b/emul/src/main/java/java/lang/Object.java	Sun Dec 02 06:25:28 2012 +0100
     2.3 @@ -25,6 +25,8 @@
     2.4  
     2.5  package java.lang;
     2.6  
     2.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
     2.8 +
     2.9  /**
    2.10   * Class {@code Object} is the root of the class hierarchy.
    2.11   * Every class has {@code Object} as a superclass. All objects,
    2.12 @@ -36,6 +38,7 @@
    2.13   */
    2.14  public class Object {
    2.15  
    2.16 +    @JavaScriptBody(args = {}, body = "")
    2.17      private static native void registerNatives();
    2.18      static {
    2.19          registerNatives();
     3.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sat Dec 01 10:35:24 2012 +0100
     3.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sun Dec 02 06:25:28 2012 +0100
     3.3 @@ -167,7 +167,7 @@
     3.4              out.append("  var s = new Array();\n");
     3.5              produceCode(code);
     3.6          } else {
     3.7 -            out.append("  /* no code found for ").append(m.getInternalSig()).append(" */\n");
     3.8 +            out.append("  throw 'no code found for ").append(m.getInternalSig()).append("';\n");
     3.9          }
    3.10          out.append("};");
    3.11      }
    3.12 @@ -201,7 +201,7 @@
    3.13              out.append(";\n  var s = new Array();\n");
    3.14              produceCode(code);
    3.15          } else {
    3.16 -            out.append("  /* no code found for ").append(m.getInternalSig()).append(" */\n");
    3.17 +            out.append("  throw 'no code found for ").append(m.getInternalSig()).append("';\n");
    3.18          }
    3.19          out.append("};");
    3.20      }