| 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 #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 "vm/atomic.h" | 10 #include "vm/atomic.h" |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 kVMInterrupt = 0x1, // Internal VM checks: safepoints, store buffers, etc. | 279 kVMInterrupt = 0x1, // Internal VM checks: safepoints, store buffers, etc. |
| 280 kMessageInterrupt = 0x2, // An interrupt to process an out of band message. | 280 kMessageInterrupt = 0x2, // An interrupt to process an out of band message. |
| 281 | 281 |
| 282 kInterruptsMask = (kVMInterrupt | kMessageInterrupt), | 282 kInterruptsMask = (kVMInterrupt | kMessageInterrupt), |
| 283 }; | 283 }; |
| 284 | 284 |
| 285 void ScheduleInterrupts(uword interrupt_bits); | 285 void ScheduleInterrupts(uword interrupt_bits); |
| 286 RawError* HandleInterrupts(); | 286 RawError* HandleInterrupts(); |
| 287 uword GetAndClearInterrupts(); | 287 uword GetAndClearInterrupts(); |
| 288 | 288 |
| 289 void DeferMessageInterrupts(); |
| 290 void RestoreMessageInterrupts(); |
| 291 |
| 289 // Marks all libraries as loaded. | 292 // Marks all libraries as loaded. |
| 290 void DoneLoading(); | 293 void DoneLoading(); |
| 291 | 294 |
| 292 bool MakeRunnable(); | 295 bool MakeRunnable(); |
| 293 void Run(); | 296 void Run(); |
| 294 | 297 |
| 295 MessageHandler* message_handler() const { return message_handler_; } | 298 MessageHandler* message_handler() const { return message_handler_; } |
| 296 void set_message_handler(MessageHandler* value) { message_handler_ = value; } | 299 void set_message_handler(MessageHandler* value) { message_handler_ = value; } |
| 297 | 300 |
| 298 bool is_runnable() const { return is_runnable_; } | 301 bool is_runnable() const { return is_runnable_; } |
| (...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 ApiState* api_state_; | 740 ApiState* api_state_; |
| 738 Debugger* debugger_; | 741 Debugger* debugger_; |
| 739 bool resume_request_; | 742 bool resume_request_; |
| 740 int64_t last_resume_timestamp_; | 743 int64_t last_resume_timestamp_; |
| 741 bool has_compiled_code_; // Can check that no compilation occured. | 744 bool has_compiled_code_; // Can check that no compilation occured. |
| 742 Flags flags_; | 745 Flags flags_; |
| 743 Random random_; | 746 Random random_; |
| 744 Simulator* simulator_; | 747 Simulator* simulator_; |
| 745 Mutex* mutex_; // protects stack_limit_, saved_stack_limit_, compiler stats. | 748 Mutex* mutex_; // protects stack_limit_, saved_stack_limit_, compiler stats. |
| 746 uword saved_stack_limit_; | 749 uword saved_stack_limit_; |
| 750 uword deferred_interrupts_mask_; |
| 751 uword deferred_interrupts_; |
| 747 uword stack_overflow_flags_; | 752 uword stack_overflow_flags_; |
| 748 int32_t stack_overflow_count_; | 753 int32_t stack_overflow_count_; |
| 749 MessageHandler* message_handler_; | 754 MessageHandler* message_handler_; |
| 750 IsolateSpawnState* spawn_state_; | 755 IsolateSpawnState* spawn_state_; |
| 751 bool is_runnable_; | 756 bool is_runnable_; |
| 752 Dart_GcPrologueCallback gc_prologue_callback_; | 757 Dart_GcPrologueCallback gc_prologue_callback_; |
| 753 Dart_GcEpilogueCallback gc_epilogue_callback_; | 758 Dart_GcEpilogueCallback gc_epilogue_callback_; |
| 754 intptr_t defer_finalization_count_; | 759 intptr_t defer_finalization_count_; |
| 755 DeoptContext* deopt_context_; | 760 DeoptContext* deopt_context_; |
| 756 | 761 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 857 friend class Reusable##name##HandleScope; | 862 friend class Reusable##name##HandleScope; |
| 858 REUSABLE_HANDLE_LIST(REUSABLE_FRIEND_DECLARATION) | 863 REUSABLE_HANDLE_LIST(REUSABLE_FRIEND_DECLARATION) |
| 859 #undef REUSABLE_FRIEND_DECLARATION | 864 #undef REUSABLE_FRIEND_DECLARATION |
| 860 | 865 |
| 861 friend class GCMarker; // VisitObjectPointers | 866 friend class GCMarker; // VisitObjectPointers |
| 862 friend class SafepointHandler; | 867 friend class SafepointHandler; |
| 863 friend class Scavenger; // VisitObjectPointers | 868 friend class Scavenger; // VisitObjectPointers |
| 864 friend class ServiceIsolate; | 869 friend class ServiceIsolate; |
| 865 friend class Thread; | 870 friend class Thread; |
| 866 friend class Timeline; | 871 friend class Timeline; |
| 872 friend class IsolateTestHelper; |
| 867 | 873 |
| 868 DISALLOW_COPY_AND_ASSIGN(Isolate); | 874 DISALLOW_COPY_AND_ASSIGN(Isolate); |
| 869 }; | 875 }; |
| 870 | 876 |
| 871 | 877 |
| 872 // When we need to execute code in an isolate, we use the | 878 // When we need to execute code in an isolate, we use the |
| 873 // StartIsolateScope. | 879 // StartIsolateScope. |
| 874 class StartIsolateScope { | 880 class StartIsolateScope { |
| 875 public: | 881 public: |
| 876 explicit StartIsolateScope(Isolate* new_isolate) | 882 explicit StartIsolateScope(Isolate* new_isolate) |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 991 intptr_t* spawn_count_; | 997 intptr_t* spawn_count_; |
| 992 | 998 |
| 993 Isolate::Flags isolate_flags_; | 999 Isolate::Flags isolate_flags_; |
| 994 bool paused_; | 1000 bool paused_; |
| 995 bool errors_are_fatal_; | 1001 bool errors_are_fatal_; |
| 996 }; | 1002 }; |
| 997 | 1003 |
| 998 } // namespace dart | 1004 } // namespace dart |
| 999 | 1005 |
| 1000 #endif // VM_ISOLATE_H_ | 1006 #endif // VM_ISOLATE_H_ |
| OLD | NEW |