< prev index next > src/hotspot/share/gc/shenandoah/shenandoahSTWMark.cpp
Print this page
void ShenandoahSTWMark::mark() {
ShenandoahHeap* const heap = ShenandoahHeap::heap();
// Arm all nmethods. Even though this is STW mark, some marking code
// piggybacks on nmethod barriers for special instances.
! ShenandoahCodeRoots::arm_nmethods();
// Weak reference processing
ShenandoahReferenceProcessor* rp = _generation->ref_processor();
rp->reset_thread_locals();
void ShenandoahSTWMark::mark() {
ShenandoahHeap* const heap = ShenandoahHeap::heap();
// Arm all nmethods. Even though this is STW mark, some marking code
// piggybacks on nmethod barriers for special instances.
! CodeCache::arm_all_nmethods();
// Weak reference processing
ShenandoahReferenceProcessor* rp = _generation->ref_processor();
rp->reset_thread_locals();
}
_generation->set_mark_complete();
end_mark();
- // Mark is finished, can disarm the nmethods now.
- ShenandoahCodeRoots::disarm_nmethods();
-
assert(task_queues()->is_empty(), "Should be empty");
TASKQUEUE_STATS_ONLY(task_queues()->print_and_reset_taskqueue_stats(""));
}
void ShenandoahSTWMark::mark_roots(uint worker_id) {
< prev index next >