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