307 {
308 G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::SystemDictionaryRoots, worker_i);
309 if (!_process_strong_tasks->is_task_claimed(G1RP_PS_SystemDictionary_oops_do)) {
310 SystemDictionary::roots_oops_do(strong_roots, weak_roots);
311 }
312 }
313
314 {
315 G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::StringTableRoots, worker_i);
316 // All threads execute the following. A specific chunk of buckets
317 // from the StringTable are the individual tasks.
318 if (weak_roots != NULL) {
319 StringTable::possibly_parallel_oops_do(weak_roots);
320 }
321 }
322 }
323
324 void G1RootProcessor::scan_remembered_sets(G1ParPushHeapRSClosure* scan_rs,
325 OopClosure* scan_non_heap_weak_roots,
326 uint worker_i) {
327 G1GCPhaseTimes* phase_times = _g1h->g1_policy()->phase_times();
328 G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::CodeCacheRoots, worker_i);
329
330 // Now scan the complement of the collection set.
331 G1CodeBlobClosure scavenge_cs_nmethods(scan_non_heap_weak_roots);
332
333 _g1h->g1_rem_set()->oops_into_collection_set_do(scan_rs, &scavenge_cs_nmethods, worker_i);
334 }
335
336 void G1RootProcessor::set_num_workers(int active_workers) {
337 _process_strong_tasks->set_n_threads(active_workers);
338 }
|
307 {
308 G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::SystemDictionaryRoots, worker_i);
309 if (!_process_strong_tasks->is_task_claimed(G1RP_PS_SystemDictionary_oops_do)) {
310 SystemDictionary::roots_oops_do(strong_roots, weak_roots);
311 }
312 }
313
314 {
315 G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::StringTableRoots, worker_i);
316 // All threads execute the following. A specific chunk of buckets
317 // from the StringTable are the individual tasks.
318 if (weak_roots != NULL) {
319 StringTable::possibly_parallel_oops_do(weak_roots);
320 }
321 }
322 }
323
324 void G1RootProcessor::scan_remembered_sets(G1ParPushHeapRSClosure* scan_rs,
325 OopClosure* scan_non_heap_weak_roots,
326 uint worker_i) {
327 G1CodeBlobClosure scavenge_cs_nmethods(scan_non_heap_weak_roots);
328
329 _g1h->g1_rem_set()->oops_into_collection_set_do(scan_rs, &scavenge_cs_nmethods, worker_i);
330 }
331
332 void G1RootProcessor::set_num_workers(int active_workers) {
333 _process_strong_tasks->set_n_threads(active_workers);
334 }
|