| Index: runtime/vm/profiler_linux.cc
|
| diff --git a/runtime/vm/profiler_linux.cc b/runtime/vm/profiler_linux.cc
|
| index 711dcc785982765c08d6220d391f975194e198e5..1eb650553f7c5502ac13d9fa0c39c2b39e216ac3 100644
|
| --- a/runtime/vm/profiler_linux.cc
|
| +++ b/runtime/vm/profiler_linux.cc
|
| @@ -13,6 +13,7 @@
|
| namespace dart {
|
|
|
| DECLARE_FLAG(bool, profile);
|
| +DECLARE_FLAG(bool, trace_profiled_isolates);
|
|
|
| static void CollectSample(IsolateProfilerData* profiler_data,
|
| uintptr_t pc,
|
| @@ -129,12 +130,30 @@ void ProfilerManager::ThreadMain(uword parameters) {
|
| ASSERT(initialized_);
|
| ASSERT(FLAG_profile);
|
| SignalHandler::Install(ProfileSignalAction);
|
| + if (FLAG_trace_profiled_isolates) {
|
| + OS::Print("ProfilerManager Linux ready.\n");
|
| + }
|
| + thread_running_ = true;
|
| + {
|
| + // Signal to main thread we are ready.
|
| + ScopedMonitor startup_lock(start_stop_monitor_);
|
| + startup_lock.Notify();
|
| + }
|
| ScopedMonitor lock(monitor_);
|
| while (!shutdown_) {
|
| int64_t current_time = OS::GetCurrentTimeMicros();
|
| int64_t next_sample = SampleAndRescheduleIsolates(current_time);
|
| lock.WaitMicros(next_sample);
|
| }
|
| + if (FLAG_trace_profiled_isolates) {
|
| + OS::Print("ProfilerManager Linux exiting.\n");
|
| + }
|
| + thread_running_ = false;
|
| + {
|
| + // Signal to main thread we are exiting.
|
| + ScopedMonitor shutdown_lock(start_stop_monitor_);
|
| + shutdown_lock.Notify();
|
| + }
|
| }
|
|
|
|
|
|
|