RFR: 8338383: Implement JEP 491: Synchronize Virtual Threads without Pinning [v8]
Patricio Chilano Mateo
pchilanomate at openjdk.org
Thu Oct 24 21:17:14 UTC 2024
On Thu, 24 Oct 2024 05:10:56 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> Patricio Chilano Mateo has updated the pull request incrementally with two additional commits since the last revision:
>>
>> - Fix comment in objectMonitor.hpp and javaThread.hpp
>> - Skip printing tid when not available
>
> src/hotspot/share/runtime/javaThread.hpp line 166:
>
>> 164: // current _vthread object, except during creation of the primordial and JNI
>> 165: // attached thread cases where this field can have a temporary value. Also,
>> 166: // calls to VirtualThread.switchToCarrierThread will temporary change _vthread
>
> s/temporary change/temporarily change/
Fixed.
> src/java.base/share/classes/java/lang/Object.java line 383:
>
>> 381: try {
>> 382: wait0(timeoutMillis);
>> 383: } catch (InterruptedException e) {
>
> I had expected to see a call to a new `wait0` method that returned a value indicating whether the wait was completed or else we had to park. Instead we had to put special logic in the native-call-wrapper code in the VM to detect returning from wait0 and changing the return address. I'm still unclear where that modified return address actually takes us.
We jump to `StubRoutines::cont_preempt_stub()`. We need to remove all the frames that were just copied to the heap from the physical stack, and then return to the calling method which will be `Continuation.run`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/21565#discussion_r1815700441
PR Review Comment: https://git.openjdk.org/jdk/pull/21565#discussion_r1815701043
More information about the nio-dev
mailing list