Fix assertion error from second round of vertical class merging
Change-Id: Iece3a02f690f3d7994fb51a1084c224addd9da43
diff --git a/src/main/java/com/android/tools/r8/graph/AppView.java b/src/main/java/com/android/tools/r8/graph/AppView.java
index ed20f69..691680c 100644
--- a/src/main/java/com/android/tools/r8/graph/AppView.java
+++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -863,10 +863,16 @@
return verticallyMergedClasses;
}
- public void setVerticallyMergedClasses(VerticallyMergedClasses verticallyMergedClasses) {
- assert this.verticallyMergedClasses == null;
- this.verticallyMergedClasses = verticallyMergedClasses;
- testing().verticallyMergedClassesConsumer.accept(dexItemFactory(), verticallyMergedClasses);
+ public void setVerticallyMergedClasses(
+ VerticallyMergedClasses verticallyMergedClasses, ClassMergerMode mode) {
+ if (mode.isInitial()) {
+ assert this.verticallyMergedClasses == null;
+ this.verticallyMergedClasses = verticallyMergedClasses;
+ testing().verticallyMergedClassesConsumer.accept(dexItemFactory(), verticallyMergedClasses);
+ } else {
+ assert this.verticallyMergedClasses != null;
+ assert verticallyMergedClasses.isEmpty();
+ }
}
public OpenClosedInterfacesCollection getOpenClosedInterfacesCollection() {
diff --git a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java
index e595824..f94208d 100644
--- a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java
@@ -73,7 +73,7 @@
if (shouldRun()) {
run(executorService, timing);
} else {
- appView.setVerticallyMergedClasses(VerticallyMergedClasses.empty());
+ appView.setVerticallyMergedClasses(VerticallyMergedClasses.empty(), mode);
}
assert appView.hasVerticallyMergedClasses();
assert ArtProfileCompletenessChecker.verify(appView);
@@ -104,7 +104,8 @@
VerticalClassMergerResult verticalClassMergerResult =
mergeClassesInConnectedComponents(
connectedComponents, immediateSubtypingInfo, executorService, timing);
- appView.setVerticallyMergedClasses(verticalClassMergerResult.getVerticallyMergedClasses());
+ appView.setVerticallyMergedClasses(
+ verticalClassMergerResult.getVerticallyMergedClasses(), mode);
if (verticalClassMergerResult.isEmpty()) {
return;
}