| Index: runtime/platform/thread_macos.cc
 | 
| diff --git a/runtime/platform/thread_macos.cc b/runtime/platform/thread_macos.cc
 | 
| index 6fa80ce738f5a31f5bd92d6e4ff13d07e499ffdc..4dd208bac3ffcc8b83fb1573813fce9ea2c01991 100644
 | 
| --- a/runtime/platform/thread_macos.cc
 | 
| +++ b/runtime/platform/thread_macos.cc
 | 
| @@ -87,6 +87,32 @@ int Thread::Start(ThreadStartFunction function, uword parameter) {
 | 
|  }
 | 
|  
 | 
|  
 | 
| +ThreadLocalKey Thread::kUnsetThreadLocalKey = static_cast<pthread_key_t>(-1);
 | 
| +
 | 
| +
 | 
| +ThreadLocalKey Thread::CreateThreadLocal() {
 | 
| +  pthread_key_t key = kUnsetThreadLocalKey;
 | 
| +  int result = pthread_key_create(&key, NULL);
 | 
| +  VALIDATE_PTHREAD_RESULT(result);
 | 
| +  ASSERT(key != kUnsetThreadLocalKey);
 | 
| +  return key;
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void Thread::DeleteThreadLocal(ThreadLocalKey key) {
 | 
| +  ASSERT(key != kUnsetThreadLocalKey);
 | 
| +  int result = pthread_key_delete(key);
 | 
| +  VALIDATE_PTHREAD_RESULT(result);
 | 
| +}
 | 
| +
 | 
| +
 | 
| +void Thread::SetThreadLocal(ThreadLocalKey key, uword value) {
 | 
| +  ASSERT(key != kUnsetThreadLocalKey);
 | 
| +  int result = pthread_setspecific(key, reinterpret_cast<void*>(value));
 | 
| +  VALIDATE_PTHREAD_RESULT(result);
 | 
| +}
 | 
| +
 | 
| +
 | 
|  Mutex::Mutex() {
 | 
|    pthread_mutexattr_t attr;
 | 
|    int result = pthread_mutexattr_init(&attr);
 | 
| 
 |