1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Dec 28 12:35:32 2012 +0100
1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Dec 29 19:46:09 2012 +0100
1.3 @@ -135,19 +135,27 @@
1.4 }
1.5 continue;
1.6 }
1.7 + String prefix;
1.8 String mn;
1.9 if (m.isStatic()) {
1.10 - mn = generateStaticMethod("\n c.", m, toInitilize);
1.11 + prefix = "\n c.";
1.12 + mn = generateStaticMethod(prefix, m, toInitilize);
1.13 } else {
1.14 - mn = generateInstanceMethod("\n c.", m);
1.15 + if (m.isConstructor()) {
1.16 + prefix = "\n CLS.";
1.17 + mn = generateInstanceMethod(prefix, m);
1.18 + } else {
1.19 + prefix = "\n c.";
1.20 + mn = generateInstanceMethod(prefix, m);
1.21 + }
1.22 }
1.23 byte[] runAnno = m.findAnnotationData(false);
1.24 if (runAnno != null) {
1.25 - out.append("\n c.").append(mn).append(".anno = {");
1.26 + out.append(prefix).append(mn).append(".anno = {");
1.27 generateAnno(jc, out, runAnno);
1.28 out.append("\n };");
1.29 }
1.30 - out.append("\n c.").append(mn).append(".access = " + m.getAccess()).append(";");
1.31 + out.append(prefix).append(mn).append(".access = " + m.getAccess()).append(";");
1.32 }
1.33 out.append("\n c.constructor = CLS;");
1.34 out.append("\n c.$instOf_").append(className).append(" = true;");
1.35 @@ -1122,7 +1130,7 @@
1.36 final String classInternalName = jc.getClassName(e.catch_cpx);
1.37 addReference(classInternalName);
1.38 out.append("if (e.$instOf_"+classInternalName.replace('/', '_')+") {");
1.39 - out.append("gt="+e.handler_pc+"; continue;");
1.40 + out.append("gt="+e.handler_pc+"; stA0 = e; continue;");
1.41 out.append("} ");
1.42 } else {
1.43 //finally - todo
1.44 @@ -1311,6 +1319,9 @@
1.45 final String in = mi[0];
1.46 out.append(accessClass(in.replace('/', '_')));
1.47 out.append("(false).");
1.48 + if (mn.startsWith("cons_")) {
1.49 + out.append("constructor.");
1.50 + }
1.51 out.append(mn);
1.52 out.append('(');
1.53 if (numArguments > 0) {