Force the singleton enum utilities class to base.
Bug: 187249442
Change-Id: Ib2668d13a8e63fdc2a189f62d6c6a538daa1fe4c
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfo.java b/src/main/java/com/android/tools/r8/graph/AppInfo.java
index 17f8d1b..df45e6b 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfo.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.graph;
-import com.android.tools.r8.features.ClassToFeatureSplitMap;
+import com.android.tools.r8.FeatureSplit;
import com.android.tools.r8.graph.FieldResolutionResult.SuccessfulFieldResolutionResult;
import com.android.tools.r8.ir.desugar.itf.InterfaceMethodRewriter;
import com.android.tools.r8.origin.Origin;
@@ -131,14 +131,15 @@
public void addSynthesizedClass(DexProgramClass clazz, ProgramDefinition context) {
assert checkIfObsolete();
assert context != null;
- syntheticItems.addLegacySyntheticClass(
- clazz, context, ClassToFeatureSplitMap.createEmptyClassToFeatureSplitMap());
+ syntheticItems.addLegacySyntheticClass(clazz, context, FeatureSplit.BASE);
}
- public void addSynthesizedClass(DexProgramClass clazz, Iterable<DexProgramClass> contexts) {
+ public void addSynthesizedClassToBase(DexProgramClass clazz, Iterable<DexProgramClass> contexts) {
assert checkIfObsolete();
assert !IterableUtils.isEmpty(contexts);
- contexts.forEach(context -> addSynthesizedClass(clazz, context));
+ SyntheticItems syntheticItems = getSyntheticItems();
+ contexts.forEach(
+ context -> syntheticItems.addLegacySyntheticClass(clazz, context, FeatureSplit.BASE));
}
public List<DexProgramClass> classes() {
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfoWithClassHierarchy.java b/src/main/java/com/android/tools/r8/graph/AppInfoWithClassHierarchy.java
index 26b1f96..9b55af9 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfoWithClassHierarchy.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfoWithClassHierarchy.java
@@ -7,6 +7,7 @@
import static com.android.tools.r8.utils.TraversalContinuation.BREAK;
import static com.android.tools.r8.utils.TraversalContinuation.CONTINUE;
+import com.android.tools.r8.FeatureSplit;
import com.android.tools.r8.features.ClassToFeatureSplitMap;
import com.android.tools.r8.graph.FieldResolutionResult.SuccessfulFieldResolutionResult;
import com.android.tools.r8.graph.ResolutionResult.ArrayCloneMethodResult;
@@ -160,7 +161,9 @@
public void addSynthesizedClass(DexProgramClass clazz, ProgramDefinition context) {
assert checkIfObsolete();
assert context != null;
- getSyntheticItems().addLegacySyntheticClass(clazz, context, classToFeatureSplitMap);
+ FeatureSplit featureSplit =
+ classToFeatureSplitMap.getFeatureSplit(context, getSyntheticItems());
+ getSyntheticItems().addLegacySyntheticClass(clazz, context, featureSplit);
}
/**
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/UnboxedEnumMemberRelocator.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/UnboxedEnumMemberRelocator.java
index c29dd86..54c416a 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/UnboxedEnumMemberRelocator.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/UnboxedEnumMemberRelocator.java
@@ -179,7 +179,7 @@
appView.dexItemFactory().getSkipNameValidationForTesting(),
DexProgramClass::checksumFromType);
appBuilder.addSynthesizedClass(syntheticClass);
- appView.appInfo().addSynthesizedClass(syntheticClass, contexts);
+ appView.appInfo().addSynthesizedClassToBase(syntheticClass, contexts);
return syntheticClass;
}
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
index 1575685..f709533 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticItems.java
@@ -397,11 +397,8 @@
// TODO(b/158159959): Remove the usage of this direct class addition.
public void addLegacySyntheticClass(
- DexProgramClass clazz,
- ProgramDefinition context,
- ClassToFeatureSplitMap classToFeatureSplitMap) {
+ DexProgramClass clazz, ProgramDefinition context, FeatureSplit featureSplit) {
LegacySyntheticDefinition legacyItem = internalAddLegacySyntheticClass(clazz);
- FeatureSplit featureSplit = classToFeatureSplitMap.getFeatureSplit(context, this);
legacyItem.addContext(context, featureSplit);
}