OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/isolate.h" | 5 #include "vm/isolate.h" |
6 | 6 |
7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
9 #include "platform/json.h" | 9 #include "platform/json.h" |
10 #include "vm/code_observers.h" | 10 #include "vm/code_observers.h" |
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
547 metrics_list_head_(NULL), | 547 metrics_list_head_(NULL), |
548 next_(NULL), | 548 next_(NULL), |
549 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS) | 549 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS) |
550 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT) | 550 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT) |
551 reusable_handles_() { | 551 reusable_handles_() { |
552 } | 552 } |
553 #undef REUSABLE_HANDLE_SCOPE_INIT | 553 #undef REUSABLE_HANDLE_SCOPE_INIT |
554 #undef REUSABLE_HANDLE_INITIALIZERS | 554 #undef REUSABLE_HANDLE_INITIALIZERS |
555 | 555 |
556 Isolate::~Isolate() { | 556 Isolate::~Isolate() { |
557 delete [] name_; | 557 free(name_); |
558 delete heap_; | 558 delete heap_; |
559 delete object_store_; | 559 delete object_store_; |
560 delete api_state_; | 560 delete api_state_; |
561 delete stub_code_; | 561 delete stub_code_; |
562 delete debugger_; | 562 delete debugger_; |
563 #if defined(USING_SIMULATOR) | 563 #if defined(USING_SIMULATOR) |
564 delete simulator_; | 564 delete simulator_; |
565 #endif | 565 #endif |
566 delete mutex_; | 566 delete mutex_; |
567 mutex_ = NULL; // Fail fast if interrupts are scheduled on a dead isolate. | 567 mutex_ = NULL; // Fail fast if interrupts are scheduled on a dead isolate. |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 | 675 |
676 return result; | 676 return result; |
677 } | 677 } |
678 | 678 |
679 | 679 |
680 void Isolate::BuildName(const char* name_prefix) { | 680 void Isolate::BuildName(const char* name_prefix) { |
681 ASSERT(name_ == NULL); | 681 ASSERT(name_ == NULL); |
682 if (name_prefix == NULL) { | 682 if (name_prefix == NULL) { |
683 name_prefix = "isolate"; | 683 name_prefix = "isolate"; |
684 } | 684 } |
| 685 if (Service::IsServiceIsolateName(name_prefix)) { |
| 686 name_ = strdup(name_prefix); |
| 687 return; |
| 688 } |
685 const char* kFormat = "%s-%lld"; | 689 const char* kFormat = "%s-%lld"; |
686 intptr_t len = OS::SNPrint(NULL, 0, kFormat, name_prefix, main_port()) + 1; | 690 intptr_t len = OS::SNPrint(NULL, 0, kFormat, name_prefix, main_port()) + 1; |
687 name_ = new char[len]; | 691 name_ = reinterpret_cast<char*>(malloc(len)); |
688 OS::SNPrint(name_, len, kFormat, name_prefix, main_port()); | 692 OS::SNPrint(name_, len, kFormat, name_prefix, main_port()); |
689 } | 693 } |
690 | 694 |
691 | 695 |
692 // TODO(5411455): Use flag to override default value and Validate the | 696 // TODO(5411455): Use flag to override default value and Validate the |
693 // stack size by querying OS. | 697 // stack size by querying OS. |
694 uword Isolate::GetSpecifiedStackSize() { | 698 uword Isolate::GetSpecifiedStackSize() { |
695 ASSERT(Isolate::kStackSizeBuffer < OSThread::GetMaxStackSize()); | 699 ASSERT(Isolate::kStackSizeBuffer < OSThread::GetMaxStackSize()); |
696 uword stack_size = OSThread::GetMaxStackSize() - Isolate::kStackSizeBuffer; | 700 uword stack_size = OSThread::GetMaxStackSize() - Isolate::kStackSizeBuffer; |
697 return stack_size; | 701 return stack_size; |
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1136 Dart_IsolateInterruptCallback Isolate::interrupt_callback_ = NULL; | 1140 Dart_IsolateInterruptCallback Isolate::interrupt_callback_ = NULL; |
1137 Dart_IsolateUnhandledExceptionCallback | 1141 Dart_IsolateUnhandledExceptionCallback |
1138 Isolate::unhandled_exception_callback_ = NULL; | 1142 Isolate::unhandled_exception_callback_ = NULL; |
1139 Dart_IsolateShutdownCallback Isolate::shutdown_callback_ = NULL; | 1143 Dart_IsolateShutdownCallback Isolate::shutdown_callback_ = NULL; |
1140 Dart_FileOpenCallback Isolate::file_open_callback_ = NULL; | 1144 Dart_FileOpenCallback Isolate::file_open_callback_ = NULL; |
1141 Dart_FileReadCallback Isolate::file_read_callback_ = NULL; | 1145 Dart_FileReadCallback Isolate::file_read_callback_ = NULL; |
1142 Dart_FileWriteCallback Isolate::file_write_callback_ = NULL; | 1146 Dart_FileWriteCallback Isolate::file_write_callback_ = NULL; |
1143 Dart_FileCloseCallback Isolate::file_close_callback_ = NULL; | 1147 Dart_FileCloseCallback Isolate::file_close_callback_ = NULL; |
1144 Dart_EntropySource Isolate::entropy_source_callback_ = NULL; | 1148 Dart_EntropySource Isolate::entropy_source_callback_ = NULL; |
1145 Dart_IsolateInterruptCallback Isolate::vmstats_callback_ = NULL; | 1149 Dart_IsolateInterruptCallback Isolate::vmstats_callback_ = NULL; |
1146 Dart_ServiceIsolateCreateCalback Isolate::service_create_callback_ = NULL; | |
1147 | 1150 |
1148 Monitor* Isolate::isolates_list_monitor_ = NULL; | 1151 Monitor* Isolate::isolates_list_monitor_ = NULL; |
1149 Isolate* Isolate::isolates_list_head_ = NULL; | 1152 Isolate* Isolate::isolates_list_head_ = NULL; |
1150 | 1153 |
1151 | 1154 |
1152 void Isolate::VisitObjectPointers(ObjectPointerVisitor* visitor, | 1155 void Isolate::VisitObjectPointers(ObjectPointerVisitor* visitor, |
1153 bool visit_prologue_weak_handles, | 1156 bool visit_prologue_weak_handles, |
1154 bool validate_frames) { | 1157 bool validate_frames) { |
1155 ASSERT(visitor != NULL); | 1158 ASSERT(visitor != NULL); |
1156 | 1159 |
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1643 serialized_message_, serialized_message_len_); | 1646 serialized_message_, serialized_message_len_); |
1644 } | 1647 } |
1645 | 1648 |
1646 | 1649 |
1647 void IsolateSpawnState::Cleanup() { | 1650 void IsolateSpawnState::Cleanup() { |
1648 SwitchIsolateScope switch_scope(I); | 1651 SwitchIsolateScope switch_scope(I); |
1649 Dart::ShutdownIsolate(); | 1652 Dart::ShutdownIsolate(); |
1650 } | 1653 } |
1651 | 1654 |
1652 } // namespace dart | 1655 } // namespace dart |
OLD | NEW |