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,Mode mode)14ScopedProfile::ScopedProfile(const Location& location, Mode mode) 15 : birth_(NULL) { 16 if (mode == DISABLED) 17 return; 18 19 birth_ = ThreadData::TallyABirthIfActive(location); 20 if (!birth_) 21 return; 22 23 stopwatch_.Start(); 24 } 25 ~ScopedProfile()26ScopedProfile::~ScopedProfile() { 27 if (!birth_) 28 return; 29 30 stopwatch_.Stop(); 31 ThreadData::TallyRunInAScopedRegionIfTracking(birth_, stopwatch_); 32 } 33 34 } // namespace tracked_objects 35