< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahPhaseTimings.hpp

Print this page
@@ -1,7 +1,8 @@
  /*
   * 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.

@@ -42,23 +43,31 @@
    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)                     \

@@ -93,11 +102,11 @@
    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)")      \

@@ -112,10 +121,12 @@
    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)                    \

@@ -141,10 +152,13 @@
    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")                       \

@@ -167,12 +181,14 @@
    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")                          \
                                                                                         \

@@ -214,17 +230,17 @@
    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);
+   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);
+   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();

@@ -247,10 +263,13 @@
    uint const _worker_id;
  
    double _start_time;
    EventGCPhaseParallel _event;
  public:
-   ShenandoahWorkerTimingsTracker(ShenandoahPhaseTimings::Phase phase, ShenandoahPhaseTimings::ParPhase par_phase, uint worker_id);
+   ShenandoahWorkerTimingsTracker(ShenandoahPhaseTimings::Phase phase,
+                                  ShenandoahPhaseTimings::ParPhase par_phase,
+                                  uint worker_id,
+                                  bool cumulative = false);
    ~ShenandoahWorkerTimingsTracker();
  };
  
  #endif // SHARE_GC_SHENANDOAH_SHENANDOAHPHASETIMINGS_HPP
< prev index next >