Optimize DexLimitTracker with thread-local interning.

PiperOrigin-RevId: 930668051
Change-Id: I98ccfd23511f261e68c2ab8e3de7d257532dc46c
diff --git a/src/tools/java/com/google/devtools/build/android/dexer/DexLimitTracker.java b/src/tools/java/com/google/devtools/build/android/dexer/DexLimitTracker.java
index 95cbb44..14d74c5 100644
--- a/src/tools/java/com/google/devtools/build/android/dexer/DexLimitTracker.java
+++ b/src/tools/java/com/google/devtools/build/android/dexer/DexLimitTracker.java
@@ -29,7 +29,8 @@
  */
 class DexLimitTracker {
 
-  private static final Interner<String> interner = Interners.newWeakInterner();
+  private static final ThreadLocal<Interner<String>> threadLocalInterner =
+      ThreadLocal.withInitial(Interners::newWeakInterner);
 
   private final HashSet<String> fieldsSeen = new HashSet<>();
   private final HashSet<String> methodsSeen = new HashSet<>();
@@ -100,7 +101,7 @@
   }
 
   private static String typeName(Dex dex, int typeIndex) {
-    return interner.intern(dex.typeNames().get(typeIndex));
+    return threadLocalInterner.get().intern(dex.typeNames().get(typeIndex));
   }
 
   private static String fieldSignature(Dex dex, int fieldIndex) {
@@ -108,7 +109,7 @@
     String name = dex.strings().get(field.getNameIndex());
     String declaringClass = typeName(dex, field.getDeclaringClassIndex());
     String type = typeName(dex, field.getTypeIndex());
-    return interner.intern(declaringClass + "." + name + ":" + type);
+    return threadLocalInterner.get().intern(declaringClass + "." + name + ":" + type);
   }
 
   private static String methodSignature(Dex dex, int methodIndex) {
@@ -122,7 +123,8 @@
     for (short parameterTypeIndex : parameterTypeIndices.getTypes()) {
       parameterTypes.append(typeName(dex, parameterTypeIndex & 0xFFFF));
     }
-    return interner.intern(
-        declaringClass + "." + name + ":" + returnType + "(" + parameterTypes + ")");
+    return threadLocalInterner
+        .get()
+        .intern(declaringClass + "." + name + ":" + returnType + "(" + parameterTypes + ")");
   }
 }