< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahCodeRoots.cpp

Print this page
rev 57380 : 8234974: Shenandoah: Do concurrent roots even when no evacuation is necessary

*** 153,163 **** default: ShouldNotReachHere(); } } ! void ShenandoahCodeRoots::prepare_concurrent_unloading() { assert(SafepointSynchronize::is_at_safepoint(), "Must be at a safepoint"); _disarmed_value ++; // 0 is reserved for new nmethod if (_disarmed_value == 0) { _disarmed_value = 1; --- 153,163 ---- default: ShouldNotReachHere(); } } ! void ShenandoahCodeRoots::arm_nmethods() { assert(SafepointSynchronize::is_at_safepoint(), "Must be at a safepoint"); _disarmed_value ++; // 0 is reserved for new nmethod if (_disarmed_value == 0) { _disarmed_value = 1;
*** 222,232 **** --- 222,234 ---- ShenandoahReentrantLocker locker(nm_data->lock()); // Heal oops and disarm ShenandoahEvacOOMScope evac_scope; + if (_heap->is_evacuation_in_progress()) { ShenandoahNMethod::heal_nmethod(nm); + } ShenandoahNMethod::disarm_nmethod(nm); // Clear compiled ICs and exception caches if (!nm->unload_nmethod_caches(_unloading_occurred)) { set_failed();
< prev index next >