mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
8189941: Implementation JEP 312: Thread-local handshake
Introduce a way to execute a callback on threads without performing a global VM safepoint. Make it both possible and cheap to stop individual threads and not just all threads or none. Co-authored-by: Mikael Gerdin <mikael.gerdin@oracle.com> Co-authored-by: Erik Osterlund <erik.osterlund@oracle.com> Reviewed-by: mdoerr, neliasso, acorn, aph, coleenp, dholmes
This commit is contained in:
parent
fdee542113
commit
104ecb2dd1
73 changed files with 1847 additions and 325 deletions
|
@ -37,6 +37,7 @@
|
|||
#include "oops/oop.inline.hpp"
|
||||
#include "oops/objArrayOop.inline.hpp"
|
||||
#include "runtime/javaCalls.hpp"
|
||||
#include "runtime/safepointMechanism.inline.hpp"
|
||||
#include "utilities/align.hpp"
|
||||
|
||||
// frequently used constants
|
||||
|
@ -854,9 +855,10 @@ JVMCIEnv::CodeInstallResult CodeInstaller::initialize_buffer(CodeBuffer& buffer,
|
|||
}
|
||||
last_pc_offset = pc_offset;
|
||||
|
||||
if (SafepointSynchronize::do_call_back()) {
|
||||
JavaThread* thread = JavaThread::current();
|
||||
if (SafepointMechanism::poll(thread)) {
|
||||
// this is a hacky way to force a safepoint check but nothing else was jumping out at me.
|
||||
ThreadToNativeFromVM ttnfv(JavaThread::current());
|
||||
ThreadToNativeFromVM ttnfv(thread);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue