Index: runtime/vm/thread_interrupter_linux.cc |
diff --git a/runtime/vm/thread_interrupter_linux.cc b/runtime/vm/thread_interrupter_linux.cc |
index ee6b4a7569ea7f6f57d416a2f8194b069ed590fa..1f597a1e80da552ceae01073ca2499c69897b08b 100644 |
--- a/runtime/vm/thread_interrupter_linux.cc |
+++ b/runtime/vm/thread_interrupter_linux.cc |
@@ -20,8 +20,7 @@ class ThreadInterrupterLinux : public AllStatic { |
if (signal != SIGPROF) { |
return; |
} |
- ThreadInterrupter::ThreadState* state = |
- ThreadInterrupter::CurrentThreadState(); |
+ InterruptableThreadState* state = ThreadInterrupter::CurrentThreadState(); |
if ((state == NULL) || (state->callback == NULL)) { |
// No interrupter state or callback. |
return; |
@@ -41,8 +40,13 @@ class ThreadInterrupterLinux : public AllStatic { |
void ThreadInterrupter::InterruptThreads(int64_t current_time) { |
- for (intptr_t i = 0; i < threads_size_; i++) { |
- ThreadState* state = threads_[i]; |
+ for (intptr_t i = 0; i < Isolate::isolates_size_; i++) { |
+ Isolate* isolate = Isolate::isolates_[i]; |
+ ASSERT(isolate != NULL); |
+ InterruptableThreadState* state = isolate->thread_state(); |
+ if (state == NULL) { |
+ continue; |
+ } |
ASSERT(state->id != Thread::kInvalidThreadId); |
if (FLAG_trace_thread_interrupter) { |
OS::Print("ThreadInterrupter interrupting %p\n", |