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

Reply via email to