Use ConcurrentHashMap instead of Cache where we aren't using any of the
LoadingCache's capabilities. According to profiles, using ConcurrentHashMap is
about 3x more efficient.

RELNOTES: None
PiperOrigin-RevId: 208897706
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java
index 2c9e074..0706621 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSignatureProcessor.java
@@ -14,8 +14,6 @@
 package com.google.devtools.build.lib.syntax;
 
 import com.google.common.base.Preconditions;
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
 import com.google.common.primitives.Booleans;
 import com.google.devtools.build.lib.skylarkinterface.Param;
 import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -27,6 +25,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 import javax.annotation.Nullable;
 
 /**
@@ -39,7 +38,8 @@
   // represented by that string. For example, "None" -> Runtime.NONE. This cache is manually
   // maintained (instead of using, for example, a LoadingCache), as default values may sometimes
   // be recursively requested.
-  private static final Cache<String, Object> defaultValueCache = CacheBuilder.newBuilder().build();
+  private static final ConcurrentHashMap<String, Object> defaultValueCache =
+      new ConcurrentHashMap<>();
 
   /**
    * Extracts a {@code FunctionSignature.WithValues<Object, SkylarkType>} from a
@@ -243,7 +243,7 @@
       return Runtime.NONE;
     } else {
       try {
-        Object defaultValue = defaultValueCache.getIfPresent(paramDefaultValue);
+        Object defaultValue = defaultValueCache.get(paramDefaultValue);
         if (defaultValue != null) {
           return defaultValue;
         }