First step towards calling directly into ClassPath and using VMLazy only for JIT compilation closure
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Wed, 14 May 2014 15:57:52 +0200
branchclosure
changeset 157508c8821c962d
parent 1572 bdf93fec05a5
child 1576 3e9bfed0d88e
First step towards calling directly into ClassPath and using VMLazy only for JIT compilation
rt/vm/src/main/java/org/apidesign/vm4brwsr/ClassPath.java
rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java
rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ClassPath.java	Wed May 14 14:03:14 2014 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ClassPath.java	Wed May 14 15:57:52 2014 +0200
     1.3 @@ -21,6 +21,7 @@
     1.4  import java.io.IOException;
     1.5  import java.io.InputStream;
     1.6  import java.net.URL;
     1.7 +import org.apidesign.bck2brwsr.core.Exported;
     1.8  import org.apidesign.bck2brwsr.core.JavaScriptBody;
     1.9  
    1.10  /** Conversion from classpath to load function.
    1.11 @@ -41,7 +42,12 @@
    1.12      private static native Object set(Object arr, int index, Object value);
    1.13      
    1.14      private static boolean doingToZip;
    1.15 -    public static byte[] loadFromCp(Object classpath, String res, int skip) 
    1.16 +    
    1.17 +    
    1.18 +    @Exported static byte[] loadBytes(Object loader, String name, Object[] arguments, int skip) throws Exception {
    1.19 +        return ClassPath.loadFromCp(arguments, name, skip);
    1.20 +    }
    1.21 +    static byte[] loadFromCp(Object classpath, String res, int skip) 
    1.22      throws IOException, ClassNotFoundException {
    1.23          for (int i = 0; i < length(classpath); i++) {
    1.24              Object c = at(classpath, i);
     2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Wed May 14 14:03:14 2014 +0200
     2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Wed May 14 15:57:52 2014 +0200
     2.3 @@ -564,7 +564,7 @@
     2.4                  + "      } else {\n"
     2.5                  + "        var arrSize = 0;\n"
     2.6                  + "      };\n"
     2.7 -                + "      var ret = vm.org_apidesign_vm4brwsr_VMLazy(false).\n"
     2.8 +                + "      var ret = vm['org_apidesign_vm4brwsr_ClassPath'](false).\n"
     2.9                  + "        loadBytes___3BLjava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2I(loader, name, args, skip);\n"
    2.10                  + "      if (ret !== null) return ret;\n"
    2.11                  + "      while (knownExtensions < extensions.length) {\n"
    2.12 @@ -576,8 +576,6 @@
    2.13                  + "      return (arr && arr.length > arrSize) ? arr[arrSize] : null;\n"
    2.14                  + "    }\n"
    2.15                  + "    vm.java_lang_reflect_Array(false);\n"
    2.16 -                + "    vm.org_apidesign_vm4brwsr_VMLazy(false).\n"
    2.17 -                + "      loadBytes___3BLjava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2I(loader, null, args, 0);\n"
    2.18                  + "    return loader;\n"
    2.19                  + "  };\n");
    2.20              append(
     3.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java	Wed May 14 14:03:14 2014 +0200
     3.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java	Wed May 14 15:57:52 2014 +0200
     3.3 @@ -48,10 +48,6 @@
     3.4          return new VMLazy(loader, arguments).defineClass(arr, name, false);
     3.5      }
     3.6      
     3.7 -    static byte[] loadBytes(Object loader, String name, Object[] arguments, int skip) throws Exception {
     3.8 -        return ClassPath.loadFromCp(arguments, name, skip);
     3.9 -    }
    3.10 -    
    3.11      private Object load(String name, boolean instance)
    3.12      throws IOException, ClassNotFoundException {
    3.13          String res = name.replace('.', '/') + ".class";