rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 1256 7b379a47e3a9
parent 1248 a3eb8b0dfb81
child 1353 e0b7e23a1ff2
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Fri Jul 12 16:06:38 2013 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Thu Sep 05 09:36:06 2013 +0200
     1.3 @@ -208,14 +208,18 @@
     1.4              out.append("\n    ").append(destObject).append(".").append(mn).append(".cls = CLS;");
     1.5          }
     1.6          out.append("\n    c.constructor = CLS;");
     1.7 +        out.append("\n    function fillInstOf(x) {");
     1.8          String instOfName = "$instOf_" + className;
     1.9 -        out.append("\n    c.").append(instOfName).append(" = true;");
    1.10 +        out.append("\n        x.").append(instOfName).append(" = true;");
    1.11 +        for (String superInterface : jc.getSuperInterfaces()) {
    1.12 +            String intrfc = superInterface.replace('/', '_');
    1.13 +            out.append("\n      vm.").append(intrfc).append("(false).fillInstOf(x);");
    1.14 +            requireReference(superInterface);
    1.15 +        }
    1.16 +        out.append("\n    }");
    1.17 +        out.append("\n    c.fillInstOf = fillInstOf;");
    1.18 +        out.append("\n    fillInstOf(c);");
    1.19          obfuscationDelegate.exportJSProperty(out, "c", instOfName);
    1.20 -        for (String superInterface : jc.getSuperInterfaces()) {
    1.21 -            instOfName = "$instOf_" + superInterface.replace('/', '_');
    1.22 -            out.append("\n    c.").append(instOfName).append(" = true;");
    1.23 -            obfuscationDelegate.exportJSProperty(out, "c", instOfName);
    1.24 -        }
    1.25          out.append("\n    CLS.$class = 'temp';");
    1.26          out.append("\n    CLS.$class = ");
    1.27          out.append(accessClass("java_lang_Class(true);"));