| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 | 8 |
| 9 #include "vm/assert.h" | 9 #include "vm/assert.h" |
| 10 #include "vm/bigint_store.h" | 10 #include "vm/bigint_store.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 DEFINE_FLAG(bool, report_invocation_count, false, | 29 DEFINE_FLAG(bool, report_invocation_count, false, |
| 30 "Count function invocations and report."); | 30 "Count function invocations and report."); |
| 31 DECLARE_FLAG(bool, generate_gdb_symbols); | 31 DECLARE_FLAG(bool, generate_gdb_symbols); |
| 32 | 32 |
| 33 | 33 |
| 34 Isolate::Isolate() | 34 Isolate::Isolate() |
| 35 : store_buffer_(), | 35 : store_buffer_(), |
| 36 message_queue_(NULL), | 36 message_queue_(NULL), |
| 37 post_message_callback_(NULL), | 37 post_message_callback_(NULL), |
| 38 close_port_callback_(NULL), | 38 close_port_callback_(NULL), |
| 39 active_ports_(0), | 39 num_ports_(0), |
| 40 live_ports_(0), |
| 41 main_port_(0), |
| 40 heap_(NULL), | 42 heap_(NULL), |
| 41 object_store_(NULL), | 43 object_store_(NULL), |
| 42 top_resource_(NULL), | 44 top_resource_(NULL), |
| 43 top_context_(Context::null()), | 45 top_context_(Context::null()), |
| 44 current_zone_(NULL), | 46 current_zone_(NULL), |
| 45 #if defined(DEBUG) | 47 #if defined(DEBUG) |
| 46 no_gc_scope_depth_(0), | 48 no_gc_scope_depth_(0), |
| 47 no_handle_scope_depth_(0), | 49 no_handle_scope_depth_(0), |
| 48 top_handle_scope_(NULL), | 50 top_handle_scope_(NULL), |
| 49 #endif | 51 #endif |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 // Setup the Dart API state. | 120 // Setup the Dart API state. |
| 119 ApiState* state = new ApiState(); | 121 ApiState* state = new ApiState(); |
| 120 ASSERT(state != NULL); | 122 ASSERT(state != NULL); |
| 121 result->set_api_state(state); | 123 result->set_api_state(state); |
| 122 | 124 |
| 123 // Initialize stack top and limit in case we are running the isolate in the | 125 // Initialize stack top and limit in case we are running the isolate in the |
| 124 // main thread. | 126 // main thread. |
| 125 // TODO(5411455): Need to figure out how to set the stack limit for the | 127 // TODO(5411455): Need to figure out how to set the stack limit for the |
| 126 // main thread. | 128 // main thread. |
| 127 result->SetStackLimitFromCurrentTOS(reinterpret_cast<uword>(&result)); | 129 result->SetStackLimitFromCurrentTOS(reinterpret_cast<uword>(&result)); |
| 130 result->set_main_port(PortMap::CreatePort()); |
| 128 | 131 |
| 129 return result; | 132 return result; |
| 130 } | 133 } |
| 131 | 134 |
| 132 | 135 |
| 133 // TODO(5411455): Use flag to override default value and Validate the | 136 // TODO(5411455): Use flag to override default value and Validate the |
| 134 // stack size by querying OS. | 137 // stack size by querying OS. |
| 135 uword Isolate::GetSpecifiedStackSize() { | 138 uword Isolate::GetSpecifiedStackSize() { |
| 136 uword stack_size = Isolate::kDefaultStackSize - Isolate::kStackSizeBuffer; | 139 uword stack_size = Isolate::kDefaultStackSize - Isolate::kStackSizeBuffer; |
| 137 return stack_size; | 140 return stack_size; |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 Dart_IsolateInitCallback Isolate::InitCallback() { | 237 Dart_IsolateInitCallback Isolate::InitCallback() { |
| 235 return init_callback_; | 238 return init_callback_; |
| 236 } | 239 } |
| 237 | 240 |
| 238 | 241 |
| 239 void Isolate::StandardRunLoop() { | 242 void Isolate::StandardRunLoop() { |
| 240 ASSERT(long_jump_base() != NULL); | 243 ASSERT(long_jump_base() != NULL); |
| 241 ASSERT(post_message_callback() == &StandardPostMessageCallback); | 244 ASSERT(post_message_callback() == &StandardPostMessageCallback); |
| 242 ASSERT(close_port_callback() == &StandardClosePortCallback); | 245 ASSERT(close_port_callback() == &StandardClosePortCallback); |
| 243 | 246 |
| 244 while (active_ports() > 0) { | 247 while (live_ports() > 0) { |
| 245 ASSERT(this == Isolate::Current()); | 248 ASSERT(this == Isolate::Current()); |
| 246 Zone zone(this); | 249 Zone zone(this); |
| 247 HandleScope handle_scope(this); | 250 HandleScope handle_scope(this); |
| 248 | 251 |
| 249 PortMessage* message = message_queue()->Dequeue(0); | 252 PortMessage* message = message_queue()->Dequeue(0); |
| 250 if (message != NULL) { | 253 if (message != NULL) { |
| 251 Dart_EnterScope(); | 254 Dart_EnterScope(); |
| 252 Dart_Handle result = Dart_HandleMessage( | 255 Dart_Handle result = Dart_HandleMessage( |
| 253 message->dest_port(), message->reply_port(), message->data()); | 256 message->dest_port(), message->reply_port(), message->data()); |
| 254 if (Dart_IsError(result)) { | 257 if (Dart_IsError(result)) { |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 // Visit all objects in the code index table. | 298 // Visit all objects in the code index table. |
| 296 if (code_index_table() != NULL) { | 299 if (code_index_table() != NULL) { |
| 297 code_index_table()->VisitObjectPointers(visitor); | 300 code_index_table()->VisitObjectPointers(visitor); |
| 298 } | 301 } |
| 299 | 302 |
| 300 // Visit the top context which is stored in the isolate. | 303 // Visit the top context which is stored in the isolate. |
| 301 visitor->VisitPointer(reinterpret_cast<RawObject**>(&top_context_)); | 304 visitor->VisitPointer(reinterpret_cast<RawObject**>(&top_context_)); |
| 302 } | 305 } |
| 303 | 306 |
| 304 } // namespace dart | 307 } // namespace dart |
| OLD | NEW |