< prev index next > src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp
Print this page
/*
* Copyright (c) 2017, 2021, Red Hat, Inc. All rights reserved.
+ * Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
f(CNT_PREFIX ## CLDGRoots, DESC_PREFIX "CLDG Roots") \
f(CNT_PREFIX ## CodeCacheUnload, DESC_PREFIX "Unload Code Caches") \
f(CNT_PREFIX ## CLDUnlink, DESC_PREFIX "Unlink CLDs") \
f(CNT_PREFIX ## WeakRefProc, DESC_PREFIX "Weak References") \
f(CNT_PREFIX ## ParallelMark, DESC_PREFIX "Parallel Mark") \
// end
#define SHENANDOAH_PHASE_DO(f) \
f(conc_reset, "Concurrent Reset") \
! \
f(init_mark_gross, "Pause Init Mark (G)") \
f(init_mark, "Pause Init Mark (N)") \
f(init_manage_tlabs, " Manage TLABs") \
f(init_update_region_states, " Update Region States") \
\
f(conc_mark_roots, "Concurrent Mark Roots ") \
SHENANDOAH_PAR_PHASE_DO(conc_mark_roots, " CMR: ", f) \
f(conc_mark, "Concurrent Marking") \
\
f(final_mark_gross, "Pause Final Mark (G)") \
f(final_mark, "Pause Final Mark (N)") \
f(finish_mark, " Finish Mark") \
SHENANDOAH_PAR_PHASE_DO(finish_mark_, " FM: ", f) \
f(CNT_PREFIX ## CLDGRoots, DESC_PREFIX "CLDG Roots") \
f(CNT_PREFIX ## CodeCacheUnload, DESC_PREFIX "Unload Code Caches") \
f(CNT_PREFIX ## CLDUnlink, DESC_PREFIX "Unlink CLDs") \
f(CNT_PREFIX ## WeakRefProc, DESC_PREFIX "Weak References") \
f(CNT_PREFIX ## ParallelMark, DESC_PREFIX "Parallel Mark") \
+ f(CNT_PREFIX ## ScanClusters, DESC_PREFIX "Scan Clusters") \
// end
#define SHENANDOAH_PHASE_DO(f) \
f(conc_reset, "Concurrent Reset") \
! f(conc_reset_old, "Concurrent Reset (OLD)") \
f(init_mark_gross, "Pause Init Mark (G)") \
f(init_mark, "Pause Init Mark (N)") \
f(init_manage_tlabs, " Manage TLABs") \
+ f(init_swap_rset, " Swap Remembered Set") \
+ f(init_transfer_satb, " Transfer Old From SATB") \
f(init_update_region_states, " Update Region States") \
\
+ f(init_scan_rset, "Concurrent Scan Remembered Set") \
+ SHENANDOAH_PAR_PHASE_DO(init_scan_rset_, " RS: ", f) \
+ \
f(conc_mark_roots, "Concurrent Mark Roots ") \
SHENANDOAH_PAR_PHASE_DO(conc_mark_roots, " CMR: ", f) \
f(conc_mark, "Concurrent Marking") \
+ SHENANDOAH_PAR_PHASE_DO(conc_mark, " CM: ", f) \
+ f(conc_mark_satb_flush, " Flush SATB") \
\
f(final_mark_gross, "Pause Final Mark (G)") \
f(final_mark, "Pause Final Mark (N)") \
f(finish_mark, " Finish Mark") \
SHENANDOAH_PAR_PHASE_DO(finish_mark_, " FM: ", f) \
f(conc_class_unload_purge_cldg, " CLDG") \
f(conc_class_unload_purge_ec, " Exception Caches") \
f(conc_strong_roots, "Concurrent Strong Roots") \
SHENANDOAH_PAR_PHASE_DO(conc_strong_roots_, " CSR: ", f) \
f(conc_evac, "Concurrent Evacuation") \
! \
f(final_roots_gross, "Pause Final Roots (G)") \
f(final_roots, "Pause Final Roots (N)") \
\
f(init_update_refs_gross, "Pause Init Update Refs (G)") \
f(init_update_refs, "Pause Init Update Refs (N)") \
f(conc_class_unload_purge_cldg, " CLDG") \
f(conc_class_unload_purge_ec, " Exception Caches") \
f(conc_strong_roots, "Concurrent Strong Roots") \
SHENANDOAH_PAR_PHASE_DO(conc_strong_roots_, " CSR: ", f) \
f(conc_evac, "Concurrent Evacuation") \
! f(promote_in_place, "Concurrent Promote Regions") \
f(final_roots_gross, "Pause Final Roots (G)") \
f(final_roots, "Pause Final Roots (N)") \
\
f(init_update_refs_gross, "Pause Init Update Refs (G)") \
f(init_update_refs, "Pause Init Update Refs (N)") \
f(final_update_refs_update_region_states, " Update Region States") \
f(final_update_refs_trash_cset, " Trash Collection Set") \
f(final_update_refs_rebuild_freeset, " Rebuild Free Set") \
\
f(conc_cleanup_complete, "Concurrent Cleanup") \
+ f(conc_coalesce_and_fill, "Concurrent Coalesce and Fill") \
+ SHENANDOAH_PAR_PHASE_DO(conc_coalesce_, " CC&F: ", f) \
\
f(degen_gc_gross, "Pause Degenerated GC (G)") \
f(degen_gc, "Pause Degenerated GC (N)") \
f(degen_gc_stw_mark, " Degen STW Mark") \
SHENANDOAH_PAR_PHASE_DO(degen_gc_stw_mark_, " DSM: ", f) \
f(degen_gc_final_update_refs_trash_cset, " Trash Collection Set") \
f(degen_gc_final_update_refs_rebuild_freeset, " Rebuild Free Set") \
f(degen_gc_update_roots, " Degen Update Roots") \
SHENANDOAH_PAR_PHASE_DO(degen_gc_update_, " DU: ", f) \
f(degen_gc_cleanup_complete, " Cleanup") \
+ f(degen_gc_promote_regions, " Degen Promote Regions") \
+ f(degen_gc_coalesce_and_fill, " Degen Coalesce and Fill") \
+ SHENANDOAH_PAR_PHASE_DO(degen_coalesce_, " DC&F", f) \
\
f(full_gc_gross, "Pause Full GC (G)") \
f(full_gc, "Pause Full GC (N)") \
f(full_gc_heapdump_pre, " Pre Heap Dump") \
f(full_gc_prepare, " Prepare") \
f(full_gc_adjust_roots, " Adjust Roots") \
SHENANDOAH_PAR_PHASE_DO(full_gc_adjust_roots_, " FA: ", f) \
f(full_gc_copy_objects, " Copy Objects") \
f(full_gc_copy_objects_regular, " Regular Objects") \
f(full_gc_copy_objects_humong, " Humongous Objects") \
+ f(full_gc_recompute_generation_usage, " Recompute generation usage") \
f(full_gc_copy_objects_reset_complete, " Reset Complete Bitmap") \
f(full_gc_copy_objects_rebuild, " Rebuild Region Sets") \
+ f(full_gc_reconstruct_remembered_set, " Reconstruct Remembered Set") \
f(full_gc_heapdump_post, " Post Heap Dump") \
\
f(conc_uncommit, "Concurrent Uncommit") \
f(pacing, "Pacing") \
\
static bool is_root_work_phase(Phase phase);
ShenandoahWorkerData* worker_data(Phase phase, ParPhase par_phase);
Phase worker_par_phase(Phase phase, ParPhase par_phase);
! void set_cycle_data(Phase phase, double time);
static double uninitialized() { return -1; }
public:
ShenandoahPhaseTimings(uint max_workers);
! void record_phase_time(Phase phase, double time);
void record_workers_start(Phase phase);
void record_workers_end(Phase phase);
void flush_par_workers_to_cycle();
static bool is_root_work_phase(Phase phase);
ShenandoahWorkerData* worker_data(Phase phase, ParPhase par_phase);
Phase worker_par_phase(Phase phase, ParPhase par_phase);
! void set_cycle_data(Phase phase, double time, bool should_aggregate = false);
static double uninitialized() { return -1; }
public:
ShenandoahPhaseTimings(uint max_workers);
! void record_phase_time(Phase phase, double time, bool should_aggregate = false);
void record_workers_start(Phase phase);
void record_workers_end(Phase phase);
void flush_par_workers_to_cycle();
uint const _worker_id;
double _start_time;
EventGCPhaseParallel _event;
public:
! ShenandoahWorkerTimingsTracker(ShenandoahPhaseTimings::Phase phase, ShenandoahPhaseTimings::ParPhase par_phase, uint worker_id);
~ShenandoahWorkerTimingsTracker();
};
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHPHASETIMINGS_HPP
uint const _worker_id;
double _start_time;
EventGCPhaseParallel _event;
public:
! ShenandoahWorkerTimingsTracker(ShenandoahPhaseTimings::Phase phase,
+ ShenandoahPhaseTimings::ParPhase par_phase,
+ uint worker_id,
+ bool cumulative = false);
~ShenandoahWorkerTimingsTracker();
};
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHPHASETIMINGS_HPP
< prev index next >