aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Miguel Alcon Pinto <malcon@google.com>2015-10-21 20:51:22 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-10-22 15:16:03 +0000
commitb12c5d435bd089d348a30295ef7341b9c5024c10 (patch)
tree812ba14d4afe44a46f9be7e9c4e8342f146ba5a1
parent06568808db8ccb6ca4bb0d663da4e3e1a9b1a308 (diff)
Memoize TRANSITIVE_TRAVERSAL nodes to save memory.
-- MOS_MIGRATED_REVID=105994907
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java9
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));
}
}