Use `SkyKeyInterner` for more `SkyKey` types.

PiperOrigin-RevId: 579840409
Change-Id: I67eeea72f2bb935581f6f7afe71f0b72fb6f4c1a
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java
index a80ba14..cbdd287 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java
@@ -16,15 +16,14 @@
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Interner;
 import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
 import com.google.devtools.build.lib.actions.ActionLookupKey;
 import com.google.devtools.build.lib.actions.BasicActionLookupValue;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.skyframe.config.BuildConfigurationKey;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
+import com.google.devtools.build.skyframe.SkyKey;
 
 /** Value that stores expanded actions from ActionTemplate. */
 public final class ActionTemplateExpansionValue extends BasicActionLookupValue {
@@ -40,8 +39,7 @@
   /** Key for {@link ActionTemplateExpansionValue} nodes. */
   @AutoCodec
   public static final class ActionTemplateExpansionKey implements ActionLookupKey {
-    private static final Interner<ActionTemplateExpansionKey> interner =
-        BlazeInterners.newWeakInterner();
+    private static final SkyKeyInterner<ActionTemplateExpansionKey> interner = SkyKey.newInterner();
 
     private final ActionLookupKey actionLookupKey;
     private final int actionIndex;
@@ -85,6 +83,11 @@
     }
 
     @Override
+    public SkyKeyInterner<ActionTemplateExpansionKey> getSkyKeyInterner() {
+      return interner;
+    }
+
+    @Override
     public int hashCode() {
       return 37 * actionLookupKey.hashCode() + actionIndex;
     }
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
index 62e2ca4..ce12386 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactFunction.java
@@ -18,7 +18,6 @@
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Interner;
 import com.google.devtools.build.lib.actions.Action;
 import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
 import com.google.devtools.build.lib.actions.ActionExecutionException;
@@ -36,7 +35,6 @@
 import com.google.devtools.build.lib.actions.FilesetTraversalParams.PackageBoundaryMode;
 import com.google.devtools.build.lib.bugreport.BugReport;
 import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.server.FailureDetails.Execution;
 import com.google.devtools.build.lib.server.FailureDetails.Execution.Code;
@@ -589,8 +587,8 @@
 
   private static final class DirectoryArtifactTraversalRequest extends TraversalRequest {
 
-    private static final Interner<DirectoryArtifactTraversalRequest> interner =
-        BlazeInterners.newWeakInterner();
+    private static final SkyKeyInterner<DirectoryArtifactTraversalRequest> interner =
+        SkyKey.newInterner();
 
     static DirectoryArtifactTraversalRequest create(
         DirectTraversalRoot root, boolean skipTestingForSubpackage, Artifact artifact) {
@@ -651,6 +649,11 @@
     }
 
     @Override
+    public SkyKeyInterner<DirectoryArtifactTraversalRequest> getSkyKeyInterner() {
+      return interner;
+    }
+
+    @Override
     public int hashCode() {
       // Artifact is only for error info and not considered in hash code or equality.
       return root.hashCode() * 31 + Boolean.hashCode(skipTestingForSubpackage);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java
index 403009f..8e97287 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java
@@ -17,9 +17,7 @@
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Interner;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
-import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant;
@@ -239,7 +237,7 @@
   @AutoCodec.VisibleForSerialization
   @AutoCodec
   static class Key extends RecursivePkgSkyKey {
-    private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
+    private static final SkyKeyInterner<Key> interner = SkyKey.newInterner();
 
     private Key(
         RepositoryName repositoryName,
@@ -261,5 +259,10 @@
     public SkyFunctionName functionName() {
       return SkyFunctions.COLLECT_PACKAGES_UNDER_DIRECTORY;
     }
+
+    @Override
+    public SkyKeyInterner<Key> getSkyKeyInterner() {
+      return interner;
+    }
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsValue.java
index cd0492d..27708c7 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsValue.java
@@ -16,8 +16,6 @@
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Interner;
-import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
 import com.google.devtools.build.lib.query2.common.UniverseSkyKey;
@@ -65,8 +63,7 @@
   @AutoCodec.VisibleForSerialization
   @AutoCodec
   static class TargetPatternSequence implements UniverseSkyKey {
-    private static final Interner<TargetPatternSequence> interner =
-        BlazeInterners.newWeakInterner();
+    private static final SkyKeyInterner<TargetPatternSequence> interner = SkyKey.newInterner();
 
     private final ImmutableList<String> patterns;
     private final PathFragment offset;
@@ -92,6 +89,11 @@
     }
 
     @Override
+    public SkyKeyInterner<TargetPatternSequence> getSkyKeyInterner() {
+      return interner;
+    }
+
+    @Override
     public boolean equals(Object o) {
       if (this == o) {
         return true;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java
index 7e190be..43945eb 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java
@@ -14,12 +14,10 @@
 package com.google.devtools.build.lib.skyframe;
 
 import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Interner;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
 import com.google.devtools.build.lib.collect.nestedset.Order;
-import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
@@ -27,6 +25,7 @@
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.RootedPath;
 import com.google.devtools.build.skyframe.SkyFunctionName;
+import com.google.devtools.build.skyframe.SkyKey;
 import com.google.devtools.build.skyframe.SkyValue;
 
 /**
@@ -75,7 +74,7 @@
   @AutoCodec.VisibleForSerialization
   @AutoCodec
   static class Key extends RecursivePkgSkyKey {
-    private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
+    private static final SkyKeyInterner<Key> interner = SkyKey.newInterner();
 
     private Key(
         RepositoryName repositoryName,
@@ -97,5 +96,10 @@
     public SkyFunctionName functionName() {
       return SkyFunctions.RECURSIVE_PKG;
     }
+
+    @Override
+    public SkyKeyInterner<Key> getSkyKeyInterner() {
+      return interner;
+    }
   }
 }
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionValue.java
index 8ad9fba..7c96ec5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionValue.java
@@ -14,11 +14,9 @@
 package com.google.devtools.build.lib.skyframe;
 
 import com.google.auto.value.AutoValue;
-import com.google.common.collect.Interner;
 import com.google.common.collect.Iterables;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
-import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.skyframe.SkyFunctionName;
 import com.google.devtools.build.skyframe.SkyKey;
@@ -58,7 +56,7 @@
   @AutoCodec
   @AutoValue
   public abstract static class TestCompletionKey implements SkyKey {
-    private static final Interner<TestCompletionKey> interner = BlazeInterners.newWeakInterner();
+    private static final SkyKeyInterner<TestCompletionKey> interner = SkyKey.newInterner();
 
     @AutoCodec.VisibleForSerialization
     @AutoCodec.Instantiator
@@ -85,5 +83,10 @@
     public final boolean valueIsShareable() {
       return false;
     }
+
+    @Override
+    public final SkyKeyInterner<TestCompletionKey> getSkyKeyInterner() {
+      return interner;
+    }
   }
 }
diff --git a/src/test/java/com/google/devtools/build/skyframe/GraphTester.java b/src/test/java/com/google/devtools/build/skyframe/GraphTester.java
index 6b90abd..2693512 100644
--- a/src/test/java/com/google/devtools/build/skyframe/GraphTester.java
+++ b/src/test/java/com/google/devtools/build/skyframe/GraphTester.java
@@ -19,14 +19,13 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Interner;
 import com.google.common.collect.Iterables;
-import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.ExtendedEventHandler.Postable;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.util.Pair;
 import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
+import com.google.devtools.build.skyframe.SkyKey.SkyKeyInterner;
 import com.google.devtools.build.skyframe.SkyframeLookupResult.QueryDepCallback;
 import com.google.errorprone.annotations.CanIgnoreReturnValue;
 import java.util.HashMap;
@@ -512,7 +511,7 @@
   @AutoCodec.VisibleForSerialization
   @AutoCodec
   static class Key extends AbstractSkyKey<String> {
-    private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
+    private static final SkyKeyInterner<Key> interner = SkyKey.newInterner();
 
     private Key(String arg) {
       super(arg);
@@ -528,12 +527,17 @@
     public SkyFunctionName functionName() {
       return SkyFunctionName.FOR_TESTING;
     }
+
+    @Override
+    public SkyKeyInterner<Key> getSkyKeyInterner() {
+      return interner;
+    }
   }
 
   @AutoCodec.VisibleForSerialization
   @AutoCodec
   static class NonHermeticKey extends AbstractSkyKey<String> {
-    private static final Interner<NonHermeticKey> interner = BlazeInterners.newWeakInterner();
+    private static final SkyKeyInterner<NonHermeticKey> interner = SkyKey.newInterner();
 
     private NonHermeticKey(String arg) {
       super(arg);
@@ -549,6 +553,11 @@
     public SkyFunctionName functionName() {
       return FOR_TESTING_NONHERMETIC;
     }
+
+    @Override
+    public SkyKeyInterner<NonHermeticKey> getSkyKeyInterner() {
+      return interner;
+    }
   }
 
   private static final SkyFunctionName FOR_TESTING_NONHERMETIC =