Index: runtime/vm/thread_interrupter_macos.cc |
diff --git a/runtime/vm/thread_interrupter_macos.cc b/runtime/vm/thread_interrupter_macos.cc |
index b02e2af73c9ea7fbc66e0c212c1a5c7bc1819058..251bf8d7222351b4404f23c597b03e98cf395e55 100644 |
--- a/runtime/vm/thread_interrupter_macos.cc |
+++ b/runtime/vm/thread_interrupter_macos.cc |
@@ -22,32 +22,35 @@ class ThreadInterrupterMacOS : public AllStatic { |
if (signal != SIGPROF) { |
return; |
} |
- InterruptableThreadState* state = ThreadInterrupter::CurrentThreadState(); |
- if ((state == NULL) || (state->callback == NULL)) { |
- // No interrupter state or callback. |
+ Thread* thread = Thread::Current(); |
+ if (thread == NULL) { |
+ return; |
+ } |
+ ThreadInterruptCallback callback = thread->thread_interrupt_callback(); |
+ void* callback_data = thread->thread_interrupt_data(); |
+ if (callback == NULL) { |
return; |
} |
- ASSERT(OSThread::Compare(state->id, OSThread::GetCurrentThreadId())); |
// Extract thread state. |
ucontext_t* context = reinterpret_cast<ucontext_t*>(context_); |
mcontext_t mcontext = context->uc_mcontext; |
InterruptedThreadState its; |
- its.tid = state->id; |
+ its.tid = thread->id(); |
its.pc = SignalHandler::GetProgramCounter(mcontext); |
its.fp = SignalHandler::GetFramePointer(mcontext); |
its.csp = SignalHandler::GetCStackPointer(mcontext); |
its.dsp = SignalHandler::GetDartStackPointer(mcontext); |
its.lr = SignalHandler::GetLinkRegister(mcontext); |
- state->callback(its, state->data); |
+ callback(its, callback_data); |
} |
}; |
-void ThreadInterrupter::InterruptThread(InterruptableThreadState* state) { |
+void ThreadInterrupter::InterruptThread(Thread* thread) { |
if (FLAG_trace_thread_interrupter) { |
- OS::Print("ThreadInterrupter interrupting %p\n", state->id); |
+ OS::Print("ThreadInterrupter interrupting %p\n", thread->id()); |
} |
- int result = pthread_kill(state->id, SIGPROF); |
+ int result = pthread_kill(thread->id(), SIGPROF); |
ASSERT(result == 0); |
} |