1.1 --- a/emul/src/main/java/java/lang/Class.java Sat Dec 15 07:10:58 2012 +0100
1.2 +++ b/emul/src/main/java/java/lang/Class.java Sat Dec 15 08:17:45 2012 +0100
1.3 @@ -144,18 +144,22 @@
1.4 */
1.5 public static Class<?> forName(String className)
1.6 throws ClassNotFoundException {
1.7 - Class<?> c = loadCls(className.replace('.', '_'));
1.8 + Class<?> c = loadCls(className, className.replace('.', '_'));
1.9 if (c == null) {
1.10 throw new ClassNotFoundException();
1.11 }
1.12 return c;
1.13 }
1.14
1.15 - @JavaScriptBody(args = "c", body =
1.16 - "if (vm[c]) return vm[c].$class;"
1.17 - + "else return null;"
1.18 + @JavaScriptBody(args = {"n", "c" }, body =
1.19 + "if (vm[c]) return vm[c].$class;\n"
1.20 + + "if (vm.loadClass) {\n"
1.21 + + " vm.loadClass(n);\n"
1.22 + + " if (vm[c]) return vm[c].$class;\n"
1.23 + + "}\n"
1.24 + + "return null;"
1.25 )
1.26 - private static native Class<?> loadCls(String c);
1.27 + private static native Class<?> loadCls(String n, String c);
1.28
1.29
1.30 /**
2.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Sat Dec 15 07:10:58 2012 +0100
2.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Sat Dec 15 08:17:45 2012 +0100
2.3 @@ -119,6 +119,7 @@
2.4 + " return vm.org_apidesign_vm4brwsr_VMLazy(false).\n"
2.5 + " load___3Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2(loader, name, args);\n"
2.6 + " }\n"
2.7 + + " if (args[0]) vm.loadClass = loader.loadClass;\n"
2.8 + " return loader;\n"
2.9 + " };\n");
2.10 out.append("}(this));");
3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java Sat Dec 15 07:10:58 2012 +0100
3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java Sat Dec 15 08:17:45 2012 +0100
3.3 @@ -17,6 +17,7 @@
3.4 */
3.5 package org.apidesign.vm4brwsr.tck;
3.6
3.7 +import java.lang.reflect.Method;
3.8 import org.apidesign.vm4brwsr.Compare;
3.9 import org.apidesign.vm4brwsr.CompareVMs;
3.10 import org.testng.annotations.Factory;
3.11 @@ -39,7 +40,10 @@
3.12 @Compare public String nameOfStringClass() throws Exception {
3.13 return Class.forName("java.lang.String").getName();
3.14 }
3.15 -
3.16 + @Compare public String nameOfArrayClass() throws Exception {
3.17 + return Class.forName("org.apidesign.vm4brwsr.Array").getName();
3.18 + }
3.19 +
3.20 @Factory
3.21 public static Object[] create() {
3.22 return CompareVMs.create(CompareStringsTest.class);