Move lens verification to VerticalClassMergerGraphLens
Change-Id: I624369c5dd91adc1d6542130d93d4c40c90c9e8c
diff --git a/src/main/java/com/android/tools/r8/graph/lens/GraphLens.java b/src/main/java/com/android/tools/r8/graph/lens/GraphLens.java
index d0f23ae..96948b9 100644
--- a/src/main/java/com/android/tools/r8/graph/lens/GraphLens.java
+++ b/src/main/java/com/android/tools/r8/graph/lens/GraphLens.java
@@ -26,10 +26,7 @@
import com.android.tools.r8.ir.optimize.enums.EnumUnboxingLens;
import com.android.tools.r8.optimize.MemberRebindingIdentityLens;
import com.android.tools.r8.optimize.MemberRebindingLens;
-import com.android.tools.r8.shaking.AppInfoWithLiveness;
-import com.android.tools.r8.shaking.KeepInfoCollection;
import com.android.tools.r8.utils.CollectionUtils;
-import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.Timing;
@@ -43,7 +40,6 @@
import it.unimi.dsi.fastutil.objects.Object2BooleanArrayMap;
import it.unimi.dsi.fastutil.objects.Object2BooleanMap;
import java.util.ArrayDeque;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Deque;
import java.util.IdentityHashMap;
@@ -472,35 +468,6 @@
return true;
}
- public <T extends DexReference> boolean assertPinnedNotModified(
- AppView<AppInfoWithLiveness> appView) {
- List<DexReference> pinnedItems = new ArrayList<>();
- KeepInfoCollection keepInfo = appView.getKeepInfo();
- InternalOptions options = appView.options();
- keepInfo.forEachPinnedType(pinnedItems::add, options);
- keepInfo.forEachPinnedMethod(pinnedItems::add, options);
- keepInfo.forEachPinnedField(pinnedItems::add, options);
- return assertReferencesNotModified(pinnedItems);
- }
-
- @SuppressWarnings("ReferenceEquality")
- public <T extends DexReference> boolean assertReferencesNotModified(Iterable<T> references) {
- for (DexReference reference : references) {
- if (reference.isDexField()) {
- DexField field = reference.asDexField();
- assert getRenamedFieldSignature(field) == field;
- } else if (reference.isDexMethod()) {
- DexMethod method = reference.asDexMethod();
- assert getRenamedMethodSignature(method) == method;
- } else {
- assert reference.isDexType();
- DexType type = reference.asDexType();
- assert lookupType(type) == type;
- }
- }
- return true;
- }
-
public Map<DexCallSite, ProgramMethodSet> rewriteCallSites(
Map<DexCallSite, ProgramMethodSet> callSites,
DexDefinitionSupplier definitions,
diff --git a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerGraphLens.java b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerGraphLens.java
index c9bc89b..994795d 100644
--- a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerGraphLens.java
+++ b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerGraphLens.java
@@ -14,6 +14,7 @@
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexProgramClass;
+import com.android.tools.r8.graph.DexReference;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.ProgramMethod;
import com.android.tools.r8.graph.lens.GraphLens;
@@ -23,6 +24,9 @@
import com.android.tools.r8.ir.code.InvokeType;
import com.android.tools.r8.ir.conversion.ExtraParameter;
import com.android.tools.r8.ir.conversion.ExtraUnusedNullParameter;
+import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.shaking.KeepInfoCollection;
+import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.IterableUtils;
import com.android.tools.r8.utils.collections.BidirectionalManyToOneRepresentativeHashMap;
import com.android.tools.r8.utils.collections.BidirectionalManyToOneRepresentativeMap;
@@ -313,6 +317,29 @@
return true;
}
+ public boolean assertPinnedNotModified(AppView<AppInfoWithLiveness> appView) {
+ KeepInfoCollection keepInfo = appView.getKeepInfo();
+ InternalOptions options = appView.options();
+ keepInfo.forEachPinnedType(this::assertReferenceNotModified, options);
+ keepInfo.forEachPinnedMethod(this::assertReferenceNotModified, options);
+ keepInfo.forEachPinnedField(this::assertReferenceNotModified, options);
+ return true;
+ }
+
+ private void assertReferenceNotModified(DexReference reference) {
+ if (reference.isDexField()) {
+ DexField field = reference.asDexField();
+ assert getNextFieldSignature(field).isIdenticalTo(field);
+ } else if (reference.isDexMethod()) {
+ DexMethod method = reference.asDexMethod();
+ assert getNextMethodSignature(method).isIdenticalTo(method);
+ } else {
+ assert reference.isDexType();
+ DexType type = reference.asDexType();
+ assert getNextClassType(type).isIdenticalTo(type);
+ }
+ }
+
public static class Builder
extends BuilderBase<VerticalClassMergerGraphLens, VerticallyMergedClasses> {
@@ -473,13 +500,6 @@
staticizedMethods);
}
- // TODO: should be removed.
- public boolean hasMappingForSignatureInContext(DexProgramClass context, DexMethod signature) {
- return contextualSuperToImplementationInContexts
- .getOrDefault(context.getType(), Collections.emptyMap())
- .containsKey(signature);
- }
-
public void markMethodAsMerged(DexEncodedMethod method) {
mergedMethods.add(method.getReference());
}