< prev index next >

src/share/vm/gc/parallel/gcTaskManager.cpp

Print this page




 466   }
 467   if (queue() != NULL) {
 468     GCTaskQueue* unsynchronized_queue = queue()->unsynchronized_queue();
 469     GCTaskQueue::destroy(unsynchronized_queue);
 470     SynchronizedGCTaskQueue::destroy(queue());
 471     _queue = NULL;
 472   }
 473   if (monitor() != NULL) {
 474     delete monitor();
 475     _monitor = NULL;
 476   }
 477 }
 478 
 479 void GCTaskManager::set_active_gang() {
 480   _active_workers =
 481     AdaptiveSizePolicy::calc_active_workers(workers(),
 482                                  active_workers(),
 483                                  Threads::number_of_non_daemon_threads());
 484 
 485   assert(!all_workers_active() || active_workers() == ParallelGCThreads,
 486          err_msg("all_workers_active() is  incorrect: "
 487                  "active %d  ParallelGCThreads %u", active_workers(),
 488                  ParallelGCThreads));
 489   if (TraceDynamicGCThreads) {
 490     gclog_or_tty->print_cr("GCTaskManager::set_active_gang(): "
 491                            "all_workers_active()  %d  workers %d  "
 492                            "active  %d  ParallelGCThreads %u",
 493                            all_workers_active(), workers(),  active_workers(),
 494                            ParallelGCThreads);
 495   }
 496 }
 497 
 498 // Create IdleGCTasks for inactive workers.
 499 // Creates tasks in a ResourceArea and assumes
 500 // an appropriate ResourceMark.
 501 void GCTaskManager::task_idle_workers() {
 502   {
 503     int more_inactive_workers = 0;
 504     {
 505       // Stop any idle tasks from exiting their IdleGCTask's
 506       // and get the count for additional IdleGCTask's under
 507       // the GCTaskManager's monitor so that the "more_inactive_workers"
 508       // count is correct.




 466   }
 467   if (queue() != NULL) {
 468     GCTaskQueue* unsynchronized_queue = queue()->unsynchronized_queue();
 469     GCTaskQueue::destroy(unsynchronized_queue);
 470     SynchronizedGCTaskQueue::destroy(queue());
 471     _queue = NULL;
 472   }
 473   if (monitor() != NULL) {
 474     delete monitor();
 475     _monitor = NULL;
 476   }
 477 }
 478 
 479 void GCTaskManager::set_active_gang() {
 480   _active_workers =
 481     AdaptiveSizePolicy::calc_active_workers(workers(),
 482                                  active_workers(),
 483                                  Threads::number_of_non_daemon_threads());
 484 
 485   assert(!all_workers_active() || active_workers() == ParallelGCThreads,
 486          "all_workers_active() is  incorrect: "
 487          "active %d  ParallelGCThreads %u", active_workers(),
 488          ParallelGCThreads);
 489   if (TraceDynamicGCThreads) {
 490     gclog_or_tty->print_cr("GCTaskManager::set_active_gang(): "
 491                            "all_workers_active()  %d  workers %d  "
 492                            "active  %d  ParallelGCThreads %u",
 493                            all_workers_active(), workers(),  active_workers(),
 494                            ParallelGCThreads);
 495   }
 496 }
 497 
 498 // Create IdleGCTasks for inactive workers.
 499 // Creates tasks in a ResourceArea and assumes
 500 // an appropriate ResourceMark.
 501 void GCTaskManager::task_idle_workers() {
 502   {
 503     int more_inactive_workers = 0;
 504     {
 505       // Stop any idle tasks from exiting their IdleGCTask's
 506       // and get the count for additional IdleGCTask's under
 507       // the GCTaskManager's monitor so that the "more_inactive_workers"
 508       // count is correct.


< prev index next >