< prev index next >
src/share/vm/gc_implementation/shenandoah/shenandoahWorkerPolicy.cpp
Print this page
rev 11463 : Backport Traversal GC
@@ -30,10 +30,12 @@
uint ShenandoahWorkerPolicy::_prev_par_marking = 0;
uint ShenandoahWorkerPolicy::_prev_conc_marking = 0;
uint ShenandoahWorkerPolicy::_prev_conc_evac = 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;
uint ShenandoahWorkerPolicy::_prev_par_update_ref = 0;
uint ShenandoahWorkerPolicy::_prev_conc_cleanup = 0;
uint ShenandoahWorkerPolicy::_prev_conc_reset = 0;
@@ -79,10 +81,30 @@
active_workers,
Threads::number_of_non_daemon_threads());
return _prev_fullgc;
}
+// Calculate workers for Stop-the-world traversal GC
+uint ShenandoahWorkerPolicy::calc_workers_for_stw_traversal() {
+ uint active_workers = (_prev_stw_traversal == 0) ? ParallelGCThreads : _prev_stw_traversal;
+ _prev_stw_traversal =
+ AdaptiveSizePolicy::calc_active_workers(ParallelGCThreads,
+ active_workers,
+ Threads::number_of_non_daemon_threads());
+ return _prev_stw_traversal;
+}
+
+// Calculate workers for concurent traversal GC
+uint ShenandoahWorkerPolicy::calc_workers_for_conc_traversal() {
+ uint active_workers = (_prev_conc_traversal == 0) ? ConcGCThreads : _prev_conc_traversal;
+ _prev_conc_traversal =
+ AdaptiveSizePolicy::calc_active_conc_workers(ConcGCThreads,
+ active_workers,
+ Threads::number_of_non_daemon_threads());
+ return _prev_conc_traversal;
+}
+
// Calculate workers for concurrent reference update
uint ShenandoahWorkerPolicy::calc_workers_for_conc_update_ref() {
uint active_workers = (_prev_conc_update_ref == 0) ? ConcGCThreads : _prev_conc_update_ref;
_prev_conc_update_ref =
AdaptiveSizePolicy::calc_active_conc_workers(ConcGCThreads,
< prev index next >