< prev index next >

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

Print this page
rev 57544 : 8236485: Work-in-progress: Epoch synchronization protocol for G1 concurrent refinement
Reviewed-by:

*** 35,44 **** --- 35,47 ---- #include "runtime/vmOperations.hpp" #include "utilities/globalDefinitions.hpp" #include "utilities/histogram.hpp" #include "utilities/macros.hpp" #include "utilities/preserveException.hpp" + #if INCLUDE_G1GC + #include "gc/g1/g1EpochUpdater.inline.hpp" + #endif // INCLUDE_G1GC // Wrapper for all entry points to the virtual machine. // InterfaceSupport provides functionality used by the VM_LEAF_BASE and // VM_ENTRY_BASE macros. These macros are used to guard entry points into
*** 134,143 **** --- 137,150 ---- // This can be invoked from transition states and must return to the original state properly assert(_thread->thread_state() == _thread_in_vm, "should only call when leaving VM after handshake"); // Change to transition state and ensure it is seen by the VM thread. _thread->set_thread_state_fence(_thread_in_vm_trans); + if (UseG1GC) { + G1EpochUpdater::update_epoch_self(_thread); + } + SafepointMechanism::block_if_requested(_thread); _thread->set_thread_state(_original_state); if (_original_state != _thread_blocked_trans && _original_state != _thread_in_vm_trans &&
*** 175,184 **** --- 182,195 ---- _thread->enable_stack_yellow_reserved_zone(); } trans(_thread_in_vm, _thread_in_Java); // Check for pending. async. exceptions or suspends. if (_thread->has_special_runtime_exit_condition()) _thread->handle_special_runtime_exit_condition(); + + if (UseG1GC) { + G1EpochUpdater::update_epoch_self(_thread); + } } }; class ThreadInVMfromUnknown {
< prev index next >