On Sun, 17 Nov 2024 15:33:02 GMT, Doug Lea <d...@openjdk.org> wrote: >> This addresses tendencies in previous update to increase fencing, scanning, >> and signalling that can increase contention, and slow down performance >> especially on ARM platforms. It also uses more ARM-friendly constructions to >> reduce overhead (leading to several changes that all of the same form), > > Doug Lea has updated the pull request incrementally with one additional > commit since the last revision: > > Ensure InnocuousForkJoinWorkerThread usable with or without SecurityManager
src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java line 2780: > 2778: now = true; > 2779: } > 2780: if (now) { @DougLea I'd probably add a blank line above this one to signal that this if is not a part of the previous if-else chain. src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java line 2805: > 2803: } > 2804: } > 2805: return e; @DougLea Is there any benefit to using `break` in the loop rather than `return e;` directly? src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java line 2838: > 2836: } > 2837: } > 2838: else if ((q.phase & (IDLE|1)) == 0 || @DougLea What's the intent of the `|1` part here? 🤔 src/java.base/share/classes/java/util/concurrent/ForkJoinPool.java line 4082: > 4080: AccessController.doPrivileged(new PrivilegedAction<>() { > 4081: public ForkJoinPool run() { > 4082: return new ForkJoinPool((byte)0); }}); @AlanBateman Any recommendation as to what is ideal here with SM removed? /cc @DougLea src/java.base/share/classes/java/util/concurrent/ForkJoinWorkerThread.java line 247: > 245: = U.objectFieldOffset(Thread.class, "threadLocals"); > 246: private static final long INHERITABLETHREADLOCALS > 247: = U.objectFieldOffset(Thread.class, "inheritableThreadLocals"); @AlanBateman Thoughts here? 🤔 src/java.base/share/classes/java/util/concurrent/ForkJoinWorkerThread.java line 270: > 268: @SuppressWarnings("removal") > 269: public void setContextClassLoader(ClassLoader cl) { > 270: if (System.getSecurityManager() != null && @AlanBateman Alternatives for this? 🤔 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/21507#discussion_r1848717378 PR Review Comment: https://git.openjdk.org/jdk/pull/21507#discussion_r1848720748 PR Review Comment: https://git.openjdk.org/jdk/pull/21507#discussion_r1848722786 PR Review Comment: https://git.openjdk.org/jdk/pull/21507#discussion_r1848724803 PR Review Comment: https://git.openjdk.org/jdk/pull/21507#discussion_r1848727422 PR Review Comment: https://git.openjdk.org/jdk/pull/21507#discussion_r1848728622