Cleanup vertical class merger policies
Change-Id: I888106849865ddcbbd85ac82dc906a2fb5482f15
diff --git a/src/main/java/com/android/tools/r8/classmerging/Policy.java b/src/main/java/com/android/tools/r8/classmerging/Policy.java
index e7f52f3..7655762 100644
--- a/src/main/java/com/android/tools/r8/classmerging/Policy.java
+++ b/src/main/java/com/android/tools/r8/classmerging/Policy.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.horizontalclassmerging.MultiClassPolicy;
import com.android.tools.r8.horizontalclassmerging.MultiClassPolicyWithPreprocessing;
import com.android.tools.r8.horizontalclassmerging.SingleClassPolicy;
-import com.android.tools.r8.verticalclassmerging.policies.VerticalClassMergerPolicy;
import com.android.tools.r8.verticalclassmerging.policies.VerticalClassMergerPolicyWithPreprocessing;
import java.util.ArrayList;
import java.util.Collection;
@@ -60,16 +59,7 @@
return false;
}
- public VerticalClassMergerPolicy asVerticalClassMergerPolicy() {
- return null;
- }
-
- public boolean isVerticalClassMergerPolicyWithPreprocessing() {
- return false;
- }
-
- public VerticalClassMergerPolicyWithPreprocessing<?>
- asVerticalClassMergerPolicyWithPreprocessing() {
+ public VerticalClassMergerPolicyWithPreprocessing<?> asVerticalClassMergerPolicy() {
return null;
}
diff --git a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerPolicyExecutor.java b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerPolicyExecutor.java
index bab7656..1874199 100644
--- a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerPolicyExecutor.java
+++ b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerPolicyExecutor.java
@@ -35,7 +35,6 @@
import com.android.tools.r8.verticalclassmerging.policies.SameNestPolicy;
import com.android.tools.r8.verticalclassmerging.policies.SameStartupPartitionPolicy;
import com.android.tools.r8.verticalclassmerging.policies.SuccessfulVirtualMethodResolutionInTargetPolicy;
-import com.android.tools.r8.verticalclassmerging.policies.VerticalClassMergerPolicy;
import com.android.tools.r8.verticalclassmerging.policies.VerticalClassMergerPolicyWithPreprocessing;
import java.util.ArrayList;
import java.util.Collection;
@@ -113,18 +112,8 @@
protected LinkedList<VerticalMergeGroup> apply(
Policy policy, LinkedList<VerticalMergeGroup> linkedGroups, ExecutorService executorService)
throws ExecutionException {
- if (policy.isVerticalClassMergerPolicy()) {
- return apply(policy.asVerticalClassMergerPolicy(), linkedGroups);
- } else {
- assert policy.isVerticalClassMergerPolicyWithPreprocessing();
- return apply(policy.asVerticalClassMergerPolicyWithPreprocessing(), linkedGroups);
- }
- }
-
- private LinkedList<VerticalMergeGroup> apply(
- VerticalClassMergerPolicy policy, LinkedList<VerticalMergeGroup> linkedGroups) {
- linkedGroups.removeIf(group -> !policy.canMerge(group));
- return linkedGroups;
+ assert policy.isVerticalClassMergerPolicy();
+ return apply(policy.asVerticalClassMergerPolicy(), linkedGroups);
}
private <T> LinkedList<VerticalMergeGroup> apply(
diff --git a/src/main/java/com/android/tools/r8/verticalclassmerging/policies/VerticalClassMergerPolicy.java b/src/main/java/com/android/tools/r8/verticalclassmerging/policies/VerticalClassMergerPolicy.java
index 49f179f..b5a6390 100644
--- a/src/main/java/com/android/tools/r8/verticalclassmerging/policies/VerticalClassMergerPolicy.java
+++ b/src/main/java/com/android/tools/r8/verticalclassmerging/policies/VerticalClassMergerPolicy.java
@@ -3,20 +3,21 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.verticalclassmerging.policies;
-import com.android.tools.r8.classmerging.Policy;
import com.android.tools.r8.verticalclassmerging.VerticalMergeGroup;
+import java.util.Collection;
-public abstract class VerticalClassMergerPolicy extends Policy {
+public abstract class VerticalClassMergerPolicy
+ extends VerticalClassMergerPolicyWithPreprocessing<Void> {
public abstract boolean canMerge(VerticalMergeGroup group);
@Override
- public boolean isVerticalClassMergerPolicy() {
- return true;
+ public final boolean canMerge(VerticalMergeGroup group, Void data) {
+ return canMerge(group);
}
@Override
- public VerticalClassMergerPolicy asVerticalClassMergerPolicy() {
- return this;
+ public final Void preprocess(Collection<VerticalMergeGroup> groups) {
+ return null;
}
}
diff --git a/src/main/java/com/android/tools/r8/verticalclassmerging/policies/VerticalClassMergerPolicyWithPreprocessing.java b/src/main/java/com/android/tools/r8/verticalclassmerging/policies/VerticalClassMergerPolicyWithPreprocessing.java
index 7737ebc..5efbe75 100644
--- a/src/main/java/com/android/tools/r8/verticalclassmerging/policies/VerticalClassMergerPolicyWithPreprocessing.java
+++ b/src/main/java/com/android/tools/r8/verticalclassmerging/policies/VerticalClassMergerPolicyWithPreprocessing.java
@@ -14,13 +14,12 @@
public abstract T preprocess(Collection<VerticalMergeGroup> groups);
@Override
- public boolean isVerticalClassMergerPolicyWithPreprocessing() {
+ public boolean isVerticalClassMergerPolicy() {
return true;
}
@Override
- public VerticalClassMergerPolicyWithPreprocessing<T>
- asVerticalClassMergerPolicyWithPreprocessing() {
+ public VerticalClassMergerPolicyWithPreprocessing<T> asVerticalClassMergerPolicy() {
return this;
}
}