Skip to content

Commit

Permalink
Simplify some generics and create less garbage when running `Runnable…
Browse files Browse the repository at this point in the history
…BuildOperation` build operations.
  • Loading branch information
adammurdoch committed Oct 24, 2018
1 parent e81aae9 commit a0907dc
Showing 1 changed file with 7 additions and 6 deletions.
Expand Up @@ -58,6 +58,7 @@ public class DefaultBuildOperationExecutor implements BuildOperationExecutor, St
private final BuildOperationIdFactory buildOperationIdFactory;

private final CurrentBuildOperationRef currentBuildOperationRef = CurrentBuildOperationRef.instance();
private final RunnableBuildOperationWorker runnableBuildOperationWorker = new RunnableBuildOperationWorker();

public DefaultBuildOperationExecutor(BuildOperationListener listener, Clock clock, ProgressLoggerFactory progressLoggerFactory, BuildOperationQueueFactory buildOperationQueueFactory, ExecutorFactory executorFactory, ParallelismConfigurationManager parallelismConfigurationManager, BuildOperationIdFactory buildOperationIdFactory) {
this.listener = listener;
Expand Down Expand Up @@ -87,7 +88,7 @@ public BuildOperationRef getCurrentOperation() {
@Override
public void run(RunnableBuildOperation buildOperation) {
try {
execute(buildOperation, new RunnableBuildOperationWorker(), getCurrentBuildOperation());
execute(buildOperation, runnableBuildOperationWorker, getCurrentBuildOperation());
} finally {
maybeStopUnmanagedThreadOperation();
}
Expand All @@ -107,7 +108,7 @@ public <T> T call(CallableBuildOperation<T> buildOperation) {
@Override
public <O extends RunnableBuildOperation> void runAll(Action<BuildOperationQueue<O>> schedulingAction) {
try {
executeInParallel(new ParentPreservingQueueWorker<O>(new RunnableBuildOperationWorker<O>()), schedulingAction);
executeInParallel(new ParentPreservingQueueWorker<O>(runnableBuildOperationWorker), schedulingAction);
} finally {
maybeStopUnmanagedThreadOperation();
}
Expand Down Expand Up @@ -289,14 +290,14 @@ public void setStatus(String status) {
}
}

private static class RunnableBuildOperationWorker<O extends RunnableBuildOperation> implements BuildOperationWorker<O> {
private static class RunnableBuildOperationWorker implements BuildOperationWorker<RunnableBuildOperation> {
@Override
public String getDisplayName() {
return "runnable build operation";
}

@Override
public void execute(O buildOperation, BuildOperationContext context) {
public void execute(RunnableBuildOperation buildOperation, BuildOperationContext context) {
buildOperation.run(context);
}
}
Expand Down Expand Up @@ -325,9 +326,9 @@ public T getReturnValue() {
*/
private class ParentPreservingQueueWorker<O extends BuildOperation> implements BuildOperationQueue.QueueWorker<O> {
private BuildOperationState parent;
private BuildOperationWorker<O> worker;
private BuildOperationWorker<? super O> worker;

private ParentPreservingQueueWorker(BuildOperationWorker<O> worker) {
private ParentPreservingQueueWorker(BuildOperationWorker<? super O> worker) {
this.parent = maybeStartUnmanagedThreadOperation(getCurrentBuildOperation());
this.worker = worker;
}
Expand Down

0 comments on commit a0907dc

Please sign in to comment.