Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(886)

Unified Diff: runtime/vm/os_thread_win.h

Issue 1410493002: Complete support for Windows TLS destructors (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698