< prev index next >

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

Print this page
rev 59458 : 8245827: Shenandoah: Cleanup Shenandoah code root iterators and root scanner
rev 59459 : 8245880: Shenandoah: should not mark all code roots if class unloading is enabled

*** 172,182 **** --- 172,185 ---- shenandoah_assert_rp_isalive_installed(); } else { rp = NULL; } + if (!heap->unload_classes()) { _cm->concurrent_scan_code_roots(worker_id, rp); + } + _cm->mark_loop(worker_id, _terminator, rp, true, // cancellable ShenandoahStringDedup::is_enabled()); // perform string dedup } };
*** 265,275 **** do_nmethods ? &blobsCl : NULL); Threads::threads_do(&tc); } } ! if (heap->is_degenerated_gc_in_progress()) { // Degenerated cycle may bypass concurrent cycle, so code roots might not be scanned, // let's check here. _cm->concurrent_scan_code_roots(worker_id, rp); } --- 268,279 ---- do_nmethods ? &blobsCl : NULL); Threads::threads_do(&tc); } } ! if (heap->is_degenerated_gc_in_progress() && ! !heap->unload_classes()) { // Degenerated cycle may bypass concurrent cycle, so code roots might not be scanned, // let's check here. _cm->concurrent_scan_code_roots(worker_id, rp); }
< prev index next >