Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index 08281012bdb05a012884b6375fa59f5357f85790..a94bd797413d7c5c0a72d581382ec5cc997489ad 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -3214,21 +3214,21 @@ void V8::SetGlobalGCEpilogueCallback(GCCallback callback) { |
void V8::PauseProfiler() { |
#ifdef ENABLE_LOGGING_AND_PROFILING |
- i::Logger::PauseProfiler(); |
+ i::Logger::PauseProfiler(PROFILER_MODULE_CPU); |
#endif |
} |
void V8::ResumeProfiler() { |
#ifdef ENABLE_LOGGING_AND_PROFILING |
- i::Logger::ResumeProfiler(); |
+ i::Logger::ResumeProfiler(PROFILER_MODULE_CPU); |
#endif |
} |
bool V8::IsProfilerPaused() { |
#ifdef ENABLE_LOGGING_AND_PROFILING |
- return i::Logger::IsProfilerPaused(); |
+ return i::Logger::GetActiveProfilerModules() & PROFILER_MODULE_CPU; |
#else |
return true; |
#endif |
@@ -3237,11 +3237,19 @@ bool V8::IsProfilerPaused() { |
void V8::ResumeProfilerEx(int flags) { |
#ifdef ENABLE_LOGGING_AND_PROFILING |
- if (flags & PROFILER_MODULE_CPU) { |
- i::Logger::ResumeProfiler(); |
- } |
- if (flags & (PROFILER_MODULE_HEAP_STATS | PROFILER_MODULE_JS_CONSTRUCTORS)) { |
- i::FLAG_log_gc = true; |
+ if (flags & PROFILER_MODULE_HEAP_SNAPSHOT) { |
+ // Snapshot mode: resume modules, perform GC, then pause only |
+ // those modules which haven't been started prior to making a |
+ // snapshot. |
+ |
+ // Reset snapshot flag. |
+ flags &= ~PROFILER_MODULE_HEAP_SNAPSHOT; |
Søren Thygesen Gjesse
2009/08/04 13:44:55
Should PROFILER_MODULE_CPU be masked out here as w
mnaganov (inactive)
2009/08/04 14:12:38
Combining CPU profiling with snapshot makes no sen
|
+ const int current_flags = i::Logger::GetActiveProfilerModules(); |
+ i::Logger::ResumeProfiler(flags); |
+ i::Heap::CollectAllGarbage(); |
+ i::Logger::PauseProfiler(~current_flags & flags); |
+ } else { |
+ i::Logger::ResumeProfiler(flags); |
} |
#endif |
} |
@@ -3249,26 +3257,14 @@ void V8::ResumeProfilerEx(int flags) { |
void V8::PauseProfilerEx(int flags) { |
#ifdef ENABLE_LOGGING_AND_PROFILING |
- if (flags & PROFILER_MODULE_CPU) { |
- i::Logger::PauseProfiler(); |
- } |
- if (flags & (PROFILER_MODULE_HEAP_STATS | PROFILER_MODULE_JS_CONSTRUCTORS)) { |
- i::FLAG_log_gc = false; |
- } |
+ i::Logger::PauseProfiler(flags); |
#endif |
} |
int V8::GetActiveProfilerModules() { |
#ifdef ENABLE_LOGGING_AND_PROFILING |
- int result = PROFILER_MODULE_NONE; |
- if (!i::Logger::IsProfilerPaused()) { |
- result |= PROFILER_MODULE_CPU; |
- } |
- if (i::FLAG_log_gc) { |
- result |= PROFILER_MODULE_HEAP_STATS | PROFILER_MODULE_JS_CONSTRUCTORS; |
- } |
- return result; |
+ return i::Logger::GetActiveProfilerModules(); |
#else |
return PROFILER_MODULE_NONE; |
#endif |