On Mon, 4 Dec 2023 16:08:32 GMT, Alan Bateman <[email protected]> wrote:
> When a virtual thread continues after Thread.yield it currently consumes
> thread's parking permit. This is an oversight, the parking permit should only
> be consumed when continuing after park.
>
> The changes are straight-forward. The internal "RUNNABLE" state is replaced
> with UNPARKED and YIELDED state, effectively encoding the previous state. So
> for the most part, it's just replacing the usages of RUNNABLE. The additional
> states require refactoring tryGetStackTrace, this is the method that is used
> for Thread::getStackTrace when the virtual thread is unmounted. It is also
> changed to not not swallow the REE if the reesubmit fails (tryStackTrace has
> to resubmit as the task for the thread may run, or the thread unparked, while
> "suspended" and sampling its stack trace). The changes are a subset of larger
> changes in the loom repo, future PRs will propose to bring in other changes
> to get main line up to date.
>
> For testing the existing ThreadAPI has new test cases.
>
> Testing: test1-5. This includes the JVMTI tests as it maps the thread states
> to JVMTI thread states.
src/hotspot/share/classfile/javaClasses.cpp line 1998:
> 1996: case UNPARKED:
> 1997: case YIELDING :
> 1998: case YIELDED:
Suggestion:
case UNPARKED :
case YIELDING :
case YIELDED :
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16953#discussion_r1414448245