vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java
branchlazyvm
changeset 277 e4b9eee9be83
parent 276 aeb9fe11cd60
     1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java	Thu Dec 06 22:02:10 2012 +0100
     1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/GenJS.java	Fri Dec 07 06:29:54 2012 +0100
     1.3 @@ -31,6 +31,11 @@
     1.4          super(out);
     1.5      }
     1.6      
     1.7 +    static {
     1.8 +        // uses VMLazy to load dynamic classes
     1.9 +        VMLazy.init();
    1.10 +    }
    1.11 +    
    1.12      static void compile(Appendable out, String... names) throws IOException {
    1.13          compile(out, StringArray.asList(names));
    1.14      }
    1.15 @@ -113,9 +118,19 @@
    1.16              }
    1.17          }
    1.18          out.append(
    1.19 -              "  global.bck2brwsr = function() { return {\n"
    1.20 -            + "    loadClass : function(name) { return vm[name.replace__Ljava_lang_String_2CC(name, '.','_')](true); }\n"
    1.21 -            + "  };\n};\n");
    1.22 +              "  global.bck2brwsr = function() {\n"
    1.23 +            + "    var args = arguments;\n"
    1.24 +            + "    var loader = {};\n"
    1.25 +            + "    loader.vm = vm;\n"
    1.26 +            + "    loader.loadClass = function(name) {\n"
    1.27 +            + "      var attr = name.replace__Ljava_lang_String_2CC(name, '.','_');\n"
    1.28 +            + "      var fn = vm[attr];\n"
    1.29 +            + "      if (fn) return fn(false);\n"
    1.30 +            + "      return vm.org_apidesign_vm4brwsr_VMLazy(false).\n"
    1.31 +            + "        load___3Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2(loader, name, args);\n"
    1.32 +            + "    }\n"
    1.33 +            + "    return loader;\n"
    1.34 +            + "  };\n");
    1.35          out.append("}(this));");
    1.36      }
    1.37      private static void readResource(InputStream emul, Appendable out) throws IOException {