< prev index next >

src/hotspot/share/runtime/thread.inline.hpp

Print this page
rev 47674 : Port 09.17.Thread_SMR_logging_update from JDK9 to JDK10
rev 47675 : sspitsyn, dcubed, eosterlund CR - minor changes prior to OpenJDK review.
rev 47676 : eosterlund, stefank CR - refactor code into threadSMR.cpp and threadSMR.hpp
rev 47677 : eosterlund CR - need more inline fixes.
rev 47678 : eosterlund, stefank CR - more inline and style cleanups
rev 47680 : Rebase to 2017.10.25 PIT snapshot.

*** 85,103 **** } return allocated_bytes; } inline ThreadsList* Thread::cmpxchg_threads_hazard_ptr(ThreadsList* exchange_value, ThreadsList* compare_value) { ! return (ThreadsList*)Atomic::cmpxchg_ptr(exchange_value, (void* volatile*)&_threads_hazard_ptr, compare_value); } inline ThreadsList* Thread::get_threads_hazard_ptr() { ! return (ThreadsList*)OrderAccess::load_ptr_acquire((void* volatile*)&_threads_hazard_ptr); } inline void Thread::set_threads_hazard_ptr(ThreadsList* new_list) { ! OrderAccess::release_store_ptr_fence((void* volatile*)&_threads_hazard_ptr, (void*)new_list); } inline void JavaThread::set_ext_suspended() { set_suspend_flag (_ext_suspended); } --- 85,103 ---- } return allocated_bytes; } inline ThreadsList* Thread::cmpxchg_threads_hazard_ptr(ThreadsList* exchange_value, ThreadsList* compare_value) { ! return (ThreadsList*)Atomic::cmpxchg(exchange_value, &_threads_hazard_ptr, compare_value); } inline ThreadsList* Thread::get_threads_hazard_ptr() { ! return (ThreadsList*)OrderAccess::load_acquire(&_threads_hazard_ptr); } inline void Thread::set_threads_hazard_ptr(ThreadsList* new_list) { ! OrderAccess::release_store_fence(&_threads_hazard_ptr, new_list); } inline void JavaThread::set_ext_suspended() { set_suspend_flag (_ext_suspended); }
*** 188,218 **** return check_is_terminated(_terminated); } inline void JavaThread::set_terminated(TerminatedTypes t) { // use release-store so the setting of _terminated is seen more quickly ! OrderAccess::release_store((volatile jint *) &_terminated, t); } // special for Threads::remove() which is static: inline void JavaThread::set_terminated_value() { // use release-store so the setting of _terminated is seen more quickly ! OrderAccess::release_store((volatile jint *) &_terminated, _thread_terminated); } template <class T> inline void Threads::threads_do_smr(T *tc, Thread *self) { ThreadsListHandle handle(self); handle.threads_do(tc); } inline ThreadsList* Threads::get_smr_java_thread_list() { ! return (ThreadsList*)OrderAccess::load_ptr_acquire((void* volatile*)&_smr_java_thread_list); } inline ThreadsList* Threads::xchg_smr_java_thread_list(ThreadsList* new_list) { ! return (ThreadsList*)Atomic::xchg_ptr((void*)new_list, (volatile void*)&_smr_java_thread_list); } inline void Threads::inc_smr_deleted_thread_cnt() { Atomic::inc(&_smr_deleted_thread_cnt); } --- 188,218 ---- return check_is_terminated(_terminated); } inline void JavaThread::set_terminated(TerminatedTypes t) { // use release-store so the setting of _terminated is seen more quickly ! OrderAccess::release_store((volatile jint *) &_terminated, (jint) t); } // special for Threads::remove() which is static: inline void JavaThread::set_terminated_value() { // use release-store so the setting of _terminated is seen more quickly ! OrderAccess::release_store((volatile jint *) &_terminated, (jint) _thread_terminated); } template <class T> inline void Threads::threads_do_smr(T *tc, Thread *self) { ThreadsListHandle handle(self); handle.threads_do(tc); } inline ThreadsList* Threads::get_smr_java_thread_list() { ! return (ThreadsList*)OrderAccess::load_acquire(&_smr_java_thread_list); } inline ThreadsList* Threads::xchg_smr_java_thread_list(ThreadsList* new_list) { ! return (ThreadsList*)Atomic::xchg(new_list, &_smr_java_thread_list); } inline void Threads::inc_smr_deleted_thread_cnt() { Atomic::inc(&_smr_deleted_thread_cnt); }
< prev index next >