On Tue, 30 Nov 2021 23:16:20 GMT, Paul Sandoz <psan...@openjdk.org> wrote:
>> kabutz has updated the pull request incrementally with one additional commit >> since the last revision: >> >> Made forkOrInvoke() method protected to avoid strange compiler error > > src/java.base/share/classes/java/math/BigInteger.java line 1875: > >> 1873: private static final int PARALLEL_FORK_THRESHOLD = >> Integer.getInteger( >> 1874: "java.math.BigInteger.parallelForkThreshold", >> 1875: (int) >> Math.ceil(Math.log(Runtime.getRuntime().availableProcessors()) / >> Math.log(2))); > > We can simplify to `32 - > Integer.numberOfLeadingZeros(ForkJoinPool.getCommonPoolParallelism() - 1))`. > > `ForkJoinPool.getCommonPoolParallelism()` is guaranteed to return a value `> > 0` `ForkJoinPool.getCommonPoolParallelism() ` cannot distinguish between 0, 1, and 2 active processors. In the `java.util.stream.AbstractTask` class they calculate the number of leaves based on this with << 2. However, there is always the possibility that someone launches the parallel stream inside another FJP, so they check for that as well. It does complicate things a bit, but at the same time, means we have one less environment variable. And if it becomes an issue (which I doubt), then we can always add it later. Will work on this a bit. ------------- PR: https://git.openjdk.java.net/jdk/pull/6409