| Index: base/tracked_objects.cc
|
| diff --git a/base/tracked_objects.cc b/base/tracked_objects.cc
|
| index f8dbdbce9a8838e07bccf06e8c030f34a2f5a26c..ad93225fa9c39402e555ce08373952fe17c86fc2 100644
|
| --- a/base/tracked_objects.cc
|
| +++ b/base/tracked_objects.cc
|
| @@ -168,8 +168,8 @@ DeathData::~DeathData() {
|
| #define CONDITIONAL_ASSIGN(assign_it, target, source) \
|
| ((target) ^= ((target) ^ (source)) & -static_cast<int32_t>(assign_it))
|
|
|
| -void DeathData::RecordDurations(const int32_t queue_duration,
|
| - const int32_t run_duration,
|
| +void DeathData::RecordDurations(const base::TimeDelta queue_duration,
|
| + const base::TimeDelta run_duration,
|
| const uint32_t random_number) {
|
| // We'll just clamp at INT_MAX, but we should note this in the UI as such.
|
| if (count_ < INT_MAX)
|
| @@ -182,15 +182,18 @@ void DeathData::RecordDurations(const int32_t queue_duration,
|
| base::subtle::NoBarrier_Store(&sample_probability_count_,
|
| sample_probability_count);
|
|
|
| - base::subtle::NoBarrier_Store(&queue_duration_sum_,
|
| - queue_duration_sum_ + queue_duration);
|
| - base::subtle::NoBarrier_Store(&run_duration_sum_,
|
| - run_duration_sum_ + run_duration);
|
| + base::subtle::NoBarrier_Store(
|
| + &queue_duration_sum_,
|
| + queue_duration_sum_ + queue_duration.InMilliseconds());
|
| + base::subtle::NoBarrier_Store(
|
| + &run_duration_sum_, run_duration_sum_ + run_duration.InMilliseconds());
|
|
|
| - if (queue_duration_max() < queue_duration)
|
| - base::subtle::NoBarrier_Store(&queue_duration_max_, queue_duration);
|
| - if (run_duration_max() < run_duration)
|
| - base::subtle::NoBarrier_Store(&run_duration_max_, run_duration);
|
| + if (queue_duration_max() < queue_duration.InMilliseconds())
|
| + base::subtle::NoBarrier_Store(&queue_duration_max_,
|
| + queue_duration.InMilliseconds());
|
| + if (run_duration_max() < run_duration.InMilliseconds())
|
| + base::subtle::NoBarrier_Store(&run_duration_max_,
|
| + run_duration.InMilliseconds());
|
|
|
| // Take a uniformly distributed sample over all durations ever supplied during
|
| // the current profiling phase.
|
| @@ -202,8 +205,10 @@ void DeathData::RecordDurations(const int32_t queue_duration,
|
| // used them to generate random_number).
|
| CHECK_GT(sample_probability_count, 0);
|
| if (0 == (random_number % sample_probability_count)) {
|
| - base::subtle::NoBarrier_Store(&queue_duration_sample_, queue_duration);
|
| - base::subtle::NoBarrier_Store(&run_duration_sample_, run_duration);
|
| + base::subtle::NoBarrier_Store(&queue_duration_sample_,
|
| + queue_duration.InMilliseconds());
|
| + base::subtle::NoBarrier_Store(&run_duration_sample_,
|
| + run_duration.InMilliseconds());
|
| }
|
| }
|
|
|
| @@ -533,7 +538,8 @@ void ThreadData::PushToHeadOfList() {
|
| sizeof(random_number_));
|
| MSAN_UNPOISON(&random_number_, sizeof(random_number_));
|
| random_number_ += static_cast<uint32_t>(this - static_cast<ThreadData*>(0));
|
| - random_number_ ^= (Now() - TrackedTime()).InMilliseconds();
|
| + random_number_ ^=
|
| + static_cast<uint32_t>((Now() - base::TimeTicks()).InMilliseconds());
|
|
|
| DCHECK(!next_);
|
| base::AutoLock lock(*list_lock_.Pointer());
|
| @@ -678,13 +684,14 @@ Births* ThreadData::TallyABirth(const Location& location) {
|
| }
|
|
|
| void ThreadData::TallyADeath(const Births& births,
|
| - int32_t queue_duration,
|
| + const base::TimeDelta queue_duration,
|
| const TaskStopwatch& stopwatch) {
|
| - int32_t run_duration = stopwatch.RunDurationMs();
|
| + base::TimeDelta run_duration = stopwatch.RunDuration();
|
|
|
| // Stir in some randomness, plus add constant in case durations are zero.
|
| const uint32_t kSomePrimeNumber = 2147483647;
|
| - random_number_ += queue_duration + run_duration + kSomePrimeNumber;
|
| + random_number_ += queue_duration.InMilliseconds() +
|
| + run_duration.InMilliseconds() + kSomePrimeNumber;
|
| // An address is going to have some randomness to it as well ;-).
|
| random_number_ ^=
|
| static_cast<uint32_t>(&births - reinterpret_cast<Births*>(0));
|
| @@ -743,11 +750,10 @@ void ThreadData::TallyRunOnNamedThreadIfTracking(
|
| // get a time value since we "weren't tracking" and we were trying to be
|
| // efficient by not calling for a genuine time value. For simplicity, we'll
|
| // use a default zero duration when we can't calculate a true value.
|
| - TrackedTime start_of_run = stopwatch.StartTime();
|
| - int32_t queue_duration = 0;
|
| + base::TimeTicks start_of_run = stopwatch.StartTime();
|
| + base::TimeDelta queue_duration;
|
| if (!start_of_run.is_null()) {
|
| - queue_duration = (start_of_run - completed_task.EffectiveTimePosted())
|
| - .InMilliseconds();
|
| + queue_duration = start_of_run - completed_task.EffectiveTimePosted();
|
| }
|
| current_thread_data->TallyADeath(*births, queue_duration, stopwatch);
|
| }
|
| @@ -755,7 +761,7 @@ void ThreadData::TallyRunOnNamedThreadIfTracking(
|
| // static
|
| void ThreadData::TallyRunOnWorkerThreadIfTracking(
|
| const Births* births,
|
| - const TrackedTime& time_posted,
|
| + const base::TimeTicks& time_posted,
|
| const TaskStopwatch& stopwatch) {
|
| // Even if we have been DEACTIVATED, we will process any pending births so
|
| // that our data structures (which counted the outstanding births) remain
|
| @@ -776,10 +782,10 @@ void ThreadData::TallyRunOnWorkerThreadIfTracking(
|
| if (!current_thread_data)
|
| return;
|
|
|
| - TrackedTime start_of_run = stopwatch.StartTime();
|
| - int32_t queue_duration = 0;
|
| + base::TimeTicks start_of_run = stopwatch.StartTime();
|
| + base::TimeDelta queue_duration;
|
| if (!start_of_run.is_null()) {
|
| - queue_duration = (start_of_run - time_posted).InMilliseconds();
|
| + queue_duration = start_of_run - time_posted;
|
| }
|
| current_thread_data->TallyADeath(*births, queue_duration, stopwatch);
|
| }
|
| @@ -798,7 +804,7 @@ void ThreadData::TallyRunInAScopedRegionIfTracking(
|
| if (!current_thread_data)
|
| return;
|
|
|
| - int32_t queue_duration = 0;
|
| + base::TimeDelta queue_duration;
|
| current_thread_data->TallyADeath(*births, queue_duration, stopwatch);
|
| }
|
|
|
| @@ -927,12 +933,13 @@ void ThreadData::EnableProfilerTiming() {
|
| }
|
|
|
| // static
|
| -TrackedTime ThreadData::Now() {
|
| +base::TimeTicks ThreadData::Now() {
|
| if (now_function_for_testing_)
|
| - return TrackedTime::FromMilliseconds((*now_function_for_testing_)());
|
| + return base::TimeTicks() +
|
| + base::TimeDelta::FromMilliseconds((*now_function_for_testing_)());
|
| if (IsProfilerTimingEnabled() && TrackingStatus())
|
| - return TrackedTime::Now();
|
| - return TrackedTime(); // Super fast when disabled, or not compiled.
|
| + return base::TimeTicks::Now();
|
| + return base::TimeTicks(); // Super fast when disabled, or not compiled.
|
| }
|
|
|
| // static
|
| @@ -1036,9 +1043,9 @@ ThreadData* ThreadData::GetRetiredOrCreateThreadData(
|
|
|
| //------------------------------------------------------------------------------
|
| TaskStopwatch::TaskStopwatch()
|
| - : wallclock_duration_ms_(0),
|
| + : wallclock_duration_(),
|
| current_thread_data_(NULL),
|
| - excluded_duration_ms_(0),
|
| + excluded_duration_(),
|
| parent_(NULL) {
|
| #if DCHECK_IS_ON()
|
| state_ = CREATED;
|
| @@ -1085,7 +1092,7 @@ void TaskStopwatch::Start() {
|
| }
|
|
|
| void TaskStopwatch::Stop() {
|
| - const TrackedTime end_time = ThreadData::Now();
|
| + const base::TimeTicks end_time = ThreadData::Now();
|
| #if DCHECK_IS_ON()
|
| DCHECK(state_ == RUNNING);
|
| state_ = STOPPED;
|
| @@ -1097,7 +1104,7 @@ void TaskStopwatch::Stop() {
|
| #endif
|
|
|
| if (!start_time_.is_null() && !end_time.is_null()) {
|
| - wallclock_duration_ms_ = (end_time - start_time_).InMilliseconds();
|
| + wallclock_duration_ = end_time - start_time_;
|
| }
|
|
|
| if (!current_thread_data_)
|
| @@ -1113,11 +1120,11 @@ void TaskStopwatch::Stop() {
|
| DCHECK(parent_->child_ == this);
|
| parent_->child_ = NULL;
|
| #endif
|
| - parent_->excluded_duration_ms_ += wallclock_duration_ms_;
|
| + parent_->excluded_duration_ += wallclock_duration_;
|
| parent_ = NULL;
|
| }
|
|
|
| -TrackedTime TaskStopwatch::StartTime() const {
|
| +base::TimeTicks TaskStopwatch::StartTime() const {
|
| #if DCHECK_IS_ON()
|
| DCHECK(state_ != CREATED);
|
| #endif
|
| @@ -1125,12 +1132,12 @@ TrackedTime TaskStopwatch::StartTime() const {
|
| return start_time_;
|
| }
|
|
|
| -int32_t TaskStopwatch::RunDurationMs() const {
|
| +base::TimeDelta TaskStopwatch::RunDuration() const {
|
| #if DCHECK_IS_ON()
|
| DCHECK(state_ == STOPPED);
|
| #endif
|
|
|
| - return wallclock_duration_ms_ - excluded_duration_ms_;
|
| + return wallclock_duration_ - excluded_duration_;
|
| }
|
|
|
| ThreadData* TaskStopwatch::GetThreadData() const {
|
|
|