Remove use of guava Sets.newConcurrentHashSet
Change-Id: I2a2c769ecf8d0719f34bda7851f8aef0a49911e4
diff --git a/src/main/java/com/android/tools/r8/androidapi/AndroidApiReferenceLevelCache.java b/src/main/java/com/android/tools/r8/androidapi/AndroidApiReferenceLevelCache.java
index 627063c..83a0f5e 100644
--- a/src/main/java/com/android/tools/r8/androidapi/AndroidApiReferenceLevelCache.java
+++ b/src/main/java/com/android/tools/r8/androidapi/AndroidApiReferenceLevelCache.java
@@ -11,8 +11,8 @@
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.ConsumerUtils;
+import com.android.tools.r8.utils.SetUtils;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
import java.util.List;
import java.util.Set;
import java.util.function.BiConsumer;
@@ -25,7 +25,7 @@
private final DexItemFactory factory;
// Collection of unknown references attempteed to be looked up.
- private final Set<DexReference> unknownReferencesToReport = Sets.newConcurrentHashSet();
+ private final Set<DexReference> unknownReferencesToReport = SetUtils.newConcurrentHashSet();
private final boolean reportUnknownReferences;
private AndroidApiReferenceLevelCache(
diff --git a/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java b/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
index 07261a9..9aa3575 100644
--- a/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
+++ b/src/main/java/com/android/tools/r8/androidapi/ApiReferenceStubber.java
@@ -28,6 +28,7 @@
import com.android.tools.r8.synthesis.SyntheticItems;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.ListUtils;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.WorkList;
import com.google.common.collect.Sets;
@@ -50,8 +51,8 @@
private final AppView<?> appView;
private final Map<DexLibraryClass, Set<DexProgramClass>> referencingContexts =
new ConcurrentHashMap<>();
- private final Set<DexLibraryClass> libraryClassesToMock = Sets.newConcurrentHashSet();
- private final Set<DexType> seenTypes = Sets.newConcurrentHashSet();
+ private final Set<DexLibraryClass> libraryClassesToMock = SetUtils.newConcurrentHashSet();
+ private final Set<DexType> seenTypes = SetUtils.newConcurrentHashSet();
private final AndroidApiLevelCompute apiLevelCompute;
private final ApiReferenceStubberEventConsumer eventConsumer;
diff --git a/src/main/java/com/android/tools/r8/dex/CodeToKeep.java b/src/main/java/com/android/tools/r8/dex/CodeToKeep.java
index 24d6362..7fbe5b1 100644
--- a/src/main/java/com/android/tools/r8/dex/CodeToKeep.java
+++ b/src/main/java/com/android/tools/r8/dex/CodeToKeep.java
@@ -19,7 +19,7 @@
import com.android.tools.r8.utils.CollectionUtils;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.InternalOptions;
-import com.google.common.collect.Sets;
+import com.android.tools.r8.utils.SetUtils;
import java.util.Comparator;
import java.util.Map;
import java.util.Set;
@@ -58,8 +58,8 @@
private static class KeepStruct {
- Set<DexField> fields = Sets.newConcurrentHashSet();
- Set<DexMethod> methods = Sets.newConcurrentHashSet();
+ Set<DexField> fields = SetUtils.newConcurrentHashSet();
+ Set<DexMethod> methods = SetUtils.newConcurrentHashSet();
boolean all = false;
}
diff --git a/src/main/java/com/android/tools/r8/graph/PrunedItems.java b/src/main/java/com/android/tools/r8/graph/PrunedItems.java
index 200b351..3084436 100644
--- a/src/main/java/com/android/tools/r8/graph/PrunedItems.java
+++ b/src/main/java/com/android/tools/r8/graph/PrunedItems.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.graph;
+import com.android.tools.r8.utils.SetUtils;
import com.google.common.collect.Sets;
import java.util.Collection;
import java.util.Set;
@@ -216,7 +217,7 @@
@Override
<T> Set<T> newEmptySet() {
- return Sets.newConcurrentHashSet();
+ return SetUtils.newConcurrentHashSet();
}
@Override
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java
index 22a478f..a938964 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/fieldaccess/TrivialFieldAccessReprocessor.java
@@ -36,10 +36,10 @@
import com.android.tools.r8.ir.conversion.PostMethodProcessor;
import com.android.tools.r8.ir.optimize.info.OptimizationFeedbackDelayed;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.Timing;
import com.android.tools.r8.utils.collections.ProgramMethodSet;
-import com.google.common.collect.Sets;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -67,10 +67,10 @@
new ConcurrentHashMap<>();
/** Updated concurrently from {@link #processClass(DexProgramClass)}. */
- private final Set<DexEncodedField> constantFields = Sets.newConcurrentHashSet();
+ private final Set<DexEncodedField> constantFields = SetUtils.newConcurrentHashSet();
/** Updated concurrently from {@link #processClass(DexProgramClass)}. */
- private final Set<DexEncodedField> nonConstantFields = Sets.newConcurrentHashSet();
+ private final Set<DexEncodedField> nonConstantFields = SetUtils.newConcurrentHashSet();
/** Updated concurrently from {@link #processClass(DexProgramClass)}. */
private final ProgramMethodSet methodsToReprocess = ProgramMethodSet.createConcurrent();
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/ClassConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/ClassConverter.java
index ac5cc44..4cd864a 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/ClassConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/ClassConverter.java
@@ -15,10 +15,10 @@
import com.android.tools.r8.ir.desugar.itf.InterfaceProcessor;
import com.android.tools.r8.profile.rewriting.ProfileCollectionAdditions;
import com.android.tools.r8.utils.MapUtils;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.collections.ImmutableDeque;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
@@ -253,7 +253,7 @@
static class LibraryDesugaredClassConverter extends ClassConverter {
- private final Set<DexType> alreadyLibraryDesugared = Sets.newConcurrentHashSet();
+ private final Set<DexType> alreadyLibraryDesugared = SetUtils.newConcurrentHashSet();
LibraryDesugaredClassConverter(
AppView<?> appView,
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringEventConsumer.java b/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringEventConsumer.java
index ca51bd8..1c9ad52 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringEventConsumer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CfClassSynthesizerDesugaringEventConsumer.java
@@ -16,7 +16,7 @@
import com.android.tools.r8.ir.desugar.varhandle.VarHandleDesugaringEventConsumer;
import com.android.tools.r8.profile.rewriting.ProfileCollectionAdditions;
import com.android.tools.r8.profile.rewriting.ProfileRewritingCfClassSynthesizerDesugaringEventConsumer;
-import com.google.common.collect.Sets;
+import com.android.tools.r8.utils.SetUtils;
import java.util.Set;
public abstract class CfClassSynthesizerDesugaringEventConsumer
@@ -50,7 +50,7 @@
private static class D8R8CfClassSynthesizerDesugaringEventConsumer
extends CfClassSynthesizerDesugaringEventConsumer {
- private final Set<DexProgramClass> synthesizedClasses = Sets.newConcurrentHashSet();
+ private final Set<DexProgramClass> synthesizedClasses = SetUtils.newConcurrentHashSet();
@Override
public void acceptProgramEmulatedInterface(DexProgramClass clazz) {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java b/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java
index 2e14022..51976fb 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/UnrepresentableInDexInstructionRemover.java
@@ -37,9 +37,9 @@
import com.android.tools.r8.position.Position;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.SetUtils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
-import com.google.common.collect.Sets;
import java.util.List;
import java.util.Set;
import org.objectweb.asm.Opcodes;
@@ -57,7 +57,7 @@
final AndroidApiLevel supportedApiLevel;
// TODO(b/237250957): Using ConcurrentHashMap.newKeySet() causes failures on:
// HelloWorldCompiledOnArtTest.testHelloCompiledWithX8Dex[Y, api:21, spec: JDK8, D8_L8DEBUG]
- final Set<DexMethod> reported = Sets.newConcurrentHashSet();
+ final Set<DexMethod> reported = SetUtils.newConcurrentHashSet();
InstructionMatcher(AppView<?> appView, String descriptor, AndroidApiLevel supportedApiLevel) {
this.appView = appView;
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
index 8f6ad62..b14bc1d 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPICallbackSynthesizer.java
@@ -20,8 +20,8 @@
import com.android.tools.r8.ir.desugar.CfPostProcessingDesugaring;
import com.android.tools.r8.ir.desugar.CfPostProcessingDesugaringEventConsumer;
import com.android.tools.r8.ir.desugar.desugaredlibrary.machinespecification.MachineDesugaredLibrarySpecification;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.WorkList;
-import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
@@ -45,7 +45,7 @@
this.isLiveMethod = isLiveMethod;
this.wrapperSynthesizor = new DesugaredLibraryWrapperSynthesizer(appView);
if (appView.options().testing.trackDesugaredAPIConversions) {
- trackedCallBackAPIs = Sets.newConcurrentHashSet();
+ trackedCallBackAPIs = SetUtils.newConcurrentHashSet();
} else {
trackedCallBackAPIs = null;
}
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java
index f3e4457..afeb568 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/apiconversion/DesugaredLibraryAPIConverter.java
@@ -23,9 +23,9 @@
import com.android.tools.r8.ir.desugar.FreshLocalProvider;
import com.android.tools.r8.ir.desugar.LocalStackAllocator;
import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.StringDiagnostic;
import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
@@ -68,7 +68,7 @@
this.emulatedMethods = emulatedMethods;
this.wrapperSynthesizor = new DesugaredLibraryWrapperSynthesizer(appView);
if (appView.options().testing.trackDesugaredAPIConversions) {
- trackedAPIs = Sets.newConcurrentHashSet();
+ trackedAPIs = SetUtils.newConcurrentHashSet();
} else {
trackedAPIs = null;
}
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
index 7f4b1ce..f1aba56 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
@@ -109,6 +109,7 @@
import com.android.tools.r8.shaking.AppInfoWithLiveness;
import com.android.tools.r8.shaking.KeepInfoCollection;
import com.android.tools.r8.utils.Reporter;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.StringDiagnostic;
import com.android.tools.r8.utils.Timing;
import com.android.tools.r8.utils.TraversalContinuation;
@@ -152,7 +153,7 @@
// Map the enum candidates with their dependencies, i.e., the methods to reprocess for the given
// enum if the optimization eventually decides to unbox it.
private EnumUnboxingCandidateInfoCollection enumUnboxingCandidatesInfo;
- private final Set<DexProgramClass> candidatesToRemoveInWave = Sets.newConcurrentHashSet();
+ private final Set<DexProgramClass> candidatesToRemoveInWave = SetUtils.newConcurrentHashSet();
private final Map<DexType, EnumStaticFieldValues> staticFieldValuesMap =
new ConcurrentHashMap<>();
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateInfoCollection.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateInfoCollection.java
index 06cf453..6235749 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateInfoCollection.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingCandidateInfoCollection.java
@@ -18,7 +18,6 @@
import com.android.tools.r8.utils.collections.ProgramMethodSet;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Sets;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.Map;
@@ -30,7 +29,7 @@
private final Map<DexType, EnumUnboxingCandidateInfo> enumTypeToInfo = new ConcurrentHashMap<>();
private final Map<DexType, DexType> subEnumToSuperEnumMap = new IdentityHashMap<>();
- private final Set<DexMethod> prunedMethods = Sets.newConcurrentHashSet();
+ private final Set<DexMethod> prunedMethods = SetUtils.newConcurrentHashSet();
public void addCandidate(
AppView<AppInfoWithLiveness> appView,
@@ -167,7 +166,7 @@
private final DexProgramClass enumClass;
private final LongLivedProgramMethodSetBuilder<ProgramMethodSet> methodDependencies;
- private final Set<DexField> requiredInstanceFieldData = Sets.newConcurrentHashSet();
+ private final Set<DexField> requiredInstanceFieldData = SetUtils.newConcurrentHashSet();
private Set<DexProgramClass> subclasses = null;
diff --git a/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java b/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
index 41b4f59..8749939 100644
--- a/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
+++ b/src/main/java/com/android/tools/r8/optimize/MemberRebindingAnalysis.java
@@ -30,11 +30,11 @@
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.OptionalBool;
import com.android.tools.r8.utils.Pair;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.TriConsumer;
import com.android.tools.r8.utils.collections.ProgramMethodSet;
import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.IdentityHashMap;
@@ -554,7 +554,7 @@
private Set<DexField> computeNonReboundFieldReferences(ExecutorService executorService)
throws ExecutionException {
- Set<DexField> nonReboundFieldReferences = Sets.newConcurrentHashSet();
+ Set<DexField> nonReboundFieldReferences = SetUtils.newConcurrentHashSet();
ThreadUtils.processItems(
appView.appInfo()::forEachMethod,
method -> {
diff --git a/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLensFactory.java b/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLensFactory.java
index 6ae7365..d95c587 100644
--- a/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLensFactory.java
+++ b/src/main/java/com/android/tools/r8/optimize/MemberRebindingIdentityLensFactory.java
@@ -19,9 +19,9 @@
import com.android.tools.r8.graph.ProgramMethod;
import com.android.tools.r8.graph.UseRegistry;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.collections.ProgramMethodSet;
-import com.google.common.collect.Sets;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -84,8 +84,8 @@
MethodAccessInfoCollection.ConcurrentBuilder methodAccessInfoCollectionBuilder,
ExecutorService executorService)
throws ExecutionException {
- Set<DexField> seenFieldReferences = Sets.newConcurrentHashSet();
- Set<DexMethod> seenMethodReferences = Sets.newConcurrentHashSet();
+ Set<DexField> seenFieldReferences = SetUtils.newConcurrentHashSet();
+ Set<DexMethod> seenMethodReferences = SetUtils.newConcurrentHashSet();
ThreadUtils.processItems(
appView.appInfo()::forEachMethod,
method ->
diff --git a/src/main/java/com/android/tools/r8/optimize/accessmodification/AccessModifierLens.java b/src/main/java/com/android/tools/r8/optimize/accessmodification/AccessModifierLens.java
index 76da486..8810cd6 100644
--- a/src/main/java/com/android/tools/r8/optimize/accessmodification/AccessModifierLens.java
+++ b/src/main/java/com/android/tools/r8/optimize/accessmodification/AccessModifierLens.java
@@ -12,10 +12,10 @@
import com.android.tools.r8.graph.lens.MethodLookupResult;
import com.android.tools.r8.ir.code.InvokeType;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.collections.BidirectionalOneToOneHashMap;
import com.android.tools.r8.utils.collections.BidirectionalOneToOneMap;
import com.android.tools.r8.utils.collections.MutableBidirectionalOneToOneMap;
-import com.google.common.collect.Sets;
import java.util.Set;
public class AccessModifierLens extends DefaultNonIdentityGraphLens {
@@ -82,8 +82,9 @@
private final MutableBidirectionalOneToOneMap<DexMethod, DexMethod> methodMap =
new BidirectionalOneToOneHashMap<>();
- private final Set<DexMethod> publicizedPrivateInterfaceMethods = Sets.newConcurrentHashSet();
- private final Set<DexMethod> publicizedPrivateVirtualMethods = Sets.newConcurrentHashSet();
+ private final Set<DexMethod> publicizedPrivateInterfaceMethods =
+ SetUtils.newConcurrentHashSet();
+ private final Set<DexMethod> publicizedPrivateVirtualMethods = SetUtils.newConcurrentHashSet();
public Builder addPublicizedPrivateVirtualMethod(DexProgramClass holder, DexMethod method) {
if (holder.isInterface()) {
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagator.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagator.java
index 8a00318..f7baed9 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagator.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/ArgumentPropagator.java
@@ -21,10 +21,10 @@
import com.android.tools.r8.optimize.argumentpropagation.unusedarguments.EffectivelyUnusedArgumentsAnalysis;
import com.android.tools.r8.optimize.argumentpropagation.utils.ProgramClassesBidirectedGraph;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.Timing;
import com.android.tools.r8.utils.collections.DexMethodSignatureSet;
-import com.google.common.collect.Sets;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
@@ -178,7 +178,7 @@
// Using the computed optimization info, build a graph lens that describes the mapping from
// methods with constant parameters to methods with the constant parameters removed.
- Set<DexProgramClass> affectedClasses = Sets.newConcurrentHashSet();
+ Set<DexProgramClass> affectedClasses = SetUtils.newConcurrentHashSet();
ArgumentPropagatorGraphLens graphLens =
new ArgumentPropagatorProgramOptimizer(
appView, immediateSubtypingInfo, interfaceDispatchOutsideProgram)
diff --git a/src/main/java/com/android/tools/r8/optimize/interfaces/analysis/CfOpenClosedInterfacesAnalysis.java b/src/main/java/com/android/tools/r8/optimize/interfaces/analysis/CfOpenClosedInterfacesAnalysis.java
index 5d149ed..b870c4a 100644
--- a/src/main/java/com/android/tools/r8/optimize/interfaces/analysis/CfOpenClosedInterfacesAnalysis.java
+++ b/src/main/java/com/android/tools/r8/optimize/interfaces/analysis/CfOpenClosedInterfacesAnalysis.java
@@ -39,7 +39,6 @@
import com.android.tools.r8.utils.UnverifiableCfCodeDiagnostic;
import com.android.tools.r8.utils.WorkList;
import com.android.tools.r8.utils.collections.ProgramMethodMap;
-import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -55,7 +54,7 @@
private final CfAssignability assignability;
private final InternalOptions options;
- private final Set<DexClass> openInterfaces = Sets.newConcurrentHashSet();
+ private final Set<DexClass> openInterfaces = SetUtils.newConcurrentHashSet();
private final ProgramMethodMap<UnverifiableCfCodeDiagnostic> unverifiableCodeDiagnostics =
ProgramMethodMap.createConcurrent();
diff --git a/src/main/java/com/android/tools/r8/profile/rewriting/ProfileAdditions.java b/src/main/java/com/android/tools/r8/profile/rewriting/ProfileAdditions.java
index c21af30..b33a217 100644
--- a/src/main/java/com/android/tools/r8/profile/rewriting/ProfileAdditions.java
+++ b/src/main/java/com/android/tools/r8/profile/rewriting/ProfileAdditions.java
@@ -17,6 +17,7 @@
import com.android.tools.r8.profile.AbstractProfileClassRule;
import com.android.tools.r8.profile.AbstractProfileMethodRule;
import com.android.tools.r8.profile.AbstractProfileRule;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.WorkList;
import com.google.common.collect.Sets;
import java.util.ArrayList;
@@ -80,7 +81,7 @@
final Map<DexType, ClassRuleBuilder> classRuleAdditions = new ConcurrentHashMap<>();
final Map<DexMethod, MethodRuleBuilder> methodRuleAdditions = new ConcurrentHashMap<>();
- private final Set<DexMethod> methodRuleRemovals = Sets.newConcurrentHashSet();
+ private final Set<DexMethod> methodRuleRemovals = SetUtils.newConcurrentHashSet();
private final NestedMethodRuleAdditionsGraph<MethodRule, MethodRuleBuilder>
nestedMethodRuleAdditionsGraph = new NestedMethodRuleAdditionsGraph<>();
diff --git a/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java b/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java
index 8145a9b..50e39b4 100644
--- a/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java
+++ b/src/main/java/com/android/tools/r8/repackaging/RepackagingConstraintGraph.java
@@ -14,6 +14,7 @@
import com.android.tools.r8.graph.ProgramMethod;
import com.android.tools.r8.graph.ProgramPackage;
import com.android.tools.r8.shaking.AppInfoWithLiveness;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.WorkList;
import com.google.common.collect.Sets;
@@ -202,7 +203,7 @@
static class Node {
private final DexDefinition definitionForDebugging;
- private final Set<Node> neighbors = Sets.newConcurrentHashSet();
+ private final Set<Node> neighbors = SetUtils.newConcurrentHashSet();
Node(DexDefinition definitionForDebugging) {
this.definitionForDebugging = definitionForDebugging;
diff --git a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLivenessModifier.java b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLivenessModifier.java
index 32a8501..bf91868 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLivenessModifier.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLivenessModifier.java
@@ -8,14 +8,14 @@
import com.android.tools.r8.graph.DexProgramClass;
import com.android.tools.r8.graph.FieldAccessInfoCollectionImpl;
import com.android.tools.r8.graph.FieldAccessInfoImpl;
-import com.google.common.collect.Sets;
+import com.android.tools.r8.utils.SetUtils;
import java.util.Set;
/** Used to mutate AppInfoWithLiveness between waves. */
public class AppInfoWithLivenessModifier {
- private final Set<DexProgramClass> noLongerInstantiatedClasses = Sets.newConcurrentHashSet();
- private final Set<DexField> noLongerWrittenFields = Sets.newConcurrentHashSet();
+ private final Set<DexProgramClass> noLongerInstantiatedClasses = SetUtils.newConcurrentHashSet();
+ private final Set<DexField> noLongerWrittenFields = SetUtils.newConcurrentHashSet();
AppInfoWithLivenessModifier() {}
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 d1a5e2c..c2b3460 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -3956,7 +3956,7 @@
public void injectInterface(DexProgramClass clazz, DexClass newInterface) {
Set<DexClass> newInterfaces =
- injectedInterfaces.computeIfAbsent(clazz, ignored -> Sets.newConcurrentHashSet());
+ injectedInterfaces.computeIfAbsent(clazz, ignored -> SetUtils.newConcurrentHashSet());
newInterfaces.add(newInterface);
}
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index d361126..ea3b56f 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -111,7 +111,6 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.ArrayList;
@@ -1199,11 +1198,11 @@
}
/** A set of dexitems we have reported missing to dedupe warnings. */
- private final Set<DexItem> reportedMissingForDesugaring = Sets.newConcurrentHashSet();
+ private final Set<DexItem> reportedMissingForDesugaring = SetUtils.newConcurrentHashSet();
private final AtomicBoolean reportedErrorReadingKotlinMetadataReflectively =
new AtomicBoolean(false);
- private final Set<DexItem> invalidLibraryClasses = Sets.newConcurrentHashSet();
+ private final Set<DexItem> invalidLibraryClasses = SetUtils.newConcurrentHashSet();
public RuntimeException errorMissingNestHost(DexClass clazz) {
throw reporter.fatalError(
diff --git a/src/main/java/com/android/tools/r8/utils/SetUtils.java b/src/main/java/com/android/tools/r8/utils/SetUtils.java
index 05af36b..be05c5d 100644
--- a/src/main/java/com/android/tools/r8/utils/SetUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/SetUtils.java
@@ -27,8 +27,12 @@
return false;
}
+ public static <T> Set<T> newConcurrentHashSet() {
+ return ConcurrentHashMap.newKeySet();
+ }
+
public static <T> Set<T> newConcurrentHashSet(int capacity) {
- return Collections.newSetFromMap(new ConcurrentHashMap<>(capacity));
+ return ConcurrentHashMap.newKeySet(capacity);
}
public static <T> HashSet<T> newHashSet(T element) {
diff --git a/src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureSet.java b/src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureSet.java
index 901ef75..21c6032 100644
--- a/src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureSet.java
+++ b/src/main/java/com/android/tools/r8/utils/collections/DexMethodSignatureSet.java
@@ -8,8 +8,8 @@
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexMethod;
import com.android.tools.r8.graph.DexMethodSignature;
+import com.android.tools.r8.utils.SetUtils;
import com.google.common.collect.Iterables;
-import com.google.common.collect.Sets;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -38,7 +38,7 @@
}
public static DexMethodSignatureSet createConcurrent() {
- return new DexMethodSignatureSet(Sets.newConcurrentHashSet());
+ return new DexMethodSignatureSet(SetUtils.newConcurrentHashSet());
}
public static DexMethodSignatureSet createLinked() {
diff --git a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
index 1bc4f03..3e17faf 100644
--- a/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
+++ b/src/test/java/com/android/tools/r8/TestCompilerBuilder.java
@@ -20,13 +20,13 @@
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.ForwardingOutputStream;
import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.ThrowingOutputStream;
import com.android.tools.r8.utils.codeinspector.ArgumentPropagatorCodeScannerResultInspector;
import com.android.tools.r8.utils.codeinspector.EnumUnboxingInspector;
import com.android.tools.r8.utils.codeinspector.HorizontallyMergedClassesInspector;
import com.android.tools.r8.utils.codeinspector.VerticallyMergedClassesInspector;
import com.google.common.base.Suppliers;
-import com.google.common.collect.Sets;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
@@ -586,7 +586,7 @@
private static Set<String> computeAllGlobalSynthetics(int minApiLevel) {
try {
- Set<String> generatedGlobalSynthetics = Sets.newConcurrentHashSet();
+ Set<String> generatedGlobalSynthetics = SetUtils.newConcurrentHashSet();
GlobalSyntheticsGeneratorCommand command =
GlobalSyntheticsGeneratorCommand.builder()
.addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.API_DATABASE_LEVEL))
diff --git a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
index bda012e..ff2afbe 100644
--- a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
+++ b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
@@ -16,9 +16,9 @@
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.SetUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
-import com.google.common.collect.Sets;
import java.nio.file.Path;
import java.util.HashSet;
import java.util.Set;
@@ -78,7 +78,7 @@
@Test
public void testClassFileListOutput() throws Exception {
- Set<String> generatedGlobalSynthetics = Sets.newConcurrentHashSet();
+ Set<String> generatedGlobalSynthetics = SetUtils.newConcurrentHashSet();
Path output = temp.newFolder().toPath().resolve("output.zip");
runGlobalSyntheticsGenerator(
GlobalSyntheticsGeneratorCommand.builder()
diff --git a/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java b/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
index e6b6f0a..bc561cf 100644
--- a/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
+++ b/src/test/java/com/android/tools/r8/internal/GMSCoreV10Test.java
@@ -5,8 +5,6 @@
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.core.AnyOf.anyOf;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
import com.android.tools.r8.D8TestBuilder;
import com.android.tools.r8.D8TestCompileResult;
@@ -18,10 +16,8 @@
import com.android.tools.r8.ThrowableConsumer;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.utils.AndroidApiLevel;
-import com.google.common.collect.Sets;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.util.Set;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;