Index: base/trace_event/memory_peak_detector.cc |
diff --git a/base/trace_event/memory_peak_detector.cc b/base/trace_event/memory_peak_detector.cc |
index 2423fa3361795846dc0e30b97dd768c4373f0d3f..541959406caddf96690dc13d24573355aedfa558 100644 |
--- a/base/trace_event/memory_peak_detector.cc |
+++ b/base/trace_event/memory_peak_detector.cc |
@@ -68,7 +68,7 @@ void MemoryPeakDetector::TearDown() { |
if (task_runner_) { |
task_runner_->PostTask( |
FROM_HERE, |
- Bind(&MemoryPeakDetector::TearDownInternal, Unretained(this))); |
+ BindOnce(&MemoryPeakDetector::TearDownInternal, Unretained(this))); |
} |
task_runner_ = nullptr; |
} |
@@ -78,21 +78,21 @@ void MemoryPeakDetector::Start(MemoryPeakDetector::Config config) { |
NOTREACHED(); |
return; |
} |
- task_runner_->PostTask(FROM_HERE, Bind(&MemoryPeakDetector::StartInternal, |
- Unretained(this), config)); |
+ task_runner_->PostTask(FROM_HERE, BindOnce(&MemoryPeakDetector::StartInternal, |
+ Unretained(this), config)); |
} |
void MemoryPeakDetector::Stop() { |
task_runner_->PostTask( |
- FROM_HERE, Bind(&MemoryPeakDetector::StopInternal, Unretained(this))); |
+ FROM_HERE, BindOnce(&MemoryPeakDetector::StopInternal, Unretained(this))); |
} |
void MemoryPeakDetector::Throttle() { |
if (!task_runner_) |
return; // Can be called before Setup(). |
task_runner_->PostTask( |
- FROM_HERE, Bind(&MemoryPeakDetector::ResetPollHistory, Unretained(this), |
- true /* keep_last_sample */)); |
+ FROM_HERE, BindOnce(&MemoryPeakDetector::ResetPollHistory, |
+ Unretained(this), true /* keep_last_sample */)); |
} |
void MemoryPeakDetector::NotifyMemoryDumpProvidersChanged() { |
@@ -100,8 +100,8 @@ void MemoryPeakDetector::NotifyMemoryDumpProvidersChanged() { |
return; // Can be called before Setup(). |
task_runner_->PostTask( |
FROM_HERE, |
- Bind(&MemoryPeakDetector::ReloadDumpProvidersAndStartPollingIfNeeded, |
- Unretained(this))); |
+ BindOnce(&MemoryPeakDetector::ReloadDumpProvidersAndStartPollingIfNeeded, |
+ Unretained(this))); |
} |
void MemoryPeakDetector::StartInternal(MemoryPeakDetector::Config config) { |
@@ -124,6 +124,8 @@ void MemoryPeakDetector::StopInternal() { |
DCHECK_NE(NOT_INITIALIZED, state_); |
state_ = DISABLED; |
++generation_; |
+ for (const scoped_refptr<MemoryDumpProviderInfo>& mdp_info : dump_providers_) |
+ mdp_info->dump_provider->SuspendFastMemoryPolling(); |
dump_providers_.clear(); |
} |
@@ -149,9 +151,9 @@ void MemoryPeakDetector::ReloadDumpProvidersAndStartPollingIfNeeded() { |
if (state_ == ENABLED && !dump_providers_.empty()) { |
// It's now time to start polling for realz. |
state_ = RUNNING; |
- task_runner_->PostTask(FROM_HERE, |
- Bind(&MemoryPeakDetector::PollMemoryAndDetectPeak, |
- Unretained(this), ++generation_)); |
+ task_runner_->PostTask( |
+ FROM_HERE, BindOnce(&MemoryPeakDetector::PollMemoryAndDetectPeak, |
+ Unretained(this), ++generation_)); |
} else if (state_ == RUNNING && dump_providers_.empty()) { |
// Will cause the next PollMemoryAndDetectPeak() task to early return. |
state_ = ENABLED; |
@@ -201,8 +203,8 @@ void MemoryPeakDetector::PollMemoryAndDetectPeak(uint32_t expected_generation) { |
DCHECK_GT(config_.polling_interval_ms, 0u); |
SequencedTaskRunnerHandle::Get()->PostDelayedTask( |
FROM_HERE, |
- Bind(&MemoryPeakDetector::PollMemoryAndDetectPeak, Unretained(this), |
- expected_generation), |
+ BindOnce(&MemoryPeakDetector::PollMemoryAndDetectPeak, Unretained(this), |
+ expected_generation), |
TimeDelta::FromMilliseconds(config_.polling_interval_ms)); |
if (!is_peak) |
@@ -271,5 +273,16 @@ void MemoryPeakDetector::SetStaticThresholdForTesting( |
static_threshold_bytes_ = static_threshold_bytes; |
} |
+MemoryPeakDetector::MemoryPeakDetector::Config::Config() |
+ : Config(0, 0, false) {} |
+ |
+MemoryPeakDetector::MemoryPeakDetector::Config::Config( |
+ uint32_t polling_interval_ms, |
+ uint32_t min_time_between_peaks_ms, |
+ bool enable_verbose_poll_tracing) |
+ : polling_interval_ms(polling_interval_ms), |
+ min_time_between_peaks_ms(min_time_between_peaks_ms), |
+ enable_verbose_poll_tracing(enable_verbose_poll_tracing) {} |
+ |
} // namespace trace_event |
} // namespace base |