< prev index next >

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

Print this page




 258 AbstractGangWorker* WorkGang::allocate_worker(uint worker_id) {
 259   return new GangWorker(this, worker_id);
 260 }
 261 
 262 void WorkGang::run_task(AbstractGangTask* task) {
 263   _dispatcher->coordinator_execute_on_workers(task, active_workers());
 264 }
 265 
 266 AbstractGangWorker::AbstractGangWorker(AbstractWorkGang* gang, uint id) {
 267   _gang = gang;
 268   set_id(id);
 269   set_name("%s#%d", gang->name(), id);
 270 }
 271 
 272 void AbstractGangWorker::run() {
 273   initialize();
 274   loop();
 275 }
 276 
 277 void AbstractGangWorker::initialize() {
 278   this->initialize_thread_local_storage();
 279   this->record_stack_base_and_size();
 280   this->initialize_named_thread();
 281   assert(_gang != NULL, "No gang to run in");
 282   os::set_priority(this, NearMaxPriority);
 283   if (TraceWorkGang) {
 284     tty->print_cr("Running gang worker for gang %s id %u",
 285                   gang()->name(), id());
 286   }
 287   // The VM thread should not execute here because MutexLocker's are used
 288   // as (opposed to MutexLockerEx's).
 289   assert(!Thread::current()->is_VM_thread(), "VM thread should not be part"
 290          " of a work gang");
 291 }
 292 
 293 bool AbstractGangWorker::is_GC_task_thread() const {
 294   return gang()->are_GC_task_threads();
 295 }
 296 
 297 bool AbstractGangWorker::is_ConcurrentGC_thread() const {
 298   return gang()->are_ConcurrentGC_threads();




 258 AbstractGangWorker* WorkGang::allocate_worker(uint worker_id) {
 259   return new GangWorker(this, worker_id);
 260 }
 261 
 262 void WorkGang::run_task(AbstractGangTask* task) {
 263   _dispatcher->coordinator_execute_on_workers(task, active_workers());
 264 }
 265 
 266 AbstractGangWorker::AbstractGangWorker(AbstractWorkGang* gang, uint id) {
 267   _gang = gang;
 268   set_id(id);
 269   set_name("%s#%d", gang->name(), id);
 270 }
 271 
 272 void AbstractGangWorker::run() {
 273   initialize();
 274   loop();
 275 }
 276 
 277 void AbstractGangWorker::initialize() {

 278   this->record_stack_base_and_size();
 279   this->initialize_named_thread();
 280   assert(_gang != NULL, "No gang to run in");
 281   os::set_priority(this, NearMaxPriority);
 282   if (TraceWorkGang) {
 283     tty->print_cr("Running gang worker for gang %s id %u",
 284                   gang()->name(), id());
 285   }
 286   // The VM thread should not execute here because MutexLocker's are used
 287   // as (opposed to MutexLockerEx's).
 288   assert(!Thread::current()->is_VM_thread(), "VM thread should not be part"
 289          " of a work gang");
 290 }
 291 
 292 bool AbstractGangWorker::is_GC_task_thread() const {
 293   return gang()->are_GC_task_threads();
 294 }
 295 
 296 bool AbstractGangWorker::is_ConcurrentGC_thread() const {
 297   return gang()->are_ConcurrentGC_threads();


< prev index next >