< prev index next >
src/share/vm/gc/shared/gcTraceSend.cpp
Print this page
*** 418,450 ****
}
class PhaseSender : public PhaseVisitor {
public:
template<typename T>
! void send_phase(PausePhase* pause) {
T event(UNTIMED);
if (event.should_commit()) {
event.set_gcId(GCId::current());
! event.set_name(pause->name());
! event.set_starttime(pause->start());
! event.set_endtime(pause->end());
event.commit();
}
}
! void visit(GCPhase* pause) { ShouldNotReachHere(); }
! void visit(ConcurrentPhase* pause) { Unimplemented(); }
! void visit(PausePhase* pause) {
! assert(PhasesStack::PHASE_LEVELS == 5, "Need more event types");
!
! switch (pause->level()) {
! case 0: send_phase<EventGCPhasePause>(pause); break;
! case 1: send_phase<EventGCPhasePauseLevel1>(pause); break;
! case 2: send_phase<EventGCPhasePauseLevel2>(pause); break;
! case 3: send_phase<EventGCPhasePauseLevel3>(pause); break;
default: /* Ignore sending this phase */ break;
}
}
};
void GCTracer::send_phase_events(TimePartitions* time_partitions) const {
PhaseSender phase_reporter;
--- 418,461 ----
}
class PhaseSender : public PhaseVisitor {
public:
template<typename T>
! void send_phase(GCPhase* phase) {
T event(UNTIMED);
if (event.should_commit()) {
event.set_gcId(GCId::current());
! event.set_name(phase->name());
! event.set_starttime(phase->start());
! event.set_endtime(phase->end());
event.commit();
}
}
! void visit(GCPhase* phase) {
! switch (phase->type()) {
! case GCPhase::PausePhaseType:
! assert(phase->level() < PhasesStack::PHASE_LEVELS, "Need more event types for PausePhase");
!
! switch (phase->level()) {
! case 0: send_phase<EventGCPhasePause>(phase); break;
! case 1: send_phase<EventGCPhasePauseLevel1>(phase); break;
! case 2: send_phase<EventGCPhasePauseLevel2>(phase); break;
! case 3: send_phase<EventGCPhasePauseLevel3>(phase); break;
! default: /* Ignore sending this phase */ break;
! }
! break;
!
! case GCPhase::ConcurrentPhaseType:
! assert(phase->level() < 1, "There's only one level for ConcurrentPhase");
!
! switch (phase->level()) {
! case 0: send_phase<EventGCPhaseConcurrent>(phase); break;
default: /* Ignore sending this phase */ break;
}
+ break;
+ }
}
};
void GCTracer::send_phase_events(TimePartitions* time_partitions) const {
PhaseSender phase_reporter;
< prev index next >