Index: base/tracked_objects.cc |
diff --git a/base/tracked_objects.cc b/base/tracked_objects.cc |
index 659d421017e7c7ce9e071b8554c927f2a35ec323..4fe8851297254fd18228282d7ae8c4ff08592a87 100644 |
--- a/base/tracked_objects.cc |
+++ b/base/tracked_objects.cc |
@@ -854,16 +854,32 @@ void ThreadData::ShutdownSingleThreadedCleanup(bool leak) { |
//------------------------------------------------------------------------------ |
TaskStopwatch::TaskStopwatch() |
- : start_time_(ThreadData::Now()), |
- current_thread_data_(ThreadData::Get()), |
+ : wallclock_duration_ms_(0), |
+ current_thread_data_(NULL), |
excluded_duration_ms_(0), |
parent_(NULL) { |
#if DCHECK_IS_ON |
- state_ = RUNNING; |
+ state_ = CREATED; |
child_ = NULL; |
#endif |
+} |
+ |
+TaskStopwatch::~TaskStopwatch() { |
+#if DCHECK_IS_ON |
+ DCHECK(state_ != RUNNING); |
+ DCHECK(child_ == NULL); |
+#endif |
+} |
+ |
+void TaskStopwatch::Start() { |
+#if DCHECK_IS_ON |
+ DCHECK(state_ == CREATED); |
+ state_ = RUNNING; |
+#endif |
+ |
+ start_time_ = ThreadData::Now(); |
- wallclock_duration_ms_ = 0; |
+ current_thread_data_ = ThreadData::Get(); |
if (!current_thread_data_) |
return; |
@@ -878,13 +894,6 @@ TaskStopwatch::TaskStopwatch() |
current_thread_data_->current_stopwatch_ = this; |
} |
-TaskStopwatch::~TaskStopwatch() { |
-#if DCHECK_IS_ON |
- DCHECK(state_ != RUNNING); |
- DCHECK(child_ == NULL); |
-#endif |
-} |
- |
void TaskStopwatch::Stop() { |
const TrackedTime end_time = ThreadData::Now(); |
#if DCHECK_IS_ON |
@@ -910,12 +919,15 @@ void TaskStopwatch::Stop() { |
DCHECK(parent_->child_ == this); |
parent_->child_ = NULL; |
#endif |
- parent_->excluded_duration_ms_ += |
- wallclock_duration_ms_; |
+ parent_->excluded_duration_ms_ += wallclock_duration_ms_; |
parent_ = NULL; |
} |
TrackedTime TaskStopwatch::StartTime() const { |
+#if DCHECK_IS_ON |
+ DCHECK(state_ != CREATED); |
+#endif |
+ |
return start_time_; |
} |
@@ -928,6 +940,10 @@ int32 TaskStopwatch::RunDurationMs() const { |
} |
ThreadData* TaskStopwatch::GetThreadData() const { |
+#if DCHECK_IS_ON |
+ DCHECK(state_ != CREATED); |
+#endif |
+ |
return current_thread_data_; |
} |