Avoid applying the graph lens more than once to the post method processor
This reenables enum unboxing.
Change-Id: Id5e621dbda46d9b946e13149b389bf0d721804c0
diff --git a/src/main/java/com/android/tools/r8/graph/AppliedGraphLens.java b/src/main/java/com/android/tools/r8/graph/AppliedGraphLens.java
index 158bf1f..7e46aad 100644
--- a/src/main/java/com/android/tools/r8/graph/AppliedGraphLens.java
+++ b/src/main/java/com/android/tools/r8/graph/AppliedGraphLens.java
@@ -101,8 +101,10 @@
}
@Override
- public DexMethod getRenamedMethodSignature(DexMethod originalMethod) {
- return originalMethodSignatures.inverse().getOrDefault(originalMethod, originalMethod);
+ public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLense applied) {
+ return this != applied
+ ? originalMethodSignatures.inverse().getOrDefault(originalMethod, originalMethod)
+ : originalMethod;
}
@Override
diff --git a/src/main/java/com/android/tools/r8/graph/GraphLense.java b/src/main/java/com/android/tools/r8/graph/GraphLense.java
index 2a5f317..ea55ec4 100644
--- a/src/main/java/com/android/tools/r8/graph/GraphLense.java
+++ b/src/main/java/com/android/tools/r8/graph/GraphLense.java
@@ -140,12 +140,23 @@
public abstract DexField getRenamedFieldSignature(DexField originalField);
- public abstract DexMethod getRenamedMethodSignature(DexMethod originalMethod);
+ public final DexMethod getRenamedMethodSignature(DexMethod originalMethod) {
+ return getRenamedMethodSignature(originalMethod, null);
+ }
+
+ public abstract DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLense applied);
public DexEncodedMethod mapDexEncodedMethod(
DexEncodedMethod originalEncodedMethod, DexDefinitionSupplier definitions) {
+ return mapDexEncodedMethod(originalEncodedMethod, definitions, null);
+ }
+
+ public DexEncodedMethod mapDexEncodedMethod(
+ DexEncodedMethod originalEncodedMethod,
+ DexDefinitionSupplier definitions,
+ GraphLense applied) {
assert originalEncodedMethod != DexEncodedMethod.SENTINEL;
- DexMethod newMethod = getRenamedMethodSignature(originalEncodedMethod.method);
+ DexMethod newMethod = getRenamedMethodSignature(originalEncodedMethod.method, applied);
// Note that:
// * Even if `newMethod` is the same as `originalEncodedMethod.method`, we still need to look it
// up, since `originalEncodedMethod` may be obsolete.
@@ -445,7 +456,7 @@
}
@Override
- public DexMethod getRenamedMethodSignature(DexMethod originalMethod) {
+ public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLense applied) {
return originalMethod;
}
@@ -511,8 +522,10 @@
}
@Override
- public DexMethod getRenamedMethodSignature(DexMethod originalMethod) {
- return previous.getRenamedMethodSignature(originalMethod);
+ public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLense applied) {
+ return this != applied
+ ? previous.getRenamedMethodSignature(originalMethod, applied)
+ : originalMethod;
}
@Override
@@ -611,8 +624,11 @@
}
@Override
- public DexMethod getRenamedMethodSignature(DexMethod originalMethod) {
- DexMethod renamedMethod = previousLense.getRenamedMethodSignature(originalMethod);
+ public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLense applied) {
+ if (this == applied) {
+ return originalMethod;
+ }
+ DexMethod renamedMethod = previousLense.getRenamedMethodSignature(originalMethod, applied);
return originalMethodSignatures != null
? originalMethodSignatures.inverse().getOrDefault(renamedMethod, renamedMethod)
: renamedMethod;
diff --git a/src/main/java/com/android/tools/r8/graph/MethodArrayBacking.java b/src/main/java/com/android/tools/r8/graph/MethodArrayBacking.java
index 5a5db62..c7edad2 100644
--- a/src/main/java/com/android/tools/r8/graph/MethodArrayBacking.java
+++ b/src/main/java/com/android/tools/r8/graph/MethodArrayBacking.java
@@ -8,6 +8,7 @@
import com.google.common.base.MoreObjects;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
@@ -121,6 +122,23 @@
return null;
}
+ @Override
+ void removeMethods(Set<DexEncodedMethod> methods) {
+ directMethods = removeMethodsHelper(methods, directMethods);
+ virtualMethods = removeMethodsHelper(methods, virtualMethods);
+ }
+
+ private static DexEncodedMethod[] removeMethodsHelper(
+ Set<DexEncodedMethod> methodsToRemove, DexEncodedMethod[] existingMethods) {
+ List<DexEncodedMethod> newMethods = new ArrayList<>(existingMethods.length);
+ for (DexEncodedMethod method : existingMethods) {
+ if (!methodsToRemove.contains(method)) {
+ newMethods.add(method);
+ }
+ }
+ return newMethods.toArray(DexEncodedMethod.EMPTY_ARRAY);
+ }
+
private DexEncodedMethod removeMethodWithIndex(
int index, DexEncodedMethod[] methods, Consumer<DexEncodedMethod[]> newMethodsConsumer) {
DexEncodedMethod removed = methods[index];
diff --git a/src/main/java/com/android/tools/r8/graph/MethodCollection.java b/src/main/java/com/android/tools/r8/graph/MethodCollection.java
index 14655d5..c93d366 100644
--- a/src/main/java/com/android/tools/r8/graph/MethodCollection.java
+++ b/src/main/java/com/android/tools/r8/graph/MethodCollection.java
@@ -259,6 +259,12 @@
return removed;
}
+ public void removeMethods(Set<DexEncodedMethod> methods) {
+ backing.removeMethods(methods);
+ resetDirectMethodCaches();
+ resetVirtualMethodCaches();
+ }
+
public void setDirectMethods(DexEncodedMethod[] methods) {
assert verifyCorrectnessOfMethodHolders(methods);
resetDirectMethodCaches();
diff --git a/src/main/java/com/android/tools/r8/graph/MethodCollectionBacking.java b/src/main/java/com/android/tools/r8/graph/MethodCollectionBacking.java
index 2ce0cd8..0b3f435 100644
--- a/src/main/java/com/android/tools/r8/graph/MethodCollectionBacking.java
+++ b/src/main/java/com/android/tools/r8/graph/MethodCollectionBacking.java
@@ -96,6 +96,8 @@
abstract DexEncodedMethod removeMethod(DexMethod method);
+ abstract void removeMethods(Set<DexEncodedMethod> method);
+
// Replacement/mutation methods.
abstract void setDirectMethods(DexEncodedMethod[] methods);
diff --git a/src/main/java/com/android/tools/r8/graph/MethodMapBacking.java b/src/main/java/com/android/tools/r8/graph/MethodMapBacking.java
index 18257c1..19c3cec 100644
--- a/src/main/java/com/android/tools/r8/graph/MethodMapBacking.java
+++ b/src/main/java/com/android/tools/r8/graph/MethodMapBacking.java
@@ -207,6 +207,11 @@
}
@Override
+ void removeMethods(Set<DexEncodedMethod> methods) {
+ methods.forEach(method -> methodMap.remove(wrap(method.getReference())));
+ }
+
+ @Override
void setDirectMethods(DexEncodedMethod[] methods) {
if ((methods == null || methods.length == 0) && methodMap.isEmpty()) {
return;
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java b/src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java
index c535709..fbeff68 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/PostMethodProcessor.java
@@ -7,6 +7,7 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexProgramClass;
+import com.android.tools.r8.graph.GraphLense;
import com.android.tools.r8.graph.ProgramMethod;
import com.android.tools.r8.ir.code.IRCode;
import com.android.tools.r8.ir.conversion.MethodProcessingId.Factory.ReservedMethodProcessingIds;
@@ -60,8 +61,8 @@
public static class Builder {
private final Collection<CodeOptimization> defaultCodeOptimizations;
- private final LongLivedProgramMethodSetBuilder methodsMap =
- new LongLivedProgramMethodSetBuilder();
+ private final LongLivedProgramMethodSetBuilder<?> methodsToReprocess =
+ LongLivedProgramMethodSetBuilder.create();
private final Map<DexEncodedMethod, Collection<CodeOptimization>> optimizationsMap =
new IdentityHashMap<>();
@@ -76,7 +77,7 @@
return;
}
for (ProgramMethod method : methodsToRevisit) {
- methodsMap.add(method);
+ methodsToReprocess.add(method);
optimizationsMap
.computeIfAbsent(
method.getDefinition(),
@@ -102,13 +103,15 @@
// Some optimizations may change methods, creating new instances of the encoded methods with a
// new signature. The compiler needs to update the set of methods that must be reprocessed
// according to the graph lens.
- public void mapDexEncodedMethods(AppView<?> appView) {
+ public void rewrittenWithLens(AppView<AppInfoWithLiveness> appView, GraphLense applied) {
+ methodsToReprocess.rewrittenWithLens(appView, applied);
Map<DexEncodedMethod, Collection<CodeOptimization>> newOptimizationsMap =
new IdentityHashMap<>();
optimizationsMap.forEach(
(method, optimizations) ->
newOptimizationsMap.put(
- appView.graphLense().mapDexEncodedMethod(method, appView), optimizations));
+ appView.graphLense().mapDexEncodedMethod(method, appView, applied),
+ optimizations));
optimizationsMap.clear();
optimizationsMap.putAll(newOptimizationsMap);
}
@@ -132,16 +135,14 @@
});
put(set);
}
- if (methodsMap.isEmpty()) {
+ if (methodsToReprocess.isEmpty()) {
// Nothing to revisit.
return null;
}
- ProgramMethodSet methodsToReprocess =
- appView.options().enableEnumUnboxing
- ? methodsMap.build(appView)
- : methodsMap.buildRaw(appView);
CallGraph callGraph =
- new PartialCallGraphBuilder(appView, methodsToReprocess).build(executorService, timing);
+ new PartialCallGraphBuilder(
+ appView, methodsToReprocess.build(appView, appView.graphLense()))
+ .build(executorService, timing);
return new PostMethodProcessor(appView, optimizationsMap, callGraph);
}
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
index 5c4197c..0ac7f7b 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
@@ -114,8 +114,8 @@
/** Result of first step (see {@link Outliner#createOutlineMethodIdentifierGenerator()}. */
private final List<Multiset<Wrapper<ProgramMethod>>> candidateMethodLists = new ArrayList<>();
/** Result of second step (see {@link Outliner#selectMethodsForOutlining()}. */
- private final LongLivedProgramMethodSetBuilder methodsSelectedForOutlining =
- new LongLivedProgramMethodSetBuilder();
+ private final LongLivedProgramMethodSetBuilder<?> methodsSelectedForOutlining =
+ LongLivedProgramMethodSetBuilder.create();
/** Result of second step (see {@link Outliner#selectMethodsForOutlining()}. */
private final Map<Outline, List<ProgramMethod>> outlineSites = new HashMap<>();
/** Result of third step (see {@link Outliner#buildOutlinerClass(DexType)}. */
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java
index d35364d..c179446 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxer.java
@@ -328,47 +328,44 @@
enumUnboxerRewriter = new EnumUnboxingRewriter(appView, enumsToUnbox);
NestedGraphLense enumUnboxingLens = new TreeFixer(enumsToUnbox).fixupTypeReferences();
appView.setUnboxedEnums(enumUnboxerRewriter.getEnumsToUnbox());
- if (enumUnboxingLens != null) {
- appView.setGraphLense(enumUnboxingLens);
- appView.setAppInfo(
- appView
- .appInfo()
- .rewrittenWithLens(appView.appInfo().app().asDirect(), enumUnboxingLens));
- // Update optimization info.
- feedback.fixupOptimizationInfos(
- appView,
- executorService,
- new OptimizationInfoFixer() {
- @Override
- public void fixup(DexEncodedField field) {
- FieldOptimizationInfo optimizationInfo = field.getOptimizationInfo();
- if (optimizationInfo.isMutableFieldOptimizationInfo()) {
- optimizationInfo
- .asMutableFieldOptimizationInfo()
- .fixupClassTypeReferences(appView.graphLense()::lookupType, appView)
- .fixupAbstractValue(appView, appView.graphLense());
- } else {
- assert optimizationInfo.isDefaultFieldOptimizationInfo();
- }
+ GraphLense previousLens = appView.graphLense();
+ appView.setGraphLense(enumUnboxingLens);
+ appView.setAppInfo(
+ appView.appInfo().rewrittenWithLens(appView.appInfo().app().asDirect(), enumUnboxingLens));
+ // Update optimization info.
+ feedback.fixupOptimizationInfos(
+ appView,
+ executorService,
+ new OptimizationInfoFixer() {
+ @Override
+ public void fixup(DexEncodedField field) {
+ FieldOptimizationInfo optimizationInfo = field.getOptimizationInfo();
+ if (optimizationInfo.isMutableFieldOptimizationInfo()) {
+ optimizationInfo
+ .asMutableFieldOptimizationInfo()
+ .fixupClassTypeReferences(appView.graphLense()::lookupType, appView)
+ .fixupAbstractValue(appView, appView.graphLense());
+ } else {
+ assert optimizationInfo.isDefaultFieldOptimizationInfo();
}
+ }
- @Override
- public void fixup(DexEncodedMethod method) {
- MethodOptimizationInfo optimizationInfo = method.getOptimizationInfo();
- if (optimizationInfo.isUpdatableMethodOptimizationInfo()) {
- optimizationInfo
- .asUpdatableMethodOptimizationInfo()
- .fixupClassTypeReferences(appView.graphLense()::lookupType, appView)
- .fixupAbstractReturnValue(appView, appView.graphLense())
- .fixupInstanceInitializerInfo(appView, appView.graphLense());
- } else {
- assert optimizationInfo.isDefaultMethodOptimizationInfo();
- }
+ @Override
+ public void fixup(DexEncodedMethod method) {
+ MethodOptimizationInfo optimizationInfo = method.getOptimizationInfo();
+ if (optimizationInfo.isUpdatableMethodOptimizationInfo()) {
+ optimizationInfo
+ .asUpdatableMethodOptimizationInfo()
+ .fixupClassTypeReferences(appView.graphLense()::lookupType, appView)
+ .fixupAbstractReturnValue(appView, appView.graphLense())
+ .fixupInstanceInitializerInfo(appView, appView.graphLense());
+ } else {
+ assert optimizationInfo.isDefaultMethodOptimizationInfo();
}
- });
- }
+ }
+ });
postBuilder.put(this);
- postBuilder.mapDexEncodedMethods(appView);
+ postBuilder.rewrittenWithLens(appView, previousLens);
}
public void finishAnalysis() {
@@ -698,6 +695,7 @@
if (enumsToUnbox.contains(clazz.type)) {
assert clazz.instanceFields().size() == 0;
// Clear the initializers and move the static methods to the utility class.
+ Set<DexEncodedMethod> methodsToRemove = Sets.newIdentityHashSet();
clazz
.methods()
.forEach(
@@ -708,8 +706,10 @@
assert m.isStatic();
unboxedEnumsMethods.add(
fixupEncodedMethodToUtility(m, factory.enumUnboxingUtilityType));
+ methodsToRemove.add(m);
}
});
+ clazz.getMethodCollection().removeMethods(methodsToRemove);
} else {
clazz.getMethodCollection().replaceMethods(this::fixupEncodedMethod);
fixupFields(clazz.staticFields(), clazz::setStaticField);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java
index 35add7f..6e0805e 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/lambda/LambdaMerger.java
@@ -195,8 +195,8 @@
// we mark a method for further processing, and then invalidate the only lambda referenced
// from it. In this case we will reprocess method that does not need patching, but it
// should not be happening very frequently and we ignore possible overhead.
- private final LongLivedProgramMethodSetBuilder methodsToReprocess =
- new LongLivedProgramMethodSetBuilder();
+ private final LongLivedProgramMethodSetBuilder<SortedProgramMethodSet> methodsToReprocess =
+ LongLivedProgramMethodSetBuilder.createSorted();
private final AppView<AppInfoWithLiveness> appView;
private final Kotlin kotlin;
@@ -455,8 +455,7 @@
if (methodsToReprocess.isEmpty()) {
return;
}
- SortedProgramMethodSet methods =
- methodsToReprocess.build(appView, ignore -> SortedProgramMethodSet.create());
+ SortedProgramMethodSet methods = methodsToReprocess.build(appView);
converter.processMethodsConcurrently(methods, executorService);
assert methods.stream()
.map(DexClassAndMethod::getDefinition)
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizer.java b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizer.java
index acba57f..499c975 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/staticizer/ClassStaticizer.java
@@ -102,7 +102,7 @@
}
}
- final Map<CandidateInfo, LongLivedProgramMethodSetBuilder> referencedFrom =
+ final Map<CandidateInfo, LongLivedProgramMethodSetBuilder<?>> referencedFrom =
new IdentityHashMap<>();
// The map storing all the potential candidates for staticizing.
@@ -291,7 +291,7 @@
// Ignore just read instruction.
}
referencedFrom
- .computeIfAbsent(candidateInfo, ignore -> new LongLivedProgramMethodSetBuilder())
+ .computeIfAbsent(candidateInfo, ignore -> LongLivedProgramMethodSetBuilder.create())
.add(context);
}
continue;
@@ -313,7 +313,7 @@
CandidateInfo info = processStaticFieldRead(instruction.asStaticGet());
if (info != null) {
referencedFrom
- .computeIfAbsent(info, ignore -> new LongLivedProgramMethodSetBuilder())
+ .computeIfAbsent(info, ignore -> LongLivedProgramMethodSetBuilder.create())
.add(context);
// If the candidate is still valid, ignore all usages in further analysis.
Value value = instruction.outValue();
@@ -329,7 +329,7 @@
CandidateInfo info = processInvokeStatic(instruction.asInvokeStatic());
if (info != null) {
referencedFrom
- .computeIfAbsent(info, ignore -> new LongLivedProgramMethodSetBuilder())
+ .computeIfAbsent(info, ignore -> LongLivedProgramMethodSetBuilder.create())
.add(context);
// If the candidate is still valid, ignore all usages in further analysis.
Value value = instruction.outValue();
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index 193e126..da9038d 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -1727,7 +1727,7 @@
}
@Override
- public DexMethod getRenamedMethodSignature(DexMethod originalMethod) {
+ public DexMethod getRenamedMethodSignature(DexMethod originalMethod, GraphLense applied) {
throw new Unreachable();
}
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 78f044f..4079d9c 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -229,7 +229,7 @@
public boolean enableInlining =
!Version.isDevelopmentVersion()
|| System.getProperty("com.android.tools.r8.disableinlining") == null;
- public boolean enableEnumUnboxing = false;
+ public boolean enableEnumUnboxing = true;
// TODO(b/141451716): Evaluate the effect of allowing inlining in the inlinee.
public boolean applyInliningToInlinee =
System.getProperty("com.android.tools.r8.applyInliningToInlinee") != null;
diff --git a/src/main/java/com/android/tools/r8/utils/collections/LongLivedProgramMethodSetBuilder.java b/src/main/java/com/android/tools/r8/utils/collections/LongLivedProgramMethodSetBuilder.java
index 79a104e..1c6d63a 100644
--- a/src/main/java/com/android/tools/r8/utils/collections/LongLivedProgramMethodSetBuilder.java
+++ b/src/main/java/com/android/tools/r8/utils/collections/LongLivedProgramMethodSetBuilder.java
@@ -7,17 +7,29 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexProgramClass;
+import com.android.tools.r8.graph.GraphLense;
import com.android.tools.r8.graph.ProgramMethod;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
import com.google.common.collect.Sets;
import java.util.Set;
import java.util.function.IntFunction;
-public class LongLivedProgramMethodSetBuilder {
+public class LongLivedProgramMethodSetBuilder<T extends ProgramMethodSet> {
- private Set<DexMethod> methods = Sets.newIdentityHashSet();
+ private final IntFunction<T> factory;
+ private final Set<DexMethod> methods = Sets.newIdentityHashSet();
- public LongLivedProgramMethodSetBuilder() {}
+ private LongLivedProgramMethodSetBuilder(IntFunction<T> factory) {
+ this.factory = factory;
+ }
+
+ public static LongLivedProgramMethodSetBuilder<?> create() {
+ return new LongLivedProgramMethodSetBuilder<>(ProgramMethodSet::create);
+ }
+
+ public static LongLivedProgramMethodSetBuilder<SortedProgramMethodSet> createSorted() {
+ return new LongLivedProgramMethodSetBuilder<>(ignore -> SortedProgramMethodSet.create());
+ }
public void add(ProgramMethod method) {
methods.add(method.getReference());
@@ -27,25 +39,23 @@
methods.forEach(this::add);
}
- public ProgramMethodSet build(AppView<AppInfoWithLiveness> appView) {
- return build(appView, ProgramMethodSet::create);
+ public void rewrittenWithLens(AppView<AppInfoWithLiveness> appView, GraphLense applied) {
+ Set<DexMethod> newMethods = Sets.newIdentityHashSet();
+ for (DexMethod method : methods) {
+ newMethods.add(appView.graphLense().getRenamedMethodSignature(method, applied));
+ }
+ methods.clear();
+ methods.addAll(newMethods);
}
- public <T extends ProgramMethodSet> T build(
- AppView<AppInfoWithLiveness> appView, IntFunction<T> factory) {
+ public T build(AppView<AppInfoWithLiveness> appView) {
+ return build(appView, null);
+ }
+
+ public T build(AppView<AppInfoWithLiveness> appView, GraphLense applied) {
T result = factory.apply(methods.size());
for (DexMethod oldMethod : methods) {
- DexMethod method = appView.graphLense().getRenamedMethodSignature(oldMethod);
- DexProgramClass holder = appView.definitionForHolder(method).asProgramClass();
- result.createAndAdd(holder, holder.lookupMethod(method));
- }
- return result;
- }
-
- @Deprecated
- public ProgramMethodSet buildRaw(AppView<AppInfoWithLiveness> appView) {
- ProgramMethodSet result = ProgramMethodSet.create();
- for (DexMethod method : methods) {
+ DexMethod method = appView.graphLense().getRenamedMethodSignature(oldMethod, applied);
DexProgramClass holder = appView.definitionForHolder(method).asProgramClass();
result.createAndAdd(holder, holder.lookupMethod(method));
}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java b/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java
index 5863dd8..8ff71b8 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/R8InliningTest.java
@@ -379,6 +379,6 @@
}
}
assertEquals(1, instanceGetCount);
- assertEquals(1, invokeCount);
+ assertEquals(BooleanUtils.intValue(parameters.isCfRuntime()), invokeCount);
}
}