8005875: G1: Kitchensink fails with ParallelGCThreads=0

Check that the concurrent marking worker gang exists in ConcurrentMark::print_worker_threads_on(). Changes were also reviewed by Vitaly Davidovich <vitalyd@gmail.com>.

Reviewed-by: brutisso
This commit is contained in:
John Cuthbertson 2013-01-31 10:45:09 -08:00
parent 26b2bbe306
commit 7d2ccf3a21
2 changed files with 24 additions and 13 deletions

View file

@ -1190,7 +1190,7 @@ void ConcurrentMark::scanRootRegions() {
uint active_workers = MAX2(1U, parallel_marking_threads());
CMRootRegionScanTask task(this);
if (parallel_marking_threads() > 0) {
if (use_parallel_marking_threads()) {
_parallel_workers->set_active_workers((int) active_workers);
_parallel_workers->run_task(&task);
} else {
@ -1226,7 +1226,7 @@ void ConcurrentMark::markFromRoots() {
set_phase(active_workers, true /* concurrent */);
CMConcurrentMarkingTask markingTask(this, cmThread());
if (parallel_marking_threads() > 0) {
if (use_parallel_marking_threads()) {
_parallel_workers->set_active_workers((int)active_workers);
// Don't set _n_par_threads because it affects MT in proceess_strong_roots()
// and the decisions on that MT processing is made elsewhere.
@ -3242,7 +3242,9 @@ void ConcurrentMark::print_summary_info() {
}
void ConcurrentMark::print_worker_threads_on(outputStream* st) const {
_parallel_workers->print_worker_threads_on(st);
if (use_parallel_marking_threads()) {
_parallel_workers->print_worker_threads_on(st);
}
}
// We take a break if someone is trying to stop the world.