src/hotspot/share/runtime/safepointMechanism.inline.hpp
changeset 54323 846bc643f4ef
parent 53775 5d20b085d893
equal deleted inserted replaced
54322:cf75ea6af695 54323:846bc643f4ef
    54     return global_poll();
    54     return global_poll();
    55   }
    55   }
    56 }
    56 }
    57 
    57 
    58 void SafepointMechanism::block_if_requested(JavaThread *thread) {
    58 void SafepointMechanism::block_if_requested(JavaThread *thread) {
    59   if (uses_thread_local_poll() && !SafepointMechanism::local_poll_armed(thread)) {
    59   if (uses_thread_local_poll() && !local_poll_armed(thread)) {
    60     return;
    60     return;
    61   }
    61   }
    62   block_if_requested_slow(thread);
    62   block_if_requested_slow(thread);
    63 }
    63 }
    64 
    64 
    68 
    68 
    69 void SafepointMechanism::disarm_local_poll(JavaThread* thread) {
    69 void SafepointMechanism::disarm_local_poll(JavaThread* thread) {
    70   thread->set_polling_page(poll_disarmed_value());
    70   thread->set_polling_page(poll_disarmed_value());
    71 }
    71 }
    72 
    72 
       
    73 void SafepointMechanism::disarm_if_needed(JavaThread* thread, bool memory_order_release) {
       
    74   JavaThreadState jts = thread->thread_state();
       
    75   if (jts == _thread_in_native || jts == _thread_in_native_trans) {
       
    76     // JavaThread will disarm itself and execute cross_modify_fence() before continuing
       
    77     return;
       
    78   }
       
    79   if (memory_order_release) {
       
    80     thread->set_polling_page_release(poll_disarmed_value());
       
    81   } else {
       
    82     thread->set_polling_page(poll_disarmed_value());
       
    83   }
       
    84 }
       
    85 
    73 void SafepointMechanism::arm_local_poll_release(JavaThread* thread) {
    86 void SafepointMechanism::arm_local_poll_release(JavaThread* thread) {
    74   thread->set_polling_page_release(poll_armed_value());
    87   thread->set_polling_page_release(poll_armed_value());
    75 }
    88 }
    76 
    89 
    77 void SafepointMechanism::disarm_local_poll_release(JavaThread* thread) {
    90 void SafepointMechanism::disarm_local_poll_release(JavaThread* thread) {