Index: runtime/vm/thread_interrupter_android.cc |
diff --git a/runtime/vm/thread_interrupter_android.cc b/runtime/vm/thread_interrupter_android.cc |
index a5a4f8ae48d90707b6ceb57b9b48503030a63210..bf5d7538ea17b5e64fdd30e9abec277031432431 100644 |
--- a/runtime/vm/thread_interrupter_android.cc |
+++ b/runtime/vm/thread_interrupter_android.cc |
@@ -20,8 +20,7 @@ class ThreadInterrupterAndroid : 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; |
@@ -32,8 +31,13 @@ class ThreadInterrupterAndroid : 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", |