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" |
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/handles.h" | 13 #include "vm/handles.h" |
14 #include "vm/megamorphic_cache_table.h" | 14 #include "vm/megamorphic_cache_table.h" |
15 #include "vm/metrics.h" | 15 #include "vm/metrics.h" |
16 #include "vm/random.h" | 16 #include "vm/random.h" |
17 #include "vm/tags.h" | 17 #include "vm/tags.h" |
18 #include "vm/thread.h" | 18 #include "vm/thread.h" |
19 #include "vm/os_thread.h" | 19 #include "vm/os_thread.h" |
20 #include "vm/timer.h" | 20 #include "vm/timer.h" |
21 #include "vm/token_position.h" | 21 #include "vm/token_position.h" |
22 #include "vm/growable_array.h" | |
23 | 22 |
24 namespace dart { | 23 namespace dart { |
25 | 24 |
26 // Forward declarations. | 25 // Forward declarations. |
27 class ApiState; | 26 class ApiState; |
28 class BackgroundCompiler; | 27 class BackgroundCompiler; |
29 class Capability; | 28 class Capability; |
30 class CodeIndexTable; | 29 class CodeIndexTable; |
31 class CompilerStats; | 30 class CompilerStats; |
32 class Debugger; | 31 class Debugger; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 class ServiceIdZone; | 63 class ServiceIdZone; |
65 class Simulator; | 64 class Simulator; |
66 class StackResource; | 65 class StackResource; |
67 class StackZone; | 66 class StackZone; |
68 class StoreBuffer; | 67 class StoreBuffer; |
69 class StubCode; | 68 class StubCode; |
70 class ThreadRegistry; | 69 class ThreadRegistry; |
71 class UserTag; | 70 class UserTag; |
72 | 71 |
73 | 72 |
74 class PendingLazyDeopt { | |
75 public: | |
76 PendingLazyDeopt(uword fp, uword pc) : fp_(fp), pc_(pc) { } | |
77 uword fp() { return fp_; } | |
78 uword pc() { return pc_; } | |
79 | |
80 private: | |
81 uword fp_; | |
82 uword pc_; | |
83 }; | |
84 | |
85 | |
86 class IsolateVisitor { | 73 class IsolateVisitor { |
87 public: | 74 public: |
88 IsolateVisitor() {} | 75 IsolateVisitor() {} |
89 virtual ~IsolateVisitor() {} | 76 virtual ~IsolateVisitor() {} |
90 | 77 |
91 virtual void VisitIsolate(Isolate* isolate) = 0; | 78 virtual void VisitIsolate(Isolate* isolate) = 0; |
92 | 79 |
93 private: | 80 private: |
94 DISALLOW_COPY_AND_ASSIGN(IsolateVisitor); | 81 DISALLOW_COPY_AND_ASSIGN(IsolateVisitor); |
95 }; | 82 }; |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 return shutdown_callback_; | 383 return shutdown_callback_; |
397 } | 384 } |
398 | 385 |
399 void set_object_id_ring(ObjectIdRing* ring) { | 386 void set_object_id_ring(ObjectIdRing* ring) { |
400 object_id_ring_ = ring; | 387 object_id_ring_ = ring; |
401 } | 388 } |
402 ObjectIdRing* object_id_ring() { | 389 ObjectIdRing* object_id_ring() { |
403 return object_id_ring_; | 390 return object_id_ring_; |
404 } | 391 } |
405 | 392 |
406 MallocGrowableArray<PendingLazyDeopt>* pending_deopts() { | |
407 return pending_deopts_; | |
408 } | |
409 bool IsDeoptimizing() const { return deopt_context_ != NULL; } | 393 bool IsDeoptimizing() const { return deopt_context_ != NULL; } |
410 DeoptContext* deopt_context() const { return deopt_context_; } | 394 DeoptContext* deopt_context() const { return deopt_context_; } |
411 void set_deopt_context(DeoptContext* value) { | 395 void set_deopt_context(DeoptContext* value) { |
412 ASSERT(value == NULL || deopt_context_ == NULL); | 396 ASSERT(value == NULL || deopt_context_ == NULL); |
413 deopt_context_ = value; | 397 deopt_context_ = value; |
414 } | 398 } |
415 | 399 |
416 BackgroundCompiler* background_compiler() const { | 400 BackgroundCompiler* background_compiler() const { |
417 return background_compiler_; | 401 return background_compiler_; |
418 } | 402 } |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
749 Mutex* symbols_mutex_; // Protects concurrent access to the symbol table. | 733 Mutex* symbols_mutex_; // Protects concurrent access to the symbol table. |
750 Mutex* type_canonicalization_mutex_; // Protects type canonicalization. | 734 Mutex* type_canonicalization_mutex_; // Protects type canonicalization. |
751 Mutex* constant_canonicalization_mutex_; // Protects const canonicalization. | 735 Mutex* constant_canonicalization_mutex_; // Protects const canonicalization. |
752 Mutex* megamorphic_lookup_mutex_; // Protects megamorphic table lookup. | 736 Mutex* megamorphic_lookup_mutex_; // Protects megamorphic table lookup. |
753 MessageHandler* message_handler_; | 737 MessageHandler* message_handler_; |
754 IsolateSpawnState* spawn_state_; | 738 IsolateSpawnState* spawn_state_; |
755 bool is_runnable_; | 739 bool is_runnable_; |
756 Dart_GcPrologueCallback gc_prologue_callback_; | 740 Dart_GcPrologueCallback gc_prologue_callback_; |
757 Dart_GcEpilogueCallback gc_epilogue_callback_; | 741 Dart_GcEpilogueCallback gc_epilogue_callback_; |
758 intptr_t defer_finalization_count_; | 742 intptr_t defer_finalization_count_; |
759 MallocGrowableArray<PendingLazyDeopt>* pending_deopts_; | |
760 DeoptContext* deopt_context_; | 743 DeoptContext* deopt_context_; |
761 | 744 |
762 bool is_service_isolate_; | 745 bool is_service_isolate_; |
763 | 746 |
764 // Isolate-specific flags. | 747 // Isolate-specific flags. |
765 NOT_IN_PRODUCT( | 748 NOT_IN_PRODUCT( |
766 bool type_checks_; | 749 bool type_checks_; |
767 bool asserts_; | 750 bool asserts_; |
768 bool error_on_bad_type_; | 751 bool error_on_bad_type_; |
769 bool error_on_bad_override_; | 752 bool error_on_bad_override_; |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1007 intptr_t* spawn_count_; | 990 intptr_t* spawn_count_; |
1008 | 991 |
1009 Dart_IsolateFlags isolate_flags_; | 992 Dart_IsolateFlags isolate_flags_; |
1010 bool paused_; | 993 bool paused_; |
1011 bool errors_are_fatal_; | 994 bool errors_are_fatal_; |
1012 }; | 995 }; |
1013 | 996 |
1014 } // namespace dart | 997 } // namespace dart |
1015 | 998 |
1016 #endif // VM_ISOLATE_H_ | 999 #endif // VM_ISOLATE_H_ |
OLD | NEW |