hotspot/src/share/vm/gc/g1/g1RootProcessor.cpp
changeset 30869 d5cbedffb50b
parent 30868 c1b24f26deed
child 31331 a7c714b6cfb3
equal deleted inserted replaced
30868:c1b24f26deed 30869:d5cbedffb50b
   202     if (!_process_strong_tasks->is_task_claimed(G1RP_PS_filter_satb_buffers) && _g1h->mark_in_progress()) {
   202     if (!_process_strong_tasks->is_task_claimed(G1RP_PS_filter_satb_buffers) && _g1h->mark_in_progress()) {
   203       JavaThread::satb_mark_queue_set().filter_thread_buffers();
   203       JavaThread::satb_mark_queue_set().filter_thread_buffers();
   204     }
   204     }
   205   }
   205   }
   206 
   206 
   207   _process_strong_tasks->all_tasks_completed();
   207   _process_strong_tasks->all_tasks_completed(n_workers());
   208 }
   208 }
   209 
   209 
   210 void G1RootProcessor::process_strong_roots(OopClosure* oops,
   210 void G1RootProcessor::process_strong_roots(OopClosure* oops,
   211                                            CLDClosure* clds,
   211                                            CLDClosure* clds,
   212                                            CodeBlobClosure* blobs) {
   212                                            CodeBlobClosure* blobs) {
   213 
   213 
   214   process_java_roots(oops, clds, clds, NULL, blobs, NULL, 0);
   214   process_java_roots(oops, clds, clds, NULL, blobs, NULL, 0);
   215   process_vm_roots(oops, NULL, NULL, 0);
   215   process_vm_roots(oops, NULL, NULL, 0);
   216 
   216 
   217   _process_strong_tasks->all_tasks_completed();
   217   _process_strong_tasks->all_tasks_completed(n_workers());
   218 }
   218 }
   219 
   219 
   220 void G1RootProcessor::process_all_roots(OopClosure* oops,
   220 void G1RootProcessor::process_all_roots(OopClosure* oops,
   221                                         CLDClosure* clds,
   221                                         CLDClosure* clds,
   222                                         CodeBlobClosure* blobs) {
   222                                         CodeBlobClosure* blobs) {
   226 
   226 
   227   if (!_process_strong_tasks->is_task_claimed(G1RP_PS_CodeCache_oops_do)) {
   227   if (!_process_strong_tasks->is_task_claimed(G1RP_PS_CodeCache_oops_do)) {
   228     CodeCache::blobs_do(blobs);
   228     CodeCache::blobs_do(blobs);
   229   }
   229   }
   230 
   230 
   231   _process_strong_tasks->all_tasks_completed();
   231   _process_strong_tasks->all_tasks_completed(n_workers());
   232 }
   232 }
   233 
   233 
   234 void G1RootProcessor::process_java_roots(OopClosure* strong_roots,
   234 void G1RootProcessor::process_java_roots(OopClosure* strong_roots,
   235                                          CLDClosure* thread_stack_clds,
   235                                          CLDClosure* thread_stack_clds,
   236                                          CLDClosure* strong_clds,
   236                                          CLDClosure* strong_clds,
   325   G1CodeBlobClosure scavenge_cs_nmethods(scan_non_heap_weak_roots);
   325   G1CodeBlobClosure scavenge_cs_nmethods(scan_non_heap_weak_roots);
   326 
   326 
   327   _g1h->g1_rem_set()->oops_into_collection_set_do(scan_rs, &scavenge_cs_nmethods, worker_i);
   327   _g1h->g1_rem_set()->oops_into_collection_set_do(scan_rs, &scavenge_cs_nmethods, worker_i);
   328 }
   328 }
   329 
   329 
   330 void G1RootProcessor::set_num_workers(uint active_workers) {
       
   331   assert(active_workers == _srs.n_threads(),
       
   332       err_msg("Mismatch between number of worker threads. active_workers: %u and n_workers(): %u",
       
   333               active_workers,
       
   334               _srs.n_threads()));
       
   335   _process_strong_tasks->set_n_threads(active_workers);
       
   336 }
       
   337 
       
   338 uint G1RootProcessor::n_workers() const {
   330 uint G1RootProcessor::n_workers() const {
   339   return _srs.n_threads();
   331   return _srs.n_threads();
   340 }
   332 }