< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahWorkerPolicy.cpp
Print this page
rev 55406 : 8225582: Shenandoah: Enable concurrent evacuation of JNIHandles
*** 28,37 ****
--- 28,38 ----
#include "runtime/thread.hpp"
uint ShenandoahWorkerPolicy::_prev_par_marking = 0;
uint ShenandoahWorkerPolicy::_prev_conc_marking = 0;
uint ShenandoahWorkerPolicy::_prev_conc_evac = 0;
+ uint ShenandoahWorkerPolicy::_prev_conc_root_proc = 0;
uint ShenandoahWorkerPolicy::_prev_fullgc = 0;
uint ShenandoahWorkerPolicy::_prev_degengc = 0;
uint ShenandoahWorkerPolicy::_prev_stw_traversal = 0;
uint ShenandoahWorkerPolicy::_prev_conc_traversal = 0;
uint ShenandoahWorkerPolicy::_prev_conc_update_ref = 0;
*** 61,70 ****
--- 62,81 ----
// Reuse the calculation result from init marking
uint ShenandoahWorkerPolicy::calc_workers_for_final_marking() {
return _prev_par_marking;
}
+ // Calculate workers for concurrent root processing
+ uint ShenandoahWorkerPolicy::calc_workers_for_conc_root_processing() {
+ uint active_workers = (_prev_conc_root_proc == 0) ? ConcGCThreads : _prev_conc_root_proc;
+ _prev_conc_root_proc =
+ WorkerPolicy::calc_active_conc_workers(ConcGCThreads,
+ active_workers,
+ Threads::number_of_non_daemon_threads());
+ return _prev_conc_root_proc;
+ }
+
// Calculate workers for concurrent evacuation (concurrent GC)
uint ShenandoahWorkerPolicy::calc_workers_for_conc_evac() {
uint active_workers = (_prev_conc_evac == 0) ? ConcGCThreads : _prev_conc_evac;
_prev_conc_evac =
WorkerPolicy::calc_active_conc_workers(ConcGCThreads,
< prev index next >