| 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/handles.h" | 9 #include "vm/handles.h" |
| 10 #include "vm/os_thread.h" | 10 #include "vm/os_thread.h" |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 ThreadId id() const { | 356 ThreadId id() const { |
| 357 ASSERT(id_ != OSThread::kInvalidThreadId); | 357 ASSERT(id_ != OSThread::kInvalidThreadId); |
| 358 return id_; | 358 return id_; |
| 359 } | 359 } |
| 360 | 360 |
| 361 ThreadId join_id() const { | 361 ThreadId join_id() const { |
| 362 ASSERT(join_id_ != OSThread::kInvalidThreadJoinId); | 362 ASSERT(join_id_ != OSThread::kInvalidThreadJoinId); |
| 363 return join_id_; | 363 return join_id_; |
| 364 } | 364 } |
| 365 | 365 |
| 366 ThreadId trace_id() const { |
| 367 ASSERT(trace_id_ != OSThread::kInvalidThreadJoinId); |
| 368 return trace_id_; |
| 369 } |
| 370 |
| 371 const char* name() const { |
| 372 return name_; |
| 373 } |
| 374 |
| 375 void set_name(const char* name) { |
| 376 ASSERT(Thread::Current() == this); |
| 377 ASSERT(name_ == NULL); |
| 378 name_ = name; |
| 379 } |
| 380 |
| 366 // Used to temporarily disable or enable thread interrupts. | 381 // Used to temporarily disable or enable thread interrupts. |
| 367 void DisableThreadInterrupts(); | 382 void DisableThreadInterrupts(); |
| 368 void EnableThreadInterrupts(); | 383 void EnableThreadInterrupts(); |
| 369 bool ThreadInterruptsEnabled(); | 384 bool ThreadInterruptsEnabled(); |
| 370 | 385 |
| 371 #if defined(DEBUG) | 386 #if defined(DEBUG) |
| 372 #define REUSABLE_HANDLE_SCOPE_ACCESSORS(object) \ | 387 #define REUSABLE_HANDLE_SCOPE_ACCESSORS(object) \ |
| 373 void set_reusable_##object##_handle_scope_active(bool value) { \ | 388 void set_reusable_##object##_handle_scope_active(bool value) { \ |
| 374 reusable_##object##_handle_scope_active_ = value; \ | 389 reusable_##object##_handle_scope_active_ = value; \ |
| 375 } \ | 390 } \ |
| (...skipping 27 matching lines...) Expand all Loading... |
| 403 | 418 |
| 404 static bool IsThreadInList(ThreadId join_id); | 419 static bool IsThreadInList(ThreadId join_id); |
| 405 | 420 |
| 406 private: | 421 private: |
| 407 template<class T> T* AllocateReusableHandle(); | 422 template<class T> T* AllocateReusableHandle(); |
| 408 | 423 |
| 409 static ThreadLocalKey thread_key_; | 424 static ThreadLocalKey thread_key_; |
| 410 | 425 |
| 411 const ThreadId id_; | 426 const ThreadId id_; |
| 412 const ThreadId join_id_; | 427 const ThreadId join_id_; |
| 428 const ThreadId trace_id_; |
| 413 uintptr_t thread_interrupt_disabled_; | 429 uintptr_t thread_interrupt_disabled_; |
| 414 Isolate* isolate_; | 430 Isolate* isolate_; |
| 415 Heap* heap_; | 431 Heap* heap_; |
| 416 State state_; | 432 State state_; |
| 417 Mutex timeline_block_lock_; | 433 Mutex timeline_block_lock_; |
| 418 TimelineEventBlock* timeline_block_; | 434 TimelineEventBlock* timeline_block_; |
| 419 StoreBufferBlock* store_buffer_block_; | 435 StoreBufferBlock* store_buffer_block_; |
| 420 class Log* log_; | 436 class Log* log_; |
| 421 #define DECLARE_MEMBERS(type_name, member_name, expr, default_init_value) \ | 437 #define DECLARE_MEMBERS(type_name, member_name, expr, default_init_value) \ |
| 422 type_name member_name; | 438 type_name member_name; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 452 CHA* cha_; | 468 CHA* cha_; |
| 453 intptr_t deopt_id_; // Compilation specific counter. | 469 intptr_t deopt_id_; // Compilation specific counter. |
| 454 uword vm_tag_; | 470 uword vm_tag_; |
| 455 RawGrowableObjectArray* pending_functions_; | 471 RawGrowableObjectArray* pending_functions_; |
| 456 | 472 |
| 457 int32_t no_callback_scope_depth_; | 473 int32_t no_callback_scope_depth_; |
| 458 | 474 |
| 459 // All |Thread|s are registered in the thread list. | 475 // All |Thread|s are registered in the thread list. |
| 460 Thread* thread_list_next_; | 476 Thread* thread_list_next_; |
| 461 | 477 |
| 478 // A name for this thread. |
| 479 const char* name_; |
| 480 |
| 462 static Thread* thread_list_head_; | 481 static Thread* thread_list_head_; |
| 463 static Mutex* thread_list_lock_; | 482 static Mutex* thread_list_lock_; |
| 464 | 483 |
| 465 static void AddThreadToList(Thread* thread); | 484 static void AddThreadToList(Thread* thread); |
| 466 static void RemoveThreadFromList(Thread* thread); | 485 static void RemoveThreadFromList(Thread* thread); |
| 467 | 486 |
| 468 explicit Thread(bool init_vm_constants = true); | 487 explicit Thread(bool init_vm_constants = true); |
| 469 | 488 |
| 470 void InitVMConstants(); | 489 void InitVMConstants(); |
| 471 | 490 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 // Disable thread interrupts. | 550 // Disable thread interrupts. |
| 532 class DisableThreadInterruptsScope : public StackResource { | 551 class DisableThreadInterruptsScope : public StackResource { |
| 533 public: | 552 public: |
| 534 explicit DisableThreadInterruptsScope(Thread* thread); | 553 explicit DisableThreadInterruptsScope(Thread* thread); |
| 535 ~DisableThreadInterruptsScope(); | 554 ~DisableThreadInterruptsScope(); |
| 536 }; | 555 }; |
| 537 | 556 |
| 538 } // namespace dart | 557 } // namespace dart |
| 539 | 558 |
| 540 #endif // VM_THREAD_H_ | 559 #endif // VM_THREAD_H_ |
| OLD | NEW |