rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java
changeset 1902 c3dee54ecc15
parent 1863 14a122c18d73
child 1917 66c99d4b3532
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Tue Jan 26 06:57:30 2016 +0100
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Sun Mar 20 15:26:19 2016 +0100
     1.3 @@ -95,8 +95,11 @@
     1.4  
     1.5      private void doCompile(StringArray names) throws IOException {
     1.6          generatePrologue();
     1.7 -        append(
     1.8 -                "\n  var invoker = {};");
     1.9 +        append("\n  var invoker = {};");
    1.10 +        append("\n  function registerClass(vm, name, fn) {");
    1.11 +        append("\n    if (!vm[name]) vm[name] = fn;");
    1.12 +        append("\n    return vm[name];");
    1.13 +        append("\n  }");
    1.14          generateBody(names);
    1.15          append(invokerMethods);
    1.16          
    1.17 @@ -147,15 +150,17 @@
    1.18      protected abstract void lazyReference(Appendable out, String n) throws IOException;
    1.19      
    1.20      @Override
    1.21 -    protected final void declaredClass(ClassData classData, String mangledName)
    1.22 +    protected final void declareClass(ClassData classData, String mangledName)
    1.23              throws IOException {
    1.24          if (exportedSymbols.isExported(classData)) {
    1.25 -            append("\n").append(getExportsObject()).append("['")
    1.26 +            append("registerClass(").append(getExportsObject()).append(",'")
    1.27                                                 .append(mangledName)
    1.28 -                                               .append("'] = ")
    1.29 -                            .append(accessClass(mangledName))
    1.30 -               .append(";\n");
    1.31 +                                               .append("',")
    1.32 +                            .append(mangledName)
    1.33 +               .append(")");
    1.34              exportedCount++;
    1.35 +        } else {
    1.36 +            append(mangledName);
    1.37          }
    1.38      }
    1.39