< prev index next >

src/share/vm/gc/shared/workgroup.cpp

Print this page
rev 11040 : 8155232: Augment Workgang to run task with a given number of threads
Summary: Add a method to run a WorkGang with a set number of threads.
Reviewed-by:
rev 11041 : [mq]: 8155232-stefank-review

*** 253,263 **** AbstractGangWorker* WorkGang::allocate_worker(uint worker_id) { return new GangWorker(this, worker_id); } void WorkGang::run_task(AbstractGangTask* task) { ! _dispatcher->coordinator_execute_on_workers(task, active_workers()); } AbstractGangWorker::AbstractGangWorker(AbstractWorkGang* gang, uint id) { _gang = gang; set_id(id); --- 253,271 ---- AbstractGangWorker* WorkGang::allocate_worker(uint worker_id) { return new GangWorker(this, worker_id); } void WorkGang::run_task(AbstractGangTask* task) { ! run_task(task, active_workers()); ! } ! ! void WorkGang::run_task(AbstractGangTask* task, uint num_workers) { ! guarantee(num_workers <= active_workers(), ! "Trying to execute task %s with %u workers which is more than the amount of active workers %u.", ! task->name(), num_workers, active_workers()); ! guarantee(num_workers > 0, "Trying to execute task %s with zero workers", task->name()); ! _dispatcher->coordinator_execute_on_workers(task, num_workers); } AbstractGangWorker::AbstractGangWorker(AbstractWorkGang* gang, uint id) { _gang = gang; set_id(id);
< prev index next >