| Index: base/tracked_objects.h
|
| diff --git a/base/tracked_objects.h b/base/tracked_objects.h
|
| index 0f55a079921768b23f10e5de8c032f31d95f7740..cd69fb7e008115028e4ae9583e828bf9524557ff 100644
|
| --- a/base/tracked_objects.h
|
| +++ b/base/tracked_objects.h
|
| @@ -154,9 +154,8 @@ struct TrackingInfo;
|
| //
|
| // The ProcessDataPhaseSnapshot struct is a serialized representation of the
|
| // list of ThreadData objects for a process for a concrete profiling phase. It
|
| -// holds a set of TaskSnapshots and tracks parent/child relationships for the
|
| -// executed tasks. The statistics in a snapshot are gathered asynhcronously
|
| -// relative to their ongoing updates.
|
| +// holds a set of TaskSnapshots. The statistics in a snapshot are gathered
|
| +// asynhcronously relative to their ongoing updates.
|
| // It is possible, though highly unlikely, that stats could be incorrectly
|
| // recorded by this process (all data is held in 32 bit ints, but we are not
|
| // atomically collecting all data, so we could have count that does not, for
|
| @@ -178,13 +177,6 @@ struct TrackingInfo;
|
| // for upload via UMA (where correctness of data may be more significant than
|
| // for a single screen of about:profiler).
|
| //
|
| -// TODO(jar): We should support (optionally) the recording of parent-child
|
| -// relationships for tasks. This should be done by detecting what tasks are
|
| -// Born during the running of a parent task. The resulting data can be used by
|
| -// a smarter profiler to aggregate the cost of a series of child tasks into
|
| -// the ancestor task. It can also be used to illuminate what child or parent is
|
| -// related to each task.
|
| -//
|
| // TODO(jar): We need to store DataCollections, and provide facilities for
|
| // taking the difference between two gathered DataCollections. For now, we're
|
| // just adding a hack that Reset()s to zero all counts and stats. This is also
|
| @@ -430,19 +422,15 @@ class BASE_EXPORT ThreadData {
|
| // Current allowable states of the tracking system. The states can vary
|
| // between ACTIVE and DEACTIVATED, but can never go back to UNINITIALIZED.
|
| enum Status {
|
| - UNINITIALIZED, // PRistine, link-time state before running.
|
| - DORMANT_DURING_TESTS, // Only used during testing.
|
| - DEACTIVATED, // No longer recording profiling.
|
| - PROFILING_ACTIVE, // Recording profiles (no parent-child links).
|
| - PROFILING_CHILDREN_ACTIVE, // Fully active, recording parent-child links.
|
| - STATUS_LAST = PROFILING_CHILDREN_ACTIVE
|
| + UNINITIALIZED, // Pristine, link-time state before running.
|
| + DORMANT_DURING_TESTS, // Only used during testing.
|
| + DEACTIVATED, // No longer recording profiling.
|
| + PROFILING_ACTIVE, // Recording profiles.
|
| + STATUS_LAST = PROFILING_ACTIVE
|
| };
|
|
|
| typedef base::hash_map<Location, Births*, Location::Hash> BirthMap;
|
| typedef std::map<const Births*, DeathData> DeathMap;
|
| - typedef std::pair<const Births*, const Births*> ParentChildPair;
|
| - typedef std::set<ParentChildPair> ParentChildSet;
|
| - typedef std::stack<const Births*> ParentStack;
|
|
|
| // Initialize the current thread context with a new instance of ThreadData.
|
| // This is used by all threads that have names, and should be explicitly
|
| @@ -514,14 +502,8 @@ class BASE_EXPORT ThreadData {
|
|
|
| // Sets internal status_.
|
| // If |status| is false, then status_ is set to DEACTIVATED.
|
| - // If |status| is true, then status_ is set to, PROFILING_ACTIVE, or
|
| - // PROFILING_CHILDREN_ACTIVE.
|
| - // If tracking is not compiled in, this function will return false.
|
| - // If parent-child tracking is not compiled in, then an attempt to set the
|
| - // status to PROFILING_CHILDREN_ACTIVE will only result in a status of
|
| - // PROFILING_ACTIVE (i.e., it can't be set to a higher level than what is
|
| - // compiled into the binary, and parent-child tracking at the
|
| - // PROFILING_CHILDREN_ACTIVE level might not be compiled in).
|
| + // If |status| is true, then status_ is set to PROFILING_ACTIVE.
|
| + // If it fails to initialize the TLS slot, this function will return false.
|
| static bool InitializeAndSetTrackingStatus(Status status);
|
|
|
| static Status status();
|
| @@ -530,17 +512,6 @@ class BASE_EXPORT ThreadData {
|
| // DEACTIVATED).
|
| static bool TrackingStatus();
|
|
|
| - // For testing only, indicate if the status of parent-child tracking is turned
|
| - // on. This is currently a compiled option, atop TrackingStatus().
|
| - static bool TrackingParentChildStatus();
|
| -
|
| - // Marks a start of a tracked run. It's super fast when tracking is disabled,
|
| - // and has some internal side effects when we are tracking, so that we can
|
| - // deduce the amount of time accumulated outside of execution of tracked runs.
|
| - // The task that will be tracked is passed in as |parent| so that parent-child
|
| - // relationships can be (optionally) calculated.
|
| - static void PrepareForStartOfRun(const Births* parent);
|
| -
|
| // Enables profiler timing.
|
| static void EnableProfilerTiming();
|
|
|
| @@ -571,7 +542,6 @@ class BASE_EXPORT ThreadData {
|
| friend class TrackedObjectsTest;
|
| FRIEND_TEST_ALL_PREFIXES(TrackedObjectsTest, MinimalStartupShutdown);
|
| FRIEND_TEST_ALL_PREFIXES(TrackedObjectsTest, TinyStartupShutdown);
|
| - FRIEND_TEST_ALL_PREFIXES(TrackedObjectsTest, ParentChildTest);
|
|
|
| typedef std::map<const BirthOnThread*, int> BirthCountMap;
|
|
|
| @@ -622,8 +592,7 @@ class BASE_EXPORT ThreadData {
|
| // the map(s) from being reallocated while they are copied.
|
| void SnapshotMaps(int profiling_phase,
|
| BirthMap* birth_map,
|
| - DeathsSnapshot* deaths,
|
| - ParentChildSet* parent_child_set);
|
| + DeathsSnapshot* deaths);
|
|
|
| // Called for this thread when the current profiling phase, identified by
|
| // |profiling_phase|, ends.
|
| @@ -725,11 +694,6 @@ class BASE_EXPORT ThreadData {
|
| // locking before reading it.
|
| DeathMap death_map_;
|
|
|
| - // A set of parents that created children tasks on this thread. Each pair
|
| - // corresponds to potentially non-local Births (location and thread), and a
|
| - // local Births (that took place on this thread).
|
| - ParentChildSet parent_child_set_;
|
| -
|
| // Lock to protect *some* access to BirthMap and DeathMap. The maps are
|
| // regularly read and written on this thread, but may only be read from other
|
| // threads. To support this, we acquire this lock if we are writing from this
|
| @@ -738,16 +702,6 @@ class BASE_EXPORT ThreadData {
|
| // writing is only done from this thread.
|
| mutable base::Lock map_lock_;
|
|
|
| - // The stack of parents that are currently being profiled. This includes only
|
| - // tasks that have started a timer recently via PrepareForStartOfRun(), but
|
| - // not yet concluded with a NowForEndOfRun(). Usually this stack is one deep,
|
| - // but if a scoped region is profiled, or <sigh> a task runs a nested-message
|
| - // loop, then the stack can grow larger. Note that we don't try to deduct
|
| - // time in nested profiles, as our current timer is based on wall-clock time,
|
| - // and not CPU time (and we're hopeful that nested timing won't be a
|
| - // significant additional cost).
|
| - ParentStack parent_stack_;
|
| -
|
| // A random number that we used to select decide which sample to keep as a
|
| // representative sample in each DeathData instance. We can't start off with
|
| // much randomness (because we can't call RandInt() on all our threads), so
|
| @@ -828,21 +782,6 @@ class BASE_EXPORT TaskStopwatch {
|
| };
|
|
|
| //------------------------------------------------------------------------------
|
| -// A snapshotted representation of a (parent, child) task pair, for tracking
|
| -// hierarchical profiles.
|
| -
|
| -struct BASE_EXPORT ParentChildPairSnapshot {
|
| - public:
|
| - ParentChildPairSnapshot();
|
| - explicit ParentChildPairSnapshot(
|
| - const ThreadData::ParentChildPair& parent_child);
|
| - ~ParentChildPairSnapshot();
|
| -
|
| - BirthOnThreadSnapshot parent;
|
| - BirthOnThreadSnapshot child;
|
| -};
|
| -
|
| -//------------------------------------------------------------------------------
|
| // A snapshotted representation of the list of ThreadData objects for a process,
|
| // for a single profiling phase.
|
|
|
| @@ -852,7 +791,6 @@ struct BASE_EXPORT ProcessDataPhaseSnapshot {
|
| ~ProcessDataPhaseSnapshot();
|
|
|
| std::vector<TaskSnapshot> tasks;
|
| - std::vector<ParentChildPairSnapshot> descendants;
|
| };
|
|
|
| //------------------------------------------------------------------------------
|
|
|