vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 191 c18c3df35966
parent 190 6060d43a323a
child 200 227bafe6ef52
child 221 3ee23267706c
     1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Nov 20 21:24:01 2012 +0100
     1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Wed Nov 21 21:03:10 2012 +0100
     1.3 @@ -81,12 +81,6 @@
     1.4                  generateInstanceMethod(m);
     1.5              }
     1.6          }
     1.7 -        for (FieldData v : jc.getFields()) {
     1.8 -            if (v.isStatic()) {
     1.9 -                generateStaticField(v);
    1.10 -            }
    1.11 -        }
    1.12 -        
    1.13          final String className = className(jc);
    1.14          out.append("\nfunction ").append(className);
    1.15          out.append("() {");
    1.16 @@ -101,6 +95,11 @@
    1.17              append(".prototype.$instOf_").append(className).append(") {");
    1.18          out.append("\n    return new ").append(className).append(";");
    1.19          out.append("\n  }");
    1.20 +        for (FieldData v : jc.getFields()) {
    1.21 +            if (v.isStatic()) {
    1.22 +                generateStaticField(v);
    1.23 +            }
    1.24 +        }
    1.25          // ClassName sc = jc.getSuperClass();
    1.26          String sc = jc.getSuperClassName(); // with _
    1.27          if (sc != null) {
    1.28 @@ -684,7 +683,7 @@
    1.29                      int indx = readIntArg(byteCodes, i);
    1.30                      String[] fi = jc.getFieldInfoName(indx);
    1.31                      out.append("stack.push(").append(fi[0].replace('/', '_'));
    1.32 -                    out.append('_').append(fi[1]).append(");");
    1.33 +                    out.append('.').append(fi[1]).append(");");
    1.34                      i += 2;
    1.35                      addReference(fi[0]);
    1.36                      break;
    1.37 @@ -693,7 +692,7 @@
    1.38                      int indx = readIntArg(byteCodes, i);
    1.39                      String[] fi = jc.getFieldInfoName(indx);
    1.40                      out.append(fi[0].replace('/', '_'));
    1.41 -                    out.append('_').append(fi[1]).append(" = stack.pop();");
    1.42 +                    out.append('.').append(fi[1]).append(" = stack.pop();");
    1.43                      i += 2;
    1.44                      addReference(fi[0]);
    1.45                      break;
    1.46 @@ -848,9 +847,9 @@
    1.47      }
    1.48  
    1.49      private void generateStaticField(FieldData v) throws IOException {
    1.50 -        out.append("\nvar ")
    1.51 +        out.append("\n  ")
    1.52             .append(className(jc))
    1.53 -           .append('_').append(v.getName()).append(initField(v));
    1.54 +           .append('.').append(v.getName()).append(initField(v));
    1.55      }
    1.56  
    1.57      private String findMethodName(MethodData m, StringBuilder cnt) {