| Index: runtime/vm/thread_interrupter_macos.cc | 
| diff --git a/runtime/vm/thread_interrupter_macos.cc b/runtime/vm/thread_interrupter_macos.cc | 
| index c53ae133d7cfa3871057a4bb549649c83a6be1fc..f1ff45ee5fc0ae2336e79ca5e868e70345fa9f02 100644 | 
| --- a/runtime/vm/thread_interrupter_macos.cc | 
| +++ b/runtime/vm/thread_interrupter_macos.cc | 
| @@ -5,11 +5,8 @@ | 
| #include "platform/globals.h" | 
| #if defined(TARGET_OS_MACOS) | 
|  | 
| -#include <errno.h>  // NOLINT | 
| - | 
| #include "vm/flags.h" | 
| #include "vm/os.h" | 
| -#include "vm/profiler.h" | 
| #include "vm/signal_handler.h" | 
| #include "vm/thread_interrupter.h" | 
|  | 
| @@ -29,16 +26,22 @@ class ThreadInterrupterMacOS : public AllStatic { | 
| if (thread == NULL) { | 
| return; | 
| } | 
| +    ThreadInterruptCallback callback = NULL; | 
| +    void* callback_data = NULL; | 
| +    if (!thread->IsThreadInterrupterEnabled(&callback, &callback_data)) { | 
| +      return; | 
| +    } | 
| // Extract thread state. | 
| ucontext_t* context = reinterpret_cast<ucontext_t*>(context_); | 
| mcontext_t mcontext = context->uc_mcontext; | 
| InterruptedThreadState its; | 
| +    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); | 
| -    Profiler::SampleThread(thread, its); | 
| +    callback(its, callback_data); | 
| } | 
| }; | 
|  | 
| @@ -48,7 +51,7 @@ void ThreadInterrupter::InterruptThread(Thread* thread) { | 
| OS::Print("ThreadInterrupter interrupting %p\n", thread->id()); | 
| } | 
| int result = pthread_kill(thread->id(), SIGPROF); | 
| -  ASSERT((result == 0) || (result == ESRCH)); | 
| +  ASSERT(result == 0); | 
| } | 
|  | 
|  | 
|  |