RFR: 8284161: Implementation of Virtual Threads (Preview) [v2]

Alan Bateman alanb at openjdk.java.net
Sat Apr 16 15:02:47 UTC 2022


On Sat, 16 Apr 2022 12:31:41 GMT, ExE Boss <duke at openjdk.java.net> wrote:

>> 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);
>                 }

I think we may just eliminate the reflection use and use a shared secret instead.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8166


More information about the core-libs-dev mailing list