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