Chromium Code Reviews| Index: src/platform-macos.cc |
| diff --git a/src/platform-macos.cc b/src/platform-macos.cc |
| index dbcd80e9f21222faab02df1aab68f3958f7b27f4..afcd80affff3812b0622e6735c118b2a811e1870 100644 |
| --- a/src/platform-macos.cc |
| +++ b/src/platform-macos.cc |
| @@ -94,18 +94,8 @@ double ceiling(double x) { |
| static Mutex* limit_mutex = NULL; |
| -void OS::SetUp() { |
| - // Seed the random number generator. We preserve microsecond resolution. |
| - uint64_t seed = Ticks() ^ (getpid() << 16); |
| - srandom(static_cast<unsigned int>(seed)); |
| - limit_mutex = CreateMutex(); |
| -} |
| - |
| - |
| void OS::PostSetUp() { |
| - // Math functions depend on CPU features therefore they are initialized after |
| - // CPU. |
| - MathSetup(); |
| + POSIXPostSetUp(); |
| } |
| @@ -753,8 +743,14 @@ class SamplerThread : public Thread { |
| : Thread(Thread::Options("SamplerThread", kSamplerThreadStackSize)), |
| interval_(interval) {} |
| + static void SetUp() { |
| + if (!mutex_) { |
| + mutex_ = OS::CreateMutex(); |
| + } |
| + } |
| + |
| static void AddActiveSampler(Sampler* sampler) { |
| - ScopedLock lock(mutex_.Pointer()); |
| + ScopedLock lock(mutex_); |
| SamplerRegistry::AddActiveSampler(sampler); |
| if (instance_ == NULL) { |
| instance_ = new SamplerThread(sampler->interval()); |
| @@ -765,7 +761,7 @@ class SamplerThread : public Thread { |
| } |
| static void RemoveActiveSampler(Sampler* sampler) { |
| - ScopedLock lock(mutex_.Pointer()); |
| + ScopedLock lock(mutex_); |
| SamplerRegistry::RemoveActiveSampler(sampler); |
| if (SamplerRegistry::GetState() == SamplerRegistry::HAS_NO_SAMPLERS) { |
| RuntimeProfiler::StopRuntimeProfilerThreadBeforeShutdown(instance_); |
| @@ -862,7 +858,7 @@ class SamplerThread : public Thread { |
| RuntimeProfilerRateLimiter rate_limiter_; |
| // Protects the process wide state below. |
| - static LazyMutex mutex_; |
| + static Mutex* mutex_; |
| static SamplerThread* instance_; |
| private: |
| @@ -872,10 +868,19 @@ class SamplerThread : public Thread { |
| #undef REGISTER_FIELD |
| -LazyMutex SamplerThread::mutex_ = LAZY_MUTEX_INITIALIZER; |
| +Mutex* SamplerThread::mutex_ = NULL; |
| SamplerThread* SamplerThread::instance_ = NULL; |
| +void OS::SetUp() { |
| + // Seed the random number generator. We preserve microsecond resolution. |
| + uint64_t seed = Ticks() ^ (getpid() << 16); |
| + srandom(static_cast<unsigned int>(seed)); |
| + limit_mutex = CreateMutex(); |
| + SamplerThread::SetUp(); |
| +} |
|
danno
2012/04/04 20:47:57
Can you please move these back to where they use t
Philippe
2012/04/05 11:30:18
I had unfortunately to move this function here to
|
| + |
| + |
| Sampler::Sampler(Isolate* isolate, int interval) |
| : isolate_(isolate), |
| interval_(interval), |