Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3380)

Unified Diff: base/time/time_posix.cc

Issue 1122153002: Fixit: Fork base::TimeTicks --> TimeTicks + ThreadTicks + TraceTicks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@FIXIT_timeclasses_1of2
Patch Set: rebase Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/time/time_posix.cc
diff --git a/base/time/time_posix.cc b/base/time/time_posix.cc
index 8b207eb36a9d54ca7f6c3420c42b5755ac100921..c09ad240553c42f91db70e5ddb6559b8e222d731 100644
--- a/base/time/time_posix.cc
+++ b/base/time/time_posix.cc
@@ -87,20 +87,21 @@ void SysTimeToTimeStruct(SysTime t, struct tm* timestruct, bool is_local) {
#if (defined(OS_POSIX) && \
defined(_POSIX_MONOTONIC_CLOCK) && _POSIX_MONOTONIC_CLOCK >= 0) || \
defined(OS_BSD) || defined(OS_ANDROID)
-base::TimeTicks ClockNow(clockid_t clk_id) {
+int64 ClockNow(clockid_t clk_id) {
uint64_t absolute_micro;
Lei Zhang 2015/05/13 23:31:47 Maybe just use CheckedNumeric<int64_t> and forget
miu 2015/05/19 03:14:32 Done.
struct timespec ts;
if (clock_gettime(clk_id, &ts) != 0) {
NOTREACHED() << "clock_gettime(" << clk_id << ") failed.";
- return base::TimeTicks();
+ return 0;
}
absolute_micro =
(static_cast<int64>(ts.tv_sec) * base::Time::kMicrosecondsPerSecond) +
(static_cast<int64>(ts.tv_nsec / base::Time::kNanosecondsPerMicrosecond));
-
- return base::TimeTicks::FromInternalValue(absolute_micro);
+ DCHECK_LE(absolute_micro,
+ static_cast<uint64_t>(std::numeric_limits<int64>::max()));
+ return static_cast<int64>(absolute_micro);
}
#else // _POSIX_MONOTONIC_CLOCK
#error No usable tick clock function on this platform.
@@ -310,7 +311,7 @@ Time Time::FromExploded(bool is_local, const Exploded& exploded) {
// TimeTicks ------------------------------------------------------------------
// static
TimeTicks TimeTicks::Now() {
- return ClockNow(CLOCK_MONOTONIC);
+ return TimeTicks(ClockNow(CLOCK_MONOTONIC));
}
// static
@@ -319,40 +320,41 @@ bool TimeTicks::IsHighResolution() {
}
// static
-TimeTicks TimeTicks::ThreadNow() {
+ThreadTicks ThreadTicks::Now() {
#if (defined(_POSIX_THREAD_CPUTIME) && (_POSIX_THREAD_CPUTIME >= 0)) || \
defined(OS_ANDROID)
- return ClockNow(CLOCK_THREAD_CPUTIME_ID);
+ return ThreadTicks(ClockNow(CLOCK_THREAD_CPUTIME_ID));
#else
NOTREACHED();
- return TimeTicks();
+ return ThreadTicks();
#endif
}
// Use the Chrome OS specific system-wide clock.
#if defined(OS_CHROMEOS)
// static
-TimeTicks TimeTicks::NowFromSystemTraceTime() {
+TraceTicks TraceTicks::Now() {
uint64_t absolute_micro;
Lei Zhang 2015/05/13 23:31:47 Also use CheckedNumeric<int64_t> here?
miu 2015/05/19 03:14:32 Done.
struct timespec ts;
if (clock_gettime(kClockSystemTrace, &ts) != 0) {
// NB: fall-back for a chrome os build running on linux
- return Now();
+ return TraceTicks(ClockNow(CLOCK_MONOTONIC));
}
absolute_micro =
(static_cast<int64>(ts.tv_sec) * Time::kMicrosecondsPerSecond) +
Lei Zhang 2015/05/13 23:31:47 This is a repeat of line 100-101...
miu 2015/05/19 03:14:32 Done. Factored repeated code into a new ConvertTi
(static_cast<int64>(ts.tv_nsec) / Time::kNanosecondsPerMicrosecond);
-
- return TimeTicks(absolute_micro);
+ DCHECK_LE(absolute_micro,
+ static_cast<uint64_t>(std::numeric_limits<int64>::max()));
+ return TraceTicks(static_cast<int64>(absolute_micro));
}
#else // !defined(OS_CHROMEOS)
// static
-TimeTicks TimeTicks::NowFromSystemTraceTime() {
- return Now();
+TraceTicks TraceTicks::Now() {
+ return TraceTicks(ClockNow(CLOCK_MONOTONIC));
}
#endif // defined(OS_CHROMEOS)
« base/time/time_mac.cc ('K') | « base/time/time_mac.cc ('k') | base/time/time_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698