< prev index next >

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

Print this page




  79   for(uint i=0; i<_time_stamp_index; i++) {
  80     GCTaskTimeStamp* time_stamp = time_stamp_at(i);
  81     tty->print_cr("\t[ %s " JLONG_FORMAT " " JLONG_FORMAT " ]",
  82                   time_stamp->name(),
  83                   time_stamp->entry_time(),
  84                   time_stamp->exit_time());
  85   }
  86 
  87   // Reset after dumping the data
  88   _time_stamp_index = 0;
  89 }
  90 
  91 // GC workers get tasks from the GCTaskManager and execute
  92 // them in this method.  If there are no tasks to execute,
  93 // the GC workers wait in the GCTaskManager's get_task()
  94 // for tasks to be enqueued for execution.
  95 
  96 void GCTaskThread::run() {
  97   // Set up the thread for stack overflow support
  98   this->record_stack_base_and_size();
  99   this->initialize_thread_local_storage();
 100   this->initialize_named_thread();
 101   // Bind yourself to your processor.
 102   if (processor_id() != GCTaskManager::sentinel_worker()) {
 103     if (TraceGCTaskThread) {
 104       tty->print_cr("GCTaskThread::run: "
 105                     "  binding to processor %u", processor_id());
 106     }
 107     if (!os::bind_to_processor(processor_id())) {
 108       DEBUG_ONLY(
 109         warning("Couldn't bind GCTaskThread %u to processor %u",
 110                       which(), processor_id());
 111       )
 112     }
 113   }
 114   // Part of thread setup.
 115   // ??? Are these set up once here to make subsequent ones fast?
 116   HandleMark   hm_outer;
 117   ResourceMark rm_outer;
 118 
 119   TimeStamp timer;




  79   for(uint i=0; i<_time_stamp_index; i++) {
  80     GCTaskTimeStamp* time_stamp = time_stamp_at(i);
  81     tty->print_cr("\t[ %s " JLONG_FORMAT " " JLONG_FORMAT " ]",
  82                   time_stamp->name(),
  83                   time_stamp->entry_time(),
  84                   time_stamp->exit_time());
  85   }
  86 
  87   // Reset after dumping the data
  88   _time_stamp_index = 0;
  89 }
  90 
  91 // GC workers get tasks from the GCTaskManager and execute
  92 // them in this method.  If there are no tasks to execute,
  93 // the GC workers wait in the GCTaskManager's get_task()
  94 // for tasks to be enqueued for execution.
  95 
  96 void GCTaskThread::run() {
  97   // Set up the thread for stack overflow support
  98   this->record_stack_base_and_size();

  99   this->initialize_named_thread();
 100   // Bind yourself to your processor.
 101   if (processor_id() != GCTaskManager::sentinel_worker()) {
 102     if (TraceGCTaskThread) {
 103       tty->print_cr("GCTaskThread::run: "
 104                     "  binding to processor %u", processor_id());
 105     }
 106     if (!os::bind_to_processor(processor_id())) {
 107       DEBUG_ONLY(
 108         warning("Couldn't bind GCTaskThread %u to processor %u",
 109                       which(), processor_id());
 110       )
 111     }
 112   }
 113   // Part of thread setup.
 114   // ??? Are these set up once here to make subsequent ones fast?
 115   HandleMark   hm_outer;
 116   ResourceMark rm_outer;
 117 
 118   TimeStamp timer;


< prev index next >