| Index: runtime/vm/isolate.cc
|
| ===================================================================
|
| --- runtime/vm/isolate.cc (revision 44632)
|
| +++ runtime/vm/isolate.cc (working copy)
|
| @@ -601,6 +601,65 @@
|
| set_user_tag(UserTags::kDefaultUserTag);
|
| }
|
|
|
| +Isolate::Isolate(Isolate* original)
|
| + : vm_tag_(0),
|
| + store_buffer_(true),
|
| + class_table_(original->class_table()),
|
| + message_notify_callback_(NULL),
|
| + name_(NULL),
|
| + start_time_(OS::GetCurrentTimeMicros()),
|
| + main_port_(0),
|
| + pause_capability_(0),
|
| + terminate_capability_(0),
|
| + errors_fatal_(true),
|
| + heap_(NULL),
|
| + object_store_(NULL),
|
| + top_exit_frame_info_(0),
|
| + init_callback_data_(NULL),
|
| + environment_callback_(NULL),
|
| + library_tag_handler_(NULL),
|
| + api_state_(NULL),
|
| + stub_code_(NULL),
|
| + debugger_(NULL),
|
| + single_step_(false),
|
| + resume_request_(false),
|
| + random_(),
|
| + simulator_(NULL),
|
| + long_jump_base_(NULL),
|
| + timer_list_(),
|
| + deopt_id_(0),
|
| + mutex_(new Mutex()),
|
| + stack_limit_(0),
|
| + saved_stack_limit_(0),
|
| + stack_overflow_flags_(0),
|
| + stack_overflow_count_(0),
|
| + message_handler_(NULL),
|
| + spawn_state_(NULL),
|
| + is_runnable_(false),
|
| + gc_prologue_callback_(NULL),
|
| + gc_epilogue_callback_(NULL),
|
| + defer_finalization_count_(0),
|
| + deopt_context_(NULL),
|
| + is_service_isolate_(false),
|
| + log_(new class Log()),
|
| + stacktrace_(NULL),
|
| + stack_frame_index_(-1),
|
| + last_allocationprofile_accumulator_reset_timestamp_(0),
|
| + last_allocationprofile_gc_timestamp_(0),
|
| + cha_(NULL),
|
| + object_id_ring_(NULL),
|
| + trace_buffer_(NULL),
|
| + profiler_data_(NULL),
|
| + thread_state_(NULL),
|
| + tag_table_(GrowableObjectArray::null()),
|
| + current_tag_(UserTag::null()),
|
| + default_tag_(UserTag::null()),
|
| + metrics_list_head_(NULL),
|
| + next_(NULL),
|
| + REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS)
|
| + REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT)
|
| + reusable_handles_() {
|
| +}
|
| #undef REUSABLE_HANDLE_SCOPE_INIT
|
| #undef REUSABLE_HANDLE_INITIALIZERS
|
|
|
| @@ -1307,17 +1366,6 @@
|
| void Isolate::Shutdown() {
|
| ASSERT(this == Isolate::Current());
|
| ASSERT(top_resource() == NULL);
|
| -
|
| - // Remove this isolate from the list *before* we start tearing it down, to
|
| - // avoid exposing it in a state of decay.
|
| - RemoveIsolateFromList(this);
|
| -
|
| - // Create an area where we do have a zone and a handle scope so that we can
|
| - // call VM functions while tearing this isolate down.
|
| - {
|
| - StackZone stack_zone(this);
|
| - HandleScope handle_scope(this);
|
| -
|
| #if defined(DEBUG)
|
| if (heap_ != NULL) {
|
| // Wait for concurrent GC tasks to finish before final verification.
|
| @@ -1331,6 +1379,16 @@
|
| }
|
| #endif // DEBUG
|
|
|
| + // Remove this isolate from the list *before* we start tearing it down, to
|
| + // avoid exposing it in a state of decay.
|
| + RemoveIsolateFromList(this);
|
| +
|
| + // Create an area where we do have a zone and a handle scope so that we can
|
| + // call VM functions while tearing this isolate down.
|
| + {
|
| + StackZone stack_zone(this);
|
| + HandleScope handle_scope(this);
|
| +
|
| // Notify exit listeners that this isolate is shutting down.
|
| if (object_store() != NULL) {
|
| NotifyExitListeners();
|
| @@ -1374,6 +1432,11 @@
|
| }
|
|
|
|
|
| +Isolate* Isolate::ShallowCopy() {
|
| + return new Isolate(this);
|
| +}
|
| +
|
| +
|
| Dart_IsolateCreateCallback Isolate::create_callback_ = NULL;
|
| Dart_IsolateInterruptCallback Isolate::interrupt_callback_ = NULL;
|
| Dart_IsolateUnhandledExceptionCallback
|
|
|