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;
   }