diff options
author | 2017-07-18 18:12:09 +0200 | |
---|---|---|
committer | 2017-07-19 10:20:40 +0200 | |
commit | be83f13d14fe090b111ced12c835b4c092184ac9 (patch) | |
tree | 3eba07d8aa913aab9d49e7ee4d74bbdbde462326 | |
parent | 96b4081b29c639c24660411cc2d326afb826d9a7 (diff) |
Now that SkyKey is an interface, accept Iterable<? extends SkyKey>
A subsequent CL makes TargetPatternKey implement SkyKey, and it's much nicer
if I can pass lists of TargetPatternKey to the various Skyframe APIs.
PiperOrigin-RevId: 162359843
18 files changed, 51 insertions, 46 deletions
diff --git a/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java index 7ddd11b1af..7c5deabdd8 100644 --- a/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java +++ b/src/main/java/com/google/devtools/build/skyframe/AbstractSkyFunctionEnvironment.java @@ -105,7 +105,7 @@ public abstract class AbstractSkyFunctionEnvironment implements SkyFunction.Envi E4 extends Exception, E5 extends Exception> Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValueOrExceptions( - Iterable<SkyKey> depKeys, + Iterable<? extends SkyKey> depKeys, final Class<E1> exceptionClass1, final Class<E2> exceptionClass2, final Class<E3> exceptionClass3, @@ -169,7 +169,7 @@ public abstract class AbstractSkyFunctionEnvironment implements SkyFunction.Envi /** Implementations should set {@link #valuesMissing} as necessary. */ protected abstract Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions( - Iterable<SkyKey> depKeys) throws InterruptedException; + Iterable<? extends SkyKey> depKeys) throws InterruptedException; @Override @Nullable @@ -257,7 +257,7 @@ public abstract class AbstractSkyFunctionEnvironment implements SkyFunction.Envi @Override public <E extends Exception> Map<SkyKey, ValueOrException<E>> getValuesOrThrow( - Iterable<SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException { + Iterable<? extends SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException { return Maps.transformValues( getValuesOrThrow(depKeys, exceptionClass, BottomException.class), makeSafeDowncastToVOEFunction(exceptionClass)); @@ -266,8 +266,8 @@ public abstract class AbstractSkyFunctionEnvironment implements SkyFunction.Envi @Override public <E1 extends Exception, E2 extends Exception> Map<SkyKey, ValueOrException2<E1, E2>> getValuesOrThrow( - Iterable<SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2) - throws InterruptedException { + Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2) + throws InterruptedException { return Maps.transformValues( getValuesOrThrow(depKeys, exceptionClass1, exceptionClass2, BottomException.class), makeSafeDowncastToVOE2Function(exceptionClass1, exceptionClass2)); @@ -276,11 +276,11 @@ public abstract class AbstractSkyFunctionEnvironment implements SkyFunction.Envi @Override public <E1 extends Exception, E2 extends Exception, E3 extends Exception> Map<SkyKey, ValueOrException3<E1, E2, E3>> getValuesOrThrow( - Iterable<SkyKey> depKeys, + Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2, Class<E3> exceptionClass3) - throws InterruptedException { + throws InterruptedException { return Maps.transformValues( getValuesOrThrow(depKeys, exceptionClass1, exceptionClass2, exceptionClass3, BottomException.class), @@ -290,12 +290,12 @@ public abstract class AbstractSkyFunctionEnvironment implements SkyFunction.Envi @Override public <E1 extends Exception, E2 extends Exception, E3 extends Exception, E4 extends Exception> Map<SkyKey, ValueOrException4<E1, E2, E3, E4>> getValuesOrThrow( - Iterable<SkyKey> depKeys, + Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2, Class<E3> exceptionClass3, Class<E4> exceptionClass4) - throws InterruptedException { + throws InterruptedException { return Maps.transformValues( getValuesOrThrow(depKeys, exceptionClass1, exceptionClass2, exceptionClass3, exceptionClass4, BottomException.class), @@ -311,13 +311,13 @@ public abstract class AbstractSkyFunctionEnvironment implements SkyFunction.Envi E4 extends Exception, E5 extends Exception> Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValuesOrThrow( - Iterable<SkyKey> depKeys, + Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2, Class<E3> exceptionClass3, Class<E4> exceptionClass4, Class<E5> exceptionClass5) - throws InterruptedException { + throws InterruptedException { Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> result = getValueOrExceptions( depKeys, diff --git a/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java b/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java index ec6ccbf92b..78c24793c6 100644 --- a/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java +++ b/src/main/java/com/google/devtools/build/skyframe/BuildDriver.java @@ -26,8 +26,9 @@ public interface BuildDriver { * of a {@link Version} value. */ <T extends SkyValue> EvaluationResult<T> evaluate( - Iterable<SkyKey> roots, boolean keepGoing, int numThreads, ExtendedEventHandler reporter) - throws InterruptedException; + Iterable<? extends SkyKey> roots, boolean keepGoing, int numThreads, + ExtendedEventHandler reporter) + throws InterruptedException; /** * Retrieve metadata about the computation over the given roots. Data returned is specific to the diff --git a/src/main/java/com/google/devtools/build/skyframe/Evaluator.java b/src/main/java/com/google/devtools/build/skyframe/Evaluator.java index 56388daa0c..905e0f684e 100644 --- a/src/main/java/com/google/devtools/build/skyframe/Evaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/Evaluator.java @@ -30,14 +30,14 @@ public interface Evaluator { * @param keepGoing whether {@link #eval} should continue if building a {link Value} fails. * Otherwise, we throw an exception on failure. */ - Evaluator create(ProcessableGraph graph, long graphVersion, EventHandler reporter, - boolean keepGoing); + Evaluator create( + ProcessableGraph graph, long graphVersion, EventHandler reporter, boolean keepGoing); } /** * Evaluates a set of values. Returns an {@link EvaluationResult}. All elements of skyKeys must * be keys for Values of subtype T. */ - <T extends SkyValue> EvaluationResult<T> eval(Iterable<SkyKey> skyKeys) + <T extends SkyValue> EvaluationResult<T> eval(Iterable<? extends SkyKey> skyKeys) throws InterruptedException; } diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java index 267ae7805b..e8c7d3511a 100644 --- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java +++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraph.java @@ -28,7 +28,7 @@ public interface InMemoryGraph extends ProcessableGraph { @Override Map<SkyKey, ? extends NodeEntry> getBatch( - @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys); + @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys); /** * Returns a read-only live view of the nodes in the graph. All node are included. Dirty values diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java index b9ca14095e..05029be98e 100644 --- a/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java +++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryGraphImpl.java @@ -58,7 +58,8 @@ public class InMemoryGraphImpl implements InMemoryGraph { } @Override - public Map<SkyKey, NodeEntry> getBatch(SkyKey requestor, Reason reason, Iterable<SkyKey> keys) { + public Map<SkyKey, NodeEntry> getBatch( + SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) { // Use a HashMap, not an ImmutableMap.Builder, because we have not yet deduplicated these keys // and ImmutableMap.Builder does not tolerate duplicates. The map will be thrown away shortly. HashMap<SkyKey, NodeEntry> result = new HashMap<>(); diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java index 504de3a10e..1750263b43 100644 --- a/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryMemoizingEvaluator.java @@ -137,7 +137,7 @@ public final class InMemoryMemoizingEvaluator implements MemoizingEvaluator { @Override public <T extends SkyValue> EvaluationResult<T> evaluate( - Iterable<SkyKey> roots, + Iterable<? extends SkyKey> roots, Version version, boolean keepGoing, int numThreads, diff --git a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java index 568e08f01d..2fe92fa521 100644 --- a/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/MemoizingEvaluator.java @@ -46,7 +46,7 @@ public interface MemoizingEvaluator { * missing. */ <T extends SkyValue> EvaluationResult<T> evaluate( - Iterable<SkyKey> roots, + Iterable<? extends SkyKey> roots, Version version, boolean keepGoing, int numThreads, diff --git a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java index aac9277a1d..a47a579ced 100644 --- a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java +++ b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluator.java @@ -690,7 +690,7 @@ public final class ParallelEvaluator implements Evaluator { @Override @ThreadCompatible - public <T extends SkyValue> EvaluationResult<T> eval(Iterable<SkyKey> skyKeys) + public <T extends SkyValue> EvaluationResult<T> eval(Iterable<? extends SkyKey> skyKeys) throws InterruptedException { ImmutableSet<SkyKey> skyKeySet = ImmutableSet.copyOf(skyKeys); diff --git a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java index 07f8fafb89..26422dd418 100644 --- a/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java +++ b/src/main/java/com/google/devtools/build/skyframe/QueryableGraph.java @@ -46,7 +46,8 @@ public interface QueryableGraph { * @param reason the reason the nodes are being requested. */ Map<SkyKey, ? extends NodeEntry> getBatch( - @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) throws InterruptedException; + @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) + throws InterruptedException; /** * Examines all the given keys. Returns an iterable of keys whose corresponding nodes are diff --git a/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java index 684db935fd..dace26e6d8 100644 --- a/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java +++ b/src/main/java/com/google/devtools/build/skyframe/QueryableGraphBackedSkyFunctionEnvironment.java @@ -61,7 +61,7 @@ public class QueryableGraphBackedSkyFunctionEnvironment extends AbstractSkyFunct @Override protected Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions( - Iterable<SkyKey> depKeys) throws InterruptedException { + Iterable<? extends SkyKey> depKeys) throws InterruptedException { Map<SkyKey, ? extends NodeEntry> resultMap = queryableGraph.getBatch(null, Reason.DEP_REQUESTED, depKeys); // resultMap will be smaller than what we actually return if some of depKeys were not found in diff --git a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java b/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java index 7f4c9fea7a..988412b866 100644 --- a/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java +++ b/src/main/java/com/google/devtools/build/skyframe/SequentialBuildDriver.java @@ -32,8 +32,9 @@ public class SequentialBuildDriver implements BuildDriver { @Override public <T extends SkyValue> EvaluationResult<T> evaluate( - Iterable<SkyKey> roots, boolean keepGoing, int numThreads, ExtendedEventHandler reporter) - throws InterruptedException { + Iterable<? extends SkyKey> roots, boolean keepGoing, int numThreads, + ExtendedEventHandler reporter) + throws InterruptedException { try { return memoizingEvaluator.evaluate(roots, curVersion, keepGoing, numThreads, reporter); } finally { diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java index ee1d93cc61..66e9408d57 100644 --- a/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java +++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunction.java @@ -210,29 +210,30 @@ public interface SkyFunction { * already evaluated with an error in the specified set of {@link Exception} types. */ <E extends Exception> Map<SkyKey, ValueOrException<E>> getValuesOrThrow( - Iterable<SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException; + Iterable<? extends SkyKey> depKeys, Class<E> exceptionClass) throws InterruptedException; <E1 extends Exception, E2 extends Exception> Map<SkyKey, ValueOrException2<E1, E2>> getValuesOrThrow( - Iterable<SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2) - throws InterruptedException; + Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, + Class<E2> exceptionClass2) + throws InterruptedException; <E1 extends Exception, E2 extends Exception, E3 extends Exception> Map<SkyKey, ValueOrException3<E1, E2, E3>> getValuesOrThrow( - Iterable<SkyKey> depKeys, + Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2, Class<E3> exceptionClass3) - throws InterruptedException; + throws InterruptedException; <E1 extends Exception, E2 extends Exception, E3 extends Exception, E4 extends Exception> Map<SkyKey, ValueOrException4<E1, E2, E3, E4>> getValuesOrThrow( - Iterable<SkyKey> depKeys, + Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2, Class<E3> exceptionClass3, Class<E4> exceptionClass4) - throws InterruptedException; + throws InterruptedException; < E1 extends Exception, @@ -241,13 +242,13 @@ public interface SkyFunction { E4 extends Exception, E5 extends Exception> Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValuesOrThrow( - Iterable<SkyKey> depKeys, + Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2, Class<E3> exceptionClass3, Class<E4> exceptionClass4, Class<E5> exceptionClass5) - throws InterruptedException; + throws InterruptedException; /** * Returns whether there was a previous getValue[s][OrThrow] that indicated a missing diff --git a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java index fb51fdd789..8735f340af 100644 --- a/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java +++ b/src/main/java/com/google/devtools/build/skyframe/SkyFunctionEnvironment.java @@ -270,7 +270,7 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { this.errorInfo = Preconditions.checkNotNull(errorInfo, skyKey); } - private Map<SkyKey, SkyValue> getValuesMaybeFromError(Iterable<SkyKey> keys) + private Map<SkyKey, SkyValue> getValuesMaybeFromError(Iterable<? extends SkyKey> keys) throws InterruptedException { // Use a HashMap, not an ImmutableMap.Builder, because we have not yet deduplicated these keys // and ImmutableMap.Builder does not tolerate duplicates. The map will be thrown away @@ -341,7 +341,7 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { @Override protected Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions( - Iterable<SkyKey> depKeys) throws InterruptedException { + Iterable<? extends SkyKey> depKeys) throws InterruptedException { checkActive(); Map<SkyKey, SkyValue> values = getValuesMaybeFromError(depKeys); for (Map.Entry<SkyKey, SkyValue> depEntry : values.entrySet()) { @@ -449,13 +449,13 @@ class SkyFunctionEnvironment extends AbstractSkyFunctionEnvironment { E4 extends Exception, E5 extends Exception> Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> getValuesOrThrow( - Iterable<SkyKey> depKeys, + Iterable<? extends SkyKey> depKeys, Class<E1> exceptionClass1, Class<E2> exceptionClass2, Class<E3> exceptionClass3, Class<E4> exceptionClass4, Class<E5> exceptionClass5) - throws InterruptedException { + throws InterruptedException { newlyRequestedDeps.startGroup(); Map<SkyKey, ValueOrException5<E1, E2, E3, E4, E5>> result = super.getValuesOrThrow( diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java index af9d68f79f..fbab01ae3a 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java +++ b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java @@ -155,7 +155,7 @@ public final class ActionsTestUtil { @Override protected Map<SkyKey, ValueOrUntypedException> getValueOrUntypedExceptions( - Iterable<SkyKey> depKeys) { + Iterable<? extends SkyKey> depKeys) { EvaluationResult<SkyValue> evaluationResult; Map<SkyKey, ValueOrUntypedException> result = new HashMap<>(); try { diff --git a/src/test/java/com/google/devtools/build/skyframe/DeterministicHelper.java b/src/test/java/com/google/devtools/build/skyframe/DeterministicHelper.java index 7876d57100..c6123769aa 100644 --- a/src/test/java/com/google/devtools/build/skyframe/DeterministicHelper.java +++ b/src/test/java/com/google/devtools/build/skyframe/DeterministicHelper.java @@ -90,8 +90,8 @@ public class DeterministicHelper extends NotifyingHelper { @Override public Map<SkyKey, ? extends NodeEntry> getBatch( - @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) - throws InterruptedException { + @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) + throws InterruptedException { return makeDeterministic(super.getBatch(requestor, reason, keys)); } } @@ -119,8 +119,8 @@ public class DeterministicHelper extends NotifyingHelper { @Override public Map<SkyKey, ? extends NodeEntry> getBatch( - @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) - throws InterruptedException { + @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) + throws InterruptedException { return makeDeterministic(super.getBatch(requestor, reason, keys)); } } diff --git a/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java b/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java index 786a527013..5314664499 100644 --- a/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java +++ b/src/test/java/com/google/devtools/build/skyframe/DeterministicInMemoryGraph.java @@ -49,7 +49,7 @@ class DeterministicInMemoryGraph extends DeterministicHelper.DeterministicProces @Override public Map<SkyKey, ? extends NodeEntry> getBatch( - @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) { + @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) { try { return super.getBatch(requestor, reason, keys); } catch (InterruptedException e) { diff --git a/src/test/java/com/google/devtools/build/skyframe/NotifyingHelper.java b/src/test/java/com/google/devtools/build/skyframe/NotifyingHelper.java index 0ac49e5382..c24f54e418 100644 --- a/src/test/java/com/google/devtools/build/skyframe/NotifyingHelper.java +++ b/src/test/java/com/google/devtools/build/skyframe/NotifyingHelper.java @@ -88,7 +88,7 @@ public class NotifyingHelper { @Override public Map<SkyKey, ? extends NodeEntry> getBatch( - @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) + @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) throws InterruptedException { return Maps.transformEntries( delegate.getBatch(requestor, reason, keys), diff --git a/src/test/java/com/google/devtools/build/skyframe/NotifyingInMemoryGraph.java b/src/test/java/com/google/devtools/build/skyframe/NotifyingInMemoryGraph.java index f1feac2df3..be268793a7 100644 --- a/src/test/java/com/google/devtools/build/skyframe/NotifyingInMemoryGraph.java +++ b/src/test/java/com/google/devtools/build/skyframe/NotifyingInMemoryGraph.java @@ -45,7 +45,7 @@ class NotifyingInMemoryGraph extends NotifyingHelper.NotifyingProcessableGraph @Override public Map<SkyKey, ? extends NodeEntry> getBatch( - @Nullable SkyKey requestor, Reason reason, Iterable<SkyKey> keys) { + @Nullable SkyKey requestor, Reason reason, Iterable<? extends SkyKey> keys) { try { return super.getBatch(requestor, reason, keys); } catch (InterruptedException e) { |