1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Sun Dec 16 18:49:35 2012 +0100
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Mon Dec 17 09:21:55 2012 +0100
1.3 @@ -47,10 +47,10 @@
1.4
1.5 static Object load(Object loader, String name, Object[] arguments)
1.6 throws IOException, ClassNotFoundException {
1.7 - return new VMLazy(loader, arguments).load(name);
1.8 + return new VMLazy(loader, arguments).load(name, false);
1.9 }
1.10
1.11 - private Object load(String name)
1.12 + private Object load(String name, boolean instance)
1.13 throws IOException, ClassNotFoundException {
1.14 String res = name.replace('.', '/') + ".class";
1.15 byte[] arr = read(loader, res, args);
1.16 @@ -64,7 +64,7 @@
1.17 new Gen(this, out).compile(new ByteArrayInputStream(arr));
1.18 String code = out.toString().toString();
1.19 String under = name.replace('.', '_');
1.20 - return applyCode(loader, under, code);
1.21 + return applyCode(loader, under, code, instance);
1.22 }
1.23
1.24 /* possibly not needed:
1.25 @@ -76,15 +76,15 @@
1.26 */
1.27
1.28
1.29 - @JavaScriptBody(args = {"loader", "name", "script" }, body =
1.30 + @JavaScriptBody(args = {"loader", "name", "script", "instance" }, body =
1.31 "try {\n" +
1.32 " new Function(script)(loader, name);\n" +
1.33 "} catch (ex) {\n" +
1.34 " throw 'Cannot compile ' + ex + ' line: ' + ex.lineNumber + ' script:\\n' + script;\n" +
1.35 "}\n" +
1.36 - "return vm[name](false);\n"
1.37 + "return vm[name](instance);\n"
1.38 )
1.39 - private static native Object applyCode(Object loader, String name, String script);
1.40 + private static native Object applyCode(Object loader, String name, String script, boolean instance);
1.41
1.42
1.43 private static final class Gen extends ByteCodeToJavaScript {
1.44 @@ -104,7 +104,8 @@
1.45 + "\nvar vm = loader.vm;"
1.46 + "\nif (vm[cls]) return false;"
1.47 + "\nvm[cls] = function() {"
1.48 - + "\n return lazy.load__Ljava_lang_Object_2Ljava_lang_String_2(lazy, dot);"
1.49 + + "\n var instance = arguments.length == 0 || arguments[0] === true;"
1.50 + + "\n return lazy.load__Ljava_lang_Object_2Ljava_lang_String_2Z(lazy, dot, instance);"
1.51 + "\n};"
1.52 + "\nreturn true;")
1.53 @Override
2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java Sun Dec 16 18:49:35 2012 +0100
2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/tck/CompareStringsTest.java Mon Dec 17 09:21:55 2012 +0100
2.3 @@ -86,8 +86,19 @@
2.4 return sb.toString().toString();
2.5 }
2.6
2.7 + @Compare
2.8 + public String nullFieldInitialized() {
2.9 + NullField nf = new NullField();
2.10 + return ("" + nf.name).toString();
2.11 + }
2.12 +
2.13 @Factory
2.14 public static Object[] create() {
2.15 return CompareVMs.create(CompareStringsTest.class);
2.16 }
2.17 +
2.18 + private static final class NullField {
2.19 +
2.20 + String name;
2.21 + }
2.22 }