Adopting proxy implementation to extension mode closure
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 05 May 2014 12:58:10 +0200
branchclosure
changeset 15299afa6856382c
parent 1528 984f8ed9e514
child 1530 45c50b9c7dc4
Adopting proxy implementation to extension mode
rt/emul/compact/src/main/java/org/apidesign/bck2brwsr/emul/reflect/ProxyImpl.java
rt/emul/mini/src/main/java/org/apidesign/vm4brwsr/api/VM.java
     1.1 --- a/rt/emul/compact/src/main/java/org/apidesign/bck2brwsr/emul/reflect/ProxyImpl.java	Mon May 05 12:25:44 2014 +0200
     1.2 +++ b/rt/emul/compact/src/main/java/org/apidesign/bck2brwsr/emul/reflect/ProxyImpl.java	Mon May 05 12:58:10 2014 +0200
     1.3 @@ -50,6 +50,7 @@
     1.4  import java.util.WeakHashMap;
     1.5  import org.apidesign.bck2brwsr.core.JavaScriptBody;
     1.6  import org.apidesign.bck2brwsr.emul.reflect.MethodImpl;
     1.7 +import org.apidesign.vm4brwsr.api.VM;
     1.8  
     1.9  /**
    1.10   * {@code Proxy} provides static methods for creating dynamic proxy
    1.11 @@ -677,7 +678,10 @@
    1.12      }
    1.13  
    1.14      @JavaScriptBody(args = { "ignore", "name", "byteCode" }, 
    1.15 -        body = "return vm._reload(name, byteCode).constructor.$class;"
    1.16 +        body = 
    1.17 +            "var r = vm._reload;"
    1.18 +          + "if (!r) r = exports._reload;"
    1.19 +          + "return r(name, byteCode).constructor.$class;"
    1.20      )
    1.21      private static native Class defineClass0(
    1.22          ClassLoader loader, String name, byte[] b
     2.1 --- a/rt/emul/mini/src/main/java/org/apidesign/vm4brwsr/api/VM.java	Mon May 05 12:25:44 2014 +0200
     2.2 +++ b/rt/emul/mini/src/main/java/org/apidesign/vm4brwsr/api/VM.java	Mon May 05 12:58:10 2014 +0200
     2.3 @@ -40,7 +40,11 @@
     2.4          reloadImpl(clazz.getName(), byteCode);
     2.5      }
     2.6      
     2.7 -    @JavaScriptBody(args = { "name", "byteCode" }, body = "vm._reload(name, byteCode);")
     2.8 +    @JavaScriptBody(args = { "name", "byteCode" }, body = 
     2.9 +        "var r = vm._reload;"
    2.10 +      + "if (!r) r = exports._reload;"
    2.11 +      + "r(name, byteCode);"
    2.12 +    )
    2.13      private static void reloadImpl(String name, byte[] byteCode) throws IOException {
    2.14          throw new IOException();
    2.15      }