Introduce merge group for policy execution
Change-Id: I7041809e960a9508a812284a72d961ecc73e5de7
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassStaticFieldsMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassStaticFieldsMerger.java
index e287090..e798671 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassStaticFieldsMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassStaticFieldsMerger.java
@@ -15,21 +15,20 @@
public class ClassStaticFieldsMerger {
private final Builder lensBuilder;
- private final DexProgramClass target;
+ private final MergeGroup group;
private final Map<DexField, DexEncodedField> targetFields = new LinkedHashMap<>();
private final DexItemFactory dexItemFactory;
- private final AppView<?> appView;
public ClassStaticFieldsMerger(
- AppView<?> appView,
- HorizontalClassMergerGraphLens.Builder lensBuilder,
- DexProgramClass target) {
- this.appView = appView;
+ AppView<?> appView, HorizontalClassMergerGraphLens.Builder lensBuilder, MergeGroup group) {
this.lensBuilder = lensBuilder;
- this.target = target;
+ this.group = group;
// Add mappings for all target fields.
- target.staticFields().forEach(field -> targetFields.put(field.getReference(), field));
+ group
+ .getTarget()
+ .staticFields()
+ .forEach(field -> targetFields.put(field.getReference(), field));
this.dexItemFactory = appView.dexItemFactory();
}
@@ -40,7 +39,8 @@
private void addField(DexEncodedField field) {
DexField oldFieldReference = field.getReference();
- DexField templateReference = field.getReference().withHolder(target.type, dexItemFactory);
+ DexField templateReference =
+ field.getReference().withHolder(group.getTarget().getType(), dexItemFactory);
DexField newFieldReference =
dexItemFactory.createFreshFieldNameWithHolderSuffix(
templateReference, field.holder(), this::isFresh);