| Index: src/v8threads.h
|
| diff --git a/src/v8threads.h b/src/v8threads.h
|
| index 06840532812ee9133e1d8160a14492e64d9d04db..9fa6f0eaf91f8ec3e61914e5b5926e0fda077dea 100644
|
| --- a/src/v8threads.h
|
| +++ b/src/v8threads.h
|
| @@ -29,6 +29,11 @@
|
| #define V8_V8THREADS_H_
|
|
|
| namespace v8 {
|
| +
|
| +struct LockParameters {
|
| + bool successfully_relaied;
|
| +};
|
| +
|
| namespace internal {
|
|
|
|
|
| @@ -78,12 +83,43 @@ class ThreadState {
|
| static ThreadState* in_use_anchor_;
|
| };
|
|
|
| +#ifdef ENABLE_DEBUGGER_SUPPORT
|
| +
|
| +struct Promises {
|
| + bool promise_to_process_debug_commands;
|
| + void Reset() {
|
| + promise_to_process_debug_commands = false;
|
| + }
|
| +};
|
| +
|
| +// This mutex has an additional feature: you may try acquire it if it's free or
|
| +// ASK someone who owns it right now to do a particular chore for you before
|
| +// releasing it. The current owner is guaranteed to NOTICE your ask.
|
| +class MutexWithResponsibilities {
|
| + public:
|
| + MutexWithResponsibilities();
|
| + ~MutexWithResponsibilities();
|
| + void Lock();
|
| + bool LockOrAsk(bool Promises::* promise);
|
| + void Unlock();
|
| +
|
| + private:
|
| + Mutex* flag_mutex_;
|
| + Semaphore* sem_;
|
| + bool locked_;
|
| + bool has_promises_;
|
| + Promises promises_;
|
| +};
|
| +#endif
|
|
|
| class ThreadManager : public AllStatic {
|
| public:
|
| static void Lock();
|
| static void Unlock();
|
|
|
| +#ifdef ENABLE_DEBUGGER_SUPPORT
|
| + static bool LockOrAsk(bool Promises::* promise);
|
| +#endif
|
| static void ArchiveThread();
|
| static bool RestoreThread();
|
| static void FreeThreadResources();
|
| @@ -105,7 +141,11 @@ class ThreadManager : public AllStatic {
|
| static void EagerlyArchiveThread();
|
|
|
| static int last_id_; // V8 threads are identified through an integer.
|
| +#ifdef ENABLE_DEBUGGER_SUPPORT
|
| + static MutexWithResponsibilities* mutex_;
|
| +#else
|
| static Mutex* mutex_;
|
| +#endif
|
| static ThreadHandle mutex_owner_;
|
| static ThreadHandle lazily_archived_thread_;
|
| static ThreadState* lazily_archived_thread_state_;
|
|
|