diff options
Diffstat (limited to 'deps/v8/src/platform-openbsd.cc')
-rw-r--r-- | deps/v8/src/platform-openbsd.cc | 58 |
1 files changed, 13 insertions, 45 deletions
diff --git a/deps/v8/src/platform-openbsd.cc b/deps/v8/src/platform-openbsd.cc index 408d4dc0f8..d4ab9a66ee 100644 --- a/deps/v8/src/platform-openbsd.cc +++ b/deps/v8/src/platform-openbsd.cc @@ -504,6 +504,12 @@ bool VirtualMemory::ReleaseRegion(void* base, size_t size) { } +bool VirtualMemory::HasLazyCommits() { + // TODO(alph): implement for the platform. + return false; +} + + class Thread::PlatformData : public Malloced { public: PlatformData() : thread_(kNoThread) {} @@ -778,11 +784,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) @@ -838,43 +839,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. } } @@ -884,21 +858,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) { |