# HG changeset patch # User Jaroslav Tulach # Date 1353528190 -3600 # Node ID c18c3df35966d7fc8896261b1fb699b9ce950173 # Parent 6060d43a323aeeb2b6314ceeddc9fd4051e75e73 Static fields can be modeled as properties on constructors of classes diff -r 6060d43a323a -r c18c3df35966 vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Nov 20 21:24:01 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Nov 21 21:03:10 2012 +0100 @@ -81,12 +81,6 @@ generateInstanceMethod(m); } } - for (FieldData v : jc.getFields()) { - if (v.isStatic()) { - generateStaticField(v); - } - } - final String className = className(jc); out.append("\nfunction ").append(className); out.append("() {"); @@ -101,6 +95,11 @@ 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); + } + } // ClassName sc = jc.getSuperClass(); String sc = jc.getSuperClassName(); // with _ if (sc != null) { @@ -684,7 +683,7 @@ int indx = readIntArg(byteCodes, i); String[] fi = jc.getFieldInfoName(indx); out.append("stack.push(").append(fi[0].replace('/', '_')); - out.append('_').append(fi[1]).append(");"); + out.append('.').append(fi[1]).append(");"); i += 2; addReference(fi[0]); break; @@ -693,7 +692,7 @@ int indx = readIntArg(byteCodes, i); String[] fi = jc.getFieldInfoName(indx); out.append(fi[0].replace('/', '_')); - out.append('_').append(fi[1]).append(" = stack.pop();"); + out.append('.').append(fi[1]).append(" = stack.pop();"); i += 2; addReference(fi[0]); break; @@ -848,9 +847,9 @@ } private void generateStaticField(FieldData v) throws IOException { - out.append("\nvar ") + out.append("\n ") .append(className(jc)) - .append('_').append(v.getName()).append(initField(v)); + .append('.').append(v.getName()).append(initField(v)); } private String findMethodName(MethodData m, StringBuilder cnt) {