< prev index next >

src/share/vm/gc/shared/gcTraceTime.hpp

Print this page

        

*** 23,55 **** */ #ifndef SHARE_VM_GC_SHARED_GCTRACETIME_HPP #define SHARE_VM_GC_SHARED_GCTRACETIME_HPP ! #include "gc/shared/gcTrace.hpp" #include "memory/allocation.hpp" - #include "prims/jni_md.h" #include "utilities/ticks.hpp" class GCTimer; ! class GCTraceTimeImpl VALUE_OBJ_CLASS_SPEC { const char* _title; ! bool _doit; ! bool _print_cr; GCTimer* _timer; ! Ticks _start_counter; public: ! GCTraceTimeImpl(const char* title, bool doit, bool print_cr, GCTimer* timer); ~GCTraceTimeImpl(); }; ! class GCTraceTime : public StackObj { ! GCTraceTimeImpl _gc_trace_time_impl; ! public: ! GCTraceTime(const char* title, bool doit, bool print_cr, GCTimer* timer) : ! _gc_trace_time_impl(title, doit, print_cr, timer) {}; }; #endif // SHARE_VM_GC_SHARED_GCTRACETIME_HPP --- 23,79 ---- */ #ifndef SHARE_VM_GC_SHARED_GCTRACETIME_HPP #define SHARE_VM_GC_SHARED_GCTRACETIME_HPP ! #include "logging/log.hpp" #include "memory/allocation.hpp" #include "utilities/ticks.hpp" + class GCTraceCPUTime : public StackObj { + bool _active; // true if times will be measured and printed + double _starting_user_time; // user time at start of measurement + double _starting_system_time; // system time at start of measurement + double _starting_real_time; // real time at start of measurement + public: + GCTraceCPUTime(); + ~GCTraceCPUTime(); + }; + class GCTimer; ! template <LogLevelType Level, LogTagType T0, LogTagType T1 = LogTag::__NO_TAG, LogTagType T2 = LogTag::__NO_TAG, LogTagType T3 = LogTag::__NO_TAG, ! LogTagType T4 = LogTag::__NO_TAG, LogTagType GuardTag = LogTag::__NO_TAG> ! class GCTraceTimeImpl : public StackObj { ! private: ! bool _enabled; ! Ticks _start_ticks; const char* _title; ! GCCause::Cause _gc_cause; GCTimer* _timer; ! size_t _heap_usage_before; ! ! void log_start(jlong start_counter); ! void log_stop(jlong start_counter, jlong stop_counter); ! void time_stamp(Ticks& ticks); public: ! GCTraceTimeImpl(const char* title, GCTimer* timer = NULL, GCCause::Cause gc_cause = GCCause::_no_gc, bool log_heap_usage = false); ~GCTraceTimeImpl(); }; ! // Similar to GCTraceTimeImpl but is intended for concurrent phase logging, ! // which is a bit simpler and should always print the start line, i.e. not add the "start" tag. ! template <LogLevelType Level, LogTagType T0, LogTagType T1 = LogTag::__NO_TAG, LogTagType T2 = LogTag::__NO_TAG, LogTagType T3 = LogTag::__NO_TAG, ! LogTagType T4 = LogTag::__NO_TAG, LogTagType GuardTag = LogTag::__NO_TAG> ! class GCTraceConcTimeImpl : public StackObj { ! private: ! bool _enabled; ! jlong _start_time; ! const char* _title; public: ! GCTraceConcTimeImpl(const char* title); ! ~GCTraceConcTimeImpl(); ! jlong start_time() { return _start_time; } }; #endif // SHARE_VM_GC_SHARED_GCTRACETIME_HPP
< prev index next >