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) {