# HG changeset patch # User Jaroslav Tulach # Date 1400075872 -7200 # Node ID 08c8821c962d510d5365825b67128f2b1e23cfce # Parent bdf93fec05a5cd505e9adb04fc7879d5de543e29 First step towards calling directly into ClassPath and using VMLazy only for JIT compilation diff -r bdf93fec05a5 -r 08c8821c962d rt/vm/src/main/java/org/apidesign/vm4brwsr/ClassPath.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ClassPath.java Wed May 14 14:03:14 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ClassPath.java Wed May 14 15:57:52 2014 +0200 @@ -21,6 +21,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; +import org.apidesign.bck2brwsr.core.Exported; import org.apidesign.bck2brwsr.core.JavaScriptBody; /** Conversion from classpath to load function. @@ -41,7 +42,12 @@ private static native Object set(Object arr, int index, Object value); private static boolean doingToZip; - public static byte[] loadFromCp(Object classpath, String res, int skip) + + + @Exported static byte[] loadBytes(Object loader, String name, Object[] arguments, int skip) throws Exception { + return ClassPath.loadFromCp(arguments, name, skip); + } + static byte[] loadFromCp(Object classpath, String res, int skip) throws IOException, ClassNotFoundException { for (int i = 0; i < length(classpath); i++) { Object c = at(classpath, i); diff -r bdf93fec05a5 -r 08c8821c962d rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Wed May 14 14:03:14 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Wed May 14 15:57:52 2014 +0200 @@ -564,7 +564,7 @@ + " } else {\n" + " var arrSize = 0;\n" + " };\n" - + " var ret = vm.org_apidesign_vm4brwsr_VMLazy(false).\n" + + " var ret = vm['org_apidesign_vm4brwsr_ClassPath'](false).\n" + " loadBytes___3BLjava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2I(loader, name, args, skip);\n" + " if (ret !== null) return ret;\n" + " while (knownExtensions < extensions.length) {\n" @@ -576,8 +576,6 @@ + " return (arr && arr.length > arrSize) ? arr[arrSize] : null;\n" + " }\n" + " vm.java_lang_reflect_Array(false);\n" - + " vm.org_apidesign_vm4brwsr_VMLazy(false).\n" - + " loadBytes___3BLjava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2I(loader, null, args, 0);\n" + " return loader;\n" + " };\n"); append( diff -r bdf93fec05a5 -r 08c8821c962d rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Wed May 14 14:03:14 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Wed May 14 15:57:52 2014 +0200 @@ -48,10 +48,6 @@ return new VMLazy(loader, arguments).defineClass(arr, name, false); } - static byte[] loadBytes(Object loader, String name, Object[] arguments, int skip) throws Exception { - return ClassPath.loadFromCp(arguments, name, skip); - } - private Object load(String name, boolean instance) throws IOException, ClassNotFoundException { String res = name.replace('.', '/') + ".class";