diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java index f861ba78a6..878f1eba55 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupValue.java @@ -14,13 +14,15 @@ 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.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.syntax.Environment.Extension; -import com.google.devtools.build.skyframe.LegacySkyKey; +import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; -import java.io.Serializable; import java.util.Objects; /** @@ -63,17 +65,33 @@ public class SkylarkImportLookupValue implements SkyValue { * loaded from the WORKSPACE file or from a BUILD file. */ @Immutable - public static final class SkylarkImportLookupKey implements Serializable { + @AutoCodec.VisibleForSerialization + @AutoCodec + static final class SkylarkImportLookupKey implements SkyKey { + private static final Interner<SkylarkImportLookupKey> interner = + BlazeInterners.newWeakInterner(); + public final Label importLabel; public final boolean inWorkspace; - public SkylarkImportLookupKey(Label importLabel, boolean inWorkspace) { + private SkylarkImportLookupKey(Label importLabel, boolean inWorkspace) { Preconditions.checkNotNull(importLabel); Preconditions.checkArgument(!importLabel.getPackageIdentifier().getRepository().isDefault()); this.importLabel = importLabel; this.inWorkspace = inWorkspace; } + @AutoCodec.VisibleForSerialization + @AutoCodec.Instantiator + static SkylarkImportLookupKey create(Label importLabel, boolean inWorkspace) { + return interner.intern(new SkylarkImportLookupKey(importLabel, inWorkspace)); + } + + @Override + public SkyFunctionName functionName() { + return SkyFunctions.SKYLARK_IMPORTS_LOOKUP; + } + @Override public String toString() { return importLabel + (inWorkspace ? " (in workspace)" : ""); @@ -99,8 +117,7 @@ public class SkylarkImportLookupValue implements SkyValue { } static SkyKey key(Label importLabel, boolean inWorkspace) { - return LegacySkyKey.create( - SkyFunctions.SKYLARK_IMPORTS_LOOKUP, new SkylarkImportLookupKey(importLabel, inWorkspace)); + return SkylarkImportLookupKey.create(importLabel, inWorkspace); } @Override |