diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java index 05b3c6a32c..f5021c049d 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java @@ -16,6 +16,8 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Interner; +import com.google.common.collect.Interners; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; @@ -39,7 +41,9 @@ import javax.annotation.Nullable; @Immutable @ThreadSafe public class TransitiveTraversalValue implements SkyValue { - + + private static final Interner<SkyKey> KEY_INTERNER = Interners.newWeakInterner(); + @Nullable private final ImmutableSet<String> providers; @Nullable private final String firstErrorMessage; @@ -125,6 +129,7 @@ public class TransitiveTraversalValue implements SkyValue { @ThreadSafe public static SkyKey key(Label label) { - return new SkyKey(SkyFunctions.TRANSITIVE_TRAVERSAL, label); + // Intern in order to save memory. + return KEY_INTERNER.intern(new SkyKey(SkyFunctions.TRANSITIVE_TRAVERSAL, label)); } } |