diff -r c6a0b5b64133 -r 590a8c98df30 vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Nov 25 23:14:58 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Nov 26 20:16:21 2012 +0100 @@ -84,10 +84,8 @@ } out.append("\n}"); out.append("\n\nfunction ").append(className).append("_proto() {"); - out.append("\n if (").append(className). + out.append("\n if (!").append(className). append(".prototype.$instOf_").append(className).append(") {"); - out.append("\n return new ").append(className).append(";"); - out.append("\n }"); for (FieldData v : jc.getFields()) { if (v.isStatic()) { generateStaticField(v); @@ -96,23 +94,24 @@ // ClassName sc = jc.getSuperClass(); String sc = jc.getSuperClassName(); // with _ if (sc != null) { - out.append("\n var p = ").append(className) + out.append("\n var p = ").append(className) .append(".prototype = "). append(sc.replace('/', '_')).append("_proto();"); } else { - out.append("\n var p = ").append(className).append(".prototype;"); + out.append("\n var p = ").append(className).append(".prototype;"); } for (MethodData m : jc.getMethods()) { if (m.isStatic()) { - generateStaticMethod("\n p.", m, toInitilize); + generateStaticMethod("\n p.", m, toInitilize); } else { - generateInstanceMethod("\n p.", m); + generateInstanceMethod("\n p.", m); } } - out.append("\n p.$instOf_").append(className).append(" = true;"); + out.append("\n p.$instOf_").append(className).append(" = true;"); for (String superInterface : jc.getSuperInterfaces()) { - out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;"); + out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;"); } + out.append("\n }"); out.append("\n return new ").append(className).append(";"); out.append("\n}"); out.append("\n").append(className).append("_proto();");