1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Wed May 14 21:49:44 2014 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Thu May 15 18:09:50 2014 +0200
1.3 @@ -484,7 +484,6 @@
1.4 + " vm['registerResource'] = null;\n"
1.5 + " var knownExtensions = extensions.length;\n"
1.6 + " var loader = {};\n"
1.7 - + " loader.vm = vm;\n"
1.8 + " var loadBytes = function(name, skip) {\n"
1.9 + " skip = typeof skip == 'number' ? skip : 0;\n"
1.10 + " var arr = resources[name];\n"
1.11 @@ -513,7 +512,7 @@
1.12 + " }\n"
1.13 + " return vm['org_apidesign_vm4brwsr_VMLazy'](false)\n"
1.14 + " ['load__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2_3B']\n"
1.15 - + " (loader, name, args, arr);\n"
1.16 + + " (vm, name, args, arr);\n"
1.17 + " };\n"
1.18 + " loader.loadClass = function(name) {\n"
1.19 + " var attr = mangleClass(name);\n"
2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Wed May 14 21:49:44 2014 +0200
2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java Thu May 15 18:09:50 2014 +0200
2.3 @@ -28,11 +28,11 @@
2.4 * @author Jaroslav Tulach <jtulach@netbeans.org>
2.5 */
2.6 final class VMLazy {
2.7 - private final Object loader;
2.8 + private final Object vm;
2.9 private final Object[] args;
2.10
2.11 - private VMLazy(Object loader, Object[] args) {
2.12 - this.loader = loader;
2.13 + private VMLazy(Object vm, Object[] args) {
2.14 + this.vm = vm;
2.15 this.args = args;
2.16 }
2.17
2.18 @@ -62,33 +62,32 @@
2.19
2.20 private Object defineClass(byte[] arr, String name, boolean instance) throws IOException {
2.21 StringBuilder out = new StringBuilder(65535);
2.22 - out.append("var loader = arguments[0];\n");
2.23 - out.append("var vm = loader.vm;\n");
2.24 + out.append("var vm = arguments[0];\n");
2.25 int prelude = out.length();
2.26 String initCode = new Gen(this, out).compile(new ByteArrayInputStream(arr));
2.27 String code = out.toString().toString();
2.28 String under = name.replace('.', '_');
2.29 - Object fn = applyCode(loader, under, code, instance);
2.30 + Object fn = applyCode(vm, under, code, instance);
2.31
2.32 if (!initCode.isEmpty()) {
2.33 out.setLength(prelude);
2.34 out.append(initCode);
2.35 code = out.toString().toString();
2.36 - applyCode(loader, null, code, false);
2.37 + applyCode(vm, null, code, false);
2.38 }
2.39
2.40 return fn;
2.41 }
2.42
2.43 - @JavaScriptBody(args = {"loader", "name", "script", "instance" }, body =
2.44 + @JavaScriptBody(args = {"vm", "name", "script", "instance" }, body =
2.45 "try {\n" +
2.46 - " new Function(script)(loader, name);\n" +
2.47 + " new Function(script)(vm, name);\n" +
2.48 "} catch (ex) {\n" +
2.49 " throw 'Cannot compile ' + name + ' ' + ex + ' line: ' + ex.lineNumber + ' script:\\n' + script;\n" +
2.50 "}\n" +
2.51 "return name != null ? vm[name](instance) : null;\n"
2.52 )
2.53 - private static native Object applyCode(Object loader, String name, String script, boolean instance);
2.54 + private static native Object applyCode(Object vm, String name, String script, boolean instance);
2.55
2.56
2.57 private static final class Gen extends ByteCodeToJavaScript {
2.58 @@ -104,8 +103,7 @@
2.59 "var cls = n.replace__Ljava_lang_String_2CC('/','_').toString();"
2.60 + "\nvar dot = n.replace__Ljava_lang_String_2CC('/','.').toString();"
2.61 + "\nvar lazy = this._lazy();"
2.62 - + "\nvar loader = lazy._loader();"
2.63 - + "\nvar vm = loader.vm;"
2.64 + + "\nvar vm = lazy._vm();"
2.65 + "\nif (vm[cls]) return false;"
2.66 + "\nvm[cls] = function() {"
2.67 + "\n var instance = arguments.length == 0 || arguments[0] === true;"
2.68 @@ -123,7 +121,7 @@
2.69 resourcePath = "/" + resourcePath;
2.70 }
2.71 String code = readCode(resourcePath);
2.72 - applyCode(lazy.loader, null, code, false);
2.73 + applyCode(lazy.vm, null, code, false);
2.74 }
2.75
2.76 private String readCode(String resourcePath) throws IOException {