< prev index next >

src/hotspot/share/runtime/timer.hpp

Print this page

 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  *
 23  */
 24 
 25 #ifndef SHARE_RUNTIME_TIMER_HPP
 26 #define SHARE_RUNTIME_TIMER_HPP
 27 
 28 #include "utilities/globalDefinitions.hpp"
 29 
 30 // Timers for simple measurement.
 31 
 32 class elapsedTimer {
 33   friend class VMStructs;
 34  private:
 35   jlong _counter;
 36   jlong _start_counter;
 37   bool  _active;



 38  public:
 39   elapsedTimer()             { _active = false; reset(); }
 40   void add(elapsedTimer t);



 41   void add_nanoseconds(jlong ns);
 42   void start();
 43   void stop();
 44   void reset()               { _counter = 0; }
 45   double seconds() const;
 46   jlong milliseconds() const;
 47   jlong ticks() const        { return _counter; }
 48   jlong active_ticks() const;
 49   bool  is_active() const { return _active; }
 50 };
 51 

















 52 // TimeStamp is used for recording when an event took place.
 53 class TimeStamp {
 54  private:
 55   jlong _counter;
 56  public:
 57   TimeStamp()  { _counter = 0; }
 58   // has the timestamp been updated since being created or cleared?
 59   bool is_updated() const { return _counter != 0; }
 60   // update to current elapsed time
 61   void update();
 62   // update to given elapsed time
 63   void update_to(jlong ticks);
 64   // returns seconds since updated
 65   // (must not be in a cleared state:  must have been previously updated)
 66   double seconds() const;
 67   jlong milliseconds() const;
 68   // ticks elapsed between VM start and last update
 69   jlong ticks() const { return _counter; }
 70   // ticks elapsed since last update
 71   jlong ticks_since_update() const;

 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  *
 23  */
 24 
 25 #ifndef SHARE_RUNTIME_TIMER_HPP
 26 #define SHARE_RUNTIME_TIMER_HPP
 27 
 28 #include "utilities/globalDefinitions.hpp"
 29 
 30 // Timers for simple measurement.
 31 
 32 class BaseTimer {
 33   friend class VMStructs;
 34  protected:
 35   jlong _counter;
 36   jlong _start_counter;
 37   bool  _active;
 38 
 39   virtual jlong read_counter() const = 0;
 40 
 41  public:
 42   BaseTimer() {
 43     _active = false;
 44     reset();
 45   }
 46   void add(BaseTimer* t);
 47   void add_nanoseconds(jlong ns);
 48   virtual void start();
 49   virtual void stop();
 50   void reset()               { _counter = 0; }
 51   double seconds() const;
 52   jlong milliseconds() const;
 53   jlong ticks() const        { return _counter; }
 54   jlong active_ticks() const;
 55   bool  is_active() const { return _active; }
 56 };
 57 
 58 class elapsedTimer: public BaseTimer {
 59   friend class VMStructs;
 60  public:
 61   jlong read_counter() const override;
 62 };
 63 
 64 class ThreadTimer: public BaseTimer {
 65  private:
 66   Thread* _owner;
 67  public:
 68   ThreadTimer();
 69   ThreadTimer(Thread* thread) : _owner(thread) {}
 70   void start() override;
 71   void stop() override;
 72   jlong read_counter() const override;
 73 };
 74 
 75 // TimeStamp is used for recording when an event took place.
 76 class TimeStamp {
 77  private:
 78   jlong _counter;
 79  public:
 80   TimeStamp()  { _counter = 0; }
 81   // has the timestamp been updated since being created or cleared?
 82   bool is_updated() const { return _counter != 0; }
 83   // update to current elapsed time
 84   void update();
 85   // update to given elapsed time
 86   void update_to(jlong ticks);
 87   // returns seconds since updated
 88   // (must not be in a cleared state:  must have been previously updated)
 89   double seconds() const;
 90   jlong milliseconds() const;
 91   // ticks elapsed between VM start and last update
 92   jlong ticks() const { return _counter; }
 93   // ticks elapsed since last update
 94   jlong ticks_since_update() const;
< prev index next >