< prev index next >

src/hotspot/share/runtime/safepoint.cpp

Print this page

        

*** 326,336 **** // Arming must be done after resetting _current_jni_active_count, _waiting_to_block. _wait_barrier->arm(static_cast<int>(_safepoint_counter + 1)); assert((_safepoint_counter & 0x1) == 0, "must be even"); // The store to _safepoint_counter must happen after any stores in arming. ! OrderAccess::release_store(&_safepoint_counter, _safepoint_counter + 1); // We are synchronizing OrderAccess::storestore(); // Ordered with _safepoint_counter _state = _synchronizing; --- 326,336 ---- // Arming must be done after resetting _current_jni_active_count, _waiting_to_block. _wait_barrier->arm(static_cast<int>(_safepoint_counter + 1)); assert((_safepoint_counter & 0x1) == 0, "must be even"); // The store to _safepoint_counter must happen after any stores in arming. ! Atomic::release_store(&_safepoint_counter, _safepoint_counter + 1); // We are synchronizing OrderAccess::storestore(); // Ordered with _safepoint_counter _state = _synchronizing;
*** 480,490 **** // No threads should see _synchronized when running. _state = _not_synchronized; // Set the next dormant (even) safepoint id. assert((_safepoint_counter & 0x1) == 1, "must be odd"); ! OrderAccess::release_store(&_safepoint_counter, _safepoint_counter + 1); OrderAccess::fence(); // Keep the local state from floating up. jtiwh.rewind(); for (; JavaThread *current = jtiwh.next(); ) { --- 480,490 ---- // No threads should see _synchronized when running. _state = _not_synchronized; // Set the next dormant (even) safepoint id. assert((_safepoint_counter & 0x1) == 1, "must be odd"); ! Atomic::release_store(&_safepoint_counter, _safepoint_counter + 1); OrderAccess::fence(); // Keep the local state from floating up. jtiwh.rewind(); for (; JavaThread *current = jtiwh.next(); ) {
*** 966,984 **** thread->set_safepoint_state(NULL); } } uint64_t ThreadSafepointState::get_safepoint_id() const { ! return OrderAccess::load_acquire(&_safepoint_id); } void ThreadSafepointState::reset_safepoint_id() { ! OrderAccess::release_store(&_safepoint_id, SafepointSynchronize::InactiveSafepointCounter); } void ThreadSafepointState::set_safepoint_id(uint64_t safepoint_id) { ! OrderAccess::release_store(&_safepoint_id, safepoint_id); } void ThreadSafepointState::examine_state_of_thread(uint64_t safepoint_count) { assert(is_running(), "better be running or just have hit safepoint poll"); --- 966,984 ---- thread->set_safepoint_state(NULL); } } uint64_t ThreadSafepointState::get_safepoint_id() const { ! return Atomic::load_acquire(&_safepoint_id); } void ThreadSafepointState::reset_safepoint_id() { ! Atomic::release_store(&_safepoint_id, SafepointSynchronize::InactiveSafepointCounter); } void ThreadSafepointState::set_safepoint_id(uint64_t safepoint_id) { ! Atomic::release_store(&_safepoint_id, safepoint_id); } void ThreadSafepointState::examine_state_of_thread(uint64_t safepoint_count) { assert(is_running(), "better be running or just have hit safepoint poll");
< prev index next >