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;