< prev index next >

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

Print this page
rev 47959 : imported patch 10.07.open.rebase_20171110.dcubed
rev 47962 : dholmes CR: Fix indents, trailing spaces and various typos. Add descriptions for the '_cnt', '_max' and '_times" fields, add impl notes to document the type choices.
rev 47963 : robinw CR: Fix some inefficient code, update some comments, fix some indents, and add some 'const' specifiers.
rev 47965 : misc CR updates; rebase to 2017.11.22 bits.


 195 
 196 inline bool JavaThread::is_terminated() const {
 197   // Use load-acquire so that setting of _terminated by
 198   // JavaThread::exit() is seen more quickly.
 199   TerminatedTypes l_terminated = (TerminatedTypes)
 200       OrderAccess::load_acquire((volatile jint *) &_terminated);
 201   return check_is_terminated(l_terminated);
 202 }
 203 
 204 inline void JavaThread::set_terminated(TerminatedTypes t) {
 205   // use release-store so the setting of _terminated is seen more quickly
 206   OrderAccess::release_store((volatile jint *) &_terminated, (jint) t);
 207 }
 208 
 209 // special for Threads::remove() which is static:
 210 inline void JavaThread::set_terminated_value() {
 211   // use release-store so the setting of _terminated is seen more quickly
 212   OrderAccess::release_store((volatile jint *) &_terminated, (jint) _thread_terminated);
 213 }
 214 
 215 template <class T>
 216 inline void Threads::threads_do_smr(T *tc, Thread *self) {
 217   ThreadsListHandle handle(self);
 218   handle.threads_do(tc);
 219 }
 220 
 221 inline ThreadsList* Threads::get_smr_java_thread_list() {
 222   return (ThreadsList*)OrderAccess::load_acquire(&_smr_java_thread_list);
 223 }
 224 
 225 inline ThreadsList* Threads::xchg_smr_java_thread_list(ThreadsList* new_list) {
 226   return (ThreadsList*)Atomic::xchg(new_list, &_smr_java_thread_list);
 227 }
 228 
 229 inline void Threads::inc_smr_deleted_thread_cnt() {
 230   Atomic::inc(&_smr_deleted_thread_cnt);
 231 }
 232 
 233 inline void Threads::update_smr_deleted_thread_time_max(uint new_value) {
 234   while (true) {
 235     uint cur_value = _smr_deleted_thread_time_max;
 236     if (new_value <= cur_value) {
 237       // No need to update max value so we're done.
 238       break;
 239     }
 240     if (Atomic::cmpxchg(new_value, &_smr_deleted_thread_time_max, cur_value) == cur_value) {




 195 
 196 inline bool JavaThread::is_terminated() const {
 197   // Use load-acquire so that setting of _terminated by
 198   // JavaThread::exit() is seen more quickly.
 199   TerminatedTypes l_terminated = (TerminatedTypes)
 200       OrderAccess::load_acquire((volatile jint *) &_terminated);
 201   return check_is_terminated(l_terminated);
 202 }
 203 
 204 inline void JavaThread::set_terminated(TerminatedTypes t) {
 205   // use release-store so the setting of _terminated is seen more quickly
 206   OrderAccess::release_store((volatile jint *) &_terminated, (jint) t);
 207 }
 208 
 209 // special for Threads::remove() which is static:
 210 inline void JavaThread::set_terminated_value() {
 211   // use release-store so the setting of _terminated is seen more quickly
 212   OrderAccess::release_store((volatile jint *) &_terminated, (jint) _thread_terminated);
 213 }
 214 






 215 inline ThreadsList* Threads::get_smr_java_thread_list() {
 216   return (ThreadsList*)OrderAccess::load_acquire(&_smr_java_thread_list);
 217 }
 218 
 219 inline ThreadsList* Threads::xchg_smr_java_thread_list(ThreadsList* new_list) {
 220   return (ThreadsList*)Atomic::xchg(new_list, &_smr_java_thread_list);
 221 }
 222 
 223 inline void Threads::inc_smr_deleted_thread_cnt() {
 224   Atomic::inc(&_smr_deleted_thread_cnt);
 225 }
 226 
 227 inline void Threads::update_smr_deleted_thread_time_max(uint new_value) {
 228   while (true) {
 229     uint cur_value = _smr_deleted_thread_time_max;
 230     if (new_value <= cur_value) {
 231       // No need to update max value so we're done.
 232       break;
 233     }
 234     if (Atomic::cmpxchg(new_value, &_smr_deleted_thread_time_max, cur_value) == cur_value) {


< prev index next >