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