1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu Nov 29 22:03:11 2012 +0100
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Dec 01 10:35:24 2012 +0100
1.3 @@ -107,15 +107,16 @@
1.4 generateInstanceMethod("\n p.", m);
1.5 }
1.6 }
1.7 + out.append("\n p.constructor = CLS;");
1.8 out.append("\n p.$instOf_").append(className).append(" = true;");
1.9 for (String superInterface : jc.getSuperInterfaces()) {
1.10 out.append("\n p.$instOf_").append(superInterface.replace('/', '_')).append(" = true;");
1.11 }
1.12 - out.append("\n if (arguments.length === 0) {");
1.13 - out.append("\n return new CLS();");
1.14 - out.append("\n }");
1.15 out.append("\n }");
1.16 out.append("\n if (arguments.length === 0) {");
1.17 + out.append("\n if (!(this instanceof CLS)) {");
1.18 + out.append("\n return new CLS();");
1.19 + out.append("\n }");
1.20 for (FieldData v : jc.getFields()) {
1.21 if (!v.isStatic()) {
1.22 out.append("\n this.fld_").
1.23 @@ -583,9 +584,9 @@
1.24 case opc_new: {
1.25 int indx = readIntArg(byteCodes, i);
1.26 String ci = jc.getClassName(indx);
1.27 - out.append("s.push(");
1.28 - out.append("new ").append(ci.replace('/','_'));
1.29 - out.append(");");
1.30 + out.append("s.push(new ");
1.31 + out.append(ci.replace('/','_'));
1.32 + out.append("());");
1.33 addReference(ci);
1.34 i += 2;
1.35 break;