OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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_THREAD_H_ | 5 #ifndef VM_THREAD_H_ |
6 #define VM_THREAD_H_ | 6 #define VM_THREAD_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/bitfield.h" | 11 #include "vm/bitfield.h" |
12 #include "vm/globals.h" | 12 #include "vm/globals.h" |
13 #include "vm/handles.h" | 13 #include "vm/handles.h" |
14 #include "vm/os_thread.h" | 14 #include "vm/os_thread.h" |
15 #include "vm/store_buffer.h" | 15 #include "vm/store_buffer.h" |
16 #include "vm/runtime_entry_list.h" | 16 #include "vm/runtime_entry_list.h" |
17 | 17 |
18 namespace dart { | 18 namespace dart { |
19 | 19 |
20 class AbstractType; | 20 class AbstractType; |
21 class ApiLocalScope; | 21 class ApiLocalScope; |
22 class Array; | 22 class Array; |
23 class CHA; | 23 class CHA; |
24 class Class; | 24 class Class; |
25 class Code; | 25 class Code; |
| 26 class CompilerStats; |
26 class Error; | 27 class Error; |
27 class ExceptionHandlers; | 28 class ExceptionHandlers; |
28 class Field; | 29 class Field; |
29 class Function; | 30 class Function; |
30 class GrowableObjectArray; | 31 class GrowableObjectArray; |
31 class HandleScope; | 32 class HandleScope; |
32 class Heap; | 33 class Heap; |
33 class Instance; | 34 class Instance; |
34 class Isolate; | 35 class Isolate; |
35 class Library; | 36 class Library; |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 return OFFSET_OF(Thread, vm_tag_); | 437 return OFFSET_OF(Thread, vm_tag_); |
437 } | 438 } |
438 | 439 |
439 RawGrowableObjectArray* pending_functions(); | 440 RawGrowableObjectArray* pending_functions(); |
440 void clear_pending_functions(); | 441 void clear_pending_functions(); |
441 | 442 |
442 RawError* sticky_error() const; | 443 RawError* sticky_error() const; |
443 void set_sticky_error(const Error& value); | 444 void set_sticky_error(const Error& value); |
444 void clear_sticky_error(); | 445 void clear_sticky_error(); |
445 | 446 |
| 447 CompilerStats* compiler_stats() { return compiler_stats_; } |
| 448 |
446 #if defined(DEBUG) | 449 #if defined(DEBUG) |
447 #define REUSABLE_HANDLE_SCOPE_ACCESSORS(object) \ | 450 #define REUSABLE_HANDLE_SCOPE_ACCESSORS(object) \ |
448 void set_reusable_##object##_handle_scope_active(bool value) { \ | 451 void set_reusable_##object##_handle_scope_active(bool value) { \ |
449 reusable_##object##_handle_scope_active_ = value; \ | 452 reusable_##object##_handle_scope_active_ = value; \ |
450 } \ | 453 } \ |
451 bool reusable_##object##_handle_scope_active() const { \ | 454 bool reusable_##object##_handle_scope_active() const { \ |
452 return reusable_##object##_handle_scope_active_; \ | 455 return reusable_##object##_handle_scope_active_; \ |
453 } | 456 } |
454 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_ACCESSORS) | 457 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_ACCESSORS) |
455 #undef REUSABLE_HANDLE_SCOPE_ACCESSORS | 458 #undef REUSABLE_HANDLE_SCOPE_ACCESSORS |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 uint16_t deferred_interrupts_; | 647 uint16_t deferred_interrupts_; |
645 int32_t stack_overflow_count_; | 648 int32_t stack_overflow_count_; |
646 | 649 |
647 // Compiler state: | 650 // Compiler state: |
648 CHA* cha_; | 651 CHA* cha_; |
649 intptr_t deopt_id_; // Compilation specific counter. | 652 intptr_t deopt_id_; // Compilation specific counter. |
650 RawGrowableObjectArray* pending_functions_; | 653 RawGrowableObjectArray* pending_functions_; |
651 | 654 |
652 RawError* sticky_error_; | 655 RawError* sticky_error_; |
653 | 656 |
| 657 CompilerStats* compiler_stats_; |
| 658 |
654 // Reusable handles support. | 659 // Reusable handles support. |
655 #define REUSABLE_HANDLE_FIELDS(object) \ | 660 #define REUSABLE_HANDLE_FIELDS(object) \ |
656 object* object##_handle_; | 661 object* object##_handle_; |
657 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_FIELDS) | 662 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_FIELDS) |
658 #undef REUSABLE_HANDLE_FIELDS | 663 #undef REUSABLE_HANDLE_FIELDS |
659 | 664 |
660 #if defined(DEBUG) | 665 #if defined(DEBUG) |
661 #define REUSABLE_HANDLE_SCOPE_VARIABLE(object) \ | 666 #define REUSABLE_HANDLE_SCOPE_VARIABLE(object) \ |
662 bool reusable_##object##_handle_scope_active_; | 667 bool reusable_##object##_handle_scope_active_; |
663 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_VARIABLE); | 668 REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_VARIABLE); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
727 // Disable thread interrupts. | 732 // Disable thread interrupts. |
728 class DisableThreadInterruptsScope : public StackResource { | 733 class DisableThreadInterruptsScope : public StackResource { |
729 public: | 734 public: |
730 explicit DisableThreadInterruptsScope(Thread* thread); | 735 explicit DisableThreadInterruptsScope(Thread* thread); |
731 ~DisableThreadInterruptsScope(); | 736 ~DisableThreadInterruptsScope(); |
732 }; | 737 }; |
733 | 738 |
734 } // namespace dart | 739 } // namespace dart |
735 | 740 |
736 #endif // VM_THREAD_H_ | 741 #endif // VM_THREAD_H_ |
OLD | NEW |