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 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
548 metrics_list_head_(NULL), | 548 metrics_list_head_(NULL), |
549 next_(NULL), | 549 next_(NULL), |
550 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS) | 550 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS) |
551 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT) | 551 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT) |
552 reusable_handles_() { | 552 reusable_handles_() { |
553 } | 553 } |
554 #undef REUSABLE_HANDLE_SCOPE_INIT | 554 #undef REUSABLE_HANDLE_SCOPE_INIT |
555 #undef REUSABLE_HANDLE_INITIALIZERS | 555 #undef REUSABLE_HANDLE_INITIALIZERS |
556 | 556 |
557 Isolate::~Isolate() { | 557 Isolate::~Isolate() { |
558 delete [] name_; | 558 free(name_); |
559 delete heap_; | 559 delete heap_; |
560 delete object_store_; | 560 delete object_store_; |
561 delete api_state_; | 561 delete api_state_; |
562 delete stub_code_; | 562 delete stub_code_; |
563 delete debugger_; | 563 delete debugger_; |
564 #if defined(USING_SIMULATOR) | 564 #if defined(USING_SIMULATOR) |
565 delete simulator_; | 565 delete simulator_; |
566 #endif | 566 #endif |
567 delete mutex_; | 567 delete mutex_; |
568 mutex_ = NULL; // Fail fast if interrupts are scheduled on a dead isolate. | 568 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... |
676 | 676 |
677 return result; | 677 return result; |
678 } | 678 } |
679 | 679 |
680 | 680 |
681 void Isolate::BuildName(const char* name_prefix) { | 681 void Isolate::BuildName(const char* name_prefix) { |
682 ASSERT(name_ == NULL); | 682 ASSERT(name_ == NULL); |
683 if (name_prefix == NULL) { | 683 if (name_prefix == NULL) { |
684 name_prefix = "isolate"; | 684 name_prefix = "isolate"; |
685 } | 685 } |
| 686 if (Service::IsServiceIsolateName(name_prefix)) { |
| 687 name_ = strdup(name_prefix); |
| 688 return; |
| 689 } |
686 const char* kFormat = "%s-%lld"; | 690 const char* kFormat = "%s-%lld"; |
687 intptr_t len = OS::SNPrint(NULL, 0, kFormat, name_prefix, main_port()) + 1; | 691 intptr_t len = OS::SNPrint(NULL, 0, kFormat, name_prefix, main_port()) + 1; |
688 name_ = new char[len]; | 692 name_ = reinterpret_cast<char*>(malloc(len)); |
689 OS::SNPrint(name_, len, kFormat, name_prefix, main_port()); | 693 OS::SNPrint(name_, len, kFormat, name_prefix, main_port()); |
690 } | 694 } |
691 | 695 |
692 | 696 |
693 // TODO(5411455): Use flag to override default value and Validate the | 697 // TODO(5411455): Use flag to override default value and Validate the |
694 // stack size by querying OS. | 698 // stack size by querying OS. |
695 uword Isolate::GetSpecifiedStackSize() { | 699 uword Isolate::GetSpecifiedStackSize() { |
696 ASSERT(Isolate::kStackSizeBuffer < OSThread::GetMaxStackSize()); | 700 ASSERT(Isolate::kStackSizeBuffer < OSThread::GetMaxStackSize()); |
697 uword stack_size = OSThread::GetMaxStackSize() - Isolate::kStackSizeBuffer; | 701 uword stack_size = OSThread::GetMaxStackSize() - Isolate::kStackSizeBuffer; |
698 return stack_size; | 702 return stack_size; |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1139 Dart_IsolateInterruptCallback Isolate::interrupt_callback_ = NULL; | 1143 Dart_IsolateInterruptCallback Isolate::interrupt_callback_ = NULL; |
1140 Dart_IsolateUnhandledExceptionCallback | 1144 Dart_IsolateUnhandledExceptionCallback |
1141 Isolate::unhandled_exception_callback_ = NULL; | 1145 Isolate::unhandled_exception_callback_ = NULL; |
1142 Dart_IsolateShutdownCallback Isolate::shutdown_callback_ = NULL; | 1146 Dart_IsolateShutdownCallback Isolate::shutdown_callback_ = NULL; |
1143 Dart_FileOpenCallback Isolate::file_open_callback_ = NULL; | 1147 Dart_FileOpenCallback Isolate::file_open_callback_ = NULL; |
1144 Dart_FileReadCallback Isolate::file_read_callback_ = NULL; | 1148 Dart_FileReadCallback Isolate::file_read_callback_ = NULL; |
1145 Dart_FileWriteCallback Isolate::file_write_callback_ = NULL; | 1149 Dart_FileWriteCallback Isolate::file_write_callback_ = NULL; |
1146 Dart_FileCloseCallback Isolate::file_close_callback_ = NULL; | 1150 Dart_FileCloseCallback Isolate::file_close_callback_ = NULL; |
1147 Dart_EntropySource Isolate::entropy_source_callback_ = NULL; | 1151 Dart_EntropySource Isolate::entropy_source_callback_ = NULL; |
1148 Dart_IsolateInterruptCallback Isolate::vmstats_callback_ = NULL; | 1152 Dart_IsolateInterruptCallback Isolate::vmstats_callback_ = NULL; |
1149 Dart_ServiceIsolateCreateCalback Isolate::service_create_callback_ = NULL; | |
1150 | 1153 |
1151 Monitor* Isolate::isolates_list_monitor_ = NULL; | 1154 Monitor* Isolate::isolates_list_monitor_ = NULL; |
1152 Isolate* Isolate::isolates_list_head_ = NULL; | 1155 Isolate* Isolate::isolates_list_head_ = NULL; |
1153 | 1156 |
1154 | 1157 |
1155 void Isolate::VisitObjectPointers(ObjectPointerVisitor* visitor, | 1158 void Isolate::VisitObjectPointers(ObjectPointerVisitor* visitor, |
1156 bool visit_prologue_weak_handles, | 1159 bool visit_prologue_weak_handles, |
1157 bool validate_frames) { | 1160 bool validate_frames) { |
1158 ASSERT(visitor != NULL); | 1161 ASSERT(visitor != NULL); |
1159 | 1162 |
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1631 serialized_message_, serialized_message_len_); | 1634 serialized_message_, serialized_message_len_); |
1632 } | 1635 } |
1633 | 1636 |
1634 | 1637 |
1635 void IsolateSpawnState::Cleanup() { | 1638 void IsolateSpawnState::Cleanup() { |
1636 SwitchIsolateScope switch_scope(I); | 1639 SwitchIsolateScope switch_scope(I); |
1637 Dart::ShutdownIsolate(); | 1640 Dart::ShutdownIsolate(); |
1638 } | 1641 } |
1639 | 1642 |
1640 } // namespace dart | 1643 } // namespace dart |
OLD | NEW |