diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/skyframe/ParallelEvaluatorContext.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/skyframe/ParallelEvaluatorContext.java | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluatorContext.java b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluatorContext.java index 60987ac7f2..db2afd10e5 100644 --- a/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluatorContext.java +++ b/src/main/java/com/google/devtools/build/skyframe/ParallelEvaluatorContext.java @@ -13,7 +13,6 @@ // limitations under the License. package com.google.devtools.build.skyframe; -import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Supplier; import com.google.common.base.Suppliers; @@ -73,7 +72,7 @@ class ParallelEvaluatorContext { final DirtyTrackingProgressReceiver progressReceiver, EventFilter storedEventFilter, ErrorInfoManager errorInfoManager, - final Function<SkyKey, Runnable> runnableMaker, + RunnableMaker runnableMaker, GraphInconsistencyReceiver graphInconsistencyReceiver, final int threadCount) { this( @@ -101,7 +100,7 @@ class ParallelEvaluatorContext { final DirtyTrackingProgressReceiver progressReceiver, EventFilter storedEventFilter, ErrorInfoManager errorInfoManager, - final Function<SkyKey, Runnable> runnableMaker, + RunnableMaker runnableMaker, GraphInconsistencyReceiver graphInconsistencyReceiver, final ForkJoinPool forkJoinPool, EvaluationVersionBehavior evaluationVersionBehavior) { @@ -120,6 +119,18 @@ class ParallelEvaluatorContext { evaluationVersionBehavior); } + /** + * Returns a {@link Runnable} given a {@code key} to evaluate and an {@code evaluationPriority} + * indicating whether it should be scheduled for evaluation soon (higher is better). The returned + * {@link Runnable} is a {@link ComparableRunnable} so that it can be ordered by {@code + * evaluationPriority} in a priority queue if needed. + */ + interface RunnableMaker { + ComparableRunnable make(SkyKey key, int evaluationPriority); + } + + interface ComparableRunnable extends Runnable, Comparable<ComparableRunnable> {} + private ParallelEvaluatorContext( QueryableGraph graph, Version graphVersion, @@ -174,7 +185,7 @@ class ParallelEvaluatorContext { for (SkyKey key : keys) { NodeEntry entry = Preconditions.checkNotNull(batch.get(key), key); if (entry.signalDep(version)) { - getVisitor().enqueueEvaluation(key); + getVisitor().enqueueEvaluation(key, Integer.MAX_VALUE); } } return; |