On Mon, 4 Dec 2023 16:08:32 GMT, Alan Bateman <al...@openjdk.org> 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/java.base/share/classes/java/lang/VirtualThread.java line 116: > 114: private static final int NEW = 0; > 115: private static final int STARTED = 1; > 116: private static final int RUNNING = 2; // runnable-unmounted Just want to make sure this change is intentional. Before the comment was: `// runnable-mounted`. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/16953#discussion_r1414528008