On Wed, 13 Apr 2022 14:21:20 GMT, Alan Bateman <al...@openjdk.org> wrote:
>> This is the implementation of JEP 425: Virtual Threads (Preview); TBD which >> JDK version to target. >> >> We will refresh this PR periodically to pick up changes and fixes from the >> loom repo. >> >> Most of the new mechanisms in the HotSpot VM are disabled by default and >> require running with `--enable-preview` to enable. >> >> The patch has support for x64 and aarch64 on the usual operating systems >> (Linux, macOS, and Windows). There are stubs (calling Unimplemented) for >> zero and some of the other ports. Additional ports can be contributed via >> PRs against the fibers branch in the loom repo. >> >> There are changes in many areas. To reduce notifications/mails, the labels >> have been trimmed down for now to hotspot, serviceability and core-libs. >> We'll add the complete set of labels when the PR is further along. >> >> The changes include a refresh of java.util.concurrent and ForkJoinPool from >> Doug Lea's CVS. These changes will probably be proposed and integrated in >> advance of this PR. >> >> The changes include some non-exposed and low-level infrastructure to support >> the (in draft) JEPs for Structured Concurrency and Scope Locals. This is to >> make life a bit easier and avoid having to separate VM changes and juggle >> branches at this time. > > Alan Bateman has updated the pull request incrementally with one additional > commit since the last revision: > > Refresh src/java.base/share/classes/jdk/internal/misc/Blocker.java line 111: > 109: methodType = MethodType.methodType(void.class, > long.class); > 110: endCompensatedBlock = l.findVirtual(ForkJoinPool.class, > "endCompensatedBlock", methodType); > 111: This can use `SharedSecrets.getJavaLangInvokeAccess()` in order to avoid using `privateLookupIn(…)` and `AccessController.doPrivileged(…)`. Suggestion: JavaLangInvokeAccess JLIA = SharedSecrets.getJavaLangInvokeAccess(); MethodType methodType = MethodType.methodType(long.class); beginCompensatedBlock = JLIA.findVirtual(ForkJoinPool.class, "beginCompensatedBlock", methodType); if (beginCompensatedBlock == null) { throw new NoSuchMethodException(ForkJoinPool.class + ".beginCompensatedBlock" + methodType); } methodType = MethodType.methodType(void.class, long.class); endCompensatedBlock = JLIA.findVirtual(ForkJoinPool.class, "endCompensatedBlock", methodType); if (endCompensatedBlock == null) { throw new NoSuchMethodException(ForkJoinPool.class + ".endCompensatedBlock" + methodType); } ------------- PR: https://git.openjdk.java.net/jdk/pull/8166