49 50 bool SafepointMechanism::should_block(Thread* thread) { 51 return local_poll(thread); 52 } 53 54 void SafepointMechanism::block_if_requested(JavaThread *thread) { 55 if (!local_poll_armed(thread)) { 56 return; 57 } 58 block_if_requested_slow(thread); 59 } 60 61 void SafepointMechanism::arm_local_poll(JavaThread* thread) { 62 thread->set_polling_page(poll_armed_value()); 63 } 64 65 void SafepointMechanism::disarm_local_poll(JavaThread* thread) { 66 thread->set_polling_page(poll_disarmed_value()); 67 } 68 69 void SafepointMechanism::disarm_if_needed(JavaThread* thread, bool memory_order_release) { 70 JavaThreadState jts = thread->thread_state(); 71 if (jts == _thread_in_native || jts == _thread_in_native_trans) { 72 // JavaThread will disarm itself and execute cross_modify_fence() before continuing 73 return; 74 } 75 if (memory_order_release) { 76 thread->set_polling_page_release(poll_disarmed_value()); 77 } else { 78 thread->set_polling_page(poll_disarmed_value()); 79 } 80 } 81 82 void SafepointMechanism::arm_local_poll_release(JavaThread* thread) { 83 thread->set_polling_page_release(poll_armed_value()); 84 } 85 86 void SafepointMechanism::disarm_local_poll_release(JavaThread* thread) { 87 thread->set_polling_page_release(poll_disarmed_value()); 88 } 89 90 #endif // SHARE_RUNTIME_SAFEPOINTMECHANISM_INLINE_HPP | 49 50 bool SafepointMechanism::should_block(Thread* thread) { 51 return local_poll(thread); 52 } 53 54 void SafepointMechanism::block_if_requested(JavaThread *thread) { 55 if (!local_poll_armed(thread)) { 56 return; 57 } 58 block_if_requested_slow(thread); 59 } 60 61 void SafepointMechanism::arm_local_poll(JavaThread* thread) { 62 thread->set_polling_page(poll_armed_value()); 63 } 64 65 void SafepointMechanism::disarm_local_poll(JavaThread* thread) { 66 thread->set_polling_page(poll_disarmed_value()); 67 } 68 69 void SafepointMechanism::arm_local_poll_release(JavaThread* thread) { 70 thread->set_polling_page_release(poll_armed_value()); 71 } 72 73 void SafepointMechanism::disarm_local_poll_release(JavaThread* thread) { 74 thread->set_polling_page_release(poll_disarmed_value()); 75 } 76 77 #endif // SHARE_RUNTIME_SAFEPOINTMECHANISM_INLINE_HPP |