Remove all uses of definitionFor(DexMember)
Bug: 157616970
Change-Id: I4cc37d976c9aee08d306370aa9fd042033066e36
diff --git a/src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java b/src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java
index 18d1f77..5055cc5 100644
--- a/src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java
+++ b/src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java
@@ -12,17 +12,6 @@
@Deprecated
DexEncodedMethod definitionFor(DexMethod method);
- @Deprecated
- @SuppressWarnings("unchecked")
- default <D extends DexEncodedMember<D, R>, R extends DexMember<D, R>>
- DexEncodedMember<D, R> definitionFor(DexMember<D, R> member) {
- if (member.isDexField()) {
- return (DexEncodedMember<D, R>) definitionFor(member.asDexField());
- }
- assert member.isDexMethod();
- return (DexEncodedMember<D, R>) definitionFor(member.asDexMethod());
- }
-
DexClass definitionFor(DexType type);
DexProgramClass definitionForProgramType(DexType type);
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 26ed5d0..1bc26f2 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -3311,9 +3311,9 @@
});
consequentRootSet.forEachMemberWithDependentItems(
appView,
- member -> {
+ (member, dependentItems) -> {
if (isMemberLive(member)) {
- enqueueRootItems(consequentRootSet.getDependentItems(member));
+ enqueueRootItems(dependentItems);
}
});
// TODO(b/132600955): This modifies the root set. Should the consequent be persistent?
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
index 8be43f4..f542984 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetBuilder.java
@@ -1305,15 +1305,22 @@
}
public void forEachMemberWithDependentItems(
- DexDefinitionSupplier definitions, Consumer<DexEncodedMember<?, ?>> consumer) {
- for (DexReference reference : dependentNoShrinking.keySet()) {
- if (reference.isDexMember()) {
- DexEncodedMember<?, ?> definition = definitions.definitionFor(reference.asDexMember());
- if (definition != null) {
- consumer.accept(definition);
- }
- }
- }
+ DexDefinitionSupplier definitions,
+ BiConsumer<DexEncodedMember<?, ?>, DependentItems> consumer) {
+ dependentNoShrinking.forEach(
+ (reference, dependentItems) -> {
+ if (reference.isDexMember()) {
+ DexMember<?, ?> member = reference.asDexMember();
+ DexProgramClass holder =
+ asProgramClassOrNull(definitions.definitionForHolder(member));
+ if (holder != null) {
+ DexEncodedMember<?, ?> definition = holder.lookupMember(member);
+ if (definition != null) {
+ consumer.accept(definition, dependentItems);
+ }
+ }
+ }
+ });
}
public void forEachDependentInstanceConstructor(