< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahUtils.hpp
Print this page
rev 59188 : 8244243: Shenandoah: Cleanup Shenandoah phase timing tracking and JFR event supporting
*** 52,106 ****
public:
ShenandoahGCSession(GCCause::Cause cause);
~ShenandoahGCSession();
};
! class ShenandoahPausePhase : public StackObj {
private:
! GCTraceTimeWrapper<LogLevel::Info, LOG_TAGS(gc)> _tracer;
! ConcurrentGCTimer* const _timer;
public:
! ShenandoahPausePhase(const char* title, bool log_heap_usage = false);
! ~ShenandoahPausePhase();
};
! class ShenandoahConcurrentPhase : public StackObj {
private:
GCTraceTimeWrapper<LogLevel::Info, LOG_TAGS(gc)> _tracer;
ConcurrentGCTimer* const _timer;
public:
! ShenandoahConcurrentPhase(const char* title, bool log_heap_usage = false);
! ~ShenandoahConcurrentPhase();
};
! class ShenandoahGCPhase : public StackObj {
private:
! static ShenandoahPhaseTimings::Phase _current_phase;
!
! ShenandoahPhaseTimings* const _timings;
! const ShenandoahPhaseTimings::Phase _phase;
! ShenandoahPhaseTimings::Phase _parent_phase;
! double _start;
public:
! ShenandoahGCPhase(ShenandoahPhaseTimings::Phase phase);
! ~ShenandoahGCPhase();
!
! static ShenandoahPhaseTimings::Phase current_phase() { return _current_phase; }
!
! static bool is_current_phase_valid();
};
! class ShenandoahGCSubPhase: public ShenandoahGCPhase {
private:
ConcurrentGCTimer* const _timer;
public:
! ShenandoahGCSubPhase(ShenandoahPhaseTimings::Phase phase);
! ~ShenandoahGCSubPhase();
};
class ShenandoahGCWorkerPhase : public StackObj {
private:
ShenandoahPhaseTimings* const _timings;
--- 52,122 ----
public:
ShenandoahGCSession(GCCause::Cause cause);
~ShenandoahGCSession();
};
! /*
! * ShenandoahGCPhaseTiming tracks Shenandoah specific timing information
! * of a GC phase
! */
! class ShenandoahTimingsTracker : public StackObj {
private:
! static ShenandoahPhaseTimings::Phase _current_phase;
!
! ShenandoahPhaseTimings* const _timings;
! const ShenandoahPhaseTimings::Phase _phase;
! ShenandoahPhaseTimings::Phase _parent_phase;
! double _start;
public:
! ShenandoahTimingsTracker(ShenandoahPhaseTimings::Phase phase);
! ~ShenandoahTimingsTracker();
!
! static ShenandoahPhaseTimings::Phase current_phase() { return _current_phase; }
!
! static bool is_current_phase_valid();
};
! /*
! * ShenandoahPausePhase tracks a STW pause and emits Shenandoah timing and
! * a corresponding JFR event
! */
! class ShenandoahPausePhase : public ShenandoahTimingsTracker {
private:
GCTraceTimeWrapper<LogLevel::Info, LOG_TAGS(gc)> _tracer;
ConcurrentGCTimer* const _timer;
public:
! ShenandoahPausePhase(const char* title, ShenandoahPhaseTimings::Phase phase, bool log_heap_usage = false);
! ~ShenandoahPausePhase();
};
! /*
! * ShenandoahConcurrentPhase tracks a concurrent GC phase and emits Shenandoah timing and
! * a corresponding JFR event
! */
! class ShenandoahConcurrentPhase : public ShenandoahTimingsTracker {
private:
! GCTraceTimeWrapper<LogLevel::Info, LOG_TAGS(gc)> _tracer;
! ConcurrentGCTimer* const _timer;
public:
! ShenandoahConcurrentPhase(const char* title, ShenandoahPhaseTimings::Phase phase, bool log_heap_usage = false);
! ~ShenandoahConcurrentPhase();
};
! /*
! * ShenandoahGCPhase tracks Shenandoah specific timing information
! * and emits a corresponding JFR event of a GC phase
! */
! class ShenandoahGCPhase : public ShenandoahTimingsTracker {
private:
ConcurrentGCTimer* const _timer;
public:
! ShenandoahGCPhase(ShenandoahPhaseTimings::Phase phase);
! ~ShenandoahGCPhase();
};
class ShenandoahGCWorkerPhase : public StackObj {
private:
ShenandoahPhaseTimings* const _timings;
< prev index next >