| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_V8THREADS_H_ | 5 #ifndef V8_V8THREADS_H_ |
| 6 #define V8_V8THREADS_H_ | 6 #define V8_V8THREADS_H_ |
| 7 | 7 |
| 8 #include "src/isolate.h" | 8 #include "src/isolate.h" |
| 9 | 9 |
| 10 namespace v8 { | 10 namespace v8 { |
| 11 namespace internal { | 11 namespace internal { |
| 12 | 12 |
| 13 class RootVisitor; |
| 14 class ThreadLocalTop; |
| 13 | 15 |
| 14 class ThreadState { | 16 class ThreadState { |
| 15 public: | 17 public: |
| 16 // Returns NULL after the last one. | 18 // Returns NULL after the last one. |
| 17 ThreadState* Next(); | 19 ThreadState* Next(); |
| 18 | 20 |
| 19 enum List {FREE_LIST, IN_USE_LIST}; | 21 enum List {FREE_LIST, IN_USE_LIST}; |
| 20 | 22 |
| 21 void LinkInto(List list); | 23 void LinkInto(List list); |
| 22 void Unlink(); | 24 void Unlink(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 44 bool terminate_on_restore_; | 46 bool terminate_on_restore_; |
| 45 char* data_; | 47 char* data_; |
| 46 ThreadState* next_; | 48 ThreadState* next_; |
| 47 ThreadState* previous_; | 49 ThreadState* previous_; |
| 48 | 50 |
| 49 ThreadManager* thread_manager_; | 51 ThreadManager* thread_manager_; |
| 50 | 52 |
| 51 friend class ThreadManager; | 53 friend class ThreadManager; |
| 52 }; | 54 }; |
| 53 | 55 |
| 54 | |
| 55 // Defined in isolate.h. | |
| 56 class ThreadLocalTop; | |
| 57 | |
| 58 | |
| 59 class ThreadVisitor { | 56 class ThreadVisitor { |
| 60 public: | 57 public: |
| 61 // ThreadLocalTop may be only available during this call. | 58 // ThreadLocalTop may be only available during this call. |
| 62 virtual void VisitThread(Isolate* isolate, ThreadLocalTop* top) = 0; | 59 virtual void VisitThread(Isolate* isolate, ThreadLocalTop* top) = 0; |
| 63 | 60 |
| 64 protected: | 61 protected: |
| 65 virtual ~ThreadVisitor() {} | 62 virtual ~ThreadVisitor() {} |
| 66 }; | 63 }; |
| 67 | 64 |
| 68 | |
| 69 class ThreadManager { | 65 class ThreadManager { |
| 70 public: | 66 public: |
| 71 void Lock(); | 67 void Lock(); |
| 72 void Unlock(); | 68 void Unlock(); |
| 73 | 69 |
| 74 void ArchiveThread(); | 70 void ArchiveThread(); |
| 75 bool RestoreThread(); | 71 bool RestoreThread(); |
| 76 void FreeThreadResources(); | 72 void FreeThreadResources(); |
| 77 bool IsArchived(); | 73 bool IsArchived(); |
| 78 | 74 |
| 79 void Iterate(ObjectVisitor* v); | 75 void Iterate(RootVisitor* v); |
| 80 void IterateArchivedThreads(ThreadVisitor* v); | 76 void IterateArchivedThreads(ThreadVisitor* v); |
| 81 bool IsLockedByCurrentThread() { | 77 bool IsLockedByCurrentThread() { |
| 82 return mutex_owner_.Equals(ThreadId::Current()); | 78 return mutex_owner_.Equals(ThreadId::Current()); |
| 83 } | 79 } |
| 84 | 80 |
| 85 ThreadId CurrentId(); | 81 ThreadId CurrentId(); |
| 86 | 82 |
| 87 void TerminateExecution(ThreadId thread_id); | 83 void TerminateExecution(ThreadId thread_id); |
| 88 | 84 |
| 89 // Iterate over in-use states. | 85 // Iterate over in-use states. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 115 | 111 |
| 116 friend class Isolate; | 112 friend class Isolate; |
| 117 friend class ThreadState; | 113 friend class ThreadState; |
| 118 }; | 114 }; |
| 119 | 115 |
| 120 | 116 |
| 121 } // namespace internal | 117 } // namespace internal |
| 122 } // namespace v8 | 118 } // namespace v8 |
| 123 | 119 |
| 124 #endif // V8_V8THREADS_H_ | 120 #endif // V8_V8THREADS_H_ |
| OLD | NEW |