| // Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| package com.android.tools.r8.verticalclassmerging; | |
| import com.android.tools.r8.classmerging.Policy; | |
| import com.android.tools.r8.graph.AppView; | |
| import com.android.tools.r8.shaking.AppInfoWithLiveness; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoAbstractMethodsOnAbstractClassesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoAnnotationClassesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoClassInitializationChangesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoDirectlyInstantiatedClassesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoEnclosingMethodAttributesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoFieldResolutionChangesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoIllegalAccessesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoInnerClassAttributesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoInterfacesWithInvokeSpecialToDefaultMethodIntoClassPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoInterfacesWithUnknownSubtypesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoInvokeSuperNoSuchMethodErrorsPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoKeptClassesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoLockMergingPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoMethodResolutionChangesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoNestedMergingPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoNonSerializableClassIntoSerializableClassPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.NoServiceInterfacesPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.SameApiReferenceLevelPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.SameFeatureSplitPolicy; | |
| import com.android.tools.r8.verticalclassmerging.policies.SameMainDexGroupPolicy; | |
| 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 java.util.List; | |
| public class VerticalClassMergerPolicyScheduler { | |
| public static List<Policy> getPolicies(AppView<AppInfoWithLiveness> appView) { | |
| return List.of( | |
| new NoDirectlyInstantiatedClassesPolicy(appView), | |
| new NoInterfacesWithUnknownSubtypesPolicy(appView), | |
| new NoKeptClassesPolicy(appView), | |
| new SameFeatureSplitPolicy(appView), | |
| new SameStartupPartitionPolicy(appView), | |
| new NoServiceInterfacesPolicy(appView), | |
| new NoAnnotationClassesPolicy(), | |
| new NoNonSerializableClassIntoSerializableClassPolicy(appView), | |
| new NoEnclosingMethodAttributesPolicy(), | |
| new NoInnerClassAttributesPolicy(), | |
| new SameNestPolicy(), | |
| new SameMainDexGroupPolicy(appView), | |
| new NoLockMergingPolicy(appView), | |
| new SameApiReferenceLevelPolicy(appView), | |
| new NoFieldResolutionChangesPolicy(appView), | |
| new NoMethodResolutionChangesPolicy(appView), | |
| new NoIllegalAccessesPolicy(appView), | |
| new NoClassInitializationChangesPolicy(appView), | |
| new NoInterfacesWithInvokeSpecialToDefaultMethodIntoClassPolicy(appView), | |
| new NoInvokeSuperNoSuchMethodErrorsPolicy(appView), | |
| new SuccessfulVirtualMethodResolutionInTargetPolicy(appView), | |
| new NoAbstractMethodsOnAbstractClassesPolicy(appView), | |
| new NoNestedMergingPolicy()); | |
| } | |
| } |