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) |