rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java
changeset 1367 6193e735f4d1
parent 1344 bb1e59f5cff3
child 1373 c4e57ec5f0df
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Sat Oct 05 07:23:48 2013 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Fri Oct 11 09:58:03 2013 +0200
     1.3 @@ -80,6 +80,7 @@
     1.4                  }
     1.5                  InputStream is = loadClass(l, name);
     1.6                  if (is == null) {
     1.7 +                    lazyReference(out, name);
     1.8                      skipClass.add(name);
     1.9                      continue;
    1.10                  }
    1.11 @@ -250,4 +251,16 @@
    1.12      String getVMObject() {
    1.13          return "vm";
    1.14      }
    1.15 +    
    1.16 +    private static void lazyReference(Appendable out, String n) throws IOException {
    1.17 +        String cls = n.replace('/', '_');
    1.18 +        String dot = n.replace('/', '.');
    1.19 +        
    1.20 +        out.append("\nvm.").append(cls).append(" = function() {");
    1.21 +        out.append("\n  var instance = arguments.length == 0 || arguments[0] === true;");
    1.22 +        out.append("\n  delete vm.").append(cls).append(";");
    1.23 +        out.append("\n  var c = vm.loadClass('").append(dot).append("');");
    1.24 +        out.append("\n  return vm.").append(cls).append("(instance);");
    1.25 +        out.append("\n}");
    1.26 +    }
    1.27  }