1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Oct 30 22:35:32 2012 +0100
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Oct 30 22:43:18 2012 +0100
1.3 @@ -121,24 +121,26 @@
1.4 out.append("\n}\n\nfunction ").append(className).append("_proto() {");
1.5 out.append("\n if (").append(className).
1.6 append(".prototype.$instOf_").append(className).append(") {");
1.7 - out.append("\n return ").append(className).append(".prototype;");
1.8 + out.append("\n return new ").append(className).append(";");
1.9 out.append("\n }");
1.10 ClassName sc = jc.getSuperClass();
1.11 if (sc != null) {
1.12 - out.append("\n ").append(sc.getInternalName().replace('/', '_')).append("_proto();");
1.13 - out.append("\n ").append(className)
1.14 - .append(".prototype = new ").append(sc.getInternalName().replace('/', '_')).append(';');
1.15 + out.append("\n var p = ").append(className)
1.16 + .append(".prototype = ").
1.17 + append(sc.getInternalName().replace('/', '_')).append("_proto();");
1.18 + } else {
1.19 + out.append("\n var p = ").append(className).append(".prototype");
1.20 }
1.21 for (Method m : jc.getMethods()) {
1.22 if (!m.getName().contains("<init>") && !m.getName().contains("<cinit>")) {
1.23 - compiler.generateMethodReference("\n " + className + ".prototype.", m);
1.24 + compiler.generateMethodReference("\n p.", m);
1.25 }
1.26 }
1.27 - out.append("\n " + className + ".prototype.$instOf_").append(className).append(" = true;");
1.28 + out.append("\n p.$instOf_").append(className).append(" = true;");
1.29 for (ClassName superInterface : jc.getInterfaces()) {
1.30 - out.append("\n " + className + ".prototype.$instOf_").append(superInterface.getInternalName().replace('/', '_')).append(" = true;");
1.31 + out.append("\n p.$instOf_").append(superInterface.getInternalName().replace('/', '_')).append(" = true;");
1.32 }
1.33 - out.append("\n return ").append(className).append(".prototype;");
1.34 + out.append("\n return new ").append(className).append(";");
1.35 out.append("\n}");
1.36 out.append("\n").append(className).append("_proto();");
1.37 StringBuilder sb = new StringBuilder();