Remove DexProgramClass.synthesizedFrom
Bug: 168584485
Change-Id: I46556cf5666873f445d5dc97498ab4800e1ea8dc
diff --git a/src/main/java/com/android/tools/r8/graph/DexProgramClass.java b/src/main/java/com/android/tools/r8/graph/DexProgramClass.java
index 11e5957..aa724b4 100644
--- a/src/main/java/com/android/tools/r8/graph/DexProgramClass.java
+++ b/src/main/java/com/android/tools/r8/graph/DexProgramClass.java
@@ -28,9 +28,6 @@
import com.google.common.collect.Iterables;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -50,7 +47,6 @@
public static final DexProgramClass[] EMPTY_ARRAY = {};
private final ProgramResource.Kind originKind;
- private final Collection<DexProgramClass> synthesizedFrom;
private CfVersion initialClassFileVersion = null;
private boolean deprecated = false;
private KotlinClassLevelInfo kotlinInfo = NO_KOTLIN_INFO;
@@ -77,50 +73,6 @@
DexEncodedMethod[] virtualMethods,
boolean skipNameValidationForTesting,
ChecksumSupplier checksumSupplier) {
- this(
- type,
- originKind,
- origin,
- accessFlags,
- superType,
- interfaces,
- sourceFile,
- nestHost,
- nestMembers,
- enclosingMember,
- innerClasses,
- classSignature,
- classAnnotations,
- staticFields,
- instanceFields,
- directMethods,
- virtualMethods,
- skipNameValidationForTesting,
- checksumSupplier,
- Collections.emptyList());
- }
-
- public DexProgramClass(
- DexType type,
- Kind originKind,
- Origin origin,
- ClassAccessFlags accessFlags,
- DexType superType,
- DexTypeList interfaces,
- DexString sourceFile,
- NestHostClassAttribute nestHost,
- List<NestMemberClassAttribute> nestMembers,
- EnclosingMethodAttribute enclosingMember,
- List<InnerClassAttribute> innerClasses,
- ClassSignature classSignature,
- DexAnnotationSet classAnnotations,
- DexEncodedField[] staticFields,
- DexEncodedField[] instanceFields,
- DexEncodedMethod[] directMethods,
- DexEncodedMethod[] virtualMethods,
- boolean skipNameValidationForTesting,
- ChecksumSupplier checksumSupplier,
- Collection<DexProgramClass> synthesizedDirectlyFrom) {
super(
sourceFile,
interfaces,
@@ -143,8 +95,6 @@
assert classAnnotations != null;
this.originKind = originKind;
this.checksumSupplier = checksumSupplier;
- this.synthesizedFrom = new HashSet<>();
- synthesizedDirectlyFrom.forEach(this::addSynthesizedFrom);
}
@Override
@@ -185,9 +135,7 @@
.withAssert(c -> c.classSignature == ClassSignature.noSignature())
.withItemArray(c -> c.staticFields)
.withItemArray(c -> c.instanceFields)
- .withItemCollection(DexClass::allMethodsSorted)
- // TODO(b/168584485): Synthesized-from is being removed (empty for new synthetics).
- .withAssert(c -> c.synthesizedFrom.isEmpty());
+ .withItemCollection(DexClass::allMethodsSorted);
}
public void forEachProgramField(Consumer<? super ProgramField> consumer) {
@@ -383,10 +331,6 @@
}
}
- public Collection<DexProgramClass> getSynthesizedFrom() {
- return synthesizedFrom;
- }
-
@Override
void collectMixedSectionItems(MixedSectionCollection mixedItems) {
assert getEnclosingMethodAttribute() == null;
@@ -609,14 +553,6 @@
}
}
- public void addSynthesizedFrom(DexProgramClass clazz) {
- if (clazz.synthesizedFrom.isEmpty()) {
- synthesizedFrom.add(clazz);
- } else {
- clazz.synthesizedFrom.forEach(this::addSynthesizedFrom);
- }
- }
-
public DexEncodedArray computeStaticValuesArray(NamingLens namingLens) {
// Fast path to avoid sorting and collection allocation when no non-default values exist.
if (!hasNonDefaultStaticFieldValues()) {
diff --git a/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java b/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java
index 89d0bd7..27f3251 100644
--- a/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java
+++ b/src/main/java/com/android/tools/r8/graph/TreeFixerBase.java
@@ -113,8 +113,7 @@
DexEncodedMethod.EMPTY_ARRAY,
DexEncodedMethod.EMPTY_ARRAY,
dexItemFactory.getSkipNameValidationForTesting(),
- clazz.getChecksumSupplier(),
- fixupSynthesizedFrom(clazz.getSynthesizedFrom()));
+ clazz.getChecksumSupplier());
newClass.setInstanceFields(fixupFields(clazz.instanceFields()));
newClass.setStaticFields(fixupFields(clazz.staticFields()));
newClass.setDirectMethods(
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
index 68fe801..a1c0d58 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceMethodRewriter.java
@@ -979,8 +979,7 @@
emulationMethods.toArray(DexEncodedMethod.EMPTY_ARRAY),
DexEncodedMethod.EMPTY_ARRAY,
factory.getSkipNameValidationForTesting(),
- DexProgramClass::checksumFromType,
- Collections.singletonList(theInterface));
+ DexProgramClass::checksumFromType);
clazz.forEachProgramMethod(synthesizedMethods::add);
return clazz;
}
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceProcessor.java b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceProcessor.java
index e40251c..d20eee7 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/InterfaceProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/InterfaceProcessor.java
@@ -135,8 +135,7 @@
companionMethods.toArray(DexEncodedMethod.EMPTY_ARRAY),
DexEncodedMethod.EMPTY_ARRAY,
rewriter.factory.getSkipNameValidationForTesting(),
- getChecksumSupplier(iface),
- Collections.singletonList(iface));
+ getChecksumSupplier(iface));
syntheticClasses.put(iface, companionClass);
if (companionClass.hasClassInitializer()) {
newSynthesizedMethodConsumer.accept(companionClass.getProgramClassInitializer());
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
index 2e70db6..2b24294 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
@@ -46,7 +46,6 @@
import java.util.Map.Entry;
import java.util.Set;
import java.util.function.BiConsumer;
-import java.util.function.Function;
public class SyntheticFinalization {
@@ -454,10 +453,7 @@
externalSyntheticClass.type));
for (SyntheticProgramClassDefinition member : syntheticGroup.getMembers()) {
addMainDexAndSynthesizedFromForMember(
- member,
- externalSyntheticClass,
- appView.appInfo().getMainDexInfo(),
- appForLookup::programDefinitionFor);
+ member, externalSyntheticClass, appView.appInfo().getMainDexInfo());
}
});
syntheticMethodGroups.forEach(
@@ -475,10 +471,7 @@
.withHolder(externalSyntheticClass.type, factory)));
for (SyntheticMethodDefinition member : syntheticGroup.getMembers()) {
addMainDexAndSynthesizedFromForMember(
- member,
- externalSyntheticClass,
- appView.appInfo().getMainDexInfo(),
- appForLookup::programDefinitionFor);
+ member, externalSyntheticClass, appView.appInfo().getMainDexInfo());
}
});
@@ -526,14 +519,8 @@
private static void addMainDexAndSynthesizedFromForMember(
SyntheticDefinition<?, ?, ?> member,
DexProgramClass externalSyntheticClass,
- MainDexInfo mainDexInfo,
- Function<DexType, DexProgramClass> definitions) {
+ MainDexInfo mainDexInfo) {
member.getContext().addIfDerivedFromMainDexClass(externalSyntheticClass, mainDexInfo);
- // TODO(b/168584485): Remove this once class-mapping support is removed.
- DexProgramClass from = definitions.apply(member.getContext().getSynthesizingContextType());
- if (from != null) {
- externalSyntheticClass.addSynthesizedFrom(from);
- }
}
private static boolean shouldAnnotateSynthetics(InternalOptions options) {
diff --git a/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java b/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java
index 538d1f0..1584f41 100644
--- a/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java
+++ b/src/test/java/com/android/tools/r8/dex/SharedClassWritingTest.java
@@ -122,8 +122,7 @@
DexEncodedMethod.EMPTY_ARRAY,
new DexEncodedMethod[] {makeMethod(type, stringCount, startOffset)},
false,
- DexProgramClass::invalidChecksumRequest,
- synthesizedFrom);
+ DexProgramClass::invalidChecksumRequest);
return programClass;
}