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 RUNTIME_VM_ISOLATE_H_ | 5 #ifndef RUNTIME_VM_ISOLATE_H_ |
6 #define RUNTIME_VM_ISOLATE_H_ | 6 #define RUNTIME_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 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 static inline Isolate* Current() { | 171 static inline Isolate* Current() { |
172 Thread* thread = Thread::Current(); | 172 Thread* thread = Thread::Current(); |
173 return thread == NULL ? NULL : thread->isolate(); | 173 return thread == NULL ? NULL : thread->isolate(); |
174 } | 174 } |
175 | 175 |
176 // Register a newly introduced class. | 176 // Register a newly introduced class. |
177 void RegisterClass(const Class& cls); | 177 void RegisterClass(const Class& cls); |
178 void RegisterClassAt(intptr_t index, const Class& cls); | 178 void RegisterClassAt(intptr_t index, const Class& cls); |
179 void ValidateClassTable(); | 179 void ValidateClassTable(); |
180 | 180 |
181 // Visit all object pointers. | |
182 void IterateObjectPointers(ObjectPointerVisitor* visitor, | |
183 bool validate_frames); | |
184 void IterateStackPointers(ObjectPointerVisitor* visitor, | |
185 bool validate_frames); | |
186 | |
187 // Visits weak object pointers. | 181 // Visits weak object pointers. |
188 void VisitWeakPersistentHandles(HandleVisitor* visitor); | 182 void VisitWeakPersistentHandles(HandleVisitor* visitor); |
189 | 183 |
190 // Prepares all threads in an isolate for Garbage Collection. | 184 // Prepares all threads in an isolate for Garbage Collection. |
191 void PrepareForGC(); | 185 void PrepareForGC(); |
192 | 186 |
193 StoreBuffer* store_buffer() { return store_buffer_; } | 187 StoreBuffer* store_buffer() { return store_buffer_; } |
194 | 188 |
195 ThreadRegistry* thread_registry() const { return thread_registry_; } | 189 ThreadRegistry* thread_registry() const { return thread_registry_; } |
196 SafepointHandler* safepoint_handler() const { return safepoint_handler_; } | 190 SafepointHandler* safepoint_handler() const { return safepoint_handler_; } |
(...skipping 725 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
922 static bool creation_enabled_; | 916 static bool creation_enabled_; |
923 | 917 |
924 #define REUSABLE_FRIEND_DECLARATION(name) \ | 918 #define REUSABLE_FRIEND_DECLARATION(name) \ |
925 friend class Reusable##name##HandleScope; | 919 friend class Reusable##name##HandleScope; |
926 REUSABLE_HANDLE_LIST(REUSABLE_FRIEND_DECLARATION) | 920 REUSABLE_HANDLE_LIST(REUSABLE_FRIEND_DECLARATION) |
927 #undef REUSABLE_FRIEND_DECLARATION | 921 #undef REUSABLE_FRIEND_DECLARATION |
928 | 922 |
929 friend class Become; // VisitObjectPointers | 923 friend class Become; // VisitObjectPointers |
930 friend class GCMarker; // VisitObjectPointers | 924 friend class GCMarker; // VisitObjectPointers |
931 friend class SafepointHandler; | 925 friend class SafepointHandler; |
| 926 friend class ObjectGraph; // VisitObjectPointers |
932 friend class Scavenger; // VisitObjectPointers | 927 friend class Scavenger; // VisitObjectPointers |
933 friend class ObjectGraph; // VisitObjectPointers | 928 friend class HeapIterationScope; // VisitObjectPointers |
934 friend class ServiceIsolate; | 929 friend class ServiceIsolate; |
935 friend class Thread; | 930 friend class Thread; |
936 friend class Timeline; | 931 friend class Timeline; |
937 friend class NoReloadScope; // reload_block | 932 friend class NoReloadScope; // reload_block |
938 | 933 |
939 DISALLOW_COPY_AND_ASSIGN(Isolate); | 934 DISALLOW_COPY_AND_ASSIGN(Isolate); |
940 }; | 935 }; |
941 | 936 |
942 // When we need to execute code in an isolate, we use the | 937 // When we need to execute code in an isolate, we use the |
943 // StartIsolateScope. | 938 // StartIsolateScope. |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1060 intptr_t* spawn_count_; | 1055 intptr_t* spawn_count_; |
1061 | 1056 |
1062 Dart_IsolateFlags isolate_flags_; | 1057 Dart_IsolateFlags isolate_flags_; |
1063 bool paused_; | 1058 bool paused_; |
1064 bool errors_are_fatal_; | 1059 bool errors_are_fatal_; |
1065 }; | 1060 }; |
1066 | 1061 |
1067 } // namespace dart | 1062 } // namespace dart |
1068 | 1063 |
1069 #endif // RUNTIME_VM_ISOLATE_H_ | 1064 #endif // RUNTIME_VM_ISOLATE_H_ |
OLD | NEW |