| Index: src/platform-solaris.cc
 | 
| diff --git a/src/platform-solaris.cc b/src/platform-solaris.cc
 | 
| index 56527416962038d6c3673fd26846d9308f6deb5e..70f86596e838444e5e2481eab14b44496dd9fb7f 100644
 | 
| --- a/src/platform-solaris.cc
 | 
| +++ b/src/platform-solaris.cc
 | 
| @@ -701,11 +701,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)
 | 
| @@ -760,44 +755,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.
 | 
|      }
 | 
|    }
 | 
|  
 | 
| @@ -807,21 +774,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) {
 | 
| 
 |