accessField doesn't need the second argument, it can compute it from the 3rd
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 25 Jan 2016 05:14:25 +0100
changeset 185534efbdde4eca
parent 1854 826eb936c9a8
child 1856 9cdc403018b5
accessField doesn't need the second argument, it can compute it from the 3rd
rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sun Jan 24 12:08:45 2016 +0100
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Mon Jan 25 05:14:25 2016 +0100
     1.3 @@ -103,8 +103,9 @@
     1.4          return "(refs_" + classOperation + " || (refs_" + classOperation + " = " + accessClass(classOperation) + "(false)))";
     1.5      }
     1.6  
     1.7 -    protected String accessField(String object, String mangledName,
     1.8 -                                 String[] fieldInfoName) throws IOException {
     1.9 +    protected String accessField(String object, String[] fieldInfoName)
    1.10 +    throws IOException {
    1.11 +        String mangledName = "_" + fieldInfoName[1];
    1.12          return object + "." + mangledName;
    1.13      }
    1.14  
    1.15 @@ -1422,8 +1423,7 @@
    1.16                      final String mangleClassAccess = accessClassFalse(mangleClass);
    1.17                      smapper.replace(this, type, "@2.call(@1)",
    1.18                           smapper.getA(0),
    1.19 -                         accessField(mangleClassAccess,
    1.20 -                                     "_" + fi[1], fi)
    1.21 +                         accessField(mangleClassAccess, fi)
    1.22                      );
    1.23                      i += 2;
    1.24                      addReference(fi[0]);
    1.25 @@ -1438,8 +1438,7 @@
    1.26                      emit(smapper, this, "@3.call(@2, @1);",
    1.27                           smapper.popT(type),
    1.28                           smapper.popA(),
    1.29 -                         accessField(mangleClassAccess,
    1.30 -                                     "_" + fi[1], fi));
    1.31 +                         accessField(mangleClassAccess, fi));
    1.32                      i += 2;
    1.33                      addReference(fi[0]);
    1.34                      break;
    1.35 @@ -1449,7 +1448,7 @@
    1.36                      String[] fi = jc.getFieldInfoName(indx);
    1.37                      final int type = VarType.fromFieldType(fi[2].charAt(0));
    1.38                      String ac = accessClassFalse(mangleClassName(fi[0]));
    1.39 -                    String af = accessField(ac, "_" + fi[1], fi);
    1.40 +                    String af = accessField(ac, fi);
    1.41                      smapper.assign(this, type, af + "()");
    1.42                      i += 2;
    1.43                      addReference(fi[0]);
     2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Sun Jan 24 12:08:45 2016 +0100
     2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Mon Jan 25 05:14:25 2016 +0100
     2.3 @@ -310,12 +310,13 @@
     2.4      }
     2.5  
     2.6      @Override
     2.7 -    protected String accessField(String object, String mangledName,
     2.8 -                                 String[] fieldInfoName) throws IOException {
     2.9 +    protected String accessField(String object, String[] fieldInfoName)
    2.10 +    throws IOException {
    2.11          final FieldData field =
    2.12                  classDataCache.findField(fieldInfoName[0],
    2.13                                           fieldInfoName[1],
    2.14                                           fieldInfoName[2]);
    2.15 +        String mangledName = "_" + fieldInfoName[1];
    2.16          return accessNonVirtualMember(object, mangledName,
    2.17                                        (field != null) ? field.cls : null);
    2.18      }