| 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 "vm/globals.h" | 8 #include "vm/globals.h" |
| 9 #include "vm/os_thread.h" | 9 #include "vm/os_thread.h" |
| 10 #include "vm/store_buffer.h" | 10 #include "vm/store_buffer.h" |
| 11 | 11 |
| 12 namespace dart { | 12 namespace dart { |
| 13 | 13 |
| 14 class CHA; | 14 class CHA; |
| 15 class HandleScope; | 15 class HandleScope; |
| 16 class Heap; |
| 16 class Isolate; | 17 class Isolate; |
| 17 class Object; | 18 class Object; |
| 18 class RawBool; | 19 class RawBool; |
| 19 class RawObject; | 20 class RawObject; |
| 20 class StackResource; | 21 class StackResource; |
| 21 class Zone; | 22 class Zone; |
| 22 | 23 |
| 24 |
| 23 // List of VM-global objects/addresses cached in each Thread object. | 25 // List of VM-global objects/addresses cached in each Thread object. |
| 24 #define CACHED_VM_OBJECTS_LIST(V) \ | 26 #define CACHED_VM_OBJECTS_LIST(V) \ |
| 25 V(RawObject*, object_null_, Object::null(), NULL) \ | 27 V(RawObject*, object_null_, Object::null(), NULL) \ |
| 26 V(RawBool*, bool_true_, Object::bool_true().raw(), NULL) \ | 28 V(RawBool*, bool_true_, Object::bool_true().raw(), NULL) \ |
| 27 V(RawBool*, bool_false_, Object::bool_false().raw(), NULL) \ | 29 V(RawBool*, bool_false_, Object::bool_false().raw(), NULL) \ |
| 28 | 30 |
| 29 #define CACHED_ADDRESSES_LIST(V) \ | 31 #define CACHED_ADDRESSES_LIST(V) \ |
| 30 V(uword, update_store_buffer_entry_point_, \ | 32 V(uword, update_store_buffer_entry_point_, \ |
| 31 StubCode::UpdateStoreBufferEntryPoint(), 0) | 33 StubCode::UpdateStoreBufferEntryPoint(), 0) |
| 32 | 34 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 } | 112 } |
| 111 | 113 |
| 112 StackResource* top_resource() const { return state_.top_resource; } | 114 StackResource* top_resource() const { return state_.top_resource; } |
| 113 void set_top_resource(StackResource* value) { | 115 void set_top_resource(StackResource* value) { |
| 114 state_.top_resource = value; | 116 state_.top_resource = value; |
| 115 } | 117 } |
| 116 static intptr_t top_resource_offset() { | 118 static intptr_t top_resource_offset() { |
| 117 return OFFSET_OF(Thread, state_) + OFFSET_OF(State, top_resource); | 119 return OFFSET_OF(Thread, state_) + OFFSET_OF(State, top_resource); |
| 118 } | 120 } |
| 119 | 121 |
| 122 static intptr_t heap_offset() { |
| 123 return OFFSET_OF(Thread, heap_); |
| 124 } |
| 125 |
| 120 int32_t no_handle_scope_depth() const { | 126 int32_t no_handle_scope_depth() const { |
| 121 #if defined(DEBUG) | 127 #if defined(DEBUG) |
| 122 return state_.no_handle_scope_depth; | 128 return state_.no_handle_scope_depth; |
| 123 #else | 129 #else |
| 124 return 0; | 130 return 0; |
| 125 #endif | 131 #endif |
| 126 } | 132 } |
| 127 | 133 |
| 128 void IncrementNoHandleScopeDepth() { | 134 void IncrementNoHandleScopeDepth() { |
| 129 #if defined(DEBUG) | 135 #if defined(DEBUG) |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 CACHED_CONSTANTS_LIST(DEFINE_OFFSET_METHOD) | 201 CACHED_CONSTANTS_LIST(DEFINE_OFFSET_METHOD) |
| 196 #undef DEFINE_OFFSET_METHOD | 202 #undef DEFINE_OFFSET_METHOD |
| 197 | 203 |
| 198 static bool CanLoadFromThread(const Object& object); | 204 static bool CanLoadFromThread(const Object& object); |
| 199 static intptr_t OffsetFromThread(const Object& object); | 205 static intptr_t OffsetFromThread(const Object& object); |
| 200 | 206 |
| 201 private: | 207 private: |
| 202 static ThreadLocalKey thread_key_; | 208 static ThreadLocalKey thread_key_; |
| 203 | 209 |
| 204 Isolate* isolate_; | 210 Isolate* isolate_; |
| 211 Heap* heap_; |
| 205 State state_; | 212 State state_; |
| 206 StoreBufferBlock* store_buffer_block_; | 213 StoreBufferBlock* store_buffer_block_; |
| 207 #define DECLARE_MEMBERS(type_name, member_name, expr, default_init_value) \ | 214 #define DECLARE_MEMBERS(type_name, member_name, expr, default_init_value) \ |
| 208 type_name member_name; | 215 type_name member_name; |
| 209 CACHED_CONSTANTS_LIST(DECLARE_MEMBERS) | 216 CACHED_CONSTANTS_LIST(DECLARE_MEMBERS) |
| 210 #undef DECLARE_MEMBERS | 217 #undef DECLARE_MEMBERS |
| 211 | 218 |
| 212 explicit Thread(bool init_vm_constants = true); | 219 explicit Thread(bool init_vm_constants = true); |
| 213 | 220 |
| 214 void InitVMConstants(); | 221 void InitVMConstants(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 232 | 239 |
| 233 friend class ApiZone; | 240 friend class ApiZone; |
| 234 friend class Isolate; | 241 friend class Isolate; |
| 235 friend class StackZone; | 242 friend class StackZone; |
| 236 DISALLOW_COPY_AND_ASSIGN(Thread); | 243 DISALLOW_COPY_AND_ASSIGN(Thread); |
| 237 }; | 244 }; |
| 238 | 245 |
| 239 } // namespace dart | 246 } // namespace dart |
| 240 | 247 |
| 241 #endif // VM_THREAD_H_ | 248 #endif // VM_THREAD_H_ |
| OLD | NEW |