Inline and clean up call sites to DexEncodedField.builder
Change-Id: Idfc7c0c621baf451ce2202effe41fedeeae0a754
diff --git a/src/main/java/com/android/tools/r8/dex/DexParser.java b/src/main/java/com/android/tools/r8/dex/DexParser.java
index be12797..9336265 100644
--- a/src/main/java/com/android/tools/r8/dex/DexParser.java
+++ b/src/main/java/com/android/tools/r8/dex/DexParser.java
@@ -651,8 +651,13 @@
}
}
fields[i] =
- DexEncodedField.create(
- field, accessFlags, fieldTypeSignature, fieldAnnotations, staticValue);
+ DexEncodedField.builder()
+ .setField(field)
+ .setAccessFlags(accessFlags)
+ .setGenericSignature(fieldTypeSignature)
+ .setAnnotations(fieldAnnotations)
+ .setStaticValue(staticValue)
+ .build();
}
return fields;
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedField.java b/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
index c0e7511..c89d8ed 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
@@ -32,8 +32,6 @@
public class DexEncodedField extends DexEncodedMember<DexEncodedField, DexField>
implements StructuralItem<DexEncodedField> {
- public static final boolean NOT_DEPRECATED = false;
- public static final DexValue NO_STATIC_VALUE = null;
public static final DexEncodedField[] EMPTY_ARRAY = {};
public final FieldAccessFlags accessFlags;
@@ -354,87 +352,13 @@
return new Builder(true);
}
- public static DexEncodedField create(DexField field, FieldAccessFlags accessFlags) {
- return builder().setField(field).setAccessFlags(accessFlags).build();
- }
-
- public static DexEncodedField create(
- DexField field,
- FieldAccessFlags accessFlags,
- FieldTypeSignature genericSignature,
- DexAnnotationSet annotations,
- DexValue staticValue) {
- return builder()
- .setField(field)
- .setAccessFlags(accessFlags)
- .setGenericSignature(genericSignature)
- .setAnnotations(annotations)
- .setStaticValue(staticValue)
- .build();
- }
-
- public static DexEncodedField create(
- DexField field,
- FieldAccessFlags accessFlags,
- FieldTypeSignature genericSignature,
- DexAnnotationSet annotations,
- DexValue staticValue,
- boolean deprecated) {
- return builder()
- .setField(field)
- .setAccessFlags(accessFlags)
- .setGenericSignature(genericSignature)
- .setAnnotations(annotations)
- .setStaticValue(staticValue)
- .setDeprecated(deprecated)
- .build();
- }
-
- public static DexEncodedField create(
- DexField field,
- FieldAccessFlags accessFlags,
- FieldTypeSignature genericSignature,
- DexAnnotationSet annotations,
- DexValue staticValue,
- boolean deprecated,
- AndroidApiLevel apiLevel) {
- return builder()
- .setField(field)
- .setAccessFlags(accessFlags)
- .setGenericSignature(genericSignature)
- .setAnnotations(annotations)
- .setStaticValue(staticValue)
- .setDeprecated(deprecated)
- .setApiLevel(apiLevel)
- .build();
- }
-
- public static DexEncodedField createSynthetic(
- DexField field,
- FieldAccessFlags accessFlags,
- FieldTypeSignature genericSignature,
- DexAnnotationSet annotations,
- DexValue staticValue,
- boolean deprecated,
- AndroidApiLevel apiLevel) {
- return syntheticBuilder()
- .setField(field)
- .setAccessFlags(accessFlags)
- .setGenericSignature(genericSignature)
- .setAnnotations(annotations)
- .setStaticValue(staticValue)
- .setDeprecated(deprecated)
- .setApiLevel(apiLevel)
- .build();
- }
-
public static class Builder {
private DexField field;
private DexAnnotationSet annotations = DexAnnotationSet.empty();
private FieldAccessFlags accessFlags;
private FieldTypeSignature genericSignature = FieldTypeSignature.noSignature();
- private DexValue staticValue;
+ private DexValue staticValue = null;
private AndroidApiLevel apiLevel = AndroidApiLevel.UNKNOWN;
private FieldOptimizationInfo optimizationInfo = DefaultFieldOptimizationInfo.getInstance();
private boolean deprecated;
diff --git a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
index c0e48dd..2164d54 100644
--- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
+++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -668,13 +668,14 @@
createAnnotationSet(annotations, parent.application.options);
DexValue staticValue = flags.isStatic() ? getStaticValue(value, dexField.type) : null;
DexEncodedField field =
- DexEncodedField.create(
- dexField,
- flags,
- fieldSignature,
- annotationSet,
- staticValue,
- AsmUtils.isDeprecated(access));
+ DexEncodedField.builder()
+ .setField(dexField)
+ .setAccessFlags(flags)
+ .setGenericSignature(fieldSignature)
+ .setAnnotations(annotationSet)
+ .setStaticValue(staticValue)
+ .setDeprecated(AsmUtils.isDeprecated(access))
+ .build();
if (flags.isStatic()) {
parent.staticFields.add(field);
} else {
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
index 99758bb..b1055ef 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
@@ -9,7 +9,6 @@
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexDefinition;
import com.android.tools.r8.graph.DexEncodedField;
@@ -21,7 +20,6 @@
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.DexTypeList;
import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.graph.ProgramMember;
import com.android.tools.r8.graph.ProgramMethod;
@@ -213,16 +211,12 @@
assert appView.hasLiveness();
assert mode.isInitial();
- boolean deprecated = false;
DexEncodedField classIdField =
- DexEncodedField.createSynthetic(
- group.getClassIdField(),
- FieldAccessFlags.createPublicFinalSynthetic(),
- FieldTypeSignature.noSignature(),
- DexAnnotationSet.empty(),
- null,
- deprecated,
- minApiLevelIfEnabledOrUnknown(appView));
+ DexEncodedField.syntheticBuilder()
+ .setField(group.getClassIdField())
+ .setAccessFlags(FieldAccessFlags.createPublicFinalSynthetic())
+ .setApiLevel(minApiLevelIfEnabledOrUnknown(appView))
+ .build();
// For the $r8$classId synthesized fields, we try to over-approximate the set of values it may
// have. For example, for a merge group of size 4, we may compute the set {0, 2, 3}, if the
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
index 7675b93..c7f5ec8 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaClass.java
@@ -12,7 +12,6 @@
import com.android.tools.r8.errors.Unimplemented;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexField;
@@ -26,7 +25,6 @@
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.DexValue.DexValueNull;
import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.graph.MethodResolutionResult;
import com.android.tools.r8.graph.MethodResolutionResult.SingleResolutionResult;
@@ -223,17 +221,13 @@
int fieldCount = fieldTypes.length;
List<DexEncodedField> fields = new ArrayList<>(fieldCount);
for (int i = 0; i < fieldCount; i++) {
- boolean deprecated = false;
fields.add(
- DexEncodedField.createSynthetic(
- getCaptureField(i),
- FieldAccessFlags.createPublicFinalSynthetic(),
- FieldTypeSignature.noSignature(),
- DexAnnotationSet.empty(),
- null,
- deprecated,
+ DexEncodedField.syntheticBuilder()
+ .setField(getCaptureField(i))
+ .setAccessFlags(FieldAccessFlags.createPublicFinalSynthetic())
// The api level is computed when tracing.
- AndroidApiLevel.minApiLevelIfEnabledOrUnknown(appView)));
+ .setApiLevel(AndroidApiLevel.UNKNOWN)
+ .build());
}
builder.setInstanceFields(fields);
}
@@ -243,22 +237,20 @@
if (isStateless()) {
// Create instance field for stateless lambda.
assert this.lambdaField != null;
- boolean deprecated = false;
builder.setStaticFields(
Collections.singletonList(
- DexEncodedField.createSynthetic(
- this.lambdaField,
- FieldAccessFlags.fromSharedAccessFlags(
- Constants.ACC_PUBLIC
- | Constants.ACC_FINAL
- | Constants.ACC_SYNTHETIC
- | Constants.ACC_STATIC),
- FieldTypeSignature.noSignature(),
- DexAnnotationSet.empty(),
- DexValueNull.NULL,
- deprecated,
+ DexEncodedField.syntheticBuilder()
+ .setField(this.lambdaField)
+ .setAccessFlags(
+ FieldAccessFlags.fromSharedAccessFlags(
+ Constants.ACC_PUBLIC
+ | Constants.ACC_FINAL
+ | Constants.ACC_SYNTHETIC
+ | Constants.ACC_STATIC))
+ .setStaticValue(DexValueNull.NULL)
// The api level is computed when tracing.
- AndroidApiLevel.minApiLevelIfEnabledOrUnknown(appView))));
+ .setApiLevel(AndroidApiLevel.UNKNOWN)
+ .build()));
}
}
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
index 44b8f39..d1b1546 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/DesugaredLibraryWrapperSynthesizer.java
@@ -9,7 +9,6 @@
import com.android.tools.r8.graph.CfCode;
import com.android.tools.r8.graph.ClasspathOrLibraryClass;
import com.android.tools.r8.graph.Code;
-import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexClassAndMethod;
import com.android.tools.r8.graph.DexClasspathClass;
@@ -22,7 +21,6 @@
import com.android.tools.r8.graph.DexProto;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.ir.desugar.CfClassSynthesizerDesugaring;
import com.android.tools.r8.ir.desugar.CfClassSynthesizerDesugaringEventConsumer;
@@ -686,8 +684,10 @@
// Field is package private to be accessible from convert methods without a getter.
FieldAccessFlags fieldAccessFlags =
FieldAccessFlags.fromCfAccessFlags(Constants.ACC_FINAL | Constants.ACC_SYNTHETIC);
- return DexEncodedField.create(
- field, fieldAccessFlags, FieldTypeSignature.noSignature(), DexAnnotationSet.empty(), null);
+ return DexEncodedField.syntheticBuilder()
+ .setField(field)
+ .setAccessFlags(fieldAccessFlags)
+ .build();
}
// Program wrappers are harder to deal with than classpath wrapper because generating a method's
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
index 71bfd83..a2a2bf9 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
@@ -14,7 +14,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.CfCode;
import com.android.tools.r8.graph.ClasspathOrLibraryClass;
-import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexClassAndMethod;
import com.android.tools.r8.graph.DexClasspathClass;
@@ -28,7 +27,6 @@
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.DexValue.DexValueInt;
import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
import com.android.tools.r8.graph.GenericSignature.MethodTypeSignature;
import com.android.tools.r8.graph.InvalidCode;
import com.android.tools.r8.graph.MethodAccessFlags;
@@ -456,12 +454,12 @@
dexItemFactory.intType,
"$desugar$clinit",
candidate -> iface.lookupField(candidate) == null);
- return DexEncodedField.create(
- clinitFieldReference,
- FieldAccessFlags.builder().setPackagePrivate().setStatic().setSynthetic().build(),
- FieldTypeSignature.noSignature(),
- DexAnnotationSet.empty(),
- DexValueInt.DEFAULT);
+ return DexEncodedField.syntheticBuilder()
+ .setField(clinitFieldReference)
+ .setAccessFlags(
+ FieldAccessFlags.builder().setPackagePrivate().setStatic().setSynthetic().build())
+ .setStaticValue(DexValueInt.DEFAULT)
+ .build();
}
private void createCompanionClassInitializer(
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java
index 0b05bb2..a239ebb 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/SharedEnumUnboxingUtilityClass.java
@@ -22,7 +22,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.CfCode;
import com.android.tools.r8.graph.ClassAccessFlags;
-import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
@@ -31,7 +30,6 @@
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.graph.ProgramMethod;
import com.android.tools.r8.ir.code.MemberType;
@@ -226,15 +224,13 @@
private DexEncodedField createValuesField(DexType sharedUtilityClassType) {
DexEncodedField valuesField =
- DexEncodedField.createSynthetic(
- dexItemFactory.createField(
- sharedUtilityClassType, dexItemFactory.intArrayType, "$VALUES"),
- FieldAccessFlags.createPublicStaticFinalSynthetic(),
- FieldTypeSignature.noSignature(),
- DexAnnotationSet.empty(),
- DexEncodedField.NO_STATIC_VALUE,
- DexEncodedField.NOT_DEPRECATED,
- minApiLevelIfEnabledOrUnknown(appView));
+ DexEncodedField.syntheticBuilder()
+ .setField(
+ dexItemFactory.createField(
+ sharedUtilityClassType, dexItemFactory.intArrayType, "$VALUES"))
+ .setAccessFlags(FieldAccessFlags.createPublicStaticFinalSynthetic())
+ .setApiLevel(minApiLevelIfEnabledOrUnknown(appView))
+ .build();
fieldAccessInfoCollectionModifierBuilder
.recordFieldReadInUnknownContext(valuesField.getReference())
.recordFieldWriteInUnknownContext(valuesField.getReference());
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java b/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java
index d50999c..2c012f0 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryFieldSynthesis.java
@@ -8,12 +8,10 @@
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexLibraryClass;
import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
/**
* This class synthesizes library fields that we rely on for modeling.
@@ -35,13 +33,12 @@
DexEncodedField definition = enumClass.lookupField(field);
if (definition == null) {
enumClass.appendInstanceField(
- DexEncodedField.create(
- field,
- FieldAccessFlags.fromCfAccessFlags(
- Constants.ACC_PRIVATE | Constants.ACC_FINAL),
- FieldTypeSignature.noSignature(),
- DexAnnotationSet.empty(),
- null));
+ DexEncodedField.syntheticBuilder()
+ .setField(field)
+ .setAccessFlags(
+ FieldAccessFlags.fromCfAccessFlags(
+ Constants.ACC_PRIVATE | Constants.ACC_FINAL))
+ .build());
}
});
}
diff --git a/src/main/java/com/android/tools/r8/shaking/ClassInitFieldSynthesizer.java b/src/main/java/com/android/tools/r8/shaking/ClassInitFieldSynthesizer.java
index 776b335..129acae 100644
--- a/src/main/java/com/android/tools/r8/shaking/ClassInitFieldSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/shaking/ClassInitFieldSynthesizer.java
@@ -10,13 +10,11 @@
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexAnnotationSet;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexProgramClass;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.FieldAccessFlags;
-import com.android.tools.r8.graph.GenericSignature.FieldTypeSignature;
import com.android.tools.r8.graph.InitClassLens;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.Visibility;
@@ -82,16 +80,15 @@
| Constants.ACC_FINAL
| Constants.ACC_PUBLIC
| Constants.ACC_STATIC);
- boolean deprecated = false;
encodedClinitField =
- DexEncodedField.createSynthetic(
- appView.dexItemFactory().createField(clazz.type, clinitField.type, clinitField.name),
- accessFlags,
- FieldTypeSignature.noSignature(),
- DexAnnotationSet.empty(),
- null,
- deprecated,
- minApiLevelIfEnabledOrUnknown(appView));
+ DexEncodedField.syntheticBuilder()
+ .setField(
+ appView
+ .dexItemFactory()
+ .createField(clazz.type, clinitField.type, clinitField.name))
+ .setAccessFlags(accessFlags)
+ .setApiLevel(minApiLevelIfEnabledOrUnknown(appView))
+ .build();
clazz.appendStaticField(encodedClinitField);
}
lensBuilder.map(type, encodedClinitField.getReference());