diff --git a/.hgtags b/.hgtags index 7b4ef9ce2e9d83669db73ba0a722dc8f0ae66793..24cbb8171594511a20b80470f37ac458b36c316b 100644 --- a/.hgtags +++ b/.hgtags @@ -755,3 +755,4 @@ ab64d7ea4f48ea4bdbcc43d4a653be157d9c29e3 jdk8u66-b12 5b67af3317bce1f940c5dc1535411a1002bed6c1 jdk8u66-b15 4bbf0e9196f2786e0bc4f17664e2533808d944bf jdk8u66-b16 b8f426369187c32551f0a3d571d933908988c81c jdk8u72-b00 +c0205eddb31766ece562483595ec28a7506971e9 jdk8u72-b01 diff --git a/src/share/vm/gc_implementation/g1/g1RootProcessor.cpp b/src/share/vm/gc_implementation/g1/g1RootProcessor.cpp index c380b894a33a8623d978fc36f1c1d5d3b8ca5115..b27696d2d094f95bd2c46c2f77efd646756e8eab 100644 --- a/src/share/vm/gc_implementation/g1/g1RootProcessor.cpp +++ b/src/share/vm/gc_implementation/g1/g1RootProcessor.cpp @@ -117,7 +117,7 @@ void G1RootProcessor::wait_until_all_strong_classes_discovered() { G1RootProcessor::G1RootProcessor(G1CollectedHeap* g1h) : _g1h(g1h), - _process_strong_tasks(new SubTasksDone(G1RP_PS_NumElements)), + _process_strong_tasks(G1RP_PS_NumElements), _srs(g1h), _lock(Mutex::leaf, "G1 Root Scanning barrier lock", false), _n_workers_discovered_strong_classes(0) {} @@ -160,7 +160,7 @@ void G1RootProcessor::evacuate_roots(OopClosure* scan_non_heap_roots, { // Now the CM ref_processor roots. G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::CMRefRoots, worker_i); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_refProcessor_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_refProcessor_oops_do)) { // We need to treat the discovered reference lists of the // concurrent mark ref processor as roots and keep entries // (which are added by the marking threads) on them live @@ -203,12 +203,12 @@ void G1RootProcessor::evacuate_roots(OopClosure* scan_non_heap_roots, // as implicitly live). { G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::SATBFiltering, worker_i); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_filter_satb_buffers) && _g1h->mark_in_progress()) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_filter_satb_buffers) && _g1h->mark_in_progress()) { JavaThread::satb_mark_queue_set().filter_thread_buffers(); } } - _process_strong_tasks->all_tasks_completed(); + _process_strong_tasks.all_tasks_completed(); } void G1RootProcessor::process_strong_roots(OopClosure* oops, @@ -218,7 +218,7 @@ void G1RootProcessor::process_strong_roots(OopClosure* oops, process_java_roots(oops, clds, clds, NULL, blobs, NULL, 0); process_vm_roots(oops, NULL, NULL, 0); - _process_strong_tasks->all_tasks_completed(); + _process_strong_tasks.all_tasks_completed(); } void G1RootProcessor::process_all_roots(OopClosure* oops, @@ -228,11 +228,11 @@ void G1RootProcessor::process_all_roots(OopClosure* oops, process_java_roots(oops, NULL, clds, clds, NULL, NULL, 0); process_vm_roots(oops, oops, NULL, 0); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_CodeCache_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_CodeCache_oops_do)) { CodeCache::blobs_do(blobs); } - _process_strong_tasks->all_tasks_completed(); + _process_strong_tasks.all_tasks_completed(); } void G1RootProcessor::process_java_roots(OopClosure* strong_roots, @@ -248,7 +248,7 @@ void G1RootProcessor::process_java_roots(OopClosure* strong_roots, // let the thread process the weak CLDs and nmethods. { G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::CLDGRoots, worker_i); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_ClassLoaderDataGraph_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_ClassLoaderDataGraph_oops_do)) { ClassLoaderDataGraph::roots_cld_do(strong_clds, weak_clds); } } @@ -265,49 +265,49 @@ void G1RootProcessor::process_vm_roots(OopClosure* strong_roots, uint worker_i) { { G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::UniverseRoots, worker_i); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_Universe_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_Universe_oops_do)) { Universe::oops_do(strong_roots); } } { G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::JNIRoots, worker_i); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_JNIHandles_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_JNIHandles_oops_do)) { JNIHandles::oops_do(strong_roots); } } { G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::ObjectSynchronizerRoots, worker_i); - if (!_process_strong_tasks-> is_task_claimed(G1RP_PS_ObjectSynchronizer_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_ObjectSynchronizer_oops_do)) { ObjectSynchronizer::oops_do(strong_roots); } } { G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::FlatProfilerRoots, worker_i); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_FlatProfiler_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_FlatProfiler_oops_do)) { FlatProfiler::oops_do(strong_roots); } } { G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::ManagementRoots, worker_i); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_Management_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_Management_oops_do)) { Management::oops_do(strong_roots); } } { G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::JVMTIRoots, worker_i); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_jvmti_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_jvmti_oops_do)) { JvmtiExport::oops_do(strong_roots); } } { G1GCParPhaseTimesTracker x(phase_times, G1GCPhaseTimes::SystemDictionaryRoots, worker_i); - if (!_process_strong_tasks->is_task_claimed(G1RP_PS_SystemDictionary_oops_do)) { + if (!_process_strong_tasks.is_task_claimed(G1RP_PS_SystemDictionary_oops_do)) { SystemDictionary::roots_oops_do(strong_roots, weak_roots); } } @@ -335,5 +335,5 @@ void G1RootProcessor::scan_remembered_sets(G1ParPushHeapRSClosure* scan_rs, } void G1RootProcessor::set_num_workers(int active_workers) { - _process_strong_tasks->set_n_threads(active_workers); + _process_strong_tasks.set_n_threads(active_workers); } diff --git a/src/share/vm/gc_implementation/g1/g1RootProcessor.hpp b/src/share/vm/gc_implementation/g1/g1RootProcessor.hpp index ee7b00f22ae785550e16173524e3978add3d49f7..1cce9f3573547a5d948c05bd4dbcf0dcc62c78fe 100644 --- a/src/share/vm/gc_implementation/g1/g1RootProcessor.hpp +++ b/src/share/vm/gc_implementation/g1/g1RootProcessor.hpp @@ -45,7 +45,7 @@ class SubTasksDone; // worker thread call the process_roots methods. class G1RootProcessor : public StackObj { G1CollectedHeap* _g1h; - SubTasksDone* _process_strong_tasks; + SubTasksDone _process_strong_tasks; SharedHeap::StrongRootsScope _srs; // Used to implement the Thread work barrier.