1.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java Wed Nov 28 13:41:33 2012 +0100
1.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/VMLazy.java Wed Nov 28 14:51:52 2012 +0100
1.3 @@ -19,25 +19,42 @@
1.4
1.5 import java.io.ByteArrayInputStream;
1.6 import java.io.IOException;
1.7 +import org.apidesign.bck2brwsr.core.JavaScriptBody;
1.8
1.9 /**
1.10 *
1.11 * @author Jaroslav Tulach <jtulach@netbeans.org>
1.12 */
1.13 class VMLazy extends ByteCodeToJavaScript {
1.14 - private VMLazy(Appendable out) {
1.15 + private final Object vm;
1.16 + private final Object global;
1.17 +
1.18 + private VMLazy(Object global, Object vm, Appendable out) {
1.19 super(out);
1.20 + this.vm = vm;
1.21 + this.global = global;
1.22 }
1.23
1.24 - static String toJavaScript(byte[] is) throws IOException {
1.25 + static String toJavaScript(Object global, Object vm, byte[] is) throws IOException {
1.26 StringBuilder sb = new StringBuilder();
1.27 - new VMLazy(sb).compile(new ByteArrayInputStream(is));
1.28 + new VMLazy(global, vm, sb).compile(new ByteArrayInputStream(is));
1.29 return sb.toString().toString();
1.30 }
1.31
1.32 + @JavaScriptBody(args = { "self", "n" },
1.33 + body=
1.34 + "var cls = n.replaceLjava_lang_StringCC(n,'/','_').toString();"
1.35 + + "var glb = self.fld_global;"
1.36 + + "var vm = self.fld_vm;"
1.37 + + "if (glb[cls]) return false;"
1.38 + + "glb[cls] = function() {"
1.39 + + " return vm.loadClass(n,cls);"
1.40 + + "};"
1.41 + + "return true;"
1.42 + )
1.43 @Override
1.44 protected boolean requireReference(String internalClassName) {
1.45 - return false;
1.46 + throw new UnsupportedOperationException();
1.47 }
1.48
1.49 @Override