Use thread-safe seen set for unique context assertion.
This appears to be the cause of hanging processes on internal bots.
Change-Id: I0400f54827501674f5a7d1bbb4bef9f871e2c5da
diff --git a/src/main/java/com/android/tools/r8/contexts/CompilationContext.java b/src/main/java/com/android/tools/r8/contexts/CompilationContext.java
index b2cc211..f037883 100644
--- a/src/main/java/com/android/tools/r8/contexts/CompilationContext.java
+++ b/src/main/java/com/android/tools/r8/contexts/CompilationContext.java
@@ -8,8 +8,8 @@
import com.android.tools.r8.utils.InternalOptions;
import com.google.common.hash.Hasher;
import com.google.common.hash.Hashing;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
public class CompilationContext {
@@ -35,7 +35,7 @@
}
private final Consumer<String> testingConsumer;
- private final Set<String> seenSetForTesting = new HashSet<>();
+ private final Map<String, String> seenSetForTesting = new ConcurrentHashMap<>();
private int nextProcessorId = 0;
private CompilationContext(InternalOptions options) {
@@ -49,7 +49,7 @@
if (testingConsumer != null) {
testingConsumer.accept(descriptor);
}
- assert seenSetForTesting.add(descriptor)
+ assert seenSetForTesting.put(descriptor, descriptor) == null
: "Duplicated use of context descriptor: " + descriptor;
return true;
}