scoped_profile.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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)
15    : birth_(ThreadData::TallyABirthIfActive(location)),
16      start_of_run_(ThreadData::NowForStartOfRun(birth_)) {
17}
18
19ScopedProfile::~ScopedProfile() {
20  StopClockAndTally();
21}
22
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