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 start_of_run_(ThreadData::NowForStartOfRun(birth_)) { 17 } 18 ~ScopedProfile()19ScopedProfile::~ScopedProfile() { 20 StopClockAndTally(); 21 } 22 StopClockAndTally()23void ScopedProfile::StopClockAndTally() { 24 if (!birth_) 25 return; 26 ThreadData::TallyRunInAScopedRegionIfTracking(birth_, start_of_run_, 27 ThreadData::NowForEndOfRun()); 28 birth_ = NULL; 29 } 30 31 } // namespace tracked_objects 32