Index: runtime/vm/thread.cc |
diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc |
index 3b3eb3308d30b292147168449f670ba1f62033f5..dff8b1db7f831607ff64fe68181255bbc4fb0d71 100644 |
--- a/runtime/vm/thread.cc |
+++ b/runtime/vm/thread.cc |
@@ -75,7 +75,8 @@ void Thread::CleanUp() { |
Thread::Thread(bool init_vm_constants) |
: isolate_(NULL), |
- store_buffer_block_(NULL) { |
+ store_buffer_block_(NULL), |
+ pass_safepoint_(kNoSafepointId) { |
ClearState(); |
#define DEFAULT_INIT(type_name, member_name, init_expr, default_init_value) \ |
member_name = default_init_value; |
@@ -168,11 +169,13 @@ void Thread::ExitIsolate() { |
} |
-void Thread::EnterIsolateAsHelper(Isolate* isolate) { |
+void Thread::EnterIsolateAsHelper(Isolate* isolate, |
+ SafepointId pass_safepoint) { |
Thread* thread = Thread::Current(); |
ASSERT(thread != NULL); |
ASSERT(thread->isolate() == NULL); |
thread->isolate_ = isolate; |
+ thread->pass_safepoint_ = pass_safepoint; |
ASSERT(isolate->heap() != NULL); |
thread->heap_ = isolate->heap(); |
ASSERT(thread->thread_state() == NULL); |
@@ -192,6 +195,7 @@ void Thread::ExitIsolateAsHelper() { |
ASSERT(isolate != NULL); |
thread->Unschedule(); |
thread->set_thread_state(NULL); |
+ thread->pass_safepoint_ = kNoSafepointId; |
thread->isolate_ = NULL; |
thread->heap_ = NULL; |
ASSERT(!isolate->MutatorThreadIsCurrentThread()); |