1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/profiler/scoped_profile.h" 6 7 #include "base/location.h" 8 #include "base/tracked_objects.h" 9 10 11 namespace tracked_objects { 12 13 ScopedProfile(const Location & location)14ScopedProfile::ScopedProfile(const Location& location) 15 : birth_(ThreadData::TallyABirthIfActive(location)) { 16 ThreadData::PrepareForStartOfRun(birth_); 17 } 18 ~ScopedProfile()19ScopedProfile::~ScopedProfile() { 20 StopClockAndTally(); 21 } 22 StopClockAndTally()23void ScopedProfile::StopClockAndTally() { 24 stopwatch_.Stop(); 25 26 if (!birth_) 27 return; 28 ThreadData::TallyRunInAScopedRegionIfTracking(birth_, stopwatch_); 29 birth_ = NULL; 30 } 31 32 } // namespace tracked_objects 33