Chromium Code Reviews| Index: base/profiler/scoped_tracker.cc |
| diff --git a/base/profiler/scoped_tracker.cc b/base/profiler/scoped_tracker.cc |
| index 5cd0bcae34984d1d99017ccb699d7dbe48409439..7f378185f74ce68b45f4918368314030ee4735c3 100644 |
| --- a/base/profiler/scoped_tracker.cc |
| +++ b/base/profiler/scoped_tracker.cc |
| @@ -4,12 +4,21 @@ |
| #include "base/profiler/scoped_tracker.h" |
| +#include "base/bind.h" |
| + |
| namespace tracked_objects { |
| namespace { |
| ScopedProfile::Mode g_scoped_profile_mode = ScopedProfile::DISABLED; |
| +// Executes |callback|, augmenting it with provided |location|. |
| +void ExecuteAndAugmentCallback(const Location& location, |
|
Ilya Sherman
2014/10/29 00:23:00
nit: I find the "augment" part of this name confus
vadimt
2014/10/29 00:52:21
Done.
|
| + const base::Closure& callback) { |
| + ScopedProfile tracking_profile(location); |
|
Ilya Sherman
2014/10/29 00:23:00
Hmm, why not use a ScopedTracker here instead?
vadimt
2014/10/29 00:52:21
ScopedTracker checks if tracking is enabled and ca
Ilya Sherman
2014/10/29 00:57:12
My point is: Why does TrackCallback check g_scoped
vadimt
2014/10/29 17:47:29
This allows me to totally skip creating/destroying
Ilya Sherman
2014/10/30 00:51:35
I think this is unnecessary optimization that redu
|
| + callback.Run(); |
| +} |
| + |
| } // namespace |
| // static |
| @@ -17,6 +26,15 @@ void ScopedTracker::Enable() { |
| g_scoped_profile_mode = ScopedProfile::ENABLED; |
| } |
| +// static |
| +base::Closure ScopedTracker::TrackCallback(const Location& location, |
| + const base::Closure& callback) { |
| + if (g_scoped_profile_mode != ScopedProfile::ENABLED) |
| + return callback; |
| + |
| + return base::Bind(ExecuteAndAugmentCallback, location, callback); |
| +} |
| + |
| ScopedTracker::ScopedTracker(const Location& location) |
| : scoped_profile_(location, g_scoped_profile_mode) { |
| } |