Index: runtime/vm/os_thread_win.h |
diff --git a/runtime/vm/os_thread_win.h b/runtime/vm/os_thread_win.h |
index 5dc9b189f58c6a1e670922d337a4d7507f631912..5cfb74ba98358ae8b673dbf55910e41343722817 100644 |
--- a/runtime/vm/os_thread_win.h |
+++ b/runtime/vm/os_thread_win.h |
@@ -116,6 +116,53 @@ class MonitorData { |
DISALLOW_COPY_AND_ASSIGN(MonitorData); |
}; |
+ |
+typedef void (*ThreadDestructor) (void* parameter); |
+ |
+ |
+class ThreadLocalEntry { |
+ public: |
+ ThreadLocalEntry(ThreadLocalKey key, ThreadDestructor destructor) |
+ : key_(key), |
+ destructor_(destructor) { |
+ } |
+ |
+ ThreadLocalKey key() const { |
+ return key_; |
+ } |
+ |
+ |
+ ThreadDestructor destructor() const { |
+ return destructor_; |
+ } |
+ |
+ private: |
+ ThreadLocalKey key_; |
+ ThreadDestructor destructor_; |
siva
2015/10/15 22:42:48
DISALLOW_COPY_AND_ASSIGN(...);
DISALLOW_ALLOCATION
Cutch
2015/10/16 16:53:26
Added DISALLOW_ALLOCATION but not DISALLOW_COPY_AN
|
+}; |
+ |
+ |
+template<typename T> |
+class MallocGrowableArray; |
+ |
+ |
+class ThreadLocalData { |
siva
2015/10/15 22:42:48
class ThreadLocalData : public AllStatic {
Cutch
2015/10/16 16:53:26
Done.
|
+ public: |
+ static void AddThreadLocal(ThreadLocalKey key, ThreadDestructor destructor); |
+ static void RemoveThreadLocal(ThreadLocalKey key); |
siva
2015/10/15 22:42:48
Should we make OSThread a friend class and make al
Cutch
2015/10/16 16:53:25
Done.
|
+ |
+ static void RunDestructors(); |
+ |
+ private: |
+ static Mutex* mutex_; |
+ static MallocGrowableArray<ThreadLocalEntry>* thread_locals_; |
+ |
+ static void InitOnce(); |
+ static void Shutdown(); |
+ |
+ friend class OS; |
+}; |
+ |
} // namespace dart |
#endif // VM_OS_THREAD_WIN_H_ |