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 11namespace tracked_objects { 12 13 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 26ScopedProfile::~ScopedProfile() { 27 if (!birth_) 28 return; 29 30 stopwatch_.Stop(); 31 ThreadData::TallyRunInAScopedRegionIfTracking(birth_, stopwatch_); 32} 33 34} // namespace tracked_objects 35