--- old/src/hotspot/share/gc/g1/g1CollectedHeap.cpp 2020-01-30 17:10:12.433740915 +0100 +++ new/src/hotspot/share/gc/g1/g1CollectedHeap.cpp 2020-01-30 17:10:11.613729169 +0100 @@ -76,6 +76,7 @@ #include "gc/shared/isGCActiveMark.hpp" #include "gc/shared/locationPrinter.inline.hpp" #include "gc/shared/oopStorageParState.hpp" +#include "gc/shared/owstTaskTerminator.hpp" #include "gc/shared/preservedMarks.inline.hpp" #include "gc/shared/suspendibleThreadSet.hpp" #include "gc/shared/referenceProcessor.inline.hpp" @@ -1132,7 +1133,7 @@ print_heap_after_gc(); print_heap_regions(); #ifdef TRACESPINNING - ParallelTaskTerminator::print_termination_counts(); + OWSTTaskTerminator::print_termination_counts(); #endif } @@ -3140,7 +3141,7 @@ verify_after_young_collection(verify_type); #ifdef TRACESPINNING - ParallelTaskTerminator::print_termination_counts(); + OWSTTaskTerminator::print_termination_counts(); #endif gc_epilogue(false); @@ -3476,14 +3477,14 @@ G1CollectedHeap* _g1h; G1ParScanThreadStateSet* _pss; RefToScanQueueSet* _task_queues; - ParallelTaskTerminator* _terminator; + OWSTTaskTerminator* _terminator; public: G1STWRefProcTaskProxy(ProcessTask& proc_task, G1CollectedHeap* g1h, G1ParScanThreadStateSet* per_thread_states, RefToScanQueueSet *task_queues, - ParallelTaskTerminator* terminator) : + OWSTTaskTerminator* terminator) : AbstractGangTask("Process reference objects in parallel"), _proc_task(proc_task), _g1h(g1h), @@ -3527,8 +3528,8 @@ assert(_workers->active_workers() >= ergo_workers, "Ergonomically chosen workers (%u) should be less than or equal to active workers (%u)", ergo_workers, _workers->active_workers()); - TaskTerminator terminator(ergo_workers, _queues); - G1STWRefProcTaskProxy proc_task_proxy(proc_task, _g1h, _pss, _queues, terminator.terminator()); + OWSTTaskTerminator terminator(ergo_workers, _queues); + G1STWRefProcTaskProxy proc_task_proxy(proc_task, _g1h, _pss, _queues, &terminator); _workers->run_task(&proc_task_proxy, ergo_workers); } @@ -3814,7 +3815,7 @@ G1CollectedHeap* _g1h; G1ParScanThreadStateSet* _per_thread_states; RefToScanQueueSet* _task_queues; - TaskTerminator _terminator; + OWSTTaskTerminator _terminator; uint _num_workers; void evacuate_live_objects(G1ParScanThreadState* pss, @@ -3824,7 +3825,7 @@ G1GCPhaseTimes* p = _g1h->phase_times(); Ticks start = Ticks::now(); - G1ParEvacuateFollowersClosure cl(_g1h, pss, _task_queues, _terminator.terminator(), objcopy_phase); + G1ParEvacuateFollowersClosure cl(_g1h, pss, _task_queues, &_terminator, objcopy_phase); cl.do_void(); assert(pss->queue_is_empty(), "should be empty");