diff --git a/src/java.base/share/classes/java/util/stream/FindOps.java b/src/java.base/share/classes/java/util/stream/FindOps.java --- a/src/java.base/share/classes/java/util/stream/FindOps.java +++ b/src/java.base/share/classes/java/util/stream/FindOps.java @@ -250,16 +250,19 @@ private static final class FindTask extends AbstractShortCircuitTask> { private final FindOp op; + private final boolean mustFindFirst; FindTask(FindOp op, PipelineHelper helper, Spliterator spliterator) { super(helper, spliterator); + this.mustFindFirst = StreamOpFlag.ORDERED.isKnown(helper.getStreamAndOpFlags()); this.op = op; } FindTask(FindTask parent, Spliterator spliterator) { super(parent, spliterator); + this.mustFindFirst = parent.mustFindFirst; this.op = parent.op; } @@ -283,7 +286,7 @@ @Override protected O doLeaf() { O result = helper.wrapAndCopyInto(op.sinkSupplier.get(), spliterator).get(); - if (!op.mustFindFirst) { + if (!this.mustFindFirst) { if (result != null) shortCircuit(result); return null; @@ -300,7 +303,7 @@ @Override public void onCompletion(CountedCompleter caller) { - if (op.mustFindFirst) { + if (this.mustFindFirst) { for (FindTask child = leftChild, p = null; child != p; p = child, child = rightChild) { O result = child.getLocalResult();