2012-03-21 Cary Coutant <ccoutant@google.com>
[binutils-gdb.git] / gold / timer.cc
index d9b8874a59c3cff4c8538d8fc1449d68512abd62..1423663281a5cc92365aaab5129080ffc44a7ccb 100644 (file)
@@ -49,6 +49,15 @@ Timer::start()
   this->get_time(&this->start_time_);
 }
 
+// Record the time used by pass N (0 <= N <= 2).
+void
+Timer::stamp(int n)
+{
+  gold_assert(n >= 0 && n <= 2);
+  TimeStats& thispass = this->pass_times_[n];
+  this->get_time(&thispass);
+}
+
 #if HAVE_SYSCONF && defined _SC_CLK_TCK
 # define TICKS_PER_SECOND sysconf (_SC_CLK_TCK) /* POSIX 1003.1-1996 */
 #else
@@ -106,4 +115,17 @@ Timer::get_elapsed_time()
   return delta;
 }
 
+// Return the stats for pass N (0 <= N <= 2).
+Timer::TimeStats
+Timer::get_pass_time(int n)
+{
+  gold_assert(n >= 0 && n <= 2);
+  TimeStats thispass = this->pass_times_[n];
+  TimeStats& lastpass = n > 0 ? this->pass_times_[n-1] : this->start_time_;
+  thispass.wall -= lastpass.wall;
+  thispass.user -= lastpass.user;
+  thispass.sys -= lastpass.sys;
+  return thispass;
+}
+
 }