Index: src/platform-linux.cc |
diff --git a/src/platform-linux.cc b/src/platform-linux.cc |
index ec48d6305e3de2ea4b51f0571a1c7a83bb0ae619..7a186413b5f3c7c059fd9e09f50abd7490dbedbf 100644 |
--- a/src/platform-linux.cc |
+++ b/src/platform-linux.cc |
@@ -1091,11 +1091,6 @@ class Sampler::PlatformData : public Malloced { |
class SignalSender : public Thread { |
public: |
- enum SleepInterval { |
- HALF_INTERVAL, |
- FULL_INTERVAL |
- }; |
- |
static const int kSignalSenderStackSize = 64 * KB; |
explicit SignalSender(int interval) |
@@ -1151,43 +1146,16 @@ class SignalSender : public Thread { |
SamplerRegistry::State state; |
while ((state = SamplerRegistry::GetState()) != |
SamplerRegistry::HAS_NO_SAMPLERS) { |
- bool cpu_profiling_enabled = |
- (state == SamplerRegistry::HAS_CPU_PROFILING_SAMPLERS); |
- bool runtime_profiler_enabled = RuntimeProfiler::IsEnabled(); |
- if (cpu_profiling_enabled && !signal_handler_installed_) { |
- InstallSignalHandler(); |
- } else if (!cpu_profiling_enabled && signal_handler_installed_) { |
- RestoreSignalHandler(); |
- } |
// When CPU profiling is enabled both JavaScript and C++ code is |
// profiled. We must not suspend. |
- if (!cpu_profiling_enabled) { |
- if (rate_limiter_.SuspendIfNecessary()) continue; |
- } |
- if (cpu_profiling_enabled && runtime_profiler_enabled) { |
- if (!SamplerRegistry::IterateActiveSamplers(&DoCpuProfile, this)) { |
- return; |
- } |
- Sleep(HALF_INTERVAL); |
- if (!SamplerRegistry::IterateActiveSamplers(&DoRuntimeProfile, NULL)) { |
- return; |
- } |
- Sleep(HALF_INTERVAL); |
+ if (state == SamplerRegistry::HAS_CPU_PROFILING_SAMPLERS) { |
+ if (!signal_handler_installed_) InstallSignalHandler(); |
+ SamplerRegistry::IterateActiveSamplers(&DoCpuProfile, this); |
} else { |
- if (cpu_profiling_enabled) { |
- if (!SamplerRegistry::IterateActiveSamplers(&DoCpuProfile, |
- this)) { |
- return; |
- } |
- } |
- if (runtime_profiler_enabled) { |
- if (!SamplerRegistry::IterateActiveSamplers(&DoRuntimeProfile, |
- NULL)) { |
- return; |
- } |
- } |
- Sleep(FULL_INTERVAL); |
+ if (signal_handler_installed_) RestoreSignalHandler(); |
+ if (rate_limiter_.SuspendIfNecessary()) continue; |
} |
+ Sleep(); // TODO(svenpanne) Figure out if OS:Sleep(interval_) is enough. |
} |
} |
@@ -1197,11 +1165,6 @@ class SignalSender : public Thread { |
sender->SendProfilingSignal(sampler->platform_data()->vm_tid()); |
} |
- static void DoRuntimeProfile(Sampler* sampler, void* ignored) { |
- if (!sampler->isolate()->IsInitialized()) return; |
- sampler->isolate()->runtime_profiler()->NotifyTick(); |
- } |
- |
void SendProfilingSignal(int tid) { |
if (!signal_handler_installed_) return; |
// Glibc doesn't provide a wrapper for tgkill(2). |
@@ -1212,11 +1175,10 @@ class SignalSender : public Thread { |
#endif |
} |
- void Sleep(SleepInterval full_or_half) { |
+ void Sleep() { |
// Convert ms to us and subtract 100 us to compensate delays |
// occuring during signal delivery. |
useconds_t interval = interval_ * 1000 - 100; |
- if (full_or_half == HALF_INTERVAL) interval /= 2; |
#if defined(ANDROID) |
usleep(interval); |
#else |