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);"));