| Index: src/platform.h | 
| diff --git a/src/platform.h b/src/platform.h | 
| index 4ec6057c5df01d563e39d3b8a07457d5bc8e8d96..3b2aa3c8bafdf7c2a11ce1190769ef9eeac168b6 100644 | 
| --- a/src/platform.h | 
| +++ b/src/platform.h | 
| @@ -119,6 +119,10 @@ class OS { | 
| // Initializes the platform OS support. Called once at VM startup. | 
| static void SetUp(); | 
|  | 
| +  // Initializes the platform OS support that depend on CPU features. This is | 
| +  // called after CPU initialization. | 
| +  static void PostSetUp(); | 
| + | 
| // Returns the accumulated user time for thread. This routine | 
| // can be used for profiling. The implementation should | 
| // strive for high-precision timer resolution, preferable | 
| @@ -545,7 +549,8 @@ struct CreateMutexTrait { | 
| //     // Do something. | 
| //   } | 
| // | 
| -typedef LazyDynamicInstance<Mutex, CreateMutexTrait>::type LazyMutex; | 
| +typedef LazyDynamicInstance< | 
| +    Mutex, CreateMutexTrait, ThreadSafeInitOnceTrait>::type LazyMutex; | 
|  | 
| #define LAZY_MUTEX_INITIALIZER LAZY_DYNAMIC_INSTANCE_INITIALIZER | 
|  | 
| @@ -616,7 +621,8 @@ struct CreateSemaphoreTrait { | 
| template <int InitialValue> | 
| struct LazySemaphore { | 
| typedef typename LazyDynamicInstance< | 
| -      Semaphore, CreateSemaphoreTrait<InitialValue> >::type type; | 
| +      Semaphore, CreateSemaphoreTrait<InitialValue>, | 
| +      ThreadSafeInitOnceTrait>::type type; | 
| }; | 
|  | 
| #define LAZY_SEMAPHORE_INITIALIZER LAZY_DYNAMIC_INSTANCE_INITIALIZER | 
|  |