Use a concurrent TreeSet implementation for direct sub types
This set can be updated by synthesized classes added during IR processing.
Bug: 149516488
Change-Id: If564eb6e140adbd3cfe6ba3badb0af212578bce6
diff --git a/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java b/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
index 3381ea2..813ea84 100644
--- a/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
+++ b/src/main/java/com/android/tools/r8/graph/AppInfoWithSubtyping.java
@@ -22,8 +22,8 @@
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.Set;
-import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentSkipListSet;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -82,7 +82,7 @@
private void ensureDirectSubTypeSet() {
if (directSubtypes == NO_DIRECT_SUBTYPE) {
- directSubtypes = new TreeSet<>(DexType::slowCompareTo);
+ directSubtypes = new ConcurrentSkipListSet<>(DexType::slowCompareTo);
}
}