< prev index next >

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

Print this page




 280             task->name(), num_workers, total_workers());
 281   guarantee(num_workers > 0, "Trying to execute task %s with zero workers", task->name());
 282   uint old_num_workers = _active_workers;
 283   update_active_workers(num_workers);
 284   _dispatcher->coordinator_execute_on_workers(task, num_workers);
 285   update_active_workers(old_num_workers);
 286 }
 287 
 288 AbstractGangWorker::AbstractGangWorker(AbstractWorkGang* gang, uint id) {
 289   _gang = gang;
 290   set_id(id);
 291   set_name("%s#%d", gang->name(), id);
 292 }
 293 
 294 void AbstractGangWorker::run() {
 295   initialize();
 296   loop();
 297 }
 298 
 299 void AbstractGangWorker::initialize() {
 300   this->initialize_named_thread();
 301   assert(_gang != NULL, "No gang to run in");
 302   os::set_priority(this, NearMaxPriority);
 303   log_develop_trace(gc, workgang)("Running gang worker for gang %s id %u", gang()->name(), id());
 304   // The VM thread should not execute here because MutexLocker's are used
 305   // as (opposed to MutexLockerEx's).
 306   assert(!Thread::current()->is_VM_thread(), "VM thread should not be part"
 307          " of a work gang");
 308 }
 309 
 310 bool AbstractGangWorker::is_GC_task_thread() const {
 311   return gang()->are_GC_task_threads();
 312 }
 313 
 314 bool AbstractGangWorker::is_ConcurrentGC_thread() const {
 315   return gang()->are_ConcurrentGC_threads();
 316 }
 317 
 318 void AbstractGangWorker::print_on(outputStream* st) const {
 319   st->print("\"%s\" ", name());
 320   Thread::print_on(st);




 280             task->name(), num_workers, total_workers());
 281   guarantee(num_workers > 0, "Trying to execute task %s with zero workers", task->name());
 282   uint old_num_workers = _active_workers;
 283   update_active_workers(num_workers);
 284   _dispatcher->coordinator_execute_on_workers(task, num_workers);
 285   update_active_workers(old_num_workers);
 286 }
 287 
 288 AbstractGangWorker::AbstractGangWorker(AbstractWorkGang* gang, uint id) {
 289   _gang = gang;
 290   set_id(id);
 291   set_name("%s#%d", gang->name(), id);
 292 }
 293 
 294 void AbstractGangWorker::run() {
 295   initialize();
 296   loop();
 297 }
 298 
 299 void AbstractGangWorker::initialize() {

 300   assert(_gang != NULL, "No gang to run in");
 301   os::set_priority(this, NearMaxPriority);
 302   log_develop_trace(gc, workgang)("Running gang worker for gang %s id %u", gang()->name(), id());
 303   // The VM thread should not execute here because MutexLocker's are used
 304   // as (opposed to MutexLockerEx's).
 305   assert(!Thread::current()->is_VM_thread(), "VM thread should not be part"
 306          " of a work gang");
 307 }
 308 
 309 bool AbstractGangWorker::is_GC_task_thread() const {
 310   return gang()->are_GC_task_threads();
 311 }
 312 
 313 bool AbstractGangWorker::is_ConcurrentGC_thread() const {
 314   return gang()->are_ConcurrentGC_threads();
 315 }
 316 
 317 void AbstractGangWorker::print_on(outputStream* st) const {
 318   st->print("\"%s\" ", name());
 319   Thread::print_on(st);


< prev index next >