1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Jun 10 08:24:36 2016 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Jun 14 05:20:30 2016 +0200
1.3 @@ -1452,23 +1452,30 @@
1.4 int indx = readUShortArg(byteCodes, i);
1.5 String[] fi = jc.getFieldInfoName(indx);
1.6 final int type = VarType.fromFieldType(fi[2].charAt(0));
1.7 - FieldData field = findField(fi);
1.8 - if (field == null) {
1.9 - final String mangleClass = mangleClassName(fi[0]);
1.10 - final String mangleClassAccess = accessClassFalse(mangleClass);
1.11 - smapper.replace(this, type, "@2.call(@1)",
1.12 + if (DirectlLibraries.isScriptLibrary(fi[0])) {
1.13 + smapper.replace(this, type, "@1['@2']",
1.14 smapper.getA(0),
1.15 - accessField(mangleClassAccess, null, fi)
1.16 + fi[1]
1.17 );
1.18 } else {
1.19 - final String fieldOwner = mangleClassName(field.cls.getClassName());
1.20 - smapper.replace(this, type, "@1@2",
1.21 - smapper.getA(0),
1.22 - accessField(fieldOwner, field, fi)
1.23 - );
1.24 + FieldData field = findField(fi);
1.25 + if (field == null) {
1.26 + final String mangleClass = mangleClassName(fi[0]);
1.27 + final String mangleClassAccess = accessClassFalse(mangleClass);
1.28 + smapper.replace(this, type, "@2.call(@1)",
1.29 + smapper.getA(0),
1.30 + accessField(mangleClassAccess, null, fi)
1.31 + );
1.32 + } else {
1.33 + final String fieldOwner = mangleClassName(field.cls.getClassName());
1.34 + smapper.replace(this, type, "@1@2",
1.35 + smapper.getA(0),
1.36 + accessField(fieldOwner, field, fi)
1.37 + );
1.38 + }
1.39 + addReference(fi[0]);
1.40 }
1.41 i += 2;
1.42 - addReference(fi[0]);
1.43 break;
1.44 }
1.45 case opc_putfield: {
1.46 @@ -1930,6 +1937,14 @@
1.47 .append(';');
1.48 return i;
1.49 }
1.50 + if (
1.51 + mi[0].equals("net/java/html/lib/Objs$Property") &&
1.52 + mi[1].equals("get")
1.53 + ) {
1.54 + // virtual get = property read
1.55 + append(vars[0].toString()).append(';');
1.56 + return i;
1.57 + }
1.58 append(vars[0].toString()).append("['").append(mi[1]).append("'](");
1.59 } else {
1.60 append(accessVirtualMethod(vars[0].toString(), mn, mi, numArguments));