Remove obsolete assertion during AppInfoWithLiveness rewriting
Change-Id: I9ecaa633d7b4d1fa20a7b1ee497e1ca4bbaf6a75
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java
index c2cd2aa..c589048 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedMessageLiteBuilderShrinker.java
@@ -394,8 +394,9 @@
void extend(SubtypingInfo subtypingInfo) {
alwaysClassInlineGeneratedMessageLiteBuilders();
- // GeneratedMessageLite heuristics.
+ // MessageLite and GeneratedMessageLite heuristics.
alwaysInlineCreateBuilderFromGeneratedMessageLite();
+ neverMergeMessageLite();
// * extends GeneratedMessageLite heuristics.
bypassClinitforInliningNewBuilderMethods(subtypingInfo);
@@ -442,5 +443,11 @@
neverMerge.add(references.generatedMessageLiteBuilderType);
neverMerge.add(references.generatedMessageLiteExtendableBuilderType);
}
+
+ private void neverMergeMessageLite() {
+ // MessageLite is used in several signatures that we use for recognizing methods, so don't
+ // allow it to me merged.
+ neverMerge.add(references.messageLiteType);
+ }
}
}
diff --git a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
index 5d5a16e..87bfd9a 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
@@ -987,12 +987,6 @@
.filter(AssertionUtils::assertNotNull)
.collect(Collectors.toList()));
- assert lens.assertDefinitionsNotModified(
- alwaysInline.stream()
- .map(method -> method.lookupOnClass(definitionForHolder(method)))
- .filter(AssertionUtils::assertNotNull)
- .collect(Collectors.toList()));
-
return new AppInfoWithLiveness(
application,
deadProtoTypes,
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 2b06548..bd3b4f8 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -49,7 +49,6 @@
import com.android.tools.r8.ir.synthetic.AbstractSynthesizedCode;
import com.android.tools.r8.ir.synthetic.ForwardMethodSourceCode;
import com.android.tools.r8.logging.Log;
-import com.android.tools.r8.utils.AssertionUtils;
import com.android.tools.r8.utils.Box;
import com.android.tools.r8.utils.FieldSignatureEquivalence;
import com.android.tools.r8.utils.MethodSignatureEquivalence;
@@ -82,7 +81,6 @@
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@@ -280,11 +278,6 @@
appInfo.getKeepInfo().forEachPinnedField(pinnedItems::add);
extractPinnedItems(pinnedItems, AbortReason.PINNED_SOURCE);
- // TODO(christofferqa): Remove the invariant that the graph lense should not modify any
- // methods from the sets alwaysInline and noSideEffects (see use of assertNotModified).
- extractPinnedItems(appInfo.alwaysInline, AbortReason.ALWAYS_INLINE);
- extractPinnedItems(appInfo.noSideEffects.keySet(), AbortReason.NO_SIDE_EFFECTS);
-
for (DexProgramClass clazz : classes) {
for (DexEncodedMethod method : clazz.methods()) {
if (method.accessFlags.isNative()) {
@@ -653,14 +646,6 @@
}
private boolean verifyGraphLens(VerticalClassMergerGraphLense graphLense) {
- assert graphLense.assertDefinitionsNotModified(
- appInfo.alwaysInline.stream()
- .map(method -> method.lookupOnClass(appView.definitionForHolder(method)))
- .filter(AssertionUtils::assertNotNull)
- .collect(Collectors.toList()));
-
- assert graphLense.assertReferencesNotModified(appInfo.noSideEffects.keySet());
-
// Note that the method assertReferencesNotModified() relies on getRenamedFieldSignature() and
// getRenamedMethodSignature() instead of lookupField() and lookupMethod(). This is important
// for this check to succeed, since it is not guaranteed that calling lookupMethod() with a