< prev index next >

src/hotspot/share/gc/g1/g1CollectedHeap.cpp

8196341: Add JFR events for parallel phases of G1

*** 3168,3189 **** --- 3168,3195 ---- _evacuation_failed_info_array[worker_id].register_copy_failure(obj->size()); _preserved_marks_set.get(worker_id)->push_if_necessary(obj, m); } bool G1ParEvacuateFollowersClosure::offer_termination() { + EventGCPhaseParallel event; G1ParScanThreadState* const pss = par_scan_state(); start_term_time(); const bool res = terminator()->offer_termination(); end_term_time(); + event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(G1GCPhaseTimes::Termination)); return res; } void G1ParEvacuateFollowersClosure::do_void() { + EventGCPhaseParallel event; G1ParScanThreadState* const pss = par_scan_state(); pss->trim_queue(); + event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(G1GCPhaseTimes::ObjCopy)); do { + EventGCPhaseParallel event; pss->steal_and_trim_queue(queues()); + event.commit(GCId::current(), pss->worker_id(), G1GCPhaseTimes::phase_name(G1GCPhaseTimes::ObjCopy)); } while (!offer_termination()); } class G1ParTask : public AbstractGangTask { protected: ***************
*** 4049,4058 **** --- 4055,4065 ---- if (cur >= _num_work_items) { break; } + EventGCPhaseParallel event; double start_time = os::elapsedTime(); end = MIN2(end, _num_work_items); for (; cur < end; cur++) { ***************
*** 4063,4075 **** --- 4070,4084 ---- double end_time = os::elapsedTime(); double time_taken = end_time - start_time; if (is_young) { young_time += time_taken; has_young_time = true; + event.commit(GCId::current(), worker_id, G1GCPhaseTimes::phase_name(G1GCPhaseTimes::YoungFreeCSet)); } else { non_young_time += time_taken; has_non_young_time = true; + event.commit(GCId::current(), worker_id, G1GCPhaseTimes::phase_name(G1GCPhaseTimes::NonYoungFreeCSet)); } start_time = end_time; } }
< prev index next >