JDK-8364343 upgraded the virtual thread transition management to be independent of JVMTI. We can update java_lang_Thread::async_get_stack_trace to use it and remove the suspend + retry code from Thread.getStackTrace.
A summary of the changes: - java_lang_Thread::async_get_stack_trace is changed to use the new handshake op so it can be called to get the stack trace of a started thread in any state - Thread::getStackTrace is changed to use async_get_stack_trace for all cases - The SUSPENDED substate in VirtualThread is removed - JVM_CreateThreadSnapshot is changed to be usable when JVMTI is not compiled in - ThreadSnapshotFactory::get_thread_snapshot is changed to not upcall to StackTraceElement to complete the init of the stack trace The changes mean that Thread::getStackTrace may be slower when sampling a virtual thread in transition. This case should be rare, and it isn't really a performance critical op anyway. I prototyped use a spin loop and an increasing wait time in MountUnmountDisabler::disable_transition_for_one to avoid the wait(10) but decided to leave it out for now. Future work may examine this issue as there may be other cases (with JVMTI) that would benefit from avoiding the wait. A future PR might propose to change Thread.getStackTrace to use ThreadSnapshot and allow java_lang_Thread::async_get_stack_trace be removed. This requires more extensive changes to ThreadSnapshotFactory to reduce overhead when only the stack trace is required. Testing: tier1-5. The changes has been already been tested in the loom repo for a few months. ------------- Commit messages: - Cleanup - Merge branch 'master' into Thread.getStackTrace - Initial commit Changes: https://git.openjdk.org/jdk/pull/29461/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=29461&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8376568 Stats: 656 lines in 19 files changed: 445 ins; 168 del; 43 mod Patch: https://git.openjdk.org/jdk/pull/29461.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/29461/head:pull/29461 PR: https://git.openjdk.org/jdk/pull/29461
