Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: runtime/vm/isolate.cc

Issue 8588040: Add a mid-sized integration test for the Dart Embedding Api which (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/port.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/port.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698