Intern IntVersions.
--
MOS_MIGRATED_REVID=113197641
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