1.1 --- a/src/share/vm/gc_implementation/shared/gcTimer.hpp Sat Nov 23 09:56:59 2013 +0100 1.2 +++ b/src/share/vm/gc_implementation/shared/gcTimer.hpp Sat Nov 23 12:25:13 2013 +0100 1.3 @@ -28,6 +28,7 @@ 1.4 #include "memory/allocation.hpp" 1.5 #include "prims/jni_md.h" 1.6 #include "utilities/macros.hpp" 1.7 +#include "utilities/ticks.hpp" 1.8 1.9 class ConcurrentPhase; 1.10 class GCPhase; 1.11 @@ -45,21 +46,21 @@ 1.12 class GCPhase { 1.13 const char* _name; 1.14 int _level; 1.15 - jlong _start; 1.16 - jlong _end; 1.17 + Ticks _start; 1.18 + Ticks _end; 1.19 1.20 public: 1.21 void set_name(const char* name) { _name = name; } 1.22 - const char* name() { return _name; } 1.23 + const char* name() const { return _name; } 1.24 1.25 - int level() { return _level; } 1.26 + int level() const { return _level; } 1.27 void set_level(int level) { _level = level; } 1.28 1.29 - jlong start() { return _start; } 1.30 - void set_start(jlong time) { _start = time; } 1.31 + const Ticks start() const { return _start; } 1.32 + void set_start(const Ticks& time) { _start = time; } 1.33 1.34 - jlong end() { return _end; } 1.35 - void set_end(jlong time) { _end = time; } 1.36 + const Ticks end() const { return _end; } 1.37 + void set_end(const Ticks& time) { _end = time; } 1.38 1.39 virtual void accept(PhaseVisitor* visitor) = 0; 1.40 }; 1.41 @@ -102,22 +103,22 @@ 1.42 GrowableArray<PausePhase>* _phases; 1.43 PhasesStack _active_phases; 1.44 1.45 - jlong _sum_of_pauses; 1.46 - jlong _longest_pause; 1.47 + Tickspan _sum_of_pauses; 1.48 + Tickspan _longest_pause; 1.49 1.50 public: 1.51 TimePartitions(); 1.52 ~TimePartitions(); 1.53 void clear(); 1.54 1.55 - void report_gc_phase_start(const char* name, jlong time); 1.56 - void report_gc_phase_end(jlong time); 1.57 + void report_gc_phase_start(const char* name, const Ticks& time); 1.58 + void report_gc_phase_end(const Ticks& time); 1.59 1.60 int num_phases() const; 1.61 GCPhase* phase_at(int index) const; 1.62 1.63 - jlong sum_of_pauses(); 1.64 - jlong longest_pause(); 1.65 + const Tickspan sum_of_pauses() const { return _sum_of_pauses; } 1.66 + const Tickspan longest_pause() const { return _longest_pause; } 1.67 1.68 bool has_active_phases(); 1.69 private: 1.70 @@ -133,40 +134,37 @@ 1.71 class GCTimer : public ResourceObj { 1.72 NOT_PRODUCT(friend class GCTimerTest;) 1.73 protected: 1.74 - jlong _gc_start; 1.75 - jlong _gc_end; 1.76 + Ticks _gc_start; 1.77 + Ticks _gc_end; 1.78 TimePartitions _time_partitions; 1.79 1.80 public: 1.81 - virtual void register_gc_start(jlong time); 1.82 - virtual void register_gc_end(jlong time); 1.83 + virtual void register_gc_start(const Ticks& time = Ticks::now()); 1.84 + virtual void register_gc_end(const Ticks& time = Ticks::now()); 1.85 1.86 - void register_gc_phase_start(const char* name, jlong time); 1.87 - void register_gc_phase_end(jlong time); 1.88 + void register_gc_phase_start(const char* name, const Ticks& time); 1.89 + void register_gc_phase_end(const Ticks& time); 1.90 1.91 - jlong gc_start() { return _gc_start; } 1.92 - jlong gc_end() { return _gc_end; } 1.93 + const Ticks gc_start() const { return _gc_start; } 1.94 + const Ticks gc_end() const { return _gc_end; } 1.95 1.96 TimePartitions* time_partitions() { return &_time_partitions; } 1.97 1.98 - long longest_pause(); 1.99 - long sum_of_pauses(); 1.100 - 1.101 protected: 1.102 - void register_gc_pause_start(const char* name, jlong time); 1.103 - void register_gc_pause_end(jlong time); 1.104 + void register_gc_pause_start(const char* name, const Ticks& time = Ticks::now()); 1.105 + void register_gc_pause_end(const Ticks& time = Ticks::now()); 1.106 }; 1.107 1.108 class STWGCTimer : public GCTimer { 1.109 public: 1.110 - virtual void register_gc_start(jlong time); 1.111 - virtual void register_gc_end(jlong time); 1.112 + virtual void register_gc_start(const Ticks& time = Ticks::now()); 1.113 + virtual void register_gc_end(const Ticks& time = Ticks::now()); 1.114 }; 1.115 1.116 class ConcurrentGCTimer : public GCTimer { 1.117 public: 1.118 - void register_gc_pause_start(const char* name, jlong time); 1.119 - void register_gc_pause_end(jlong time); 1.120 + void register_gc_pause_start(const char* name); 1.121 + void register_gc_pause_end(); 1.122 }; 1.123 1.124 class TimePartitionPhasesIterator {