Index: src/platform-freebsd.cc |
diff --git a/src/platform-freebsd.cc b/src/platform-freebsd.cc |
index 1da46056907be4aba662ad2305f0642070876d27..d02d668422ca9171a5120ac4d67bf11f35082bae 100644 |
--- a/src/platform-freebsd.cc |
+++ b/src/platform-freebsd.cc |
@@ -712,11 +712,6 @@ static void ProfilerSignalHandler(int signal, siginfo_t* info, void* context) { |
class SignalSender : public Thread { |
public: |
- enum SleepInterval { |
- HALF_INTERVAL, |
- FULL_INTERVAL |
- }; |
- |
static const int kSignalSenderStackSize = 64 * KB; |
explicit SignalSender(int interval) |
@@ -767,38 +762,14 @@ 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(); |
// 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) { |
+ 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 (rate_limiter_.SuspendIfNecessary()) continue; |
} |
+ Sleep(); // TODO(svenpanne) Figure out if OS:Sleep(interval_) is enough. |
} |
} |
@@ -808,21 +779,15 @@ 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(pthread_t tid) { |
if (!signal_handler_installed_) return; |
pthread_kill(tid, SIGPROF); |
} |
- 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; |
int result = usleep(interval); |
#ifdef DEBUG |
if (result != 0 && errno != EINTR) { |