diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java index c76a7ad8e1..2b7c49af53 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageLookupValue.java @@ -15,13 +15,16 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.base.Objects; import com.google.common.base.Preconditions; +import com.google.common.collect.Interner; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.packages.BuildFileName; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.Root; import com.google.devtools.build.lib.vfs.RootedPath; -import com.google.devtools.build.skyframe.LegacySkyKey; +import com.google.devtools.build.skyframe.AbstractSkyKey; +import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -118,9 +121,30 @@ public abstract class PackageLookupValue implements SkyValue { return key(PackageIdentifier.createInMainRepo(directory)); } - public static SkyKey key(PackageIdentifier pkgIdentifier) { + public static Key key(PackageIdentifier pkgIdentifier) { Preconditions.checkArgument(!pkgIdentifier.getRepository().isDefault()); - return LegacySkyKey.create(SkyFunctions.PACKAGE_LOOKUP, pkgIdentifier); + return Key.create(pkgIdentifier); + } + + @AutoCodec.VisibleForSerialization + @AutoCodec + static class Key extends AbstractSkyKey<PackageIdentifier> { + private static final Interner<Key> interner = BlazeInterners.newWeakInterner(); + + private Key(PackageIdentifier arg) { + super(arg); + } + + @AutoCodec.VisibleForSerialization + @AutoCodec.Instantiator + static Key create(PackageIdentifier arg) { + return interner.intern(new Key(arg)); + } + + @Override + public SkyFunctionName functionName() { + return SkyFunctions.PACKAGE_LOOKUP; + } } /** Successful lookup value. */ |