Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Unified Diff: src/log.cc

Issue 113762: Implement resource-saving mode of Profiler. (Closed)
Patch Set: Patch set 2 was screwed, this is the good one. Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/log.cc
diff --git a/src/log.cc b/src/log.cc
index 3d3cd2d262b9604502283bf10eee1db34026e977..bda2038c658af99027567be6b32c22df0ff8ba00 100644
--- a/src/log.cc
+++ b/src/log.cc
@@ -178,7 +178,7 @@ class Ticker: public Sampler {
void SetWindow(SlidingStateWindow* window) {
window_ = window;
- if (!IsActive()) Start();
+ if (!FLAG_prof_lazy && !IsActive()) Start();
Søren Thygesen Gjesse 2009/05/25 07:09:15 I am not sure about this handling of the prof_lazy
Mikhail Naganov 2009/05/25 08:23:43 That's an important thing to know, thanks for noti
}
void ClearWindow() {
@@ -188,7 +188,7 @@ class Ticker: public Sampler {
void SetProfiler(Profiler* profiler) {
profiler_ = profiler;
- if (!IsActive()) Start();
+ if (!FLAG_prof_lazy && !IsActive()) Start();
}
void ClearProfiler() {
@@ -267,6 +267,8 @@ void Profiler::Disengage() {
// the thread to terminate.
running_ = false;
TickSample sample;
+ // Reset 'paused_' flag, otherwise semaphore may not be signalled.
+ resume();
Insert(&sample);
Join();
@@ -1096,14 +1098,30 @@ bool Logger::IsProfilerPaused() {
void Logger::PauseProfiler() {
profiler_->pause();
+ if (FLAG_prof_lazy) {
+ ticker_->Stop();
+ FLAG_log_code = false;
+ LOG(UncheckedStringEvent("profiler", "pause"));
+ }
}
void Logger::ResumeProfiler() {
+ if (FLAG_prof_lazy) {
+ LOG(UncheckedStringEvent("profiler", "resume"));
+ FLAG_log_code = true;
+ LogCompiledFunctions();
+ ticker_->Start();
+ }
profiler_->resume();
}
+bool Logger::IsProfilerSamplerActive() {
+ return ticker_->IsActive();
+}
+
+
int Logger::GetLogLines(int from_pos, char* dest_buf, int max_size) {
return Log::GetLogLines(from_pos, dest_buf, max_size);
}
@@ -1190,9 +1208,15 @@ bool Logger::Setup() {
// --prof implies --log-code.
if (FLAG_prof) FLAG_log_code = true;
+ // --prof_lazy controls --log-code, implies --noprof_auto.
+ if (FLAG_prof_lazy) {
+ FLAG_log_code = false;
+ FLAG_prof_auto = false;
+ }
+
bool open_log_file = FLAG_log || FLAG_log_runtime || FLAG_log_api
|| FLAG_log_code || FLAG_log_gc || FLAG_log_handles || FLAG_log_suspect
- || FLAG_log_regexp || FLAG_log_state_changes;
+ || FLAG_log_regexp || FLAG_log_state_changes || FLAG_prof_lazy;
// If we're logging anything, we need to open the log file.
if (open_log_file) {
@@ -1277,8 +1301,10 @@ void Logger::TearDown() {
}
delete sliding_state_window_;
+ sliding_state_window_ = NULL;
delete ticker_;
+ ticker_ = NULL;
Log::Close();
#endif

Powered by Google App Engine
This is Rietveld 408576698