diff options
91 files changed, 435 insertions, 267 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index 7d6d25836b..2e26cb38c3 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -592,6 +592,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/causes", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//src/main/protobuf:extra_actions_base_java_proto", "//src/main/protobuf:invocation_policy_java_proto", @@ -650,6 +651,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/rules/objc", "//src/main/java/com/google/devtools/build/lib/rules/platform", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//src/main/protobuf:crosstool_config_java_proto", "//third_party:android_common_25_0_0", @@ -690,7 +692,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/ssd", "//src/main/java/com/google/devtools/build/lib/standalone", "//src/main/java/com/google/devtools/build/lib/worker", - "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//third_party:guava", "//third_party:jsr305", @@ -754,6 +756,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/bazel/repository/cache", "//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//third_party:aether", "//third_party:apache_commons_compress", @@ -1115,6 +1118,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/query2:query-engine", "//src/main/java/com/google/devtools/build/lib/query2:query-output", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//src/main/protobuf:build_java_proto", "//src/main/protobuf:command_server_java_proto", diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java b/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java index b8c105f7b5..9fdbe1ca8b 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ActionLookupValue.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictEx import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.util.Preconditions; +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; @@ -210,7 +211,7 @@ public class ActionLookupValue implements SkyValue { protected abstract SkyFunctionName getType(); protected SkyKey getSkyKeyInternal() { - return SkyKey.create(getType(), this); + return LegacySkyKey.create(getType(), this); } /** diff --git a/src/main/java/com/google/devtools/build/lib/actions/BUILD b/src/main/java/com/google/devtools/build/lib/actions/BUILD index ce36aeb13f..c38671b558 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/BUILD +++ b/src/main/java/com/google/devtools/build/lib/actions/BUILD @@ -24,6 +24,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto", "//src/main/java/com/google/devtools/build/lib/causes", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//src/main/protobuf:extra_actions_base_java_proto", "//third_party:auto_value", diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenServerValue.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenServerValue.java index dd5a3508a0..a4c7576d8a 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenServerValue.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenServerValue.java @@ -17,12 +17,11 @@ package com.google.devtools.build.lib.bazel.repository; import com.google.common.base.Objects; import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - -import org.apache.maven.settings.Server; - import java.util.Arrays; +import org.apache.maven.settings.Server; /** * A Maven repository's identifier. @@ -37,7 +36,7 @@ public class MavenServerValue implements SkyValue { public static SkyKey key(String serverName) { Preconditions.checkNotNull(serverName); - return SkyKey.create(MavenServerFunction.NAME, serverName); + return LegacySkyKey.create(MavenServerFunction.NAME, serverName); } public static MavenServerValue createFromUrl(String url) { diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD index 06660e7213..5e3353cdce 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/BUILD +++ b/src/main/java/com/google/devtools/build/lib/cmdline/BUILD @@ -18,6 +18,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib:skylarkinterface", "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/lib:vfs", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", "//third_party:jsr305", ], diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java index ef62fc1be8..3767ed721b 100644 --- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java +++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java @@ -29,6 +29,8 @@ import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.util.StringCanonicalizer; import com.google.devtools.build.lib.util.StringUtilities; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.skyframe.SkyFunctionName; +import com.google.devtools.build.skyframe.SkyKey; import java.io.IOException; import java.io.InvalidObjectException; import java.io.ObjectInputStream; @@ -50,7 +52,7 @@ import javax.annotation.Nullable; ) @Immutable @ThreadSafe -public final class Label implements Comparable<Label>, Serializable, SkylarkPrintableValue { +public final class Label implements Comparable<Label>, Serializable, SkylarkPrintableValue, SkyKey { public static final PathFragment EXTERNAL_PACKAGE_NAME = PathFragment.create("external"); public static final PathFragment EXTERNAL_PACKAGE_FILE_NAME = PathFragment.create("WORKSPACE"); public static final String DEFAULT_REPOSITORY_DIRECTORY = "__main__"; @@ -73,6 +75,8 @@ public final class Label implements Comparable<Label>, Serializable, SkylarkPrin PackageIdentifier.createInMainRepo(EXTERNAL_PACKAGE_NAME); public static final PathFragment EXTERNAL_PATH_PREFIX = PathFragment.create("external"); + public static final SkyFunctionName TRANSITIVE_TRAVERSAL = + SkyFunctionName.create("TRANSITIVE_TRAVERSAL"); private static final Interner<Label> LABEL_INTERNER = BlazeInterners.newWeakInterner(); @@ -511,6 +515,16 @@ public final class Label implements Comparable<Label>, Serializable, SkylarkPrin } @Override + public SkyFunctionName functionName() { + return TRANSITIVE_TRAVERSAL; + } + + @Override + public Label argument() { + return this; + } + + @Override public int hashCode() { return hashCode; } diff --git a/src/main/java/com/google/devtools/build/lib/query2/BUILD b/src/main/java/com/google/devtools/build/lib/query2/BUILD index ad8f2661e1..72fb496fbe 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/BUILD +++ b/src/main/java/com/google/devtools/build/lib/query2/BUILD @@ -15,6 +15,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/lib:vfs", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//third_party:guava", "//third_party:jsr305", ], diff --git a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java index c04746760e..631afcb002 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java @@ -68,8 +68,6 @@ import com.google.devtools.build.lib.query2.engine.FunctionExpression; import com.google.devtools.build.lib.query2.engine.KeyExtractor; import com.google.devtools.build.lib.query2.engine.MinDepthUniquifier; import com.google.devtools.build.lib.query2.engine.OutputFormatterCallback; -import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryTaskCallable; -import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryTaskFuture; import com.google.devtools.build.lib.query2.engine.QueryEvalResult; import com.google.devtools.build.lib.query2.engine.QueryException; import com.google.devtools.build.lib.query2.engine.QueryExpression; @@ -906,7 +904,7 @@ public class SkyQueryEnvironment extends AbstractBlazeQueryEnvironment<Target> @Override public Label apply(SkyKey skyKey) { SkyFunctionName functionName = skyKey.functionName(); - if (!functionName.equals(SkyFunctions.TRANSITIVE_TRAVERSAL)) { + if (!functionName.equals(Label.TRANSITIVE_TRAVERSAL)) { // Skip non-targets. return null; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD index 197ade48e1..15011dc109 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD @@ -26,6 +26,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/rules/apple", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//src/main/protobuf:crosstool_config_java_proto", "//src/main/protobuf:extra_actions_base_java_proto", diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java index eb03db6a3f..90ee9326b7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoSupportValue.java @@ -17,10 +17,10 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.LipoMode; +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.util.Objects; /** @@ -96,6 +96,6 @@ public class FdoSupportValue implements SkyValue { } public static SkyKey key(LipoMode lipoMode, Path fdoZip, PathFragment fdoInstrument) { - return SkyKey.create(SKYFUNCTION, new Key(lipoMode, fdoZip, fdoInstrument)); + return LegacySkyKey.create(SKYFUNCTION, new Key(lipoMode, fdoZip, fdoInstrument)); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD b/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD index 959cf58a75..f59b4ee139 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/BUILD @@ -21,6 +21,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/query2:query-engine", "//src/main/java/com/google/devtools/build/lib/query2:query-output", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//third_party:guava", "//third_party:jsr305", diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java index a53c57ccdd..d044aafed3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java +++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java @@ -73,6 +73,7 @@ import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.ValueOrException; @@ -96,7 +97,7 @@ public class GenQuery implements RuleConfiguredTargetFactory { private static final QueryEnvironmentFactory QUERY_ENVIRONMENT_FACTORY = new QueryEnvironmentFactory(); public static final Precomputed<ImmutableList<OutputFormatter>> QUERY_OUTPUT_FORMATTERS = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "query_output_formatters")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "query_output_formatters")); @Override @Nullable diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java index 1cafeb7e08..f95329ef5c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDelegatorFunction.java @@ -32,6 +32,7 @@ import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; @@ -53,7 +54,7 @@ import javax.annotation.Nullable; */ public final class RepositoryDelegatorFunction implements SkyFunction { public static final Precomputed<Map<RepositoryName, PathFragment>> REPOSITORY_OVERRIDES = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "repository_overrides")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "repository_overrides")); // The marker file version is inject in the rule key digest so the rule key is always different // when we decide to update the format. diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java index 4d073d5b1c..6e21ad5b70 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java +++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java @@ -20,6 +20,7 @@ import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.skyframe.DirectoryListingValue; import com.google.devtools.build.lib.skyframe.SkyFunctions; import com.google.devtools.build.lib.vfs.Path; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import java.util.Arrays; @@ -124,7 +125,7 @@ public abstract class RepositoryDirectoryValue implements SkyValue { /** Creates a key from the given repository name. */ public static SkyKey key(RepositoryName repository) { - return SkyKey.create(SkyFunctions.REPOSITORY_DIRECTORY, repository); + return LegacySkyKey.create(SkyFunctions.REPOSITORY_DIRECTORY, repository); } public static Builder builder() { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ASTFileLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ASTFileLookupValue.java index fa425bc5b8..9fa3809f2b 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ASTFileLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ASTFileLookupValue.java @@ -17,6 +17,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.syntax.BuildFileAST; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -95,6 +96,6 @@ public abstract class ASTFileLookupValue implements SkyValue { } public static SkyKey key(Label astFileLabel) { - return SkyKey.create(SkyFunctions.AST_FILE_LOOKUP, astFileLabel); + return LegacySkyKey.create(SkyFunctions.AST_FILE_LOOKUP, astFileLabel); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionEnvironmentFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionEnvironmentFunction.java index ea4cde03df..efc6c9a84c 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionEnvironmentFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionEnvironmentFunction.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableList; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -44,12 +45,12 @@ public final class ActionEnvironmentFunction implements SkyFunction { if (actionEnv.containsKey(key) && actionEnv.get(key) != null) { return new ClientEnvironmentValue(actionEnv.get(key)); } - return env.getValue(SkyKey.create(SkyFunctions.CLIENT_ENVIRONMENT_VARIABLE, key)); + return env.getValue(LegacySkyKey.create(SkyFunctions.CLIENT_ENVIRONMENT_VARIABLE, key)); } /** @return the SkyKey to invoke this function for the environment variable {@code variable}. */ public static SkyKey key(String variable) { - return SkyKey.create(SkyFunctions.ACTION_ENVIRONMENT_VARIABLE, variable); + return LegacySkyKey.create(SkyFunctions.ACTION_ENVIRONMENT_VARIABLE, variable); } /** diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java index 213ceecc91..1b4bb29503 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java @@ -43,6 +43,7 @@ import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyKey; @@ -91,7 +92,7 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver new Function<String, SkyKey>() { @Override public SkyKey apply(String var) { - return SkyKey.create(SkyFunctions.CLIENT_ENVIRONMENT_VARIABLE, var); + return LegacySkyKey.create(SkyFunctions.CLIENT_ENVIRONMENT_VARIABLE, var); } }; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java index 3d71d1b8cd..080c1047f4 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java @@ -22,6 +22,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import java.util.Map; @@ -132,7 +133,8 @@ public class ActionExecutionValue implements SkyValue { @ThreadSafe @VisibleForTesting public static SkyKey key(SkyKey lookupKey, int index) { - return SkyKey.create(SkyFunctions.ACTION_EXECUTION, new ActionLookupData(lookupKey, index)); + return LegacySkyKey.create( + SkyFunctions.ACTION_EXECUTION, new ActionLookupData(lookupKey, index)); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java index 22e9b7f631..18f7aaa383 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionValue.java @@ -20,6 +20,7 @@ import com.google.devtools.build.lib.actions.ActionLookupValue; import com.google.devtools.build.lib.analysis.actions.ActionTemplate; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -36,9 +37,8 @@ public final class ActionTemplateExpansionValue extends ActionLookupValue { } static SkyKey key(ActionTemplate<?> actionTemplate) { - return SkyKey.create( - SkyFunctions.ACTION_TEMPLATE_EXPANSION, - createActionTemplateExpansionKey(actionTemplate)); + return LegacySkyKey.create( + SkyFunctions.ACTION_TEMPLATE_EXPANSION, createActionTemplateExpansionKey(actionTemplate)); } static ActionTemplateExpansionKey createActionTemplateExpansionKey( diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactSkyKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactSkyKey.java index 4fa5d9537d..770fecc4e2 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactSkyKey.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ArtifactSkyKey.java @@ -15,11 +15,14 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.base.Function; import com.google.common.collect.Collections2; +import com.google.common.collect.Interner; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact; +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.util.Preconditions; +import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; import java.util.Collection; @@ -36,12 +39,13 @@ import java.util.Collection; @Immutable @ThreadSafe public final class ArtifactSkyKey { + private static final Interner<OwnedArtifact> INTERNER = BlazeInterners.newWeakInterner(); + private ArtifactSkyKey() {} @ThreadSafe public static SkyKey key(Artifact artifact, boolean isMandatory) { - return SkyKey.create( - SkyFunctions.ARTIFACT, + return INTERNER.intern( artifact.isSourceArtifact() ? new OwnedArtifact(artifact, isMandatory) : new OwnedArtifact(artifact)); @@ -98,10 +102,16 @@ public final class ArtifactSkyKey { * since outside of Skyframe it is quite crucial that Artifacts with different owners be able to * compare equal. */ - static class OwnedArtifact { + static class OwnedArtifact implements SkyKey { private final Artifact artifact; // Always true for derived artifacts. private final boolean isMandatory; + // TODO(janakr): we may want to remove this field in the future. The expensive hash computation + // is already cached one level down (in the Artifact), so the CPU overhead here may not be + // worth the memory. However, when running with +CompressedOops, this field is free, so we leave + // it. When running with -CompressedOops, we might be able to save memory by using polymorphism + // for isMandatory and dropping this field. + private int hashCode = 0; /** Constructs an OwnedArtifact wrapper for a source artifact. */ private OwnedArtifact(Artifact sourceArtifact, boolean mandatory) { @@ -124,7 +134,41 @@ public final class ArtifactSkyKey { } @Override + public SkyFunctionName functionName() { + return SkyFunctions.ARTIFACT; + } + + @Override + public OwnedArtifact argument() { + return this; + } + + @Override public int hashCode() { + // We use the hash code caching strategy employed by java.lang.String. There are three subtle + // things going on here: + // + // (1) We use a value of 0 to indicate that the hash code hasn't been computed and cached yet. + // Yes, this means that if the hash code is really 0 then we will "recompute" it each time. + // But this isn't a problem in practice since a hash code of 0 should be rare. + // + // (2) Since we have no synchronization, multiple threads can race here thinking there are the + // first one to compute and cache the hash code. + // + // (3) Moreover, since 'hashCode' is non-volatile, the cached hash code value written from one + // thread may not be visible by another. Note that we probably don't need to worry about + // multiple inefficient reads of 'hashCode' on the same thread since it's non-volatile. + // + // All three of these issues are benign from a correctness perspective; in the end we have no + // overhead from synchronization, at the cost of potentially computing the hash code more than + // once. + if (hashCode == 0) { + hashCode = computeHashCode(); + } + return hashCode; + } + + private int computeHashCode() { int initialHash = artifact.hashCode() + artifact.getArtifactOwner().hashCode(); return isMandatory ? initialHash : 47 * initialHash + 1; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletionValue.java index 45c17faf99..ea6c77468c 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletionValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletionValue.java @@ -18,9 +18,9 @@ import com.google.common.base.Function; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.analysis.TopLevelArtifactContext; import com.google.devtools.build.lib.skyframe.AspectValue.AspectKey; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.util.Collection; /** @@ -44,7 +44,7 @@ public class AspectCompletionValue implements SkyValue { new Function<AspectValue, SkyKey>() { @Override public SkyKey apply(AspectValue aspectValue) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.ASPECT_COMPLETION, AspectCompletionKey.create(aspectValue.getKey(), ctx)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BlacklistedPackagePrefixesValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BlacklistedPackagePrefixesValue.java index b5c942015e..c6b8f32549 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BlacklistedPackagePrefixesValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BlacklistedPackagePrefixesValue.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -26,7 +27,7 @@ public class BlacklistedPackagePrefixesValue implements SkyValue { private final ImmutableSet<PathFragment> patterns; private static final SkyKey BLACKLIST_KEY = - SkyKey.create(SkyFunctions.BLACKLISTED_PACKAGE_PREFIXES, ""); + LegacySkyKey.create(SkyFunctions.BLACKLISTED_PACKAGE_PREFIXES, ""); public BlacklistedPackagePrefixesValue(ImmutableSet<PathFragment> exclusions) { this.patterns = Preconditions.checkNotNull(exclusions); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java index 9bd14e8fe2..85b97de04d 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java @@ -17,9 +17,9 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.Serializable; import java.util.Objects; import java.util.Set; @@ -51,7 +51,8 @@ public class BuildConfigurationValue implements SkyValue { @ThreadSafe public static SkyKey key(Set<Class<? extends BuildConfiguration.Fragment>> fragments, BuildOptions buildOptions) { - return SkyKey.create(SkyFunctions.BUILD_CONFIGURATION, new Key(fragments, buildOptions, true)); + return LegacySkyKey.create( + SkyFunctions.BUILD_CONFIGURATION, new Key(fragments, buildOptions, true)); } /** @@ -65,7 +66,8 @@ public class BuildConfigurationValue implements SkyValue { public static SkyKey disabledActionsKey( Set<Class<? extends BuildConfiguration.Fragment>> fragments, BuildOptions buildOptions) { - return SkyKey.create(SkyFunctions.BUILD_CONFIGURATION, new Key(fragments, buildOptions, false)); + return LegacySkyKey.create( + SkyFunctions.BUILD_CONFIGURATION, new Key(fragments, buildOptions, false)); } static final class Key implements Serializable { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ChainUniquenessUtils.java b/src/main/java/com/google/devtools/build/lib/skyframe/ChainUniquenessUtils.java index dfff25096b..3d29f8d980 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ChainUniquenessUtils.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ChainUniquenessUtils.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -33,7 +34,7 @@ class ChainUniquenessUtils { */ static SkyKey key(SkyFunctionName functionName, ImmutableList<? extends Object> chain) { Preconditions.checkState(!chain.isEmpty()); - return SkyKey.create(functionName, canonicalize(chain)); + return LegacySkyKey.create(functionName, canonicalize(chain)); } private static ImmutableList<Object> canonicalize(ImmutableList<? extends Object> cycle) { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java index b4118e3fab..5f819e58ae 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/CollectPackagesUnderDirectoryValue.java @@ -22,6 +22,7 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.skyframe.RecursivePkgValue.RecursivePkgKey; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import java.util.Objects; @@ -230,6 +231,6 @@ public abstract class CollectPackagesUnderDirectoryValue implements SkyValue { } static SkyKey key(RecursivePkgKey recursivePkgKey) { - return SkyKey.create(SkyFunctions.COLLECT_PACKAGES_UNDER_DIRECTORY, recursivePkgKey); + return LegacySkyKey.create(SkyFunctions.COLLECT_PACKAGES_UNDER_DIRECTORY, recursivePkgKey); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CollectTargetsInPackageValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/CollectTargetsInPackageValue.java index 4809ae1426..700d32226a 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/CollectTargetsInPackageValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/CollectTargetsInPackageValue.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.auto.value.AutoValue; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.pkgcache.FilteringPolicy; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -30,7 +31,7 @@ public class CollectTargetsInPackageValue implements SkyValue { * comment for what callers should have done beforehand. */ static SkyKey key(PackageIdentifier packageId, FilteringPolicy filteringPolicy) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.COLLECT_TARGETS_IN_PACKAGE, CollectTargetsInPackageKey.create(packageId, filteringPolicy)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionValue.java index eb5f173c25..6d591f3b7e 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationCollectionValue.java @@ -19,9 +19,9 @@ import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.Serializable; import java.util.Objects; @@ -44,7 +44,7 @@ public class ConfigurationCollectionValue implements SkyValue { @ThreadSafe public static SkyKey key(BuildOptions buildOptions, ImmutableSet<String> multiCpu) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.CONFIGURATION_COLLECTION, new ConfigurationCollectionKey(buildOptions, multiCpu)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java index 45740ddb3a..79686fbd87 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfigurationFragmentValue.java @@ -23,12 +23,11 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.packages.RuleClassProvider; import com.google.devtools.build.lib.util.Fingerprint; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.Serializable; import java.util.Objects; - import javax.annotation.Nullable; /** @@ -57,7 +56,7 @@ public class ConfigurationFragmentValue implements SkyValue { BuildConfiguration.getOptionsClasses( ImmutableList.<Class<? extends BuildConfiguration.Fragment>>of(fragmentType), ruleClassProvider)); - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.CONFIGURATION_FRAGMENT, new ConfigurationFragmentKey(optionsKey, fragmentType)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java index aee158ebb3..4e0b959674 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetCycleReporter.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.pkgcache.PackageProvider; import com.google.devtools.build.lib.skyframe.AspectValue.AspectKey; import com.google.devtools.build.skyframe.CycleInfo; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; /** @@ -94,7 +95,7 @@ class ConfiguredTargetCycleReporter extends AbstractLabelCycleReporter { private SkyKey asTransitiveTargetKey(SkyKey key) { return IS_TRANSITIVE_TARGET_SKY_KEY.apply(key) ? key - : SkyKey.create(TRANSITIVE_TARGET, ((ConfiguredTargetKey) key.argument()).getLabel()); + : LegacySkyKey.create(TRANSITIVE_TARGET, ((ConfiguredTargetKey) key.argument()).getLabel()); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java index 0405f63c24..b952a97575 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupValue.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.Path; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -40,7 +41,7 @@ public abstract class ContainingPackageLookupValue implements SkyValue { public static SkyKey key(PackageIdentifier id) { Preconditions.checkArgument(!id.getPackageFragment().isAbsolute(), id); Preconditions.checkArgument(!id.getRepository().isDefault(), id); - return SkyKey.create(SkyFunctions.CONTAINING_PACKAGE_LOOKUP, id); + return LegacySkyKey.create(SkyFunctions.CONTAINING_PACKAGE_LOOKUP, id); } public static ContainingPackage withContainingPackage(PackageIdentifier pkgId, Path root) { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java index 3d63fe04ad..3f9c8d84e4 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/CoverageReportValue.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionLookupValue; import com.google.devtools.build.lib.actions.ArtifactOwner; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -28,7 +29,7 @@ public class CoverageReportValue extends ActionLookupValue { // There should only ever be one CoverageReportValue value in the graph. public static final ArtifactOwner ARTIFACT_OWNER = new CoverageReportKey(); - static final SkyKey SKY_KEY = SkyKey.create(SkyFunctions.COVERAGE_REPORT, ARTIFACT_OWNER); + static final SkyKey SKY_KEY = LegacySkyKey.create(SkyFunctions.COVERAGE_REPORT, ARTIFACT_OWNER); CoverageReportValue( ImmutableList<ActionAnalysisMetadata> coverageReportActions, diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingStateValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingStateValue.java index 7664fd2117..2a10797305 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingStateValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingStateValue.java @@ -19,9 +19,9 @@ import com.google.devtools.build.lib.vfs.Dirent; import com.google.devtools.build.lib.vfs.Dirent.Type; import com.google.devtools.build.lib.vfs.RootedPath; import com.google.devtools.build.lib.vfs.Symlinks; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.IOException; import java.io.Serializable; import java.util.Arrays; @@ -30,7 +30,6 @@ import java.util.Collection; import java.util.Comparator; import java.util.Iterator; import java.util.Objects; - import javax.annotation.Nullable; /** @@ -57,7 +56,7 @@ public final class DirectoryListingStateValue implements SkyValue { @ThreadSafe public static SkyKey key(RootedPath rootedPath) { - return SkyKey.create(SkyFunctions.DIRECTORY_LISTING_STATE, rootedPath); + return LegacySkyKey.create(SkyFunctions.DIRECTORY_LISTING_STATE, rootedPath); } /** diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingValue.java index 3f61fe660e..d6fb7b484b 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/DirectoryListingValue.java @@ -16,9 +16,9 @@ package com.google.devtools.build.lib.skyframe; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.util.Objects; /** @@ -55,7 +55,7 @@ public abstract class DirectoryListingValue implements SkyValue { */ @ThreadSafe public static SkyKey key(RootedPath directoryUnderRoot) { - return SkyKey.create(SkyFunctions.DIRECTORY_LISTING, directoryUnderRoot); + return LegacySkyKey.create(SkyFunctions.DIRECTORY_LISTING, directoryUnderRoot); } static DirectoryListingValue value(RootedPath dirRootedPath, FileValue dirFileValue, diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalPackageFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalPackageFunction.java index 8a7bdd92d9..c21aa6c95a 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ExternalPackageFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ExternalPackageFunction.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -57,6 +58,6 @@ public class ExternalPackageFunction implements SkyFunction { * Returns a SkyKey to find the WORKSPACE file at the given path. */ public static SkyKey key(RootedPath workspacePath) { - return SkyKey.create(SkyFunctions.EXTERNAL_PACKAGE, workspacePath); + return LegacySkyKey.create(SkyFunctions.EXTERNAL_PACKAGE, workspacePath); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileStateValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileStateValue.java index 9206534613..e8c6379272 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/FileStateValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileStateValue.java @@ -24,13 +24,12 @@ import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; import com.google.devtools.build.lib.vfs.Symlinks; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.IOException; import java.util.Arrays; import java.util.Objects; - import javax.annotation.Nullable; /** @@ -103,7 +102,7 @@ public abstract class FileStateValue implements SkyValue { @VisibleForTesting @ThreadSafe public static SkyKey key(RootedPath rootedPath) { - return SkyKey.create(SkyFunctions.FILE_STATE, rootedPath); + return LegacySkyKey.create(SkyFunctions.FILE_STATE, rootedPath); } public abstract Type getType(); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FileValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/FileValue.java index 6b2bfa7216..3874674b23 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/FileValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/FileValue.java @@ -19,6 +19,7 @@ import com.google.devtools.build.lib.skyframe.FileStateValue.Type; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import java.util.Objects; @@ -115,7 +116,7 @@ public abstract class FileValue implements SkyValue { */ @ThreadSafe public static SkyKey key(RootedPath rootedPath) { - return SkyKey.create(SkyFunctions.FILE, rootedPath); + return LegacySkyKey.create(SkyFunctions.FILE, rootedPath); } /** diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryValue.java index d628da2bb8..38386e264d 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/FilesetEntryValue.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.FilesetOutputSymlink; import com.google.devtools.build.lib.actions.FilesetTraversalParams; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -44,7 +45,7 @@ public final class FilesetEntryValue implements SkyValue { } public static SkyKey key(FilesetTraversalParams params) { - return SkyKey.create(SkyFunctions.FILESET_ENTRY, params); + return LegacySkyKey.create(SkyFunctions.FILESET_ENTRY, params); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/GlobValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/GlobValue.java index cd4dd85f34..67ff7b1979 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/GlobValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/GlobValue.java @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.UnixGlob; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -103,7 +104,7 @@ public final class GlobValue implements SkyValue { @ThreadSafe static SkyKey internalKey(PackageIdentifier packageId, Path packageRoot, PathFragment subdir, String pattern, boolean excludeDirs) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.GLOB, new GlobDescriptor(packageId, packageRoot, subdir, pattern, excludeDirs)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupValue.java index 794dcc37d6..b2a0c548e1 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupValue.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -27,7 +28,7 @@ import com.google.devtools.build.skyframe.SkyValue; public abstract class LocalRepositoryLookupValue implements SkyValue { static SkyKey key(RootedPath directory) { - return SkyKey.create(SkyFunctions.LOCAL_REPOSITORY_LOOKUP, directory); + return LegacySkyKey.create(SkyFunctions.LOCAL_REPOSITORY_LOOKUP, directory); } private static final LocalRepositoryLookupValue MAIN_REPO_VALUE = new MainRepositoryLookupValue(); 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 17ba9bee28..b08329c487 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 @@ -19,6 +19,7 @@ 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.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; @@ -38,7 +39,7 @@ import javax.annotation.Nullable; */ public class PackageErrorFunction implements SkyFunction { public static SkyKey key(PackageIdentifier packageIdentifier) { - return SkyKey.create(SkyFunctions.PACKAGE_ERROR, packageIdentifier); + return LegacySkyKey.create(SkyFunctions.PACKAGE_ERROR, packageIdentifier); } @Nullable 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 79f6a41679..4bf711f336 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 @@ -19,6 +19,7 @@ import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -156,7 +157,7 @@ public abstract class PackageLookupValue implements SkyValue { public static SkyKey key(PackageIdentifier pkgIdentifier) { Preconditions.checkArgument(!pkgIdentifier.getRepository().isDefault()); - return SkyKey.create(SkyFunctions.PACKAGE_LOOKUP, pkgIdentifier); + return LegacySkyKey.create(SkyFunctions.PACKAGE_LOOKUP, pkgIdentifier); } /** Successful lookup value. */ diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java index d637a7fecf..2e7fad2945 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PackageValue.java @@ -19,9 +19,9 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.NotComparableSkyValue; import com.google.devtools.build.skyframe.SkyKey; - import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ public class PackageValue implements NotComparableSkyValue { public static SkyKey key(PackageIdentifier pkgIdentifier) { Preconditions.checkArgument(!pkgIdentifier.getRepository().isDefault()); - return SkyKey.create(SkyFunctions.PACKAGE, pkgIdentifier); + return LegacySkyKey.create(SkyFunctions.PACKAGE, pkgIdentifier); } public static List<SkyKey> keys(Iterable<PackageIdentifier> pkgIdentifiers) { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetValue.java index 4ef9ae33e6..5b80c1c9f6 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PostConfiguredTargetValue.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -40,7 +41,7 @@ class PostConfiguredTargetValue implements SkyValue { } public static SkyKey key(ConfiguredTargetKey lac) { - return SkyKey.create(SkyFunctions.POST_CONFIGURED_TARGET, lac); + return LegacySkyKey.create(SkyFunctions.POST_CONFIGURED_TARGET, lac); } public ConfiguredTarget getCt() { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java index d879c8f8b6..78c525f1e5 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrecomputedValue.java @@ -30,6 +30,7 @@ import com.google.devtools.build.lib.syntax.SkylarkSemanticsOptions; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.Injectable; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -77,44 +78,44 @@ public final class PrecomputedValue implements SkyValue { } public static final Precomputed<String> DEFAULTS_PACKAGE_CONTENTS = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "default_pkg")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "default_pkg")); public static final Precomputed<PathFragment> BLACKLISTED_PACKAGE_PREFIXES_FILE = new Precomputed<>( - SkyKey.create(SkyFunctions.PRECOMPUTED, "blacklisted_package_prefixes_file")); + LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "blacklisted_package_prefixes_file")); public static final Precomputed<RuleVisibility> DEFAULT_VISIBILITY = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "default_visibility")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "default_visibility")); public static final Precomputed<SkylarkSemanticsOptions> SKYLARK_SEMANTICS = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "skylark_semantics")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "skylark_semantics")); static final Precomputed<UUID> BUILD_ID = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "build_id")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "build_id")); static final Precomputed<Map<String, String>> ACTION_ENV = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "action_env")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "action_env")); static final Precomputed<WorkspaceStatusAction> WORKSPACE_STATUS_KEY = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "workspace_status_action")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "workspace_status_action")); static final Precomputed<ImmutableList<ActionAnalysisMetadata>> COVERAGE_REPORT_KEY = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "coverage_report_actions")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "coverage_report_actions")); public static final Precomputed<Map<BuildInfoKey, BuildInfoFactory>> BUILD_INFO_FACTORIES = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "build_info_factories")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "build_info_factories")); public static final Precomputed<BlazeDirectories> BLAZE_DIRECTORIES = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "blaze_directories")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "blaze_directories")); public static final Precomputed<String> PRODUCT_NAME = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "product_name")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "product_name")); static final Precomputed<ImmutableMap<ActionAnalysisMetadata, ConflictException>> BAD_ACTIONS = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "bad_actions")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "bad_actions")); public static final Precomputed<PathPackageLocator> PATH_PACKAGE_LOCATOR = - new Precomputed<>(SkyKey.create(SkyFunctions.PRECOMPUTED, "path_package_locator")); + new Precomputed<>(LegacySkyKey.create(SkyFunctions.PRECOMPUTED, "path_package_locator")); private final Object value; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternValue.java index eb1754e9dd..79fd2fb9b2 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternValue.java @@ -23,9 +23,9 @@ import com.google.devtools.build.lib.pkgcache.FilteringPolicies; import com.google.devtools.build.lib.skyframe.TargetPatternValue.TargetPatternKey; import com.google.devtools.build.lib.skyframe.TargetPatternValue.TargetPatternSkyKeyOrException; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.util.List; /** @@ -209,7 +209,7 @@ public class PrepareDepsOfPatternValue implements SkyValue { @Override public SkyKey getSkyKey() throws TargetParsingException { - return SkyKey.create(SkyFunctions.PREPARE_DEPS_OF_PATTERN, targetPatternKey); + return LegacySkyKey.create(SkyFunctions.PREPARE_DEPS_OF_PATTERN, targetPatternKey); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsValue.java index cbcd9717df..8a3a3c5391 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfPatternsValue.java @@ -18,9 +18,9 @@ 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.TargetPatternValue.TargetPatternKey; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.Serializable; import java.util.Objects; @@ -55,7 +55,7 @@ public final class PrepareDepsOfPatternsValue implements SkyValue { @ThreadSafe public static SkyKey key(ImmutableList<String> patterns, String offset) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.PREPARE_DEPS_OF_PATTERNS, new TargetPatternSequence(patterns, offset)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java index c937263614..2c7e318f93 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareDepsOfTargetsUnderDirectoryValue.java @@ -23,9 +23,9 @@ import com.google.devtools.build.lib.skyframe.RecursivePkgValue.RecursivePkgKey; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.Serializable; import java.util.Objects; @@ -61,7 +61,7 @@ public final class PrepareDepsOfTargetsUnderDirectoryValue implements SkyValue { @ThreadSafe public static SkyKey key(RepositoryName repository, RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths, FilteringPolicy filteringPolicy) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.PREPARE_DEPS_OF_TARGETS_UNDER_DIRECTORY, new PrepareDepsOfTargetsUnderDirectoryKey( new RecursivePkgKey(repository, rootedPath, excludedPaths), filteringPolicy)); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java index 7f2777c379..c3d465e622 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalValue.java @@ -26,11 +26,10 @@ import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.util.regex.Pattern; - import javax.annotation.Nullable; /** @@ -105,7 +104,7 @@ public final class RecursiveFilesystemTraversalValue implements SkyValue { } public static SkyKey key(TraversalRequest traversal) { - return SkyKey.create(SkyFunctions.RECURSIVE_FILESYSTEM_TRAVERSAL, traversal); + return LegacySkyKey.create(SkyFunctions.RECURSIVE_FILESYSTEM_TRAVERSAL, traversal); } /** The parameters of a file or directory traversal. */ diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java index 9bec1eeb25..2d3025b612 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValue.java @@ -23,9 +23,9 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.Serializable; import java.util.Objects; @@ -58,7 +58,7 @@ public class RecursivePkgValue implements SkyValue { @ThreadSafe public static SkyKey key(RepositoryName repositoryName, RootedPath rootedPath, ImmutableSet<PathFragment> excludedPaths) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.RECURSIVE_PKG, new RecursivePkgKey(repositoryName, rootedPath, excludedPaths)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryValue.java index 575c2a2d86..a09d839654 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RepositoryValue.java @@ -19,6 +19,7 @@ import com.google.common.base.Preconditions; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.rules.repository.RepositoryDirectoryValue; import com.google.devtools.build.lib.vfs.Path; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -121,6 +122,6 @@ public abstract class RepositoryValue implements SkyValue { } public static SkyKey key(RepositoryName repositoryName) { - return SkyKey.create(SkyFunctions.REPOSITORY, repositoryName); + return LegacySkyKey.create(SkyFunctions.REPOSITORY, repositoryName); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java index 264f549dda..86858d2d6f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java @@ -62,6 +62,7 @@ import com.google.devtools.build.skyframe.BuildDriver; import com.google.devtools.build.skyframe.Differencer; import com.google.devtools.build.skyframe.InMemoryMemoizingEvaluator; import com.google.devtools.build.skyframe.Injectable; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.MemoizingEvaluator.EvaluatorSupplier; import com.google.devtools.build.skyframe.NodeEntry; import com.google.devtools.build.skyframe.RecordingDifferencer; @@ -385,7 +386,7 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { envToCheck.addAll(clientEnv.get().keySet()); previousClientEnvironment = clientEnv.get().keySet(); for (String env : envToCheck) { - SkyKey key = SkyKey.create(SkyFunctions.CLIENT_ENVIRONMENT_VARIABLE, env); + SkyKey key = LegacySkyKey.create(SkyFunctions.CLIENT_ENVIRONMENT_VARIABLE, env); if (values.containsKey(key)) { String value = ((ClientEnvironmentValue) values.get(key)).getValue(); String newValue = clientEnv.get().get(env); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java index 05c78873b6..e0f8a845fc 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyFunctions.java @@ -67,8 +67,6 @@ public final class SkyFunctions { public static final SkyFunctionName RECURSIVE_PKG = SkyFunctionName.create("RECURSIVE_PKG"); public static final SkyFunctionName TRANSITIVE_TARGET = SkyFunctionName.create("TRANSITIVE_TARGET"); - public static final SkyFunctionName TRANSITIVE_TRAVERSAL = - SkyFunctionName.create("TRANSITIVE_TRAVERSAL"); public static final SkyFunctionName CONFIGURED_TARGET = SkyFunctionName.create("CONFIGURED_TARGET"); public static final SkyFunctionName POST_CONFIGURED_TARGET = diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index a2a85757bf..f058a4ec1f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -400,7 +400,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { map.put(SkyFunctions.PACKAGE_ERROR, new PackageErrorFunction()); map.put(SkyFunctions.TARGET_MARKER, new TargetMarkerFunction()); map.put(SkyFunctions.TRANSITIVE_TARGET, new TransitiveTargetFunction(ruleClassProvider)); - map.put(SkyFunctions.TRANSITIVE_TRAVERSAL, new TransitiveTraversalFunction()); + map.put(Label.TRANSITIVE_TRAVERSAL, new TransitiveTraversalFunction()); map.put( SkyFunctions.CONFIGURED_TARGET, new ConfiguredTargetFunction( 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 d97c034dfe..583e1558dc 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 @@ -17,6 +17,7 @@ import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.syntax.Environment.Extension; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import java.io.Serializable; @@ -98,7 +99,7 @@ public class SkylarkImportLookupValue implements SkyValue { } static SkyKey key(Label importLabel, boolean inWorkspace) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.SKYLARK_IMPORTS_LOOKUP, new SkylarkImportLookupKey(importLabel, inWorkspace)); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java index ef55b9f2e6..476f69da44 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetCompletionValue.java @@ -19,9 +19,9 @@ import com.google.common.collect.Iterables; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.LabelAndConfiguration; import com.google.devtools.build.lib.analysis.TopLevelArtifactContext; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.util.Collection; /** @@ -41,7 +41,7 @@ public class TargetCompletionValue implements SkyValue { public static SkyKey key( LabelAndConfiguration labelAndConfiguration, TopLevelArtifactContext topLevelArtifactContext) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.TARGET_COMPLETION, TargetCompletionKey.create(labelAndConfiguration, topLevelArtifactContext)); } @@ -53,7 +53,7 @@ public class TargetCompletionValue implements SkyValue { new Function<ConfiguredTarget, SkyKey>() { @Override public SkyKey apply(ConfiguredTarget ct) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.TARGET_COMPLETION, TargetCompletionKey.create(LabelAndConfiguration.of(ct), ctx)); } 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 f1aa03dadc..c4419d4dce 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 @@ -17,6 +17,7 @@ import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -47,6 +48,6 @@ public final class TargetMarkerValue implements SkyValue { @ThreadSafe public static SkyKey key(Label label) { Preconditions.checkArgument(!label.getPackageIdentifier().getRepository().isDefault()); - return SkyKey.create(SkyFunctions.TARGET_MARKER, label); + return LegacySkyKey.create(SkyFunctions.TARGET_MARKER, label); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java index 085eacdc31..187a94280f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java @@ -22,6 +22,7 @@ import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.pkgcache.LoadingResult; import com.google.devtools.build.lib.pkgcache.TestFilter; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import java.io.ObjectInputStream; @@ -131,7 +132,7 @@ public final class TargetPatternPhaseValue implements SkyValue { boolean compileOneDependency, boolean buildTestsOnly, boolean determineTests, ImmutableList<String> buildTargetFilter, boolean buildManualTests, @Nullable TestFilter testFilter) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.TARGET_PATTERN_PHASE, new TargetPatternList( targetPatterns, @@ -140,7 +141,8 @@ public final class TargetPatternPhaseValue implements SkyValue { buildTestsOnly, determineTests, buildTargetFilter, - buildManualTests, testFilter)); + buildManualTests, + testFilter)); } /** diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java index 22b400e80d..ce65642e65 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternValue.java @@ -31,6 +31,7 @@ import com.google.devtools.build.lib.pkgcache.FilteringPolicy; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.skyframe.InterruptibleSupplier; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import java.io.IOException; @@ -146,7 +147,7 @@ public final class TargetPatternValue implements SkyValue { !positive, offset, ImmutableSet.<PathFragment>of()); - SkyKey skyKey = SkyKey.create(SkyFunctions.TARGET_PATTERN, targetPatternKey); + SkyKey skyKey = LegacySkyKey.create(SkyFunctions.TARGET_PATTERN, targetPatternKey); builder.add(new TargetPatternSkyKeyValue(skyKey)); } return builder.build(); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionValue.java index 01f5698eb0..68e09f22de 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestCompletionValue.java @@ -19,9 +19,9 @@ import com.google.common.collect.Iterables; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.LabelAndConfiguration; import com.google.devtools.build.lib.analysis.TopLevelArtifactContext; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.util.Collection; /** @@ -37,7 +37,7 @@ public class TestCompletionValue implements SkyValue { LabelAndConfiguration lac, final TopLevelArtifactContext topLevelArtifactContext, final boolean exclusiveTesting) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.TEST_COMPLETION, TestCompletionKey.create(lac, topLevelArtifactContext, exclusiveTesting)); } @@ -50,7 +50,7 @@ public class TestCompletionValue implements SkyValue { new Function<ConfiguredTarget, SkyKey>() { @Override public SkyKey apply(ConfiguredTarget ct) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.TEST_COMPLETION, TestCompletionKey.create( LabelAndConfiguration.of(ct), topLevelArtifactContext, exclusiveTesting)); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java index a7a330f36d..9810b75333 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java @@ -22,9 +22,9 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; @@ -70,7 +70,7 @@ public final class TestSuiteExpansionValue implements SkyValue { */ @ThreadSafe public static SkyKey key(Collection<Label> targets) { - return SkyKey.create( + return LegacySkyKey.create( SkyFunctions.TEST_SUITE_EXPANSION, new TestSuiteExpansion(ImmutableSortedSet.copyOf(targets))); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteValue.java index 0267f4a2bc..d0ac8a4ac0 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestsInSuiteValue.java @@ -20,9 +20,9 @@ import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.packages.TargetUtils; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; @@ -68,7 +68,8 @@ final class TestsInSuiteValue implements SkyValue { @ThreadSafe public static SkyKey key(Target testSuite, boolean strict) { Preconditions.checkState(TargetUtils.isTestSuiteRule(testSuite)); - return SkyKey.create(SkyFunctions.TESTS_IN_SUITE, new TestsInSuite((Rule) testSuite, strict)); + return LegacySkyKey.create( + SkyFunctions.TESTS_IN_SUITE, new TestsInSuite((Rule) testSuite, strict)); } /** diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetValue.java index 6fb4fcf059..e603ca371c 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetValue.java @@ -23,14 +23,13 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; import com.google.devtools.build.lib.packages.NoSuchTargetException; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Set; - import javax.annotation.Nullable; /** @@ -172,6 +171,6 @@ public class TransitiveTargetValue implements SkyValue { @ThreadSafe public static SkyKey key(Label label) { Preconditions.checkArgument(!label.getPackageIdentifier().getRepository().isDefault()); - return SkyKey.create(SkyFunctions.TRANSITIVE_TARGET, label); + return LegacySkyKey.create(SkyFunctions.TRANSITIVE_TARGET, label); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java index ef400cf44d..afc26d3568 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTraversalValue.java @@ -143,7 +143,7 @@ public abstract class TransitiveTraversalValue implements SkyValue { @ThreadSafe public static SkyKey key(Label label) { Preconditions.checkArgument(!label.getPackageIdentifier().getRepository().isDefault()); - return SkyKey.create(SkyFunctions.TRANSITIVE_TRAVERSAL, label); + return label; } /** A transitive target reference without error. */ diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java index e002765d73..9c18193f1f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTValue.java @@ -17,9 +17,9 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.syntax.BuildFileAST; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.util.List; /** @@ -57,7 +57,7 @@ public class WorkspaceASTValue implements SkyValue { } public static SkyKey key(RootedPath path) { - return SkyKey.create(SkyFunctions.WORKSPACE_AST, path); + return LegacySkyKey.create(SkyFunctions.WORKSPACE_AST, path); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileValue.java index daf578ecf3..66bd5b2b2f 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileValue.java @@ -21,9 +21,9 @@ import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.syntax.Environment.Extension; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.vfs.RootedPath; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; - import java.util.Map; import java.util.Objects; @@ -135,7 +135,7 @@ public class WorkspaceFileValue implements SkyValue { } static SkyKey key(RootedPath path, int idx) { - return SkyKey.create(SkyFunctions.WORKSPACE_FILE, new WorkspaceFileKey(path, idx)); + return LegacySkyKey.create(SkyFunctions.WORKSPACE_FILE, new WorkspaceFileKey(path, idx)); } public static SkyKey key(RootedPath path) { diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceNameValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceNameValue.java index c752d5829d..668c636b50 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceNameValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceNameValue.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.skyframe; import com.google.devtools.build.lib.util.Preconditions; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; import java.util.Objects; @@ -29,7 +30,7 @@ import javax.annotation.Nullable; */ public class WorkspaceNameValue implements SkyValue { private static final SkyKey KEY = - SkyKey.create(SkyFunctions.WORKSPACE_NAME, DummyArgument.INSTANCE); + LegacySkyKey.create(SkyFunctions.WORKSPACE_NAME, DummyArgument.INSTANCE); private static final WorkspaceNameValue ERROR = new WorkspaceNameValue(null); @Nullable diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java index d2758c5c2d..7ee1d936cf 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceStatusValue.java @@ -17,6 +17,7 @@ import com.google.devtools.build.lib.actions.ActionLookupValue; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.analysis.WorkspaceStatusAction; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunctionName; import com.google.devtools.build.skyframe.SkyKey; @@ -32,7 +33,7 @@ public class WorkspaceStatusValue extends ActionLookupValue { // There should only ever be one BuildInfo value in the graph. static final ArtifactOwner ARTIFACT_OWNER = new BuildInfoKey(); - public static final SkyKey SKY_KEY = SkyKey.create(SkyFunctions.BUILD_INFO, ARTIFACT_OWNER); + public static final SkyKey SKY_KEY = LegacySkyKey.create(SkyFunctions.BUILD_INFO, ARTIFACT_OWNER); WorkspaceStatusValue( Artifact stableArtifact, diff --git a/src/main/java/com/google/devtools/build/skyframe/BUILD b/src/main/java/com/google/devtools/build/skyframe/BUILD index 51f41b46bd..55c35f8102 100644 --- a/src/main/java/com/google/devtools/build/skyframe/BUILD +++ b/src/main/java/com/google/devtools/build/skyframe/BUILD @@ -4,10 +4,33 @@ package( default_visibility = ["//src:__subpackages__"], ) +SKYFRAME_OBJECT_SRCS = [ + "SkyValue.java", + "SkyKey.java", + "LegacySkyKey.java", + "SkyFunctionName.java", +] + +java_library( + name = "skyframe-objects", + srcs = SKYFRAME_OBJECT_SRCS, + visibility = ["//visibility:public"], + deps = [ + "//src/main/java/com/google/devtools/build/lib:collect", + "//src/main/java/com/google/devtools/build/lib:concurrent", + "//src/main/java/com/google/devtools/build/lib:preconditions", + "//third_party:guava", + ], +) + java_library( name = "skyframe", - srcs = glob(["**/*.java"]), + srcs = glob( + ["**/*.java"], + exclude = SKYFRAME_OBJECT_SRCS, + ), deps = [ + ":skyframe-objects", "//src/main/java/com/google/devtools/build/lib:clock", # keep "//src/main/java/com/google/devtools/build/lib:collect", "//src/main/java/com/google/devtools/build/lib:concurrent", diff --git a/src/main/java/com/google/devtools/build/skyframe/ErrorTransienceValue.java b/src/main/java/com/google/devtools/build/skyframe/ErrorTransienceValue.java index c0544dfbf5..46b99c2245 100644 --- a/src/main/java/com/google/devtools/build/skyframe/ErrorTransienceValue.java +++ b/src/main/java/com/google/devtools/build/skyframe/ErrorTransienceValue.java @@ -22,7 +22,7 @@ import java.io.ObjectOutputStream; */ public final class ErrorTransienceValue implements SkyValue { public static final SkyFunctionName FUNCTION_NAME = SkyFunctionName.create("ERROR_TRANSIENCE"); - public static final SkyKey KEY = SkyKey.create(FUNCTION_NAME, "ERROR_TRANSIENCE"); + public static final SkyKey KEY = LegacySkyKey.create(FUNCTION_NAME, "ERROR_TRANSIENCE"); public static final ErrorTransienceValue INSTANCE = new ErrorTransienceValue(); private ErrorTransienceValue() {} diff --git a/src/main/java/com/google/devtools/build/skyframe/LegacySkyKey.java b/src/main/java/com/google/devtools/build/skyframe/LegacySkyKey.java new file mode 100644 index 0000000000..637a0fc560 --- /dev/null +++ b/src/main/java/com/google/devtools/build/skyframe/LegacySkyKey.java @@ -0,0 +1,127 @@ +// Copyright 2017 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.devtools.build.skyframe; + +import com.google.common.collect.Interner; +import com.google.devtools.build.lib.concurrent.BlazeInterners; +import com.google.devtools.build.lib.util.Preconditions; + +/** + * Basic implementation of {@link SkyKey}. Potentially non-optimal from a memory perspective, since + * it uses fields for hash code and {@link #functionName}. The latter should be implemented instead + * using polymorphism. See {@code ArtifactSkyKey} for an example. + */ +public class LegacySkyKey implements SkyKey { + private static final Interner<SkyKey> SKY_KEY_INTERNER = BlazeInterners.newWeakInterner(); + + /** + * Creates a {@link SkyKey}. Prefer instead creating custom SkyKeys that are their own arguments, + * saving the object wrapper. See {@code ArtifactSkyKey} for an example. + */ + // TODO(janakr): migrate users of this to use custom SkyKey subclasses and delete this. + @Deprecated + public static SkyKey create(SkyFunctionName functionName, Object argument) { + // Intern to save memory. + return SKY_KEY_INTERNER.intern(new LegacySkyKey(functionName, argument)); + } + + private final SkyFunctionName functionName; + + /** + * The name of the value. + * + * <p>This is deliberately an untyped Object so that we can use arbitrary value types (e.g., + * Labels, PathFragments, BuildConfigurations, etc.) as value names without incurring + * serialization costs in the in-memory implementation of the graph. + */ + private final Object argument; + + /** + * Cache the hash code for this object. It might be expensive to compute. It is transient because + * argument's hash code might not be stable across JVM instances. + */ + private transient int hashCode; + + private LegacySkyKey(SkyFunctionName functionName, Object argument) { + this.functionName = Preconditions.checkNotNull(functionName); + this.argument = Preconditions.checkNotNull(argument); + // 'hashCode' is non-volatile and non-final, so this write may in fact *not* be visible to other + // threads. But this isn't a concern from a correctness perspective. See the comments in + // #hashCode for more details. + this.hashCode = computeHashCode(); + } + + @Override + public SkyFunctionName functionName() { + return functionName; + } + + @Override + public Object argument() { + return argument; + } + + @Override + public String toString() { + return functionName + ":" + argument; + } + + @Override + public int hashCode() { + // We use the hash code caching strategy employed by java.lang.String. There are three subtle + // things going on here: + // + // (1) We use a value of 0 to indicate that the hash code hasn't been computed and cached yet. + // Yes, this means that if the hash code is really 0 then we will "recompute" it each time. But + // this isn't a problem in practice since a hash code of 0 should be rare. + // + // (2) Since we have no synchronization, multiple threads can race here thinking there are the + // first one to compute and cache the hash code. + // + // (3) Moreover, since 'hashCode' is non-volatile, the cached hash code value written from one + // thread may not be visible by another. + // + // All three of these issues are benign from a correctness perspective; in the end we have no + // overhead from synchronization, at the cost of potentially computing the hash code more than + // once. + int h = hashCode; + if (h == 0) { + h = computeHashCode(); + hashCode = h; + } + return h; + } + + private int computeHashCode() { + return 31 * functionName.hashCode() + argument.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + LegacySkyKey other = (LegacySkyKey) obj; + if (hashCode() != other.hashCode()) { + return false; + } + return functionName.equals(other.functionName) && argument.equals(other.argument); + } +} diff --git a/src/main/java/com/google/devtools/build/skyframe/SimpleCycleDetector.java b/src/main/java/com/google/devtools/build/skyframe/SimpleCycleDetector.java index 59fbc077e5..2adbbc54ed 100644 --- a/src/main/java/com/google/devtools/build/skyframe/SimpleCycleDetector.java +++ b/src/main/java/com/google/devtools/build/skyframe/SimpleCycleDetector.java @@ -78,7 +78,7 @@ class SimpleCycleDetector implements CycleDetector { * ArrayDeque does not permit null elements. */ private static final SkyKey CHILDREN_FINISHED = - SkyKey.create(SkyFunctionName.create("MARKER"), "MARKER"); + LegacySkyKey.create(SkyFunctionName.create("MARKER"), "MARKER"); /** The max number of cycles we will report to the user for a given root, to avoid OOMing. */ private static final int MAX_CYCLES = 20; diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyKey.java b/src/main/java/com/google/devtools/build/skyframe/SkyKey.java index 0af8b82250..2428f9cf80 100644 --- a/src/main/java/com/google/devtools/build/skyframe/SkyKey.java +++ b/src/main/java/com/google/devtools/build/skyframe/SkyKey.java @@ -13,115 +13,21 @@ // limitations under the License. package com.google.devtools.build.skyframe; -import com.google.common.base.Function; -import com.google.common.collect.Interner; -import com.google.devtools.build.lib.concurrent.BlazeInterners; -import com.google.devtools.build.lib.util.Preconditions; - import java.io.Serializable; /** * A {@link SkyKey} is effectively a pair (type, name) that identifies a Skyframe value. + * + * <p>SkyKey implementations are heavily used as map keys. Thus, they should have fast {@link + * #hashCode} implementations (cached if necessary). The same SkyKey may be created multiple times + * by different {@code SkyFunction}s requesting it, and so it should have effective interning. There + * will likely be more SkyKeys on the JVM heap than any other non-native type, so be mindful of + * memory usage (in particular object wrapper size and memory alignment)! Typically the + * implementation should have a fixed {@link #functionName} implementation and return itself as the + * {@link #argument} in order to reduce the cost of wrapper objects. */ -public final class SkyKey implements Serializable { - private static final Interner<SkyKey> SKY_KEY_INTERNER = BlazeInterners.newWeakInterner(); - - private final SkyFunctionName functionName; - - /** - * The name of the value. - * - * <p>This is deliberately an untyped Object so that we can use arbitrary value types (e.g., - * Labels, PathFragments, BuildConfigurations, etc.) as value names without incurring - * serialization costs in the in-memory implementation of the graph. - */ - private final Object argument; - - /** - * Cache the hash code for this object. It might be expensive to compute. It is transient because - * argument's hash code might not be stable across JVM instances. - */ - private transient int hashCode; - - private SkyKey(SkyFunctionName functionName, Object argument) { - this.functionName = Preconditions.checkNotNull(functionName); - this.argument = Preconditions.checkNotNull(argument); - // 'hashCode' is non-volatile and non-final, so this write may in fact *not* be visible to other - // threads. But this isn't a concern from a correctness perspective. See the comments in - // #hashCode for more details. - this.hashCode = computeHashCode(); - } - - public static SkyKey create(SkyFunctionName functionName, Object argument) { - // Intern to save memory. - return SKY_KEY_INTERNER.intern(new SkyKey(functionName, argument)); - } - - public SkyFunctionName functionName() { - return functionName; - } - - public Object argument() { - return argument; - } - - @Override - public String toString() { - return functionName + ":" + argument; - } - - @Override - public int hashCode() { - // We use the hash code caching strategy employed by java.lang.String. There are three subtle - // things going on here: - // - // (1) We use a value of 0 to indicate that the hash code hasn't been computed and cached yet. - // Yes, this means that if the hash code is really 0 then we will "recompute" it each time. But - // this isn't a problem in practice since a hash code of 0 should be rare. - // - // (2) Since we have no synchronization, multiple threads can race here thinking there are the - // first one to compute and cache the hash code. - // - // (3) Moreover, since 'hashCode' is non-volatile, the cached hash code value written from one - // thread may not be visible by another. - // - // All three of these issues are benign from a correctness perspective; in the end we have no - // overhead from synchronization, at the cost of potentially computing the hash code more than - // once. - int h = hashCode; - if (h == 0) { - h = computeHashCode(); - hashCode = h; - } - return h; - } - - private int computeHashCode() { - return 31 * functionName.hashCode() + argument.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - SkyKey other = (SkyKey) obj; - if (hashCode() != other.hashCode()) { - return false; - } - return functionName.equals(other.functionName) && argument.equals(other.argument); - } +public interface SkyKey extends Serializable { + SkyFunctionName functionName(); - public static final Function<SkyKey, Object> NODE_NAME = new Function<SkyKey, Object>() { - @Override - public Object apply(SkyKey input) { - return input.argument(); - } - }; + Object argument(); } diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD index 3b92f212de..302276a94f 100644 --- a/src/test/java/com/google/devtools/build/lib/BUILD +++ b/src/test/java/com/google/devtools/build/lib/BUILD @@ -272,6 +272,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib:vfs", "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//third_party:guava", "//third_party:guava-testlib", @@ -365,6 +366,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/rules/genquery", "//src/main/java/com/google/devtools/build/lib/rules/objc", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//src/main/protobuf:extra_actions_base_java_proto", "//src/test/java/com/google/devtools/build/lib/skyframe:testutil", @@ -536,6 +538,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/test/java/com/google/devtools/build/lib/skyframe:testutil", "//third_party:auto_value", "//third_party:guava", @@ -593,6 +596,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//src/main/protobuf:build_java_proto", "//src/main/protobuf:crosstool_config_java_proto", @@ -634,6 +638,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/lib:vfs", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/protobuf:build_java_proto", "//third_party:guava", "//third_party:guava-testlib", @@ -663,6 +668,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib:io", "//src/main/java/com/google/devtools/build/lib:packages", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/test/java/com/google/devtools/build/lib:testutil", "//third_party:guava", "//third_party:jsr305", diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/BUILD b/src/test/java/com/google/devtools/build/lib/bazel/repository/BUILD index d3c387dbec..da28b50f64 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/repository/BUILD +++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/BUILD @@ -29,6 +29,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/bazel/repository/downloader", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/com/google/devtools/common/options", "//src/test/java/com/google/devtools/build/lib:analysis_testutil", "//src/test/java/com/google/devtools/build/lib:foundations_testutil", diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD b/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD index 8d94ddba6c..7750bb23a5 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD +++ b/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD @@ -30,6 +30,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/test/java/com/google/devtools/build/lib:actions_testutil", "//src/test/java/com/google/devtools/build/lib:analysis_testutil", "//src/test/java/com/google/devtools/build/lib:packages_testutil", diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java index 36320171b9..491ecc14d1 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTestCase.java @@ -34,6 +34,7 @@ import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem; import com.google.devtools.build.skyframe.InMemoryMemoizingEvaluator; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.MemoizingEvaluator; import com.google.devtools.build.skyframe.RecordingDifferencer; import com.google.devtools.build.skyframe.SequentialBuildDriver; @@ -51,7 +52,7 @@ import org.junit.Before; abstract class ArtifactFunctionTestCase { static final ActionLookupKey ALL_OWNER = new SingletonActionLookupKey(); - static final SkyKey OWNER_KEY = SkyKey.create(SkyFunctions.ACTION_LOOKUP, ALL_OWNER); + static final SkyKey OWNER_KEY = LegacySkyKey.create(SkyFunctions.ACTION_LOOKUP, ALL_OWNER); protected Predicate<PathFragment> allowedMissingInputsPredicate = Predicates.alwaysFalse(); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD index 022d46ef00..8c5e58559e 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD +++ b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD @@ -26,6 +26,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/test/java/com/google/devtools/build/lib:actions_testutil", "//src/test/java/com/google/devtools/build/lib:foundations_testutil", "//src/test/java/com/google/devtools/build/lib:packages_testutil", @@ -70,6 +71,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/test/java/com/google/devtools/build/lib:actions_testutil", "//src/test/java/com/google/devtools/build/lib:analysis_testutil", "//src/test/java/com/google/devtools/build/lib:foundations_testutil", diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java index 0f7a4c69dd..fa102db528 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java @@ -46,6 +46,7 @@ import com.google.devtools.build.lib.testutil.Suite; import com.google.devtools.build.lib.testutil.TestSpec; import com.google.devtools.build.lib.util.OrderedSetMultimap; import com.google.devtools.build.skyframe.EvaluationResult; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.SkyFunction; import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionName; @@ -98,7 +99,7 @@ public class ConfigurationsForTargetsTest extends AnalysisTestCase { * Returns a {@link SkyKey} for a given <Target, BuildConfiguration> pair. */ static SkyKey key(Target target, BuildConfiguration config) { - return SkyKey.create(SKYFUNCTION_NAME, new TargetAndConfiguration(target, config)); + return LegacySkyKey.create(SKYFUNCTION_NAME, new TargetAndConfiguration(target, config)); } /** diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java index f8253903d4..830b91c786 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java @@ -54,7 +54,6 @@ import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.lib.util.io.TimestampGranularityMonitor; import com.google.devtools.build.lib.vfs.FileStatus; import com.google.devtools.build.lib.vfs.FileSystem; -import com.google.devtools.build.lib.vfs.FileSystem.HashFunction; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; @@ -761,7 +760,12 @@ public class FileFunctionTest { Iterables.filter( graph.getValues().keySet(), SkyFunctionName.functionIs(SkyFunctions.FILE_STATE)), - SkyKey.NODE_NAME)); + new Function<SkyKey, Object>() { + @Override + public Object apply(SkyKey skyKey) { + return skyKey.argument(); + } + })); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java index 4b6b7002f5..901fa9ffe9 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java @@ -76,6 +76,7 @@ import com.google.devtools.build.skyframe.ErrorInfo; import com.google.devtools.build.skyframe.EvaluationProgressReceiver; import com.google.devtools.build.skyframe.EvaluationResult; import com.google.devtools.build.skyframe.InMemoryMemoizingEvaluator; +import com.google.devtools.build.skyframe.LegacySkyKey; import com.google.devtools.build.skyframe.RecordingDifferencer; import com.google.devtools.build.skyframe.SequentialBuildDriver; import com.google.devtools.build.skyframe.SkyFunction; @@ -104,7 +105,8 @@ import org.junit.Before; public abstract class TimestampBuilderTestCase extends FoundationTestCase { protected static final ActionLookupValue.ActionLookupKey ALL_OWNER = new SingletonActionLookupKey(); - protected static final SkyKey OWNER_KEY = SkyKey.create(SkyFunctions.ACTION_LOOKUP, ALL_OWNER); + protected static final SkyKey OWNER_KEY = + LegacySkyKey.create(SkyFunctions.ACTION_LOOKUP, ALL_OWNER); protected static final Predicate<Action> ALWAYS_EXECUTE_FILTER = Predicates.alwaysTrue(); protected static final String CYCLE_MSG = "Yarrrr, there be a cycle up in here"; diff --git a/src/test/java/com/google/devtools/build/lib/skylark/BUILD b/src/test/java/com/google/devtools/build/lib/skylark/BUILD index 85c00a305c..0cd4824961 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/BUILD +++ b/src/test/java/com/google/devtools/build/lib/skylark/BUILD @@ -56,6 +56,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/rules/cpp", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/test/java/com/google/devtools/build/lib:actions_testutil", "//src/test/java/com/google/devtools/build/lib:analysis_testutil", "//src/test/java/com/google/devtools/build/lib:foundations_testutil", diff --git a/src/test/java/com/google/devtools/build/skyframe/BUILD b/src/test/java/com/google/devtools/build/skyframe/BUILD index 496678ae8b..6d65934f7b 100644 --- a/src/test/java/com/google/devtools/build/skyframe/BUILD +++ b/src/test/java/com/google/devtools/build/skyframe/BUILD @@ -26,6 +26,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib:events", "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/test/java/com/google/devtools/build/lib:testutil", "//third_party:guava", "//third_party:guava-testlib", @@ -48,6 +49,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib:events", "//src/main/java/com/google/devtools/build/lib:util", "//src/main/java/com/google/devtools/build/skyframe", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/test/java/com/google/devtools/build/lib:testutil", "//third_party:guava", "//third_party:guava-testlib", diff --git a/src/test/java/com/google/devtools/build/skyframe/CyclesReporterTest.java b/src/test/java/com/google/devtools/build/skyframe/CyclesReporterTest.java index e009493a57..06dd49b97c 100644 --- a/src/test/java/com/google/devtools/build/skyframe/CyclesReporterTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/CyclesReporterTest.java @@ -27,7 +27,8 @@ import org.junit.runners.JUnit4; @RunWith(JUnit4.class) public class CyclesReporterTest { - private static final SkyKey DUMMY_KEY = SkyKey.create(SkyFunctionName.create("func"), "key"); + private static final SkyKey DUMMY_KEY = + LegacySkyKey.create(SkyFunctionName.create("func"), "key"); @Test public void nullEventHandler() { diff --git a/src/test/java/com/google/devtools/build/skyframe/ErrorInfoTest.java b/src/test/java/com/google/devtools/build/skyframe/ErrorInfoTest.java index 4b04614e12..e88d73ebee 100644 --- a/src/test/java/com/google/devtools/build/skyframe/ErrorInfoTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/ErrorInfoTest.java @@ -20,13 +20,11 @@ import com.google.common.collect.Iterables; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.skyframe.SkyFunctionException.ReifiedSkyFunctionException; - +import java.io.IOException; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import java.io.IOException; - /** Tests for the non-trivial creation logic of {@link ErrorInfo}. */ @RunWith(JUnit4.class) public class ErrorInfoTest { @@ -49,7 +47,7 @@ public class ErrorInfoTest { private void runTestFromException(boolean isDirectlyTransient, boolean isTransitivelyTransient) { Exception exception = new IOException("ehhhhh"); - SkyKey causeOfException = SkyKey.create(SkyFunctionName.create("CAUSE"), 1234); + SkyKey causeOfException = LegacySkyKey.create(SkyFunctionName.create("CAUSE"), 1234); DummySkyFunctionException dummyException = new DummySkyFunctionException(exception, isDirectlyTransient, /*isCatastrophic=*/ false); @@ -89,8 +87,8 @@ public class ErrorInfoTest { public void testFromCycle() { CycleInfo cycle = new CycleInfo( - ImmutableList.of(SkyKey.create(SkyFunctionName.create("PATH"), 1234)), - ImmutableList.of(SkyKey.create(SkyFunctionName.create("CYCLE"), 4321))); + ImmutableList.of(LegacySkyKey.create(SkyFunctionName.create("PATH"), 1234)), + ImmutableList.of(LegacySkyKey.create(SkyFunctionName.create("CYCLE"), 4321))); ErrorInfo errorInfo = ErrorInfo.fromCycle(cycle); @@ -105,12 +103,12 @@ public class ErrorInfoTest { public void testFromChildErrors() { CycleInfo cycle = new CycleInfo( - ImmutableList.of(SkyKey.create(SkyFunctionName.create("PATH"), 1234)), - ImmutableList.of(SkyKey.create(SkyFunctionName.create("CYCLE"), 4321))); + ImmutableList.of(LegacySkyKey.create(SkyFunctionName.create("PATH"), 1234)), + ImmutableList.of(LegacySkyKey.create(SkyFunctionName.create("CYCLE"), 4321))); ErrorInfo cycleErrorInfo = ErrorInfo.fromCycle(cycle); Exception exception1 = new IOException("ehhhhh"); - SkyKey causeOfException1 = SkyKey.create(SkyFunctionName.create("CAUSE1"), 1234); + SkyKey causeOfException1 = LegacySkyKey.create(SkyFunctionName.create("CAUSE1"), 1234); DummySkyFunctionException dummyException1 = new DummySkyFunctionException(exception1, /*isTransient=*/ true, /*isCatastrophic=*/ false); ErrorInfo exceptionErrorInfo1 = ErrorInfo.fromException( @@ -119,14 +117,14 @@ public class ErrorInfoTest { // N.B this ErrorInfo will be catastrophic. Exception exception2 = new IOException("blahhhhh"); - SkyKey causeOfException2 = SkyKey.create(SkyFunctionName.create("CAUSE2"), 5678); + SkyKey causeOfException2 = LegacySkyKey.create(SkyFunctionName.create("CAUSE2"), 5678); DummySkyFunctionException dummyException2 = new DummySkyFunctionException(exception2, /*isTransient=*/ false, /*isCatastrophic=*/ true); ErrorInfo exceptionErrorInfo2 = ErrorInfo.fromException( new ReifiedSkyFunctionException(dummyException2, causeOfException2), /*isTransitivelyTransient=*/ false); - SkyKey currentKey = SkyKey.create(SkyFunctionName.create("CURRENT"), 9876); + SkyKey currentKey = LegacySkyKey.create(SkyFunctionName.create("CURRENT"), 9876); ErrorInfo errorInfo = ErrorInfo.fromChildErrors( currentKey, ImmutableList.of(cycleErrorInfo, exceptionErrorInfo1, exceptionErrorInfo2)); diff --git a/src/test/java/com/google/devtools/build/skyframe/GraphTest.java b/src/test/java/com/google/devtools/build/skyframe/GraphTest.java index 932878fbe2..84016d7953 100644 --- a/src/test/java/com/google/devtools/build/skyframe/GraphTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/GraphTest.java @@ -71,7 +71,7 @@ public abstract class GraphTest { } protected SkyKey key(String name) { - return SkyKey.create(SKY_FUNCTION_NAME, name); + return LegacySkyKey.create(SKY_FUNCTION_NAME, name); } @Test diff --git a/src/test/java/com/google/devtools/build/skyframe/GraphTester.java b/src/test/java/com/google/devtools/build/skyframe/GraphTester.java index a5eb7177b9..f643783b29 100644 --- a/src/test/java/com/google/devtools/build/skyframe/GraphTester.java +++ b/src/test/java/com/google/devtools/build/skyframe/GraphTester.java @@ -23,13 +23,11 @@ import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.lib.util.Preconditions; import com.google.devtools.build.skyframe.SkyFunction.Environment; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; - import java.util.HashMap; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; - import javax.annotation.Nullable; /** @@ -158,7 +156,7 @@ public class GraphTester { } public static SkyKey skyKey(String key) { - return SkyKey.create(NODE_TYPE, key); + return LegacySkyKey.create(NODE_TYPE, key); } /** @@ -266,7 +264,7 @@ public class GraphTester { public static SkyKey[] toSkyKeys(String... names) { SkyKey[] result = new SkyKey[names.length]; for (int i = 0; i < names.length; i++) { - result[i] = SkyKey.create(GraphTester.NODE_TYPE, names[i]); + result[i] = LegacySkyKey.create(GraphTester.NODE_TYPE, names[i]); } return result; } diff --git a/src/test/java/com/google/devtools/build/skyframe/InMemoryNodeEntryTest.java b/src/test/java/com/google/devtools/build/skyframe/InMemoryNodeEntryTest.java index 5829329452..37f3ba9f5f 100644 --- a/src/test/java/com/google/devtools/build/skyframe/InMemoryNodeEntryTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/InMemoryNodeEntryTest.java @@ -51,7 +51,7 @@ public class InMemoryNodeEntryTest { NestedSetBuilder.<TaggedEvents>emptySet(Order.STABLE_ORDER); private static SkyKey key(String name) { - return SkyKey.create(NODE_TYPE, name); + return LegacySkyKey.create(NODE_TYPE, name); } @Test diff --git a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java index 461047d6d5..c8d121b4c0 100644 --- a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java @@ -143,7 +143,7 @@ public class MemoizingEvaluatorTest { } private static SkyKey toSkyKey(String name) { - return SkyKey.create(NODE_TYPE, name); + return LegacySkyKey.create(NODE_TYPE, name); } @Test diff --git a/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java index 2097852053..0db63baa6a 100644 --- a/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/ParallelEvaluatorTest.java @@ -1485,7 +1485,7 @@ public class ParallelEvaluatorTest { class ParentFunction implements SkyFunction { @Override public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedException { - SkyValue dep = env.getValue(SkyKey.create(childType, "billy the kid")); + SkyValue dep = env.getValue(LegacySkyKey.create(childType, "billy the kid")); if (dep == null) { return null; } @@ -1501,7 +1501,7 @@ public class ParallelEvaluatorTest { ParallelEvaluator evaluator = makeEvaluator(new InMemoryGraphImpl(), skyFunctions, false); try { - evaluator.eval(ImmutableList.of(SkyKey.create(parentType, "octodad"))); + evaluator.eval(ImmutableList.of(LegacySkyKey.create(parentType, "octodad"))); fail(); } catch (RuntimeException e) { assertEquals("I WANT A PONY!!!", e.getCause().getMessage()); diff --git a/src/test/java/com/google/devtools/build/skyframe/ReverseDepsUtilityTest.java b/src/test/java/com/google/devtools/build/skyframe/ReverseDepsUtilityTest.java index 3001c2a43f..e61aef104d 100644 --- a/src/test/java/com/google/devtools/build/skyframe/ReverseDepsUtilityTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/ReverseDepsUtilityTest.java @@ -51,13 +51,13 @@ public class ReverseDepsUtilityTest { InMemoryNodeEntry example = new InMemoryNodeEntry(); for (int j = 0; j < numElements; j++) { ReverseDepsUtility.addReverseDeps( - example, Collections.singleton(SkyKey.create(NODE_TYPE, j))); + example, Collections.singleton(LegacySkyKey.create(NODE_TYPE, j))); } // Not a big test but at least check that it does not blow up. assertThat(ReverseDepsUtility.toString(example)).isNotEmpty(); assertThat(ReverseDepsUtility.getReverseDeps(example)).hasSize(numElements); for (int i = 0; i < numRemovals; i++) { - ReverseDepsUtility.removeReverseDep(example, SkyKey.create(NODE_TYPE, i)); + ReverseDepsUtility.removeReverseDep(example, LegacySkyKey.create(NODE_TYPE, i)); } assertThat(ReverseDepsUtility.getReverseDeps(example)).hasSize(numElements - numRemovals); assertThat(example.getReverseDepsDataToConsolidateForReverseDepsUtil()).isNull(); @@ -71,12 +71,12 @@ public class ReverseDepsUtilityTest { InMemoryNodeEntry example = new InMemoryNodeEntry(); List<SkyKey> toAdd = new ArrayList<>(); for (int j = 0; j < numElements; j++) { - toAdd.add(SkyKey.create(NODE_TYPE, j)); + toAdd.add(LegacySkyKey.create(NODE_TYPE, j)); } ReverseDepsUtility.addReverseDeps(example, toAdd); assertThat(ReverseDepsUtility.getReverseDeps(example)).hasSize(numElements); for (int i = 0; i < numRemovals; i++) { - ReverseDepsUtility.removeReverseDep(example, SkyKey.create(NODE_TYPE, i)); + ReverseDepsUtility.removeReverseDep(example, LegacySkyKey.create(NODE_TYPE, i)); } assertThat(ReverseDepsUtility.getReverseDeps(example)).hasSize(numElements - numRemovals); assertThat(example.getReverseDepsDataToConsolidateForReverseDepsUtil()).isNull(); @@ -88,10 +88,11 @@ public class ReverseDepsUtilityTest { InMemoryNodeEntry example = new InMemoryNodeEntry(); for (int i = 0; i < numElements; i++) { ReverseDepsUtility.addReverseDeps( - example, Collections.singleton(SkyKey.create(NODE_TYPE, i))); + example, Collections.singleton(LegacySkyKey.create(NODE_TYPE, i))); } // Should only fail when we call getReverseDeps(). - ReverseDepsUtility.addReverseDeps(example, Collections.singleton(SkyKey.create(NODE_TYPE, 0))); + ReverseDepsUtility.addReverseDeps( + example, Collections.singleton(LegacySkyKey.create(NODE_TYPE, 0))); try { ReverseDepsUtility.getReverseDeps(example); assertThat(numElements).isEqualTo(0); @@ -102,7 +103,7 @@ public class ReverseDepsUtilityTest { @Test public void doubleAddThenRemove() { InMemoryNodeEntry example = new InMemoryNodeEntry(); - SkyKey key = SkyKey.create(NODE_TYPE, 0); + SkyKey key = LegacySkyKey.create(NODE_TYPE, 0); ReverseDepsUtility.addReverseDeps(example, Collections.singleton(key)); // Should only fail when we call getReverseDeps(). ReverseDepsUtility.addReverseDeps(example, Collections.singleton(key)); @@ -117,8 +118,8 @@ public class ReverseDepsUtilityTest { @Test public void doubleAddThenRemoveCheckedOnSize() { InMemoryNodeEntry example = new InMemoryNodeEntry(); - SkyKey fixedKey = SkyKey.create(NODE_TYPE, 0); - SkyKey key = SkyKey.create(NODE_TYPE, 1); + SkyKey fixedKey = LegacySkyKey.create(NODE_TYPE, 0); + SkyKey key = LegacySkyKey.create(NODE_TYPE, 1); ReverseDepsUtility.addReverseDeps(example, ImmutableList.of(fixedKey, key)); // Should only fail when we reach the limit. ReverseDepsUtility.addReverseDeps(example, Collections.singleton(key)); @@ -134,8 +135,8 @@ public class ReverseDepsUtilityTest { @Test public void addRemoveAdd() { InMemoryNodeEntry example = new InMemoryNodeEntry(); - SkyKey fixedKey = SkyKey.create(NODE_TYPE, 0); - SkyKey key = SkyKey.create(NODE_TYPE, 1); + SkyKey fixedKey = LegacySkyKey.create(NODE_TYPE, 0); + SkyKey key = LegacySkyKey.create(NODE_TYPE, 1); ReverseDepsUtility.addReverseDeps(example, ImmutableList.of(fixedKey, key)); ReverseDepsUtility.removeReverseDep(example, key); ReverseDepsUtility.addReverseDeps(example, Collections.singleton(key)); @@ -147,12 +148,13 @@ public class ReverseDepsUtilityTest { InMemoryNodeEntry example = new InMemoryNodeEntry(); for (int i = 0; i < numElements; i++) { ReverseDepsUtility.addReverseDeps( - example, Collections.singleton(SkyKey.create(NODE_TYPE, i))); + example, Collections.singleton(LegacySkyKey.create(NODE_TYPE, i))); // This should always succeed, since the next element is still not present. - ReverseDepsUtility.maybeCheckReverseDepNotPresent(example, SkyKey.create(NODE_TYPE, i + 1)); + ReverseDepsUtility.maybeCheckReverseDepNotPresent( + example, LegacySkyKey.create(NODE_TYPE, i + 1)); } try { - ReverseDepsUtility.maybeCheckReverseDepNotPresent(example, SkyKey.create(NODE_TYPE, 0)); + ReverseDepsUtility.maybeCheckReverseDepNotPresent(example, LegacySkyKey.create(NODE_TYPE, 0)); // Should only fail if empty or above the checking threshold. assertThat(numElements == 0 || numElements >= ReverseDepsUtility.MAYBE_CHECK_THRESHOLD) .isTrue(); diff --git a/src/test/java/com/google/devtools/build/skyframe/SkyKeyTest.java b/src/test/java/com/google/devtools/build/skyframe/SkyKeyTest.java index 0e22db30ca..fc3cb3faa4 100644 --- a/src/test/java/com/google/devtools/build/skyframe/SkyKeyTest.java +++ b/src/test/java/com/google/devtools/build/skyframe/SkyKeyTest.java @@ -16,13 +16,11 @@ package com.google.devtools.build.skyframe; import static com.google.common.truth.Truth.assertThat; import com.google.devtools.build.lib.testutil.TestUtils; - +import java.io.Serializable; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import java.io.Serializable; - /** * Unit test for the SkyKey class, checking hash code transience logic. */ @@ -36,7 +34,7 @@ public class SkyKeyTest { assertThat(hashCodeSpy.getNumberOfTimesHashCodeCalled()).isEqualTo(0); // When a SkyKey is constructed with that HashCodeSpy as its argument, - SkyKey originalKey = SkyKey.create(SkyFunctionName.create("TEMP"), hashCodeSpy); + SkyKey originalKey = LegacySkyKey.create(SkyFunctionName.create("TEMP"), hashCodeSpy); // Then the HashCodeSpy reports that its hashcode method was called once. assertThat(hashCodeSpy.getNumberOfTimesHashCodeCalled()).isEqualTo(1); |