summaryrefslogtreecommitdiffstats
path: root/binutils-2.22/gold/timer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'binutils-2.22/gold/timer.cc')
-rw-r--r--binutils-2.22/gold/timer.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/binutils-2.22/gold/timer.cc b/binutils-2.22/gold/timer.cc
index d9b8874..f3a1c91 100644
--- a/binutils-2.22/gold/timer.cc
+++ b/binutils-2.22/gold/timer.cc
@@ -22,6 +22,8 @@
#include "gold.h"
+#include <unistd.h>
+
#ifdef HAVE_TIMES
#include <sys/times.h>
#endif
@@ -49,6 +51,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 +117,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;
+}
+
}