Make JdkObsolete an error.
Most existing usages are of LinkedList and these have been suppressed
with the intention of fixing them in follow-up work. New usages are
now avoided.
Bug: b/270398965
Change-Id: I236f3fd9e74fe652279c3bac66cb758769ebe625
diff --git a/build.gradle b/build.gradle
index 11cc609..b86fc5a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -701,7 +701,6 @@
options.errorprone.check('NarrowingCompoundAssignment', CheckSeverity.ERROR)
// TODO(b/270534077): These should likely be fixed/suppressed and become hard failures.
- options.errorprone.check('JdkObsolete', CheckSeverity.OFF)
options.errorprone.check('UnusedVariable', CheckSeverity.OFF)
options.errorprone.check('EqualsUnsafeCast', CheckSeverity.OFF)
options.errorprone.check('TypeParameterUnusedInFormals', CheckSeverity.OFF)
diff --git a/d8_r8/main/build.gradle.kts b/d8_r8/main/build.gradle.kts
index 583a055..fda414f 100644
--- a/d8_r8/main/build.gradle.kts
+++ b/d8_r8/main/build.gradle.kts
@@ -48,7 +48,6 @@
options.errorprone.error("NarrowingCompoundAssignment")
// TODO(b/270534077): These should likely be fixed/suppressed and become hard failures.
- options.errorprone.disable("JdkObsolete")
options.errorprone.disable("UnusedVariable")
options.errorprone.disable("EqualsUnsafeCast")
options.errorprone.disable("TypeParameterUnusedInFormals")
diff --git a/src/main/java/com/android/tools/r8/cf/CfRegisterAllocator.java b/src/main/java/com/android/tools/r8/cf/CfRegisterAllocator.java
index 6fd3574..8ec6ba4d 100644
--- a/src/main/java/com/android/tools/r8/cf/CfRegisterAllocator.java
+++ b/src/main/java/com/android/tools/r8/cf/CfRegisterAllocator.java
@@ -96,9 +96,13 @@
private final List<LiveIntervals> liveIntervals = new ArrayList<>();
// List of active intervals.
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private final List<LiveIntervals> active = new LinkedList<>();
// List of intervals where the current instruction falls into one of their live range holes.
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private final List<LiveIntervals> inactive = new LinkedList<>();
// List of intervals that no register has been allocated to sorted by first live range.
diff --git a/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java b/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java
index 5a62bfb..4d10674 100644
--- a/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java
+++ b/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java
@@ -514,6 +514,8 @@
* I5 --> I1, I2<br>
* I3 and I4 will be in the same group even if they have no relation with each other.
*/
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private List<ClassGroup> collectInheritanceGroups() {
// Considering classes are the nodes of a graph which edges are the inheritance relation between
// classes. We just want to isolate every connected sub-graphs.
diff --git a/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java b/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java
index 785158d..a68f99f 100644
--- a/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java
+++ b/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java
@@ -252,6 +252,8 @@
return code.getDebugInfo();
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private List<DexInstruction> expandCode() {
LinkedList<DexInstruction> instructions = new LinkedList<>();
Collections.addAll(instructions, method.getCode().asDexCode().instructions);
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassInstanceFieldsMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassInstanceFieldsMerger.java
index 195a8fc..f43d5ec 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassInstanceFieldsMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassInstanceFieldsMerger.java
@@ -103,6 +103,8 @@
}
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
static Map<InstanceFieldInfo, LinkedList<DexEncodedField>> getAvailableFieldsByExactInfo(
DexProgramClass target) {
Map<InstanceFieldInfo, LinkedList<DexEncodedField>> availableFieldsByInfo =
@@ -115,6 +117,8 @@
return availableFieldsByInfo;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
static Map<InstanceFieldInfo, LinkedList<DexEncodedField>> getAvailableFieldsByRelaxedInfo(
AppView<? extends AppInfoWithClassHierarchy> appView,
Map<InstanceFieldInfo, LinkedList<DexEncodedField>> availableFieldsByExactInfo) {
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java
index 299c516..8fc788b 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java
@@ -332,6 +332,8 @@
}
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private List<MergeGroup> getInitialGroups() {
MergeGroup initialClassGroup = new MergeGroup();
MergeGroup initialInterfaceGroup = new MergeGroup();
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/MergeGroup.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/MergeGroup.java
index fe08b37..e0f2b3b 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/MergeGroup.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/MergeGroup.java
@@ -31,6 +31,8 @@
public static class Metadata {}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private final LinkedList<DexProgramClass> classes;
private DexField classIdField;
@@ -39,6 +41,8 @@
private BidirectionalManyToOneMap<DexEncodedField, DexEncodedField> instanceFieldMap;
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public MergeGroup() {
this.classes = new LinkedList<>();
}
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/PolicyExecutor.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/PolicyExecutor.java
index c206e75..28ec89d 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/PolicyExecutor.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/PolicyExecutor.java
@@ -34,6 +34,8 @@
}
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private LinkedList<MergeGroup> applyMultiClassPolicy(
MultiClassPolicy policy, LinkedList<MergeGroup> groups) {
// For each group apply the multi class policy and add all the new groups together.
@@ -51,6 +53,8 @@
return newGroups;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private <T> LinkedList<MergeGroup> applyMultiClassPolicyWithPreprocessing(
MultiClassPolicyWithPreprocessing<T> policy,
LinkedList<MergeGroup> groups,
@@ -77,6 +81,8 @@
* policies registered to this policy executor on the class groups yielding a new collection of
* class groups.
*/
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public Collection<MergeGroup> run(
Collection<MergeGroup> inputGroups,
Collection<Policy> policies,
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/AtMostOneClassThatMatchesPolicy.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/AtMostOneClassThatMatchesPolicy.java
index c73675f..17bb034 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/AtMostOneClassThatMatchesPolicy.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/AtMostOneClassThatMatchesPolicy.java
@@ -17,6 +17,8 @@
public abstract class AtMostOneClassThatMatchesPolicy extends MultiClassPolicy {
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
@Override
public Collection<MergeGroup> apply(MergeGroup group) {
// Create a new merge group for each class that we want at most one of.
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/LimitClassGroups.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/LimitClassGroups.java
index 55d0472..15070c2 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/LimitClassGroups.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/LimitClassGroups.java
@@ -24,6 +24,8 @@
assert maxGroupSize >= 2;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
@Override
public Collection<MergeGroup> apply(MergeGroup group) {
if (group.size() <= maxGroupSize || group.isInterfaceGroup()) {
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoClassInitializerCycles.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoClassInitializerCycles.java
index 744154c..b1ad665 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoClassInitializerCycles.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoClassInitializerCycles.java
@@ -106,6 +106,8 @@
this.appView = appView;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
@Override
public Collection<MergeGroup> apply(MergeGroup group, Void nothing) {
// Partition the merge group into smaller groups that may be merged. If the class initialization
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDeadLocks.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDeadLocks.java
index 576e0ef..f120117 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDeadLocks.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoDeadLocks.java
@@ -25,6 +25,8 @@
return appView.appInfo().isLockCandidate(clazz.type) || clazz.hasStaticSynchronizedMethods();
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
@Override
public Collection<MergeGroup> apply(MergeGroup group) {
// Gather all synchronized classes.
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoWeakerAccessPrivileges.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoWeakerAccessPrivileges.java
index 600b5a8..2305438 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoWeakerAccessPrivileges.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoWeakerAccessPrivileges.java
@@ -43,6 +43,8 @@
this.immediateSubtypingInfo = immediateSubtypingInfo;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
@Override
public Collection<MergeGroup> apply(MergeGroup group) {
List<MergeGroup> newMergeGroups = new LinkedList<>();
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/OnlyDirectlyConnectedOrUnrelatedInterfaces.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/OnlyDirectlyConnectedOrUnrelatedInterfaces.java
index 6d54364..fd24d1f 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/OnlyDirectlyConnectedOrUnrelatedInterfaces.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/OnlyDirectlyConnectedOrUnrelatedInterfaces.java
@@ -70,6 +70,8 @@
this.mode = mode;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
@Override
public Collection<MergeGroup> apply(MergeGroup group, SubtypingInfo subtypingInfo) {
if (!group.isInterfaceGroup()) {
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/PreserveMethodCharacteristics.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/PreserveMethodCharacteristics.java
index a6e27f5..60f57e4 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/PreserveMethodCharacteristics.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/PreserveMethodCharacteristics.java
@@ -135,6 +135,8 @@
}
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
@Override
public Collection<MergeGroup> apply(MergeGroup group) {
List<TargetGroup> groups = new ArrayList<>();
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java b/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
index 0ac3c7e..69ef71c 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/constant/SparseConditionalConstantPropagation.java
@@ -36,8 +36,13 @@
private final AppView<?> appView;
private final IRCode code;
private final Map<Value, LatticeElement> mapping = new HashMap<>();
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private final Deque<Value> ssaEdges = new LinkedList<>();
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private final Deque<BasicBlock> flowEdges = new LinkedList<>();
+
private final int maxBlockNumber;
private final BitSet[] executableFlowEdges;
private final BitSet visitedBlocks;
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/proto/schema/ProtoMessageInfo.java b/src/main/java/com/android/tools/r8/ir/analysis/proto/schema/ProtoMessageInfo.java
index 69d0ae9..631502d 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/proto/schema/ProtoMessageInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/proto/schema/ProtoMessageInfo.java
@@ -26,8 +26,14 @@
private int flags;
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private LinkedList<ProtoFieldInfo> fields;
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private LinkedList<ProtoFieldObject> hasBitsObjects;
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private LinkedList<ProtoOneOfObjectPair> oneOfObjects;
private Builder(ProgramMethod dynamicMethod) {
@@ -38,6 +44,8 @@
this.flags = value;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public void addField(ProtoFieldInfo field) {
if (fields == null) {
fields = new LinkedList<>();
@@ -45,6 +53,8 @@
fields.add(field);
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public void addHasBitsObject(ProtoFieldObject hasBitsObject) {
if (hasBitsObjects == null) {
hasBitsObjects = new LinkedList<>();
@@ -52,6 +62,8 @@
hasBitsObjects.add(hasBitsObject);
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public void addOneOfObject(ProtoFieldObject oneOfObject, ProtoFieldObject oneOfCaseObject) {
if (oneOfObjects == null) {
oneOfObjects = new LinkedList<>();
diff --git a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
index 3827b37..276150a 100644
--- a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
+++ b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
@@ -169,7 +169,10 @@
// Catch handler information about which successors are catch handlers and what their guards are.
private CatchHandlers<Integer> catchHandlers = CatchHandlers.EMPTY_INDICES;
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private LinkedList<Instruction> instructions = new LinkedList<>();
+
private int number = -1;
private List<Phi> phis = new ArrayList<>();
@@ -1413,6 +1416,8 @@
* Remove a number of instructions. The instructions to remove are given as indexes in the
* instruction stream.
*/
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public void removeInstructions(List<Integer> toRemove) {
if (!toRemove.isEmpty()) {
LinkedList<Instruction> newInstructions = new LinkedList<>();
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCode.java b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
index 56f1150..a46b0a2 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCode.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
@@ -447,10 +447,11 @@
}
/**
- * Trace blocks and attempt to put fallthrough blocks immediately after the block that
- * falls through. When we fail to do that we create a new fallthrough block with an explicit
- * goto to the actual fallthrough block.
+ * Trace blocks and attempt to put fallthrough blocks immediately after the block that falls
+ * through. When we fail to do that we create a new fallthrough block with an explicit goto to the
+ * actual fallthrough block.
*/
+ @SuppressWarnings("JdkObsolete") // Consider replacing the use of LinkedList.
public void traceBlocks() {
// Get the blocks first, as calling topologicallySortedBlocks also sets marks.
ImmutableList<BasicBlock> sorted = topologicallySortedBlocks();
diff --git a/src/main/java/com/android/tools/r8/ir/code/Value.java b/src/main/java/com/android/tools/r8/ir/code/Value.java
index f4c211f..d7b86fe 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Value.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Value.java
@@ -167,9 +167,17 @@
protected final int number;
public Instruction definition = null;
+
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private LinkedList<Instruction> users = new LinkedList<>();
+
private Set<Instruction> uniqueUsers = null;
+
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private LinkedList<Phi> phiUsers = new LinkedList<>();
+
private Set<Phi> uniquePhiUsers = null;
private Value nextConsecutive = null;
private Value previousConsecutive = null;
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
index 35c6667..c9bc10c 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
@@ -375,6 +375,8 @@
private final Reference2IntMap<BasicBlock> offsets = new Reference2IntOpenHashMap<>();
// Worklist of reachable blocks.
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private final Queue<Integer> traceBlocksWorklist = new LinkedList<>();
// Bitmap to ensure we don't process an instruction more than once.
@@ -384,9 +386,13 @@
private Set<Integer> processedSubroutineInstructions = null;
// Worklist for SSA construction.
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private final Queue<WorklistItem> ssaWorklist = new LinkedList<>();
// Basic blocks. Added after processing from the worklist.
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private final LinkedList<BasicBlock> blocks = new LinkedList<>();
private BasicBlock entryBlock = null;
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
index 80abf84..362d883 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
@@ -867,6 +867,8 @@
// argument instruction
// - Removes unused arguments
// - Updates the type of arguments whose type has been strengthened
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private void rewriteArguments(
IRCode code,
DexMethod originalMethodReference,
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/callgraph/CycleEliminator.java b/src/main/java/com/android/tools/r8/ir/conversion/callgraph/CycleEliminator.java
index dbae4a9..52dd9bc 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/callgraph/CycleEliminator.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/callgraph/CycleEliminator.java
@@ -393,6 +393,8 @@
return false;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private LinkedList<Node> extractCycle(Node entry) {
LinkedList<Node> cycle = new LinkedList<>();
do {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java b/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java
index 788afd1..8ac1b02 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CovariantReturnTypeAnnotationTransformer.java
@@ -54,18 +54,18 @@
// the contained CovariantReturnType annotations.
public final class CovariantReturnTypeAnnotationTransformer {
- private final AppView<?> appView;
private final IRConverter converter;
private final MethodProcessorEventConsumer methodProcessorEventConsumer =
MethodProcessorEventConsumer.empty();
private final DexItemFactory factory;
public CovariantReturnTypeAnnotationTransformer(AppView<?> appView, IRConverter converter) {
- this.appView = appView;
this.converter = converter;
this.factory = appView.dexItemFactory();
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public void process(
DexApplication.Builder<?> builder,
CovariantReturnTypeAnnotationTransformerEventConsumer eventConsumer) {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineWrapperConverter.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineWrapperConverter.java
index e471367..e8c8073 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineWrapperConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/specificationconversion/HumanToMachineWrapperConverter.java
@@ -136,6 +136,8 @@
});
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private LinkedHashMap<DexType, WrapperDescriptorBuilder> orderDescriptors(
Map<DexType, WrapperDescriptorBuilder> descriptors) {
LinkedHashMap<DexType, WrapperDescriptorBuilder> orderedDescriptors = new LinkedHashMap<>();
@@ -155,6 +157,8 @@
return orderedDescriptors;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private void finalizeWrapperDescriptors(
LinkedHashMap<DexType, WrapperDescriptorBuilder> descriptors,
MachineRewritingFlags.Builder builder) {
@@ -171,6 +175,8 @@
});
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private void fillDescriptors(
DexClass wrapperClass,
Set<DexMethod> excludedMethods,
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index cd2c596..9f985e9 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -636,6 +636,8 @@
* Covert the switch instruction to a sequence of if instructions checking for a specified set of
* keys, followed by a new switch with the remaining keys.
*/
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
void convertSwitchToSwitchAndIfs(
IRCode code,
ListIterator<BasicBlock> blocksIterator,
diff --git a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
index 8d146ad..90c6c2b 100644
--- a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
+++ b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
@@ -151,8 +151,12 @@
// List of all top-level live intervals for all SSA values.
private List<LiveIntervals> liveIntervals = new ArrayList<>();
// List of active intervals.
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private List<LiveIntervals> active = new LinkedList<>();
// List of intervals where the current instruction falls into one of their live range holes.
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
protected List<LiveIntervals> inactive = new LinkedList<>();
// List of intervals that no register has been allocated to sorted by first live range.
protected PriorityQueue<LiveIntervals> unhandled = new PriorityQueue<>();
@@ -243,6 +247,8 @@
clearState();
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public static void computeDebugInfo(
IRCode code,
ImmutableList<BasicBlock> blocks,
@@ -1112,6 +1118,8 @@
* allocated and have been moved from unhandled to inactive. The move sources have their hints
* updated. The rest of the register allocation state is unchanged.
*/
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private void allocateArgumentIntervalsWithSrc(LiveIntervals srcInterval, ArgumentReuseMode mode) {
Value value = srcInterval.getValue();
for (Instruction instruction : value.uniqueUsers()) {
diff --git a/src/main/java/com/android/tools/r8/ir/regalloc/RegisterMoveScheduler.java b/src/main/java/com/android/tools/r8/ir/regalloc/RegisterMoveScheduler.java
index f7e377d..5251d17 100644
--- a/src/main/java/com/android/tools/r8/ir/regalloc/RegisterMoveScheduler.java
+++ b/src/main/java/com/android/tools/r8/ir/regalloc/RegisterMoveScheduler.java
@@ -60,6 +60,8 @@
valueMap.put(move.dst, move.dst);
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public void schedule() {
assert everyDestinationOnlyWrittenOnce();
diff --git a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
index cc64c4e..b287683 100644
--- a/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
+++ b/src/main/java/com/android/tools/r8/lightir/Lir2IRConverter.java
@@ -157,6 +157,8 @@
advanceNextPositionEntry();
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public IRCode getIRCode(ProgramMethod method) {
LinkedList<BasicBlock> blockList = new LinkedList<>();
IntList blockIndices = new IntArrayList(blocks.keySet());
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorIROptimizer.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorIROptimizer.java
index f92af83..c76e842 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorIROptimizer.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagatorIROptimizer.java
@@ -33,6 +33,8 @@
* {@link Assume} instructions when non-trivial information is known about non-constant arguments
* such as their nullability, dynamic type, interval, etc.
*/
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public static void optimize(
AppView<AppInfoWithLiveness> appView,
IRCode code,
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 b46adc0..a30bcf4 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -3833,6 +3833,8 @@
private Map<DexMethod, MethodProcessingContext> methodProcessingContexts =
new ConcurrentHashMap<>();
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
private final List<ProgramMethod> desugaredMethods = new LinkedList<>();
private final Map<DexMethod, ProgramMethod> liveMethods = new ConcurrentHashMap<>();
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardClassSpecification.java b/src/main/java/com/android/tools/r8/shaking/ProguardClassSpecification.java
index e13dc82..dd14eea 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardClassSpecification.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardClassSpecification.java
@@ -34,6 +34,8 @@
ImmutableList.builder();
protected ProguardTypeMatcher inheritanceClassName;
protected boolean inheritanceIsExtends = false;
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
protected List<ProguardMemberRule> memberRules = new LinkedList<>();
protected Builder() {
diff --git a/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java b/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
index 907ed11..352facd 100644
--- a/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
+++ b/src/main/java/com/android/tools/r8/shaking/RootSetUtils.java
@@ -95,7 +95,6 @@
import java.util.Map.Entry;
import java.util.Queue;
import java.util.Set;
-import java.util.Stack;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
@@ -512,7 +511,7 @@
ProguardIfRule ifRule) {
Set<Wrapper<DexMethod>> methodsMarked =
options.forceProguardCompatibility ? null : new HashSet<>();
- Stack<DexClass> worklist = new Stack<>();
+ Deque<DexClass> worklist = new ArrayDeque<>();
worklist.add(clazz);
while (!worklist.isEmpty()) {
DexClass currentClass = worklist.pop();
diff --git a/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java b/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
index d4f127a..483db26 100644
--- a/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
+++ b/src/main/java/com/android/tools/r8/shaking/WhyAreYouKeepingConsumer.java
@@ -25,10 +25,10 @@
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.StringUtils.BraceType;
import java.io.PrintStream;
+import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.IdentityHashMap;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -125,7 +125,7 @@
return null;
}
Map<GraphNode, GraphNode> seen = new IdentityHashMap<>();
- Deque<GraphPath> queue = new LinkedList<>();
+ Deque<GraphPath> queue = new ArrayDeque<>();
GraphPath path = null;
GraphNode current = node;
while (true) {
diff --git a/src/main/java/com/android/tools/r8/utils/ListUtils.java b/src/main/java/com/android/tools/r8/utils/ListUtils.java
index 55fe509..47549a6 100644
--- a/src/main/java/com/android/tools/r8/utils/ListUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/ListUtils.java
@@ -218,12 +218,16 @@
return builder.build();
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public static <T> LinkedList<T> newLinkedList(T element) {
LinkedList<T> list = new LinkedList<>();
list.add(element);
return list;
}
+ // TODO(b/270398965): Replace LinkedList.
+ @SuppressWarnings("JdkObsolete")
public static <T> LinkedList<T> newLinkedList(ForEachable<T> forEachable) {
LinkedList<T> list = new LinkedList<>();
forEachable.forEach(list::add);
diff --git a/src/main/java/com/android/tools/r8/utils/Timing.java b/src/main/java/com/android/tools/r8/utils/Timing.java
index b4519a9..3947cae 100644
--- a/src/main/java/com/android/tools/r8/utils/Timing.java
+++ b/src/main/java/com/android/tools/r8/utils/Timing.java
@@ -20,7 +20,6 @@
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Stack;
public class Timing {
@@ -75,7 +74,7 @@
}
private final Node top;
- private final Stack<Node> stack;
+ private final Deque<Node> stack;
private final boolean trackMemory;
@Deprecated
@@ -85,7 +84,7 @@
private Timing(String title, boolean trackMemory) {
this.trackMemory = trackMemory;
- stack = new Stack<>();
+ stack = new ArrayDeque<>();
top = new Node(title, trackMemory);
stack.push(top);
}