Index: runtime/vm/isolate.cc |
=================================================================== |
--- runtime/vm/isolate.cc (revision 39573) |
+++ runtime/vm/isolate.cc (working copy) |
@@ -444,10 +444,65 @@ |
set_vm_tag(VMTag::kIdleTagId); |
set_user_tag(UserTags::kDefaultUserTag); |
} |
+ |
+Isolate::Isolate(Isolate* original) |
+ : 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), |
+ heap_(NULL), |
+ object_store_(NULL), |
+ top_context_(Context::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), |
+ 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()), |
+ 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 |
- |
Isolate::~Isolate() { |
delete [] name_; |
delete heap_; |
@@ -984,6 +1039,11 @@ |
} |
+Isolate* Isolate::ShallowCopy() { |
+ return new Isolate(this); |
+} |
+ |
+ |
Dart_IsolateCreateCallback Isolate::create_callback_ = NULL; |
Dart_IsolateInterruptCallback Isolate::interrupt_callback_ = NULL; |
Dart_IsolateUnhandledExceptionCallback |