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/base_isolate.h" | 10 #include "vm/base_isolate.h" |
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
662 object& object##Handle() const { \ | 662 object& object##Handle() const { \ |
663 return *object##_handle_; \ | 663 return *object##_handle_; \ |
664 } | 664 } |
665 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE) | 665 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE) |
666 #undef REUSABLE_HANDLE | 666 #undef REUSABLE_HANDLE |
667 | 667 |
668 static void VisitIsolates(IsolateVisitor* visitor); | 668 static void VisitIsolates(IsolateVisitor* visitor); |
669 | 669 |
670 Counters* counters() { return &counters_; } | 670 Counters* counters() { return &counters_; } |
671 | 671 |
| 672 // Handle service messages until we are told to resume execution. |
| 673 void PauseEventHandler(); |
| 674 |
672 private: | 675 private: |
673 Isolate(); | 676 Isolate(); |
674 explicit Isolate(Isolate* original); | 677 explicit Isolate(Isolate* original); |
675 | 678 |
676 void BuildName(const char* name_prefix); | 679 void BuildName(const char* name_prefix); |
677 void PrintInvokedFunctions(); | 680 void PrintInvokedFunctions(); |
678 | 681 |
679 void ProfileIdle(); | 682 void ProfileIdle(); |
680 | 683 |
681 void set_user_tag(uword tag) { | 684 void set_user_tag(uword tag) { |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 Metric* metrics_list_head_; | 770 Metric* metrics_list_head_; |
768 | 771 |
769 Counters counters_; | 772 Counters counters_; |
770 | 773 |
771 // TODO(23153): Move this out of Isolate/Thread. | 774 // TODO(23153): Move this out of Isolate/Thread. |
772 CHA* cha_; | 775 CHA* cha_; |
773 | 776 |
774 // Isolate list next pointer. | 777 // Isolate list next pointer. |
775 Isolate* next_; | 778 Isolate* next_; |
776 | 779 |
| 780 // Used to wake the isolate when it is in the pause event loop. |
| 781 Monitor* pause_loop_monitor_; |
| 782 |
777 // Reusable handles support. | 783 // Reusable handles support. |
778 #define REUSABLE_HANDLE_FIELDS(object) \ | 784 #define REUSABLE_HANDLE_FIELDS(object) \ |
779 object* object##_handle_; | 785 object* object##_handle_; |
780 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_FIELDS) | 786 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_FIELDS) |
781 #undef REUSABLE_HANDLE_FIELDS | 787 #undef REUSABLE_HANDLE_FIELDS |
782 | 788 |
783 #if defined(DEBUG) | 789 #if defined(DEBUG) |
784 #define REUSABLE_HANDLE_SCOPE_VARIABLE(object) \ | 790 #define REUSABLE_HANDLE_SCOPE_VARIABLE(object) \ |
785 bool reusable_##object##_handle_scope_active_; | 791 bool reusable_##object##_handle_scope_active_; |
786 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_VARIABLE); | 792 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_VARIABLE); |
(...skipping 11 matching lines...) Expand all Loading... |
798 static Dart_IsolateInterruptCallback interrupt_callback_; | 804 static Dart_IsolateInterruptCallback interrupt_callback_; |
799 static Dart_IsolateUnhandledExceptionCallback unhandled_exception_callback_; | 805 static Dart_IsolateUnhandledExceptionCallback unhandled_exception_callback_; |
800 static Dart_IsolateShutdownCallback shutdown_callback_; | 806 static Dart_IsolateShutdownCallback shutdown_callback_; |
801 static Dart_FileOpenCallback file_open_callback_; | 807 static Dart_FileOpenCallback file_open_callback_; |
802 static Dart_FileReadCallback file_read_callback_; | 808 static Dart_FileReadCallback file_read_callback_; |
803 static Dart_FileWriteCallback file_write_callback_; | 809 static Dart_FileWriteCallback file_write_callback_; |
804 static Dart_FileCloseCallback file_close_callback_; | 810 static Dart_FileCloseCallback file_close_callback_; |
805 static Dart_EntropySource entropy_source_callback_; | 811 static Dart_EntropySource entropy_source_callback_; |
806 static Dart_IsolateInterruptCallback vmstats_callback_; | 812 static Dart_IsolateInterruptCallback vmstats_callback_; |
807 | 813 |
| 814 static void WakePauseEventHandler(Dart_Isolate isolate); |
| 815 |
808 // Manage list of existing isolates. | 816 // Manage list of existing isolates. |
809 static void AddIsolateTolist(Isolate* isolate); | 817 static void AddIsolateTolist(Isolate* isolate); |
810 static void RemoveIsolateFromList(Isolate* isolate); | 818 static void RemoveIsolateFromList(Isolate* isolate); |
811 static void CheckForDuplicateThreadState(InterruptableThreadState* state); | 819 static void CheckForDuplicateThreadState(InterruptableThreadState* state); |
812 | 820 |
813 static Monitor* isolates_list_monitor_; // Protects isolates_list_head_ | 821 static Monitor* isolates_list_monitor_; // Protects isolates_list_head_ |
814 static Isolate* isolates_list_head_; | 822 static Isolate* isolates_list_head_; |
815 | 823 |
816 #define REUSABLE_FRIEND_DECLARATION(name) \ | 824 #define REUSABLE_FRIEND_DECLARATION(name) \ |
817 friend class Reusable##name##HandleScope; | 825 friend class Reusable##name##HandleScope; |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 uint8_t* serialized_args_; | 958 uint8_t* serialized_args_; |
951 intptr_t serialized_args_len_; | 959 intptr_t serialized_args_len_; |
952 uint8_t* serialized_message_; | 960 uint8_t* serialized_message_; |
953 intptr_t serialized_message_len_; | 961 intptr_t serialized_message_len_; |
954 bool paused_; | 962 bool paused_; |
955 }; | 963 }; |
956 | 964 |
957 } // namespace dart | 965 } // namespace dart |
958 | 966 |
959 #endif // VM_ISOLATE_H_ | 967 #endif // VM_ISOLATE_H_ |
OLD | NEW |