#include <js-atomics-synchronization.h>
|
static DirectHandle< JSObject > | CreateResultObject (Isolate *isolate, DirectHandle< Object > value, bool success) |
|
static bool | Lock (Isolate *requester, DirectHandle< JSAtomicsMutex > mutex, std::optional< base::TimeDelta > timeout=std::nullopt) |
|
static bool | LockAsync (Isolate *requester, DirectHandle< JSAtomicsMutex > mutex, Handle< JSPromise > internal_locked_promise, MaybeHandle< JSPromise > unlocked_promise, AsyncWaiterNodeType **waiter_node, std::optional< base::TimeDelta > timeout=std::nullopt) |
|
static DirectHandle< JSPromise > | LockAsyncWrapperForWait (Isolate *requester, DirectHandle< JSAtomicsMutex > mutex) |
|
static MaybeDirectHandle< JSPromise > | LockOrEnqueuePromise (Isolate *isolate, DirectHandle< JSAtomicsMutex > mutex, DirectHandle< Object > callback, std::optional< base::TimeDelta > timeout) |
|
static bool | LockOrEnqueueAsyncNode (Isolate *isolate, DirectHandle< JSAtomicsMutex > mutex, LockAsyncWaiterQueueNode *node) |
|
static void | HandleAsyncNotify (LockAsyncWaiterQueueNode *node) |
|
static void | HandleAsyncTimeout (LockAsyncWaiterQueueNode *node) |
|
static void | CleanupMatchingAsyncWaiters (Isolate *isolate, WaiterQueueNode *node, DequeueMatcher matcher) |
|
|
static V8_EXPORT_PRIVATE bool | LockSlowPath (Isolate *requester, DirectHandle< JSAtomicsMutex > mutex, std::atomic< StateT > *state, std::optional< base::TimeDelta > timeout) |
|
static bool | LockAsyncSlowPath (Isolate *isolate, DirectHandle< JSAtomicsMutex > mutex, std::atomic< StateT > *state, Handle< JSPromise > internal_locked_promise, MaybeHandle< JSPromise > unlocked_promise, AsyncWaiterNodeType **waiter_node, std::optional< base::TimeDelta > timeout) |
|
static bool | TryLockExplicit (std::atomic< StateT > *state, StateT &expected) |
|
static std::optional< WaiterQueueLockGuard > | LockWaiterQueueOrJSMutex (std::atomic< StateT > *state, StateT ¤t_state) |
|
static V8_EXPORT_PRIVATE bool | MutexTryLock (Isolate *requester, DirectHandle< JSAtomicsMutex > mutex, std::atomic< StateT > *state) |
|
static V8_INLINE bool | BackoffTryLock (Isolate *requester, DirectHandle< JSAtomicsMutex > mutex, std::atomic< StateT > *state) |
|
static bool | DequeueTimedOutAsyncWaiter (Isolate *requester, DirectHandle< JSAtomicsMutex > mutex, std::atomic< StateT > *state, WaiterQueueNode *timed_out_waiter) |
|
static V8_EXPORT_PRIVATE bool | MaybeEnqueueNode (Isolate *requester, DirectHandle< JSAtomicsMutex > mutex, std::atomic< StateT > *state, WaiterQueueNode *this_waiter) |
|
template<typename LockSlowPathWrapper , typename = std::enable_if<std::is_invocable_r_v< bool, LockSlowPathWrapper, std::atomic<StateT>*>>> |
static bool | LockImpl (Isolate *requester, DirectHandle< JSAtomicsMutex > mutex, std::optional< base::TimeDelta > timeout, LockSlowPathWrapper slow_path_wrapper) |
|
◆ AsyncWaiterNodeType
◆ IsLockedField
◆ anonymous enum
Enumerator |
---|
kMutexAsyncContextSlot | |
kUnlockedPromiseAsyncContextSlot | |
kAsyncLockedWaiterAsyncContextSlot | |
kAsyncContextLength | |
Definition at line 275 of file js-atomics-synchronization.h.
◆ AtomicOwnerThreadIdPtr()
std::atomic< int32_t > * v8::internal::JSAtomicsMutex::AtomicOwnerThreadIdPtr |
( |
| ) |
|
|
inlineprivate |
◆ BackoffTryLock()
◆ CleanupMatchingAsyncWaiters()
void v8::internal::JSAtomicsMutex::CleanupMatchingAsyncWaiters |
( |
Isolate * | isolate, |
|
|
WaiterQueueNode * | node, |
|
|
DequeueMatcher | matcher ) |
|
static |
◆ ClearOwnerThread()
void v8::internal::JSAtomicsMutex::ClearOwnerThread |
( |
| ) |
|
|
inlineprivate |
◆ CreateResultObject()
◆ DequeueTimedOutAsyncWaiter()
◆ HandleAsyncNotify()
◆ HandleAsyncTimeout()
◆ IsCurrentThreadOwner()
bool v8::internal::JSAtomicsMutex::IsCurrentThreadOwner |
( |
| ) |
|
|
inline |
◆ IsHeld()
bool v8::internal::JSAtomicsMutex::IsHeld |
( |
| ) |
|
|
inline |
◆ Lock()
◆ LockAsync()
◆ LockAsyncSlowPath()
◆ LockAsyncWrapperForWait()
◆ LockImpl()
template<typename LockSlowPathWrapper , typename >
◆ LockJSMutexOrDequeueTimedOutWaiter()
bool v8::internal::JSAtomicsMutex::LockJSMutexOrDequeueTimedOutWaiter |
( |
Isolate * | requester, |
|
|
std::atomic< StateT > * | state, |
|
|
WaiterQueueNode * | timed_out_waiter ) |
|
private |
◆ LockOrEnqueueAsyncNode()
◆ LockOrEnqueuePromise()
◆ LockSlowPath()
◆ LockWaiterQueueOrJSMutex()
std::optional< WaiterQueueLockGuard > v8::internal::JSAtomicsMutex::LockWaiterQueueOrJSMutex |
( |
std::atomic< StateT > * | state, |
|
|
StateT & | current_state ) |
|
staticprivate |
◆ MaybeEnqueueNode()
◆ MutexTryLock()
◆ SetCurrentThreadAsOwner()
void v8::internal::JSAtomicsMutex::SetCurrentThreadAsOwner |
( |
| ) |
|
|
inlineprivate |
◆ TryLock()
bool v8::internal::JSAtomicsMutex::TryLock |
( |
| ) |
|
|
inline |
◆ TryLockExplicit()
bool v8::internal::JSAtomicsMutex::TryLockExplicit |
( |
std::atomic< StateT > * | state, |
|
|
StateT & | expected ) |
|
staticprivate |
◆ Unlock()
void v8::internal::JSAtomicsMutex::Unlock |
( |
Isolate * | requester | ) |
|
|
inline |
◆ UnlockAsyncLockedMutex()
void v8::internal::JSAtomicsMutex::UnlockAsyncLockedMutex |
( |
Isolate * | requester, |
|
|
DirectHandle< Foreign > | async_locked_waiter_wrapper ) |
◆ UnlockSlowPath()
void v8::internal::JSAtomicsMutex::UnlockSlowPath |
( |
Isolate * | requester, |
|
|
std::atomic< StateT > * | state ) |
|
private |
◆ Factory
◆ kLockedUncontended
◆ kUnlockedUncontended
StateT v8::internal::JSAtomicsMutex::kUnlockedUncontended = kEmptyState |
|
staticconstexprprivate |
The documentation for this class was generated from the following files: