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