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); |