Index: runtime/vm/os_thread.h |
diff --git a/runtime/vm/os_thread.h b/runtime/vm/os_thread.h |
index a3693af4308fc901af326e7c946fc992f7f3add1..3130b25ef442ded9abf5351e5b07d283287a981e 100644 |
--- a/runtime/vm/os_thread.h |
+++ b/runtime/vm/os_thread.h |
@@ -116,7 +116,7 @@ class OSThread : public BaseThread { |
bool ThreadInterruptsEnabled(); |
// The currently executing thread, or NULL if not yet initialized. |
- static OSThread* Current() { |
+ static OSThread* TryCurrent() { |
BaseThread* thread = GetCurrentTLS(); |
OSThread* os_thread = NULL; |
if (thread != NULL) { |
@@ -126,7 +126,15 @@ class OSThread : public BaseThread { |
Thread* vm_thread = reinterpret_cast<Thread*>(thread); |
os_thread = GetOSThreadFromThread(vm_thread); |
} |
- } else { |
+ } |
+ return os_thread; |
+ } |
+ |
+ // The currently executing thread. If there is no currently executing thread, |
+ // a new OSThread is created and returned. |
+ static OSThread* Current() { |
+ OSThread* os_thread = TryCurrent(); |
+ if (os_thread == NULL) { |
os_thread = CreateAndSetUnknownThread(); |
} |
return os_thread; |