rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchclosure
changeset 1085 6a4ef883e233
parent 1084 f5c9934a252c
child 1094 36961c9a009f
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Mon May 06 18:06:08 2013 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue May 07 19:01:14 2013 +0200
     1.3 @@ -59,8 +59,22 @@
     1.4          return classOperation;
     1.5      }
     1.6  
     1.7 -    protected String accessMember(String object, String mangledName,
     1.8 -                                  String[] fieldInfoName) throws IOException {
     1.9 +    protected String accessField(String object, String mangledName,
    1.10 +                                 String[] fieldInfoName) throws IOException {
    1.11 +        return object + "." + mangledName;
    1.12 +    }
    1.13 +
    1.14 +    protected String accessStaticMethod(
    1.15 +                             String object,
    1.16 +                             String mangledName,
    1.17 +                             String[] fieldInfoName) throws IOException {
    1.18 +        return object + "." + mangledName;
    1.19 +    }
    1.20 +
    1.21 +    protected String accessVirtualMethod(
    1.22 +                             String object,
    1.23 +                             String mangledName,
    1.24 +                             String[] fieldInfoName) throws IOException {
    1.25          return object + "." + mangledName;
    1.26      }
    1.27  
    1.28 @@ -1207,8 +1221,8 @@
    1.29                      emit(out, "var @2 = @3.call(@1);",
    1.30                           smapper.popA(),
    1.31                           smapper.pushT(type),
    1.32 -                         accessMember(mangleClassAccess + "(false)",
    1.33 -                                      "_" + fi[1], fi));
    1.34 +                         accessField(mangleClassAccess + "(false)",
    1.35 +                                     "_" + fi[1], fi));
    1.36                      i += 2;
    1.37                      break;
    1.38                  }
    1.39 @@ -1221,8 +1235,8 @@
    1.40                      emit(out, "@3.call(@2, @1);",
    1.41                           smapper.popT(type),
    1.42                           smapper.popA(),
    1.43 -                         accessMember(mangleClassAccess + "(false)",
    1.44 -                                      "_" + fi[1], fi));
    1.45 +                         accessField(mangleClassAccess + "(false)",
    1.46 +                                     "_" + fi[1], fi));
    1.47                      i += 2;
    1.48                      break;
    1.49                  }
    1.50 @@ -1232,9 +1246,9 @@
    1.51                      final int type = VarType.fromFieldType(fi[2].charAt(0));
    1.52                      emit(out, "var @1 = @2();",
    1.53                           smapper.pushT(type),
    1.54 -                         accessMember(accessClass(fi[0].replace('/', '_'))
    1.55 -                                          + "(false)",
    1.56 -                                      "_" + fi[1], fi));
    1.57 +                         accessField(accessClass(fi[0].replace('/', '_'))
    1.58 +                                         + "(false)",
    1.59 +                                     "_" + fi[1], fi));
    1.60                      i += 2;
    1.61                      addReference(fi[0]);
    1.62                      break;
    1.63 @@ -1244,9 +1258,9 @@
    1.64                      String[] fi = jc.getFieldInfoName(indx);
    1.65                      final int type = VarType.fromFieldType(fi[2].charAt(0));
    1.66                      emit(out, "@1(@2);",
    1.67 -                         accessMember(accessClass(fi[0].replace('/', '_'))
    1.68 -                                          + "(false)",
    1.69 -                                      "_" + fi[1], fi),
    1.70 +                         accessField(accessClass(fi[0].replace('/', '_'))
    1.71 +                                         + "(false)",
    1.72 +                                     "_" + fi[1], fi),
    1.73                           smapper.popT(type));
    1.74                      i += 2;
    1.75                      addReference(fi[0]);
    1.76 @@ -1492,7 +1506,7 @@
    1.77          }
    1.78  
    1.79          final String in = mi[0];
    1.80 -        out.append(accessMember(
    1.81 +        out.append(accessStaticMethod(
    1.82                         accessClass(in.replace('/', '_')) + "(false)",
    1.83                         mn.startsWith("cons_")
    1.84                                ? "constructor." + mn
    1.85 @@ -1536,7 +1550,7 @@
    1.86                 .append(" = ");
    1.87          }
    1.88  
    1.89 -        out.append(accessMember(vars[0].toString(), mn, mi));
    1.90 +        out.append(accessVirtualMethod(vars[0].toString(), mn, mi));
    1.91          out.append('(');
    1.92          String sep = "";
    1.93          for (int j = 1; j < numArguments; ++j) {