summaryrefslogtreecommitdiffstats
path: root/base/tracked_objects.cc
diff options
context:
space:
mode:
authorjar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-07 18:29:42 +0000
committerjar@chromium.org <jar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-07 18:29:42 +0000
commit88a7e52fece7e4eb3e891805c971c027a35fe660 (patch)
treec1014c1bbec8f6d0a4329b8b11e3be0f9002d4e7 /base/tracked_objects.cc
parent7defb4f01c1af33db02ca9cf399efeb328110c47 (diff)
downloadchromium_src-88a7e52fece7e4eb3e891805c971c027a35fe660.zip
chromium_src-88a7e52fece7e4eb3e891805c971c027a35fe660.tar.gz
chromium_src-88a7e52fece7e4eb3e891805c971c027a35fe660.tar.bz2
Propogate status setting for profiler to track parents
This allows child processes to track ancestry, and report it to the browser process. Parent tracking is only turned on based on an environment variable. r=rtenneti Review URL: https://chromiumcodereview.appspot.com/9181002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120789 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/tracked_objects.cc')
-rw-r--r--base/tracked_objects.cc31
1 files changed, 17 insertions, 14 deletions
diff --git a/base/tracked_objects.cc b/base/tracked_objects.cc
index e7d7bd1..87af8dc 100644
--- a/base/tracked_objects.cc
+++ b/base/tracked_objects.cc
@@ -393,7 +393,7 @@ Births* ThreadData::TallyABirthIfActive(const Location& location) {
if (!kTrackAllTaskObjects)
return NULL; // Not compiled in.
- if (!tracking_status())
+ if (!TrackingStatus())
return NULL;
ThreadData* current_thread_data = Get();
if (!current_thread_data)
@@ -622,28 +622,31 @@ bool ThreadData::Initialize() {
}
// static
-bool ThreadData::InitializeAndSetTrackingStatus(bool status) {
+bool ThreadData::InitializeAndSetTrackingStatus(Status status) {
+ DCHECK_GE(status, DEACTIVATED);
+ DCHECK_LE(status, PROFILING_CHILDREN_ACTIVE);
+
if (!Initialize()) // No-op if already initialized.
return false; // Not compiled in.
- if (!status) {
- status_ = DEACTIVATED;
- } else {
- if (kTrackParentChildLinks)
- status_ = PROFILING_CHILDREN_ACTIVE;
- else
- status_ = PROFILING_ACTIVE;
- }
+ if (!kTrackParentChildLinks && status > DEACTIVATED)
+ status = PROFILING_ACTIVE;
+ status_ = status;
return true;
}
// static
-bool ThreadData::tracking_status() {
+ThreadData::Status ThreadData::status() {
+ return status_;
+}
+
+// static
+bool ThreadData::TrackingStatus() {
return status_ > DEACTIVATED;
}
// static
-bool ThreadData::tracking_parent_child_status() {
+bool ThreadData::TrackingParentChildStatus() {
return status_ >= PROFILING_CHILDREN_ACTIVE;
}
@@ -664,7 +667,7 @@ TrackedTime ThreadData::NowForEndOfRun() {
// static
TrackedTime ThreadData::Now() {
- if (kTrackAllTaskObjects && tracking_status())
+ if (kTrackAllTaskObjects && TrackingStatus())
return TrackedTime::Now();
return TrackedTime(); // Super fast when disabled, or not compiled.
}
@@ -686,7 +689,7 @@ void ThreadData::ShutdownSingleThreadedCleanup(bool leak) {
// This is only called from test code, where we need to cleanup so that
// additional tests can be run.
// We must be single threaded... but be careful anyway.
- if (!InitializeAndSetTrackingStatus(false))
+ if (!InitializeAndSetTrackingStatus(DEACTIVATED))
return;
ThreadData* thread_data_list;
{