Skip to content

Commit

Permalink
Use SkyKeyInterner for more SkyKey types.
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 579840409
Change-Id: I67eeea72f2bb935581f6f7afe71f0b72fb6f4c1a
  • Loading branch information
justinhorvitz authored and copybara-github committed Nov 6, 2023
1 parent e1df5cd commit 70f7c80
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,14 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
import com.google.devtools.build.lib.actions.ActionLookupKey;
import com.google.devtools.build.lib.actions.BasicActionLookupValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.skyframe.config.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.skyframe.SkyFunctionName;
import com.google.devtools.build.skyframe.SkyKey;

/** Value that stores expanded actions from ActionTemplate. */
public final class ActionTemplateExpansionValue extends BasicActionLookupValue {
Expand All @@ -40,8 +39,7 @@ public static ActionTemplateExpansionKey key(ActionLookupKey actionLookupKey, in
/** Key for {@link ActionTemplateExpansionValue} nodes. */
@AutoCodec
public static final class ActionTemplateExpansionKey implements ActionLookupKey {
private static final Interner<ActionTemplateExpansionKey> interner =
BlazeInterners.newWeakInterner();
private static final SkyKeyInterner<ActionTemplateExpansionKey> interner = SkyKey.newInterner();

private final ActionLookupKey actionLookupKey;
private final int actionIndex;
Expand Down Expand Up @@ -84,6 +82,11 @@ public int getActionIndex() {
return actionIndex;
}

@Override
public SkyKeyInterner<ActionTemplateExpansionKey> getSkyKeyInterner() {
return interner;
}

@Override
public int hashCode() {
return 37 * actionLookupKey.hashCode() + actionIndex;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.actions.Action;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
import com.google.devtools.build.lib.actions.ActionExecutionException;
Expand All @@ -36,7 +35,6 @@
import com.google.devtools.build.lib.actions.FilesetTraversalParams.PackageBoundaryMode;
import com.google.devtools.build.lib.bugreport.BugReport;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.server.FailureDetails.Execution;
import com.google.devtools.build.lib.server.FailureDetails.Execution.Code;
Expand Down Expand Up @@ -589,8 +587,8 @@ public DetailedExitCode getDetailedExitCode() {

private static final class DirectoryArtifactTraversalRequest extends TraversalRequest {

private static final Interner<DirectoryArtifactTraversalRequest> interner =
BlazeInterners.newWeakInterner();
private static final SkyKeyInterner<DirectoryArtifactTraversalRequest> interner =
SkyKey.newInterner();

static DirectoryArtifactTraversalRequest create(
DirectTraversalRoot root, boolean skipTestingForSubpackage, Artifact artifact) {
Expand Down Expand Up @@ -650,6 +648,11 @@ protected TraversalRequest duplicateWithOverrides(
return create(newRoot, newSkipTestingForSubpackage, artifact);
}

@Override
public SkyKeyInterner<DirectoryArtifactTraversalRequest> getSkyKeyInterner() {
return interner;
}

@Override
public int hashCode() {
// Artifact is only for error info and not considered in hash code or equality.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.SerializationConstant;
Expand Down Expand Up @@ -239,7 +237,7 @@ public static SkyKey key(
@AutoCodec.VisibleForSerialization
@AutoCodec
static class Key extends RecursivePkgSkyKey {
private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
private static final SkyKeyInterner<Key> interner = SkyKey.newInterner();

private Key(
RepositoryName repositoryName,
Expand All @@ -261,5 +259,10 @@ static Key create(
public SkyFunctionName functionName() {
return SkyFunctions.COLLECT_PACKAGES_UNDER_DIRECTORY;
}

@Override
public SkyKeyInterner<Key> getSkyKeyInterner() {
return interner;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Interner;
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.query2.common.UniverseSkyKey;
Expand Down Expand Up @@ -65,8 +63,7 @@ public static TargetPatternSequence key(ImmutableList<String> patterns, PathFrag
@AutoCodec.VisibleForSerialization
@AutoCodec
static class TargetPatternSequence implements UniverseSkyKey {
private static final Interner<TargetPatternSequence> interner =
BlazeInterners.newWeakInterner();
private static final SkyKeyInterner<TargetPatternSequence> interner = SkyKey.newInterner();

private final ImmutableList<String> patterns;
private final PathFragment offset;
Expand All @@ -91,6 +88,11 @@ public PathFragment getOffset() {
return offset;
}

@Override
public SkyKeyInterner<TargetPatternSequence> getSkyKeyInterner() {
return interner;
}

@Override
public boolean equals(Object o) {
if (this == o) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,18 @@
package com.google.devtools.build.lib.skyframe;

import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
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.lib.skyframe.serialization.autocodec.SerializationConstant;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.RootedPath;
import com.google.devtools.build.skyframe.SkyFunctionName;
import com.google.devtools.build.skyframe.SkyKey;
import com.google.devtools.build.skyframe.SkyValue;

/**
Expand Down Expand Up @@ -75,7 +74,7 @@ public boolean hasErrors() {
@AutoCodec.VisibleForSerialization
@AutoCodec
static class Key extends RecursivePkgSkyKey {
private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
private static final SkyKeyInterner<Key> interner = SkyKey.newInterner();

private Key(
RepositoryName repositoryName,
Expand All @@ -97,5 +96,10 @@ static Key create(
public SkyFunctionName functionName() {
return SkyFunctions.RECURSIVE_PKG;
}

@Override
public SkyKeyInterner<Key> getSkyKeyInterner() {
return interner;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,9 @@
package com.google.devtools.build.lib.skyframe;

import com.google.auto.value.AutoValue;
import com.google.common.collect.Interner;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.skyframe.SkyFunctionName;
import com.google.devtools.build.skyframe.SkyKey;
Expand Down Expand Up @@ -58,7 +56,7 @@ public static Iterable<SkyKey> keys(
@AutoCodec
@AutoValue
public abstract static class TestCompletionKey implements SkyKey {
private static final Interner<TestCompletionKey> interner = BlazeInterners.newWeakInterner();
private static final SkyKeyInterner<TestCompletionKey> interner = SkyKey.newInterner();

@AutoCodec.VisibleForSerialization
@AutoCodec.Instantiator
Expand All @@ -85,5 +83,10 @@ public final SkyFunctionName functionName() {
public final boolean valueIsShareable() {
return false;
}

@Override
public final SkyKeyInterner<TestCompletionKey> getSkyKeyInterner() {
return interner;
}
}
}
17 changes: 13 additions & 4 deletions src/test/java/com/google/devtools/build/skyframe/GraphTester.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,13 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Interner;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.ExtendedEventHandler.Postable;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.skyframe.SkyFunctionException.Transience;
import com.google.devtools.build.skyframe.SkyKey.SkyKeyInterner;
import com.google.devtools.build.skyframe.SkyframeLookupResult.QueryDepCallback;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import java.util.HashMap;
Expand Down Expand Up @@ -512,7 +511,7 @@ public static ValueComputer formatter(SkyKey key, String format) {
@AutoCodec.VisibleForSerialization
@AutoCodec
static class Key extends AbstractSkyKey<String> {
private static final Interner<Key> interner = BlazeInterners.newWeakInterner();
private static final SkyKeyInterner<Key> interner = SkyKey.newInterner();

private Key(String arg) {
super(arg);
Expand All @@ -528,12 +527,17 @@ static Key create(String arg) {
public SkyFunctionName functionName() {
return SkyFunctionName.FOR_TESTING;
}

@Override
public SkyKeyInterner<Key> getSkyKeyInterner() {
return interner;
}
}

@AutoCodec.VisibleForSerialization
@AutoCodec
static class NonHermeticKey extends AbstractSkyKey<String> {
private static final Interner<NonHermeticKey> interner = BlazeInterners.newWeakInterner();
private static final SkyKeyInterner<NonHermeticKey> interner = SkyKey.newInterner();

private NonHermeticKey(String arg) {
super(arg);
Expand All @@ -549,6 +553,11 @@ static NonHermeticKey create(String arg) {
public SkyFunctionName functionName() {
return FOR_TESTING_NONHERMETIC;
}

@Override
public SkyKeyInterner<NonHermeticKey> getSkyKeyInterner() {
return interner;
}
}

private static final SkyFunctionName FOR_TESTING_NONHERMETIC =
Expand Down

0 comments on commit 70f7c80

Please sign in to comment.