Refactor RootSetUtils to rootset package Change-Id: Ia2e06214d84be7ad073298fb41ffcd735130437c
diff --git a/src/main/java/com/android/tools/r8/GenerateMainDexList.java b/src/main/java/com/android/tools/r8/GenerateMainDexList.java index 0b93eb9..e5c0b2a 100644 --- a/src/main/java/com/android/tools/r8/GenerateMainDexList.java +++ b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
@@ -21,8 +21,8 @@ import com.android.tools.r8.shaking.EnqueuerFactory; import com.android.tools.r8.shaking.MainDexInfo; import com.android.tools.r8.shaking.MainDexListBuilder; -import com.android.tools.r8.shaking.RootSetUtils.MainDexRootSet; import com.android.tools.r8.shaking.WhyAreYouKeepingConsumer; +import com.android.tools.r8.shaking.rootset.RootSetUtils.MainDexRootSet; import com.android.tools.r8.utils.AndroidApp; import com.android.tools.r8.utils.ExceptionUtils; import com.android.tools.r8.utils.InternalOptions;
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java index 14a410c..3e8e3f5 100644 --- a/src/main/java/com/android/tools/r8/R8.java +++ b/src/main/java/com/android/tools/r8/R8.java
@@ -97,14 +97,14 @@ import com.android.tools.r8.shaking.MainDexListBuilder; import com.android.tools.r8.shaking.ProguardConfigurationRule; import com.android.tools.r8.shaking.ProguardConfigurationUtils; -import com.android.tools.r8.shaking.RootSetUtils.MainDexRootSet; -import com.android.tools.r8.shaking.RootSetUtils.RootSet; -import com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder; import com.android.tools.r8.shaking.RuntimeTypeCheckInfo; import com.android.tools.r8.shaking.TreePruner; import com.android.tools.r8.shaking.TreePrunerConfiguration; import com.android.tools.r8.shaking.WhyAreYouKeepingConsumer; import com.android.tools.r8.shaking.assume.AssumeInfoCollection; +import com.android.tools.r8.shaking.rootset.RootSetUtils.MainDexRootSet; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSet; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBuilder; import com.android.tools.r8.startup.NonStartupInStartupOutliner; import com.android.tools.r8.synthesis.SyntheticFinalization; import com.android.tools.r8.synthesis.SyntheticItems;
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 a17ab5c..e2052b6 100644 --- a/src/main/java/com/android/tools/r8/graph/AppView.java +++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -58,9 +58,9 @@ import com.android.tools.r8.shaking.LibraryModeledPredicate; import com.android.tools.r8.shaking.MainDexInfo; import com.android.tools.r8.shaking.ProguardCompatibilityActions; -import com.android.tools.r8.shaking.RootSetUtils.MainDexRootSet; -import com.android.tools.r8.shaking.RootSetUtils.RootSet; import com.android.tools.r8.shaking.assume.AssumeInfoCollection; +import com.android.tools.r8.shaking.rootset.RootSetUtils.MainDexRootSet; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSet; import com.android.tools.r8.synthesis.SyntheticItems; import com.android.tools.r8.synthesis.SyntheticItems.GlobalSyntheticsStrategy; import com.android.tools.r8.utils.InternalOptions;
diff --git a/src/main/java/com/android/tools/r8/shaking/AnnotationMatchResult.java b/src/main/java/com/android/tools/r8/shaking/AnnotationMatchResult.java index b874d38..8e6e873 100644 --- a/src/main/java/com/android/tools/r8/shaking/AnnotationMatchResult.java +++ b/src/main/java/com/android/tools/r8/shaking/AnnotationMatchResult.java
@@ -20,7 +20,7 @@ return null; } - static class AnnotationsIgnoredMatchResult extends AnnotationMatchResult { + public static class AnnotationsIgnoredMatchResult extends AnnotationMatchResult { private static final AnnotationsIgnoredMatchResult INSTANCE = new AnnotationsIgnoredMatchResult(); @@ -32,7 +32,7 @@ } } - static class ConcreteAnnotationMatchResult extends AnnotationMatchResult { + public static class ConcreteAnnotationMatchResult extends AnnotationMatchResult { private final List<MatchedAnnotation> matchedAnnotations; @@ -55,13 +55,13 @@ } } - static class MatchedAnnotation { + public static class MatchedAnnotation { private final Definition annotatedItem; private final DexAnnotation annotation; private final AnnotatedKind annotatedKind; - MatchedAnnotation( + public MatchedAnnotation( Definition annotatedItem, DexAnnotation annotation, AnnotatedKind annotatedKind) { this.annotatedItem = annotatedItem; this.annotation = annotation;
diff --git a/src/main/java/com/android/tools/r8/shaking/ClassInlineRule.java b/src/main/java/com/android/tools/r8/shaking/ClassInlineRule.java index 6639246..4404b1b 100644 --- a/src/main/java/com/android/tools/r8/shaking/ClassInlineRule.java +++ b/src/main/java/com/android/tools/r8/shaking/ClassInlineRule.java
@@ -107,7 +107,7 @@ } @Override - String typeString() { + public String typeString() { switch (type) { case ALWAYS: return "alwaysclassinline";
diff --git a/src/main/java/com/android/tools/r8/shaking/DexStringCache.java b/src/main/java/com/android/tools/r8/shaking/DexStringCache.java index 377dacd..23fdc8c 100644 --- a/src/main/java/com/android/tools/r8/shaking/DexStringCache.java +++ b/src/main/java/com/android/tools/r8/shaking/DexStringCache.java
@@ -6,7 +6,7 @@ import com.android.tools.r8.graph.DexString; import java.util.concurrent.ConcurrentHashMap; -final class DexStringCache { +public final class DexStringCache { private final ConcurrentHashMap<DexString, String> stringCache = new ConcurrentHashMap<>(); public String lookupString(DexString name) {
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java index 4f4fd21..30d9d79 100644 --- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java +++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -135,12 +135,12 @@ import com.android.tools.r8.shaking.KeepInfoCollection.MutableKeepInfoCollection; import com.android.tools.r8.shaking.KeepMethodInfo.Joiner; import com.android.tools.r8.shaking.KeepReason.ReflectiveUseFromXml; -import com.android.tools.r8.shaking.RootSetUtils.ConsequentRootSet; -import com.android.tools.r8.shaking.RootSetUtils.RootSet; -import com.android.tools.r8.shaking.RootSetUtils.RootSetBase; -import com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder; import com.android.tools.r8.shaking.ScopedDexMethodSet.AddMethodIfMoreVisibleResult; import com.android.tools.r8.shaking.reflectiveidentification.EnqueuerReflectiveIdentification; +import com.android.tools.r8.shaking.rootset.RootSetUtils.ConsequentRootSet; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSet; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBase; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBuilder; import com.android.tools.r8.shaking.rules.ApplicableRulesEvaluator; import com.android.tools.r8.shaking.rules.KeepAnnotationFakeProguardRule; import com.android.tools.r8.shaking.rules.KeepAnnotationMatcher; @@ -5105,7 +5105,7 @@ action.getIfRulePreconditionMatch()); } - void retainAnnotationForFinalTreeShaking(List<MatchedAnnotation> matchedAnnotations) { + public void retainAnnotationForFinalTreeShaking(List<MatchedAnnotation> matchedAnnotations) { assert mode.isInitialTreeShaking(); if (annotationRemoverBuilder != null) { for (MatchedAnnotation matchedAnnotation : matchedAnnotations) {
diff --git a/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java b/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java index 7f2238d..15dfff8 100644 --- a/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java +++ b/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java
@@ -14,9 +14,9 @@ import com.android.tools.r8.graph.DexItemFactory; import com.android.tools.r8.graph.DexProgramClass; import com.android.tools.r8.graph.DexType; -import com.android.tools.r8.shaking.RootSetUtils.ConsequentRootSetBuilder; -import com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder; import com.android.tools.r8.shaking.ifrules.MaterializedSubsequentRulesOptimizer; +import com.android.tools.r8.shaking.rootset.RootSetUtils.ConsequentRootSetBuilder; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBuilder; import com.android.tools.r8.threading.TaskCollection; import com.android.tools.r8.utils.MapUtils; import com.android.tools.r8.utils.Pair;
diff --git a/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluatorFactory.java b/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluatorFactory.java index ca23312..2b157c0 100644 --- a/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluatorFactory.java +++ b/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluatorFactory.java
@@ -25,8 +25,8 @@ import com.android.tools.r8.graph.analysis.NewlyLiveMethodEnqueuerAnalysis; import com.android.tools.r8.graph.analysis.NewlyReferencedFieldEnqueuerAnalysis; import com.android.tools.r8.graph.analysis.NewlyTargetedMethodEnqueuerAnalysis; -import com.android.tools.r8.shaking.RootSetUtils.ConsequentRootSet; -import com.android.tools.r8.shaking.RootSetUtils.ConsequentRootSetBuilder; +import com.android.tools.r8.shaking.rootset.RootSetUtils.ConsequentRootSet; +import com.android.tools.r8.shaking.rootset.RootSetUtils.ConsequentRootSetBuilder; import com.android.tools.r8.threading.TaskCollection; import com.android.tools.r8.utils.timing.Timing; import com.google.common.base.Equivalence.Wrapper;
diff --git a/src/main/java/com/android/tools/r8/shaking/InterfaceMethodSyntheticBridgeAction.java b/src/main/java/com/android/tools/r8/shaking/InterfaceMethodSyntheticBridgeAction.java index 5aa2580..d69f991 100644 --- a/src/main/java/com/android/tools/r8/shaking/InterfaceMethodSyntheticBridgeAction.java +++ b/src/main/java/com/android/tools/r8/shaking/InterfaceMethodSyntheticBridgeAction.java
@@ -15,7 +15,7 @@ private final ProguardIfRulePreconditionMatch ifRulePreconditionMatch; private final DexClass precondition; - InterfaceMethodSyntheticBridgeAction( + public InterfaceMethodSyntheticBridgeAction( ProgramMethod methodToKeep, ProgramMethod singleTarget, ProguardConfigurationRule context,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java index 84518dd..c676bba 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationRule.java
@@ -4,10 +4,10 @@ package com.android.tools.r8.shaking; import static com.android.tools.r8.graph.DexProgramClass.asProgramClassOrNull; -import static com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder.satisfyAccessFlag; -import static com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder.satisfyAnnotation; -import static com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder.satisfyClassType; -import static com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder.satisfyNonSyntheticClass; +import static com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBuilder.satisfyAccessFlag; +import static com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBuilder.satisfyAnnotation; +import static com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBuilder.satisfyClassType; +import static com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBuilder.satisfyNonSyntheticClass; import static com.google.common.base.Predicates.alwaysTrue; import com.android.tools.r8.graph.AppInfoWithClassHierarchy; @@ -19,7 +19,7 @@ import com.android.tools.r8.origin.Origin; import com.android.tools.r8.position.Position; import com.android.tools.r8.shaking.ProguardWildcard.BackReference; -import com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBuilder; import com.android.tools.r8.utils.IterableUtils; import com.android.tools.r8.utils.OptionalBool; import com.android.tools.r8.utils.StringUtils; @@ -158,7 +158,7 @@ this.canReferenceDeadTypes = true; } - void forEachRelevantCandidate( + public void forEachRelevantCandidate( AppView<? extends AppInfoWithClassHierarchy> appView, ImmediateAppSubtypingInfo subtypingInfo, Iterable<DexProgramClass> defaultValue,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardIfRulePreconditionMatch.java b/src/main/java/com/android/tools/r8/shaking/ProguardIfRulePreconditionMatch.java index 000cfc3..36a8d56 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardIfRulePreconditionMatch.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardIfRulePreconditionMatch.java
@@ -6,7 +6,7 @@ import com.android.tools.r8.graph.Definition; import com.android.tools.r8.graph.DexClass; import com.android.tools.r8.graph.DexClassAndMethod; -import com.android.tools.r8.shaking.RootSetUtils.ConsequentRootSetBuilder; +import com.android.tools.r8.shaking.rootset.RootSetUtils.ConsequentRootSetBuilder; import com.android.tools.r8.utils.collections.DexClassAndMethodSet; public class ProguardIfRulePreconditionMatch {
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardKeepRuleModifiers.java b/src/main/java/com/android/tools/r8/shaking/ProguardKeepRuleModifiers.java index 75ad742..bf6e49d 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardKeepRuleModifiers.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardKeepRuleModifiers.java
@@ -79,7 +79,7 @@ this.includeDescriptorClasses = includeDescriptorClasses; } - ProguardKeepRuleModifiers build() { + public ProguardKeepRuleModifiers build() { return new ProguardKeepRuleModifiers( allowsAccessModification, allowsAnnotationRemoval,
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java index 8974c5c..702942e 100644 --- a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java +++ b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
@@ -15,7 +15,7 @@ import com.android.tools.r8.graph.DexMethod; import com.android.tools.r8.graph.DexType; import com.android.tools.r8.shaking.ProguardConfigurationParser.IdentifierPatternWithWildcards; -import com.android.tools.r8.shaking.RootSetUtils.RootSetBuilder; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSetBuilder; import com.android.tools.r8.utils.IterableUtils; import com.android.tools.r8.utils.ObjectUtils; import com.android.tools.r8.utils.StringUtils;
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java b/src/main/java/com/android/tools/r8/shaking/rootset/RootSetUtils.java similarity index 95% rename from src/main/java/com/android/tools/r8/shaking/RootSetUtils.java rename to src/main/java/com/android/tools/r8/shaking/rootset/RootSetUtils.java index ad0b83a..8087cf8 100644 --- a/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java +++ b/src/main/java/com/android/tools/r8/shaking/rootset/RootSetUtils.java
@@ -1,7 +1,7 @@ // Copyright (c) 2016, 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.shaking; +package com.android.tools.r8.shaking.rootset; import static com.android.tools.r8.graph.DexProgramClass.asProgramClassOrNull; import static com.android.tools.r8.utils.LensUtils.rewriteAndApplyIfNotPrimitiveType; @@ -63,14 +63,62 @@ import com.android.tools.r8.position.MethodPosition; import com.android.tools.r8.position.Position; import com.android.tools.r8.repackaging.RepackagingUtils; +import com.android.tools.r8.shaking.AnnotationMatchResult; import com.android.tools.r8.shaking.AnnotationMatchResult.AnnotationsIgnoredMatchResult; import com.android.tools.r8.shaking.AnnotationMatchResult.ConcreteAnnotationMatchResult; import com.android.tools.r8.shaking.AnnotationMatchResult.MatchedAnnotation; +import com.android.tools.r8.shaking.AppInfoWithLiveness; +import com.android.tools.r8.shaking.CheckEnumUnboxedRule; +import com.android.tools.r8.shaking.ClassInlineRule; +import com.android.tools.r8.shaking.ConvertCheckNotNullRule; +import com.android.tools.r8.shaking.DependentMinimumKeepInfoCollection; +import com.android.tools.r8.shaking.DexStringCache; +import com.android.tools.r8.shaking.Enqueuer; +import com.android.tools.r8.shaking.EnqueuerEvent; import com.android.tools.r8.shaking.EnqueuerEvent.InstantiatedClassEnqueuerEvent; import com.android.tools.r8.shaking.EnqueuerEvent.LiveClassEnqueuerEvent; import com.android.tools.r8.shaking.EnqueuerEvent.UnconditionalKeepInfoEvent; +import com.android.tools.r8.shaking.InlineRule; +import com.android.tools.r8.shaking.InterfaceMethodSyntheticBridgeAction; import com.android.tools.r8.shaking.KeepAnnotationCollectionInfo.RetentionInfo; +import com.android.tools.r8.shaking.KeepConstantArgumentRule; import com.android.tools.r8.shaking.KeepInfo.Joiner; +import com.android.tools.r8.shaking.KeepUnusedArgumentRule; +import com.android.tools.r8.shaking.KeepUnusedReturnValueRule; +import com.android.tools.r8.shaking.MaximumRemovedAndroidLogLevelRule; +import com.android.tools.r8.shaking.MinimumKeepInfoCollection; +import com.android.tools.r8.shaking.NoAccessModificationRule; +import com.android.tools.r8.shaking.NoFieldTypeStrengtheningRule; +import com.android.tools.r8.shaking.NoHorizontalClassMergingRule; +import com.android.tools.r8.shaking.NoMethodStaticizingRule; +import com.android.tools.r8.shaking.NoParameterReorderingRule; +import com.android.tools.r8.shaking.NoParameterTypeStrengtheningRule; +import com.android.tools.r8.shaking.NoRedundantFieldLoadEliminationRule; +import com.android.tools.r8.shaking.NoReturnTypeStrengtheningRule; +import com.android.tools.r8.shaking.NoUnusedInterfaceRemovalRule; +import com.android.tools.r8.shaking.NoValuePropagationRule; +import com.android.tools.r8.shaking.NoVerticalClassMergingRule; +import com.android.tools.r8.shaking.ProguardAssumeMayHaveSideEffectsRule; +import com.android.tools.r8.shaking.ProguardAssumeNoSideEffectRule; +import com.android.tools.r8.shaking.ProguardAssumeValuesRule; +import com.android.tools.r8.shaking.ProguardCheckDiscardRule; +import com.android.tools.r8.shaking.ProguardClassFilter; +import com.android.tools.r8.shaking.ProguardConfigurationRule; +import com.android.tools.r8.shaking.ProguardIdentifierNameStringRule; +import com.android.tools.r8.shaking.ProguardIfRule; +import com.android.tools.r8.shaking.ProguardIfRulePreconditionMatch; +import com.android.tools.r8.shaking.ProguardKeepAttributes; +import com.android.tools.r8.shaking.ProguardKeepRule; +import com.android.tools.r8.shaking.ProguardKeepRuleBase; +import com.android.tools.r8.shaking.ProguardKeepRuleModifiers; +import com.android.tools.r8.shaking.ProguardMemberRule; +import com.android.tools.r8.shaking.ProguardMemberRuleValue; +import com.android.tools.r8.shaking.ProguardTypeMatcher; +import com.android.tools.r8.shaking.ReprocessClassInitializerRule; +import com.android.tools.r8.shaking.ReprocessMethodRule; +import com.android.tools.r8.shaking.WhyAreYouKeepingRule; +import com.android.tools.r8.shaking.WhyAreYouNotInliningRule; +import com.android.tools.r8.shaking.WhyAreYouNotObfuscatingRule; import com.android.tools.r8.shaking.assume.AssumeInfoCollection; import com.android.tools.r8.shaking.assume.AssumeMethodInfoCollection; import com.android.tools.r8.shaking.rules.ReferencedFromExcludedClassInR8PartialRule; @@ -196,10 +244,7 @@ private RootSetBuilder( AppView<? extends AppInfoWithClassHierarchy> appView, ImmediateAppSubtypingInfo subtypingInfo) { - this( - appView, - subtypingInfo, - null); + this(appView, subtypingInfo, null); } public DependentMinimumKeepInfoCollection getDependentMinimumKeepInfo() { @@ -497,7 +542,7 @@ } } - void runPerRule( + public void runPerRule( TaskCollection<?> tasks, ProguardConfigurationRule rule, ProguardIfRulePreconditionMatch ifRulePreconditionMatch, @@ -742,7 +787,7 @@ } } - ConsequentRootSet buildConsequentRootSet() { + public ConsequentRootSet buildConsequentRootSet() { return new ConsequentRootSet( dependentMinimumKeepInfo, dependentKeepClassCompatRule, @@ -1183,21 +1228,22 @@ out.close(); } - static boolean satisfyNonSyntheticClass(DexClass clazz, AppView<?> appView) { + public static boolean satisfyNonSyntheticClass(DexClass clazz, AppView<?> appView) { return !clazz.isProgramClass() || !appView.getSyntheticItems().isSynthetic(clazz.asProgramClass()); } - static boolean satisfyClassType(ProguardConfigurationRule rule, DexClass clazz) { + public static boolean satisfyClassType(ProguardConfigurationRule rule, DexClass clazz) { return rule.getClassType().matches(clazz) != rule.getClassTypeNegated(); } - static boolean satisfyAccessFlag(ProguardConfigurationRule rule, DexClass clazz) { + public static boolean satisfyAccessFlag(ProguardConfigurationRule rule, DexClass clazz) { return rule.getClassAccessFlags().containsAll(clazz.accessFlags) && rule.getNegatedClassAccessFlags().containsNone(clazz.accessFlags); } - static AnnotationMatchResult satisfyAnnotation(ProguardConfigurationRule rule, DexClass clazz) { + public static AnnotationMatchResult satisfyAnnotation( + ProguardConfigurationRule rule, DexClass clazz) { return containsAllAnnotations(rule.getClassAnnotations(), clazz); } @@ -1224,7 +1270,7 @@ return getMethodSatisfyingRule(rule, methods) != null; } - DexClassAndMethod getMethodSatisfyingRule( + public DexClassAndMethod getMethodSatisfyingRule( ProguardMemberRule rule, Iterable<DexClassAndMethod> methods) { if (rule.getRuleType().includesMethods()) { for (DexClassAndMethod method : methods) { @@ -1236,7 +1282,8 @@ return null; } - boolean ruleSatisfiedByFields(ProguardMemberRule rule, Iterable<DexClassAndField> fields) { + public boolean ruleSatisfiedByFields( + ProguardMemberRule rule, Iterable<DexClassAndField> fields) { if (rule.getRuleType().includesFields()) { for (DexClassAndField field : fields) { if (rule.matches(field, appView, this::handleMatchedAnnotation, dexStringCache)) { @@ -1247,17 +1294,18 @@ return false; } - boolean sideEffectFreeIsRuleSatisfiedByField(ProguardMemberRule rule, DexClassAndField field) { + public boolean sideEffectFreeIsRuleSatisfiedByField( + ProguardMemberRule rule, DexClassAndField field) { return rule.matches(field, appView, ignore -> {}, dexStringCache); } - static AnnotationMatchResult containsAllAnnotations( + public static AnnotationMatchResult containsAllAnnotations( List<ProguardTypeMatcher> annotationMatchers, DexClass clazz) { return containsAllAnnotations( annotationMatchers, clazz, clazz.annotations(), AnnotatedKind.TYPE); } - static <D extends DexEncodedMember<D, R>, R extends DexMember<D, R>> + public static <D extends DexEncodedMember<D, R>, R extends DexMember<D, R>> boolean containsAllAnnotations( List<ProguardTypeMatcher> annotationMatchers, DexClassAndMember<D, R> member, @@ -1426,7 +1474,7 @@ } } - synchronized void addItemToSets( + public synchronized void addItemToSets( Definition item, ProguardConfigurationRule context, ProguardMemberRule rule, @@ -2192,11 +2240,12 @@ } } - abstract static class RootSetBase { + public abstract static class RootSetBase { private final DependentMinimumKeepInfoCollection dependentMinimumKeepInfo; - final Map<DexType, Set<ProguardKeepRuleBase>> dependentKeepClassCompatRule; - final List<InterfaceMethodSyntheticBridgeAction> delayedInterfaceMethodSyntheticBridgeActions; + public final Map<DexType, Set<ProguardKeepRuleBase>> dependentKeepClassCompatRule; + public final List<InterfaceMethodSyntheticBridgeAction> + delayedInterfaceMethodSyntheticBridgeActions; public final ProgramMethodMap<ProgramMethod> pendingMethodMoveInverse; RootSetBase( @@ -2211,7 +2260,7 @@ this.pendingMethodMoveInverse = pendingMethodMoveInverse; } - Set<ProguardKeepRuleBase> getDependentKeepClassCompatRule(DexType type) { + public Set<ProguardKeepRuleBase> getDependentKeepClassCompatRule(DexType type) { return dependentKeepClassCompatRule.get(type); } @@ -2291,7 +2340,7 @@ } } - void addConsequentRootSet(ConsequentRootSet consequentRootSet) { + public void addConsequentRootSet(ConsequentRootSet consequentRootSet) { consequentRootSet.dependentKeepClassCompatRule.forEach( (type, rules) -> dependentKeepClassCompatRule @@ -2381,7 +2430,7 @@ return rewrittenRootSet; } - void shouldNotBeMinified(ProgramDefinition definition) { + public void shouldNotBeMinified(ProgramDefinition definition) { getDependentMinimumKeepInfo() .getOrCreateUnconditionalMinimumKeepInfoFor(definition.getReference()) .disallowMinification() @@ -2554,14 +2603,11 @@ AppView<? extends AppInfoWithClassHierarchy> appView, ImmediateAppSubtypingInfo subtypingInfo, Iterable<? extends ProguardConfigurationRule> rules) { - return new RootSetBuilder( - appView, - subtypingInfo, - rules); + return new RootSetBuilder(appView, subtypingInfo, rules); } } - static class ConsequentRootSetBuilder extends RootSetBuilder { + public static class ConsequentRootSetBuilder extends RootSetBuilder { private final Enqueuer enqueuer; @@ -2577,7 +2623,7 @@ } @Override - void handleMatchedAnnotation(AnnotationMatchResult annotationMatchResult) { + public void handleMatchedAnnotation(AnnotationMatchResult annotationMatchResult) { if (enqueuer.getMode().isInitialTreeShaking() && annotationMatchResult.isConcreteAnnotationMatchResult()) { enqueuer.retainAnnotationForFinalTreeShaking( @@ -2607,7 +2653,7 @@ pendingMethodMoveInverse); } - static ConsequentRootSetBuilder builder( + public static ConsequentRootSetBuilder builder( AppView<? extends AppInfoWithClassHierarchy> appView, Enqueuer enqueuer) { return new ConsequentRootSetBuilder(appView, enqueuer, enqueuer.getSubtypingInfo()); } @@ -2674,7 +2720,7 @@ } @Override - void shouldNotBeMinified(ProgramDefinition definition) { + public void shouldNotBeMinified(ProgramDefinition definition) { // Do nothing. }
diff --git a/src/test/java/com/android/tools/r8/ir/InlineTest.java b/src/test/java/com/android/tools/r8/ir/InlineTest.java index d48c4dc..38b3ff6 100644 --- a/src/test/java/com/android/tools/r8/ir/InlineTest.java +++ b/src/test/java/com/android/tools/r8/ir/InlineTest.java
@@ -30,7 +30,7 @@ import com.android.tools.r8.shaking.EnqueuerResult; import com.android.tools.r8.shaking.ProguardConfiguration; import com.android.tools.r8.shaking.ProguardKeepRule; -import com.android.tools.r8.shaking.RootSetUtils.RootSet; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSet; import com.android.tools.r8.smali.SmaliBuilder; import com.android.tools.r8.smali.SmaliBuilder.MethodSignature; import com.android.tools.r8.utils.AndroidApp;
diff --git a/src/test/testbase/java/com/android/tools/r8/TestBase.java b/src/test/testbase/java/com/android/tools/r8/TestBase.java index 886e0ab..48cfc23 100644 --- a/src/test/testbase/java/com/android/tools/r8/TestBase.java +++ b/src/test/testbase/java/com/android/tools/r8/TestBase.java
@@ -74,7 +74,7 @@ import com.android.tools.r8.shaking.ProguardMemberRule; import com.android.tools.r8.shaking.ProguardMemberType; import com.android.tools.r8.shaking.ProguardTypeMatcher; -import com.android.tools.r8.shaking.RootSetUtils.RootSet; +import com.android.tools.r8.shaking.rootset.RootSetUtils.RootSet; import com.android.tools.r8.synthesis.SyntheticItems.GlobalSyntheticsStrategy; import com.android.tools.r8.transformers.ClassFileTransformer; import com.android.tools.r8.utils.AndroidApiLevel;