Intern IntVersions.
--
MOS_MIGRATED_REVID=113197641
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
index 78a4e1d..87e1a47 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java
@@ -124,7 +124,7 @@
@Override
public void deleteDirty(long versionAgeLimit) {
Preconditions.checkArgument(versionAgeLimit >= 0);
- final Version threshold = new IntVersion(lastGraphVersion.getVal() - versionAgeLimit);
+ final Version threshold = IntVersion.of(lastGraphVersion.getVal() - versionAgeLimit);
valuesToDelete.addAll(
Sets.filter(dirtyKeyTracker.getDirtyKeys(), new Predicate<SkyKey>() {
@Override
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
index 0cee74c..c23b822 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
@@ -329,7 +329,7 @@
@Override
public synchronized boolean signalDep() {
- return signalDep(/*childVersion=*/new IntVersion(Long.MAX_VALUE));
+ return signalDep(/*childVersion=*/ IntVersion.of(Long.MAX_VALUE));
}
@Override
diff --git a/src/main/java/com/google/devtools/build/skyframe/IntVersion.java b/src/main/java/com/google/devtools/build/skyframe/IntVersion.java
index 38b2d71..cfb3484 100644
--- a/src/main/java/com/google/devtools/build/skyframe/IntVersion.java
+++ b/src/main/java/com/google/devtools/build/skyframe/IntVersion.java
@@ -13,16 +13,20 @@
// limitations under the License.
package com.google.devtools.build.skyframe;
+import com.google.common.collect.Interner;
+import com.google.common.collect.Interners;
+
import java.io.Serializable;
/**
* Versioning scheme based on integers.
*/
public final class IntVersion implements Version, Serializable {
+ private static final Interner<IntVersion> interner = Interners.newWeakInterner();
private final long val;
- public IntVersion(long val) {
+ private IntVersion(long val) {
this.val = val;
}
@@ -31,11 +35,15 @@
}
public IntVersion next() {
- return new IntVersion(val + 1);
+ return of(val + 1);
}
public IntVersion previous() {
- return new IntVersion(val - 1);
+ return of(val - 1);
+ }
+
+ public static IntVersion of(long val) {
+ return interner.intern(new IntVersion(val));
}
@Override
diff --git a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java b/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java
index 99e2ef0..886c40a 100644
--- a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java
+++ b/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java
@@ -28,7 +28,7 @@
public SequentialBuildDriver(MemoizingEvaluator evaluator) {
this.memoizingEvaluator = Preconditions.checkNotNull(evaluator);
- this.curVersion = new IntVersion(0);
+ this.curVersion = IntVersion.of(0);
}
@Override