Home | History | Annotate | Download | only in profiler
      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 
     14 ScopedProfile::ScopedProfile(const Location& location)
     15     : birth_(ThreadData::TallyABirthIfActive(location)),
     16       start_of_run_(ThreadData::NowForStartOfRun(birth_)) {
     17 }
     18 
     19 ScopedProfile::~ScopedProfile() {
     20   StopClockAndTally();
     21 }
     22 
     23 void 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