Index: runtime/platform/thread_win.h |
diff --git a/runtime/platform/thread_win.h b/runtime/platform/thread_win.h |
index b67b25431950514c82671de9bc6c860fd412afcc..40e5a116f4687e29dd00c286b9da691edf35e462 100644 |
--- a/runtime/platform/thread_win.h |
+++ b/runtime/platform/thread_win.h |
@@ -15,12 +15,17 @@ |
namespace dart { |
typedef DWORD ThreadLocalKey; |
+typedef HANDLE ThreadId; |
+ |
class ThreadInlineImpl { |
private: |
ThreadInlineImpl() {} |
~ThreadInlineImpl() {} |
+ static ThreadLocalKey thread_id_key; |
+ static ThreadId CreateThreadId(); |
+ static void DestroyThreadId(ThreadId); |
static uword GetThreadLocal(ThreadLocalKey key) { |
static ThreadLocalKey kUnsetThreadLocalKey = TLS_OUT_OF_INDEXES; |
ASSERT(key != kUnsetThreadLocalKey); |
@@ -28,6 +33,8 @@ class ThreadInlineImpl { |
} |
friend class Thread; |
+ friend class OS; |
+ friend unsigned int __stdcall ThreadEntry(void* data_ptr); |
DISALLOW_ALLOCATION(); |
DISALLOW_COPY_AND_ASSIGN(ThreadInlineImpl); |
@@ -70,6 +77,8 @@ class MonitorWaitData { |
friend class Monitor; |
friend class MonitorData; |
+ friend class OS; |
+ |
DISALLOW_COPY_AND_ASSIGN(MonitorWaitData); |
}; |
@@ -86,7 +95,7 @@ class MonitorData { |
void RemoveWaiter(MonitorWaitData* wait_data); |
void SignalAndRemoveFirstWaiter(); |
void SignalAndRemoveAllWaiters(); |
- MonitorWaitData* GetMonitorWaitDataForThread(); |
+ static MonitorWaitData* GetMonitorWaitDataForThread(); |
// The external critical section for the monitor. |
CRITICAL_SECTION cs_; |
@@ -104,6 +113,8 @@ class MonitorData { |
MonitorWaitData* waiters_tail_; |
friend class Monitor; |
+ friend class OS; |
+ friend unsigned int __stdcall ThreadEntry(void* data_ptr); |
DISALLOW_ALLOCATION(); |
DISALLOW_COPY_AND_ASSIGN(MonitorData); |