Index: base/profiler/scoped_profile.cc |
diff --git a/base/profiler/scoped_profile.cc b/base/profiler/scoped_profile.cc |
index e1edc97357cc2726c074976e4e3467c56552899d..8b0ae59a44aa5ef7ce86e0aa28c6288ef9ca0465 100644 |
--- a/base/profiler/scoped_profile.cc |
+++ b/base/profiler/scoped_profile.cc |
@@ -13,20 +13,32 @@ namespace tracked_objects { |
ScopedProfile::ScopedProfile(const Location& location) |
: birth_(ThreadData::TallyABirthIfActive(location)) { |
+ if (!birth_) |
+ return; |
+ |
ThreadData::PrepareForStartOfRun(birth_); |
+ stopwatch_.Start(); |
} |
-ScopedProfile::~ScopedProfile() { |
- StopClockAndTally(); |
-} |
+ScopedProfile::ScopedProfile(const Location& location, Mode mode) |
+ : birth_(NULL) { |
+ if (mode == DISABLED) |
+ return; |
-void ScopedProfile::StopClockAndTally() { |
- stopwatch_.Stop(); |
+ birth_ = ThreadData::TallyABirthIfActive(location); |
+ if (!birth_) |
+ return; |
+ |
+ ThreadData::PrepareForStartOfRun(birth_); |
+ stopwatch_.Start(); |
+} |
+ScopedProfile::~ScopedProfile() { |
if (!birth_) |
return; |
+ |
+ stopwatch_.Stop(); |
ThreadData::TallyRunInAScopedRegionIfTracking(birth_, stopwatch_); |
- birth_ = NULL; |
} |
} // namespace tracked_objects |