diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java index 3aebda0b3e..acef91d2df 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageErrorFunction.java @@ -14,15 +14,19 @@ 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.PackageIdentifier; +import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException; import com.google.devtools.build.lib.packages.BuildFileNotFoundException; import com.google.devtools.build.lib.packages.NoSuchPackageException; import com.google.devtools.build.lib.packages.Package; -import com.google.devtools.build.skyframe.LegacySkyKey; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; +import com.google.devtools.build.skyframe.AbstractSkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; +import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import javax.annotation.Nullable; @@ -38,8 +42,29 @@ import javax.annotation.Nullable; * should never return null, since all of its dependencies should already be present. */ public class PackageErrorFunction implements SkyFunction { - public static SkyKey key(PackageIdentifier packageIdentifier) { - return LegacySkyKey.create(SkyFunctions.PACKAGE_ERROR, packageIdentifier); + public static Key key(PackageIdentifier packageIdentifier) { + return Key.create(packageIdentifier); + } + + @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_ERROR; + } } @Nullable |