diff options
author | shahan <shahan@google.com> | 2018-06-26 11:24:59 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-26 11:27:44 -0700 |
commit | ef6f4cff9ee3e0c92b61f59ca0585f63ff17e9a4 (patch) | |
tree | 18edd2f65766e2f61f0fe38d4b44497ced83dd09 /src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java | |
parent | 89dfee5221180aa49b559f22eb6d5bf6bc14c769 (diff) |
Instead of depending on mutable inputs of upstream CppCompileAction instances,
CppCompileAction.discoverInputsStage2 retrieves values of discovered modules
from ActionExecutionValue.
This addresses a possible a correctness issue.
PiperOrigin-RevId: 202162180
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionValue.java | 28 |
1 files changed, 23 insertions, 5 deletions
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 37f8b2031f..a1feff8bd9 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 @@ -19,6 +19,7 @@ import com.google.common.base.Objects; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import com.google.devtools.build.lib.actions.ActionLookupData; import com.google.devtools.build.lib.actions.ActionLookupValue; @@ -73,6 +74,8 @@ public class ActionExecutionValue implements SkyValue { @Nullable private final ImmutableList<FilesetOutputSymlink> outputSymlinks; + @Nullable private final ImmutableSet<Artifact> discoveredModules; + /** * @param artifactData Map from Artifacts to corresponding FileValues. * @param treeArtifactData All tree artifact data. @@ -82,16 +85,19 @@ public class ActionExecutionValue implements SkyValue { * data are not used by the {@link FilesystemValueChecker} to invalidate * ActionExecutionValues. * @param outputSymlinks This represents the SymlinkTree which is the output of a fileset action. + * @param discoveredModules cpp modules discovered */ private ActionExecutionValue( Map<Artifact, FileValue> artifactData, Map<Artifact, TreeArtifactValue> treeArtifactData, Map<Artifact, FileArtifactValue> additionalOutputData, - @Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks) { + @Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks, + @Nullable ImmutableSet<Artifact> discoveredModules) { this.artifactData = ImmutableMap.<Artifact, FileValue>copyOf(artifactData); this.additionalOutputData = ImmutableMap.copyOf(additionalOutputData); this.treeArtifactData = ImmutableMap.copyOf(treeArtifactData); this.outputSymlinks = outputSymlinks; + this.discoveredModules = discoveredModules; } static ActionExecutionValue create( @@ -99,12 +105,17 @@ public class ActionExecutionValue implements SkyValue { Map<Artifact, TreeArtifactValue> treeArtifactData, Map<Artifact, FileArtifactValue> additionalOutputData, @Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks, + @Nullable ImmutableSet<Artifact> discoveredModules, boolean notifyOnActionCacheHitAction) { return notifyOnActionCacheHitAction ? new CrossServerUnshareableActionExecutionValue( - artifactData, treeArtifactData, additionalOutputData, outputSymlinks) + artifactData, treeArtifactData, additionalOutputData, outputSymlinks, discoveredModules) : new ActionExecutionValue( - artifactData, treeArtifactData, additionalOutputData, outputSymlinks); + artifactData, + treeArtifactData, + additionalOutputData, + outputSymlinks, + discoveredModules); } /** @@ -155,6 +166,11 @@ public class ActionExecutionValue implements SkyValue { return outputSymlinks; } + @Nullable + public ImmutableSet<Artifact> getDiscoveredModules() { + return discoveredModules; + } + /** * @param lookupKey A {@link SkyKey} whose argument is an {@code ActionLookupKey}, whose * corresponding {@code ActionLookupValue} contains the action to be executed. @@ -224,8 +240,10 @@ public class ActionExecutionValue implements SkyValue { Map<Artifact, FileValue> artifactData, Map<Artifact, TreeArtifactValue> treeArtifactData, Map<Artifact, FileArtifactValue> additionalOutputData, - @Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks) { - super(artifactData, treeArtifactData, additionalOutputData, outputSymlinks); + @Nullable ImmutableList<FilesetOutputSymlink> outputSymlinks, + @Nullable ImmutableSet<Artifact> discoveredModules) { + super( + artifactData, treeArtifactData, additionalOutputData, outputSymlinks, discoveredModules); } } } |