diff --git a/src/hotspot/share/gc/parallel/pcTasks.cpp b/src/hotspot/share/gc/parallel/pcTasks.cpp index 66d63aa6594..fc155a992fd 100644 --- a/src/hotspot/share/gc/parallel/pcTasks.cpp +++ b/src/hotspot/share/gc/parallel/pcTasks.cpp @@ -149,19 +149,16 @@ void RefProcTaskProxy::do_it(GCTaskManager* manager, uint which) void RefProcTaskExecutor::execute(ProcessTask& task) { ParallelScavengeHeap* heap = ParallelScavengeHeap::heap(); - uint parallel_gc_threads = heap->gc_task_manager()->workers(); uint active_gc_threads = heap->gc_task_manager()->active_workers(); OopTaskQueueSet* qset = ParCompactionManager::stack_array(); ParallelTaskTerminator terminator(active_gc_threads, qset); GCTaskQueue* q = GCTaskQueue::create(); - for(uint i=0; ienqueue(new RefProcTaskProxy(task, i)); } - if (task.marks_oops_alive()) { - if (parallel_gc_threads>1) { - for (uint j=0; jenqueue(new StealMarkingTask(&terminator)); - } + if (task.marks_oops_alive() && (active_gc_threads>1)) { + for (uint j=0; jenqueue(new StealMarkingTask(&terminator)); } } PSParallelCompact::gc_task_manager()->execute_and_wait(q);