equal
deleted
inserted
replaced
803 // Load dependent store, it must not pass loading of safepoint_id. |
803 // Load dependent store, it must not pass loading of safepoint_id. |
804 thread->safepoint_state()->set_safepoint_id(safepoint_id); // Release store |
804 thread->safepoint_state()->set_safepoint_id(safepoint_id); // Release store |
805 |
805 |
806 // This part we can skip if we notice we miss or are in a future safepoint. |
806 // This part we can skip if we notice we miss or are in a future safepoint. |
807 OrderAccess::storestore(); |
807 OrderAccess::storestore(); |
808 thread->set_thread_state(_thread_blocked); |
808 // Load in wait barrier should not float up |
809 |
809 thread->set_thread_state_fence(_thread_blocked); |
810 OrderAccess::fence(); // Load in wait barrier should not float up |
810 |
811 _wait_barrier->wait(static_cast<int>(safepoint_id)); |
811 _wait_barrier->wait(static_cast<int>(safepoint_id)); |
812 assert(_state != _synchronized, "Can't be"); |
812 assert(_state != _synchronized, "Can't be"); |
813 |
813 |
814 // If barrier is disarmed stop store from floating above loads in barrier. |
814 // If barrier is disarmed stop store from floating above loads in barrier. |
815 OrderAccess::loadstore(); |
815 OrderAccess::loadstore(); |