diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerValue.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerValue.java | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerValue.java index 7af9887252..caf37202c3 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetMarkerValue.java @@ -14,12 +14,14 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.base.Preconditions; +import com.google.common.collect.Interner; import com.google.devtools.build.lib.cmdline.Label; +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; -import com.google.devtools.build.skyframe.LegacySkyKey; -import com.google.devtools.build.skyframe.SkyKey; +import com.google.devtools.build.skyframe.AbstractSkyKey; +import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyValue; /** @@ -47,8 +49,29 @@ public final class TargetMarkerValue implements SkyValue { } @ThreadSafe - public static SkyKey key(Label label) { + public static Key key(Label label) { Preconditions.checkArgument(!label.getPackageIdentifier().getRepository().isDefault()); - return LegacySkyKey.create(SkyFunctions.TARGET_MARKER, label); + return Key.create(label); + } + + @AutoCodec.VisibleForSerialization + @AutoCodec + static class Key extends AbstractSkyKey<Label> { + private static final Interner<Key> interner = BlazeInterners.newWeakInterner(); + + private Key(Label arg) { + super(arg); + } + + @AutoCodec.VisibleForSerialization + @AutoCodec.Instantiator + static Key create(Label arg) { + return interner.intern(new Key(arg)); + } + + @Override + public SkyFunctionName functionName() { + return SkyFunctions.TARGET_MARKER; + } } } |