1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Sun Apr 24 15:09:40 2016 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Tue Apr 26 08:05:09 2016 +0200
1.3 @@ -70,9 +70,7 @@
1.4 String[] both = config.classes().toArray();
1.5
1.6 final StringArray fixedNames = new StringArray();
1.7 - fixedNames.add(Object.class.getName().replace('.', '/'));
1.8 - fixedNames.add(Class.class.getName().replace('.', '/'));
1.9 - fixedNames.add(ArithmeticException.class.getName().replace('.', '/'));
1.10 + boolean addThree = false;
1.11
1.12 VM vm;
1.13 if (config.isExtension()) {
1.14 @@ -81,15 +79,22 @@
1.15 config.getResources(), both, config.exported(),
1.16 config.allResources(), config.classpath()
1.17 );
1.18 + addThree = true;
1.19 } else {
1.20 if (config.includeVM()) {
1.21 fixedNames.add(VM.class.getName().replace('.', '/'));
1.22 + addThree = true;
1.23 }
1.24 vm = new Standalone(out,
1.25 config.getResources(), config.exported(),
1.26 config.allResources()
1.27 );
1.28 }
1.29 + if (addThree) {
1.30 + fixedNames.add(Object.class.getName().replace('.', '/'));
1.31 + fixedNames.add(Class.class.getName().replace('.', '/'));
1.32 + fixedNames.add(ArithmeticException.class.getName().replace('.', '/'));
1.33 + }
1.34 vm.doCompile(fixedNames.addAndNew(both));
1.35 }
1.36
1.37 @@ -615,14 +620,20 @@
1.38 + " }\n"
1.39 + " var reload = function(name, arr, keep) {\n"
1.40 + " if (!arr) throw 'Cannot find ' + name;\n"
1.41 - + " var lazy = vm['org_apidesign_vm4brwsr_VMLazy'];\n"
1.42 - + " if (!lazy) throw 'No bck2brwsr VM module to compile ' + name;\n"
1.43 + + " var err = null;\n"
1.44 + + " try {\n"
1.45 + + " var lazy = loadClass('org.apidesign.vm4brwsr.VMLazy');\n"
1.46 + + " } catch (e) {\n"
1.47 + + " err = e;\n"
1.48 + + " }\n"
1.49 + + " if (!lazy) {\n"
1.50 + + " throw 'No bck2brwsr VM module to compile ' + name + ':\\n' + err;\n"
1.51 + + " }\n"
1.52 + " if (!keep) {\n"
1.53 + " var attr = mangleClass(name);\n"
1.54 + " delete vm[attr];\n"
1.55 + " }\n"
1.56 - + " return lazy(false)\n"
1.57 - + " ['load__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2_3B']\n"
1.58 + + " return lazy['load__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2_3B']\n"
1.59 + " (vm, name, args, arr);\n"
1.60 + " };\n"
1.61 + " var loadClass = function(name) {\n"
1.62 @@ -791,6 +802,14 @@
1.63 }
1.64
1.65 @Override
1.66 + String accessClass(String className) {
1.67 + if (this.extensionClasses.contains(className.replace('_', '/'))) {
1.68 + return className;
1.69 + }
1.70 + return super.accessClass(className);
1.71 + }
1.72 +
1.73 + @Override
1.74 protected String generateClass(String className) throws IOException {
1.75 if (isExternalClass(className)) {
1.76 final String cls = className.replace("_", "_1").replace('/', '_');