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

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

Issue 13813018: Changelist to land https://codereview.chromium.org/13452007/ for Siva. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 8 months 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/dart_api_impl_test.cc ('k') | runtime/vm/isolate.cc » ('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) 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 #ifndef VM_ISOLATE_H_ 5 #ifndef VM_ISOLATE_H_
6 #define VM_ISOLATE_H_ 6 #define VM_ISOLATE_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/thread.h" 10 #include "platform/thread.h"
11 #include "vm/base_isolate.h" 11 #include "vm/base_isolate.h"
12 #include "vm/class_table.h" 12 #include "vm/class_table.h"
13 #include "vm/gc_callbacks.h" 13 #include "vm/gc_callbacks.h"
14 #include "vm/megamorphic_cache_table.h" 14 #include "vm/megamorphic_cache_table.h"
15 #include "vm/store_buffer.h" 15 #include "vm/store_buffer.h"
16 #include "vm/timer.h" 16 #include "vm/timer.h"
17 17
18 namespace dart { 18 namespace dart {
19 19
20 // Forward declarations. 20 // Forward declarations.
21 class ApiState; 21 class ApiState;
22 class CodeIndexTable; 22 class CodeIndexTable;
23 class Debugger; 23 class Debugger;
24 class Function;
24 class HandleScope; 25 class HandleScope;
25 class HandleVisitor; 26 class HandleVisitor;
26 class Heap; 27 class Heap;
27 class ICData; 28 class ICData;
28 class LongJump; 29 class LongJump;
29 class MessageHandler; 30 class MessageHandler;
30 class Mutex; 31 class Mutex;
31 class ObjectPointerVisitor; 32 class ObjectPointerVisitor;
32 class ObjectStore; 33 class ObjectStore;
33 class RawInstance; 34 class RawInstance;
34 class RawArray; 35 class RawArray;
35 class RawContext; 36 class RawContext;
36 class RawDouble; 37 class RawDouble;
37 class RawMint; 38 class RawMint;
39 class RawObject;
38 class RawInteger; 40 class RawInteger;
39 class RawError; 41 class RawError;
40 class Simulator; 42 class Simulator;
41 class StackResource; 43 class StackResource;
42 class StackZone; 44 class StackZone;
43 class StubCode; 45 class StubCode;
44 class RawFloat32x4; 46 class RawFloat32x4;
45 class RawUint32x4; 47 class RawUint32x4;
46 48
47 49
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 kInterruptsMask = 269 kInterruptsMask =
268 kApiInterrupt | 270 kApiInterrupt |
269 kMessageInterrupt | 271 kMessageInterrupt |
270 kStoreBufferInterrupt | 272 kStoreBufferInterrupt |
271 kVmStatusInterrupt, 273 kVmStatusInterrupt,
272 }; 274 };
273 275
274 void ScheduleInterrupts(uword interrupt_bits); 276 void ScheduleInterrupts(uword interrupt_bits);
275 uword GetAndClearInterrupts(); 277 uword GetAndClearInterrupts();
276 278
279 bool MakeRunnable();
280 void Run();
281
277 MessageHandler* message_handler() const { return message_handler_; } 282 MessageHandler* message_handler() const { return message_handler_; }
278 void set_message_handler(MessageHandler* value) { message_handler_ = value; } 283 void set_message_handler(MessageHandler* value) { message_handler_ = value; }
279 284
285 bool is_runnable() const { return is_runnable_; }
286 void set_is_runnable(bool value) { is_runnable_ = value; }
287
280 uword spawn_data() const { return spawn_data_; } 288 uword spawn_data() const { return spawn_data_; }
281 void set_spawn_data(uword value) { spawn_data_ = value; } 289 void set_spawn_data(uword value) { spawn_data_ = value; }
282 290
283 static const intptr_t kNoDeoptId = -1; 291 static const intptr_t kNoDeoptId = -1;
284 intptr_t deopt_id() const { return deopt_id_; } 292 intptr_t deopt_id() const { return deopt_id_; }
285 void set_deopt_id(int value) { 293 void set_deopt_id(int value) {
286 ASSERT(value >= 0); 294 ASSERT(value >= 0);
287 deopt_id_ = value; 295 deopt_id_ = value;
288 } 296 }
289 intptr_t GetNextDeoptId() { 297 intptr_t GetNextDeoptId() {
290 ASSERT(deopt_id_ != kNoDeoptId); 298 ASSERT(deopt_id_ != kNoDeoptId);
291 return deopt_id_++; 299 return deopt_id_++;
292 } 300 }
293 301
294 RawArray* ic_data_array() const { return ic_data_array_; } 302 RawArray* ic_data_array() const { return ic_data_array_; }
295 void set_ic_data_array(RawArray* value) { ic_data_array_ = value; } 303 void set_ic_data_array(RawArray* value) { ic_data_array_ = value; }
296 ICData* GetICDataForDeoptId(intptr_t deopt_id) const; 304 ICData* GetICDataForDeoptId(intptr_t deopt_id) const;
297 305
306 Mutex* mutex() const { return mutex_; }
307
298 Debugger* debugger() const { return debugger_; } 308 Debugger* debugger() const { return debugger_; }
299 309
300 Simulator* simulator() const { return simulator_; } 310 Simulator* simulator() const { return simulator_; }
301 void set_simulator(Simulator* value) { simulator_ = value; } 311 void set_simulator(Simulator* value) { simulator_ = value; }
302 312
303 GcPrologueCallbacks& gc_prologue_callbacks() { 313 GcPrologueCallbacks& gc_prologue_callbacks() {
304 return gc_prologue_callbacks_; 314 return gc_prologue_callbacks_;
305 } 315 }
306 316
307 GcEpilogueCallbacks& gc_epilogue_callbacks() { 317 GcEpilogueCallbacks& gc_epilogue_callbacks() {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 Simulator* simulator_; 466 Simulator* simulator_;
457 LongJump* long_jump_base_; 467 LongJump* long_jump_base_;
458 TimerList timer_list_; 468 TimerList timer_list_;
459 intptr_t deopt_id_; 469 intptr_t deopt_id_;
460 RawArray* ic_data_array_; 470 RawArray* ic_data_array_;
461 Mutex* mutex_; // protects stack_limit_ and saved_stack_limit_. 471 Mutex* mutex_; // protects stack_limit_ and saved_stack_limit_.
462 uword stack_limit_; 472 uword stack_limit_;
463 uword saved_stack_limit_; 473 uword saved_stack_limit_;
464 MessageHandler* message_handler_; 474 MessageHandler* message_handler_;
465 uword spawn_data_; 475 uword spawn_data_;
476 bool is_runnable_;
466 GcPrologueCallbacks gc_prologue_callbacks_; 477 GcPrologueCallbacks gc_prologue_callbacks_;
467 GcEpilogueCallbacks gc_epilogue_callbacks_; 478 GcEpilogueCallbacks gc_epilogue_callbacks_;
468 479
469 // Deoptimization support. 480 // Deoptimization support.
470 intptr_t* deopt_cpu_registers_copy_; 481 intptr_t* deopt_cpu_registers_copy_;
471 fpu_register_t* deopt_fpu_registers_copy_; 482 fpu_register_t* deopt_fpu_registers_copy_;
472 intptr_t* deopt_frame_copy_; 483 intptr_t* deopt_frame_copy_;
473 intptr_t deopt_frame_copy_size_; 484 intptr_t deopt_frame_copy_size_;
474 DeferredObject* deferred_objects_; 485 DeferredObject* deferred_objects_;
475 486
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 } 557 }
547 558
548 private: 559 private:
549 Isolate* new_isolate_; 560 Isolate* new_isolate_;
550 Isolate* saved_isolate_; 561 Isolate* saved_isolate_;
551 uword saved_stack_limit_; 562 uword saved_stack_limit_;
552 563
553 DISALLOW_COPY_AND_ASSIGN(SwitchIsolateScope); 564 DISALLOW_COPY_AND_ASSIGN(SwitchIsolateScope);
554 }; 565 };
555 566
567
568 class IsolateSpawnState {
569 public:
570 IsolateSpawnState(const Function& func, const Function& callback_func);
571 explicit IsolateSpawnState(const char* script_url);
572 ~IsolateSpawnState();
573
574 Isolate* isolate() const { return isolate_; }
575 void set_isolate(Isolate* value) { isolate_ = value; }
576 char* script_url() const { return script_url_; }
577 char* library_url() const { return library_url_; }
578 char* function_name() const { return function_name_; }
579 char* exception_callback_name() const { return exception_callback_name_; }
580
581 RawObject* ResolveFunction();
582 void Cleanup();
583
584 private:
585 Isolate* isolate_;
586 char* script_url_;
587 char* library_url_;
588 char* function_name_;
589 char* exception_callback_name_;
590 };
591
556 } // namespace dart 592 } // namespace dart
557 593
558 #endif // VM_ISOLATE_H_ 594 #endif // VM_ISOLATE_H_
OLDNEW
« no previous file with comments | « runtime/vm/dart_api_impl_test.cc ('k') | runtime/vm/isolate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698