Mercurial > hg > graal-jvmci-8
diff src/share/vm/runtime/thread.hpp @ 14443:3205e78d8193
8029396: PPC64 (part 212): Several memory ordering fixes in C-code.
Summary: memory ordering fixes in GC and other runtime code showing on PPC64.
Reviewed-by: kvn, coleenp
author | goetz |
---|---|
date | Mon, 02 Dec 2013 10:26:14 +0100 |
parents | 2b8e28fdf503 |
children | 6a6c94b49dab |
line wrap: on
line diff
--- a/src/share/vm/runtime/thread.hpp Thu Dec 05 15:13:12 2013 -0800 +++ b/src/share/vm/runtime/thread.hpp Mon Dec 02 10:26:14 2013 +0100 @@ -1044,8 +1044,14 @@ address last_Java_pc(void) { return _anchor.last_Java_pc(); } // Safepoint support - JavaThreadState thread_state() const { return _thread_state; } - void set_thread_state(JavaThreadState s) { _thread_state=s; } + // Use membars when accessing volatile _thread_state. See + // Threads::create_vm() for size checks. + JavaThreadState thread_state() const { + return (JavaThreadState) OrderAccess::load_acquire((volatile jint*)&_thread_state); + } + void set_thread_state(JavaThreadState s) { + OrderAccess::release_store((volatile jint*)&_thread_state, (jint)s); + } ThreadSafepointState *safepoint_state() const { return _safepoint_state; } void set_safepoint_state(ThreadSafepointState *state) { _safepoint_state = state; } bool is_at_poll_safepoint() { return _safepoint_state->is_at_poll_safepoint(); }