v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::detail::AsyncWaiterQueueNode< T > Class Template Reference
Inheritance diagram for v8::internal::detail::AsyncWaiterQueueNode< T >:
Collaboration diagram for v8::internal::detail::AsyncWaiterQueueNode< T >:

Public Member Functions

TaskRunnertask_runner ()
 
Local< v8::ContextGetNativeContext ()
 
Handle< JSPromiseGetInternalWaitingPromise ()
 
bool IsEmpty () const
 
Handle< TGetSynchronizationPrimitive ()
 
Handle< JSPromiseGetUnlockedPromise ()
 
void Notify () override
 
bool IsSameIsolateForAsyncCleanup (Isolate *isolate) override
 
void CleanupMatchingAsyncWaiters (const DequeueMatcher &matcher) override
 
- Public Member Functions inherited from v8::internal::detail::WaiterQueueNode
virtual ~WaiterQueueNode ()
 
uint32_t NotifyAllInList ()
 

Static Public Member Functions

static AsyncWaiterQueueNode< T > * NewAsyncWaiterStoredInIsolate (Isolate *requester, DirectHandle< T > synchronization_primitive, Handle< JSPromise > internal_waiting_promise, MaybeHandle< JSPromise > unlocked_promise={})
 
static AsyncWaiterQueueNode< T > * NewLockedAsyncWaiterStoredInIsolate (Isolate *requester, DirectHandle< T > synchronization_primitive)
 
static void RemoveFromAsyncWaiterQueueList (AsyncWaiterQueueNode< T > *node)
 
- Static Public Member Functions inherited from v8::internal::detail::WaiterQueueNode
static void Enqueue (WaiterQueueNode **head, WaiterQueueNode *new_tail)
 
static WaiterQueueNodeDequeueMatching (WaiterQueueNode **head, const DequeueMatcher &matcher)
 
static void DequeueAllMatchingForAsyncCleanup (WaiterQueueNode **head, const DequeueMatcher &matcher)
 
static WaiterQueueNodeDequeue (WaiterQueueNode **head)
 
static WaiterQueueNodeSplit (WaiterQueueNode **head, uint32_t count)
 
static int LengthFromHead (WaiterQueueNode *head)
 

Private Member Functions

 AsyncWaiterQueueNode (Isolate *requester, DirectHandle< T > synchronization_primitive)
 
 AsyncWaiterQueueNode (Isolate *requester, DirectHandle< T > synchronization_primitive, DirectHandle< JSPromise > internal_waiting_promise, MaybeDirectHandle< JSPromise > unlocked_promise)
 
void SetReadyForAsyncCleanup () override
 

Private Attributes

friend JSAtomicsMutex
 
friend JSAtomicsCondition
 
friend AsyncWaiterNotifyTask< T >
 
friend AsyncWaiterTimeoutTask< T >
 
std::shared_ptr< TaskRunnertask_runner_
 
CancelableTaskManager::Id timeout_task_id_
 
CancelableTaskManager::Id notify_task_id_
 
bool ready_for_async_cleanup_ = false
 
Global< v8::Contextnative_context_
 
Global< v8::Promiseinternal_waiting_promise_
 
Global< v8::Objectsynchronization_primitive_
 
Global< v8::Promiseunlocked_promise_
 

Additional Inherited Members

- Public Types inherited from v8::internal::detail::WaiterQueueNode
using DequeueMatcher = std::function<bool(WaiterQueueNode*)>
 
- Protected Member Functions inherited from v8::internal::detail::WaiterQueueNode
 WaiterQueueNode (Isolate *requester)
 
void SetNotInListForVerification ()
 
- Protected Attributes inherited from v8::internal::detail::WaiterQueueNode
Isolaterequester_
 
WaiterQueueNodenext_ = nullptr
 
WaiterQueueNodeprev_ = nullptr
 

Detailed Description

template<typename T>
class v8::internal::detail::AsyncWaiterQueueNode< T >

Definition at line 29 of file js-atomics-synchronization.h.

Constructor & Destructor Documentation

◆ AsyncWaiterQueueNode() [1/2]

template<typename T >
v8::internal::detail::AsyncWaiterQueueNode< T >::AsyncWaiterQueueNode ( Isolate * requester,
DirectHandle< T > synchronization_primitive )
inlineexplicitprivate

Definition at line 359 of file js-atomics-synchronization.cc.

Here is the call graph for this function:

◆ AsyncWaiterQueueNode() [2/2]

template<typename T >
v8::internal::detail::AsyncWaiterQueueNode< T >::AsyncWaiterQueueNode ( Isolate * requester,
DirectHandle< T > synchronization_primitive,
DirectHandle< JSPromise > internal_waiting_promise,
MaybeDirectHandle< JSPromise > unlocked_promise )
inlineexplicitprivate

Definition at line 369 of file js-atomics-synchronization.cc.

Here is the call graph for this function:

Member Function Documentation

◆ CleanupMatchingAsyncWaiters()

template<typename T >
void v8::internal::detail::AsyncWaiterQueueNode< T >::CleanupMatchingAsyncWaiters ( const DequeueMatcher & matcher)
inlineoverridevirtual

◆ GetInternalWaitingPromise()

template<typename T >
Handle< JSPromise > v8::internal::detail::AsyncWaiterQueueNode< T >::GetInternalWaitingPromise ( )
inline

Definition at line 304 of file js-atomics-synchronization.cc.

Here is the caller graph for this function:

◆ GetNativeContext()

template<typename T >
Local< v8::Context > v8::internal::detail::AsyncWaiterQueueNode< T >::GetNativeContext ( )
inline

Definition at line 299 of file js-atomics-synchronization.cc.

Here is the caller graph for this function:

◆ GetSynchronizationPrimitive()

template<typename T >
Handle< T > v8::internal::detail::AsyncWaiterQueueNode< T >::GetSynchronizationPrimitive ( )
inline

Definition at line 313 of file js-atomics-synchronization.cc.

Here is the caller graph for this function:

◆ GetUnlockedPromise()

template<typename T >
Handle< JSPromise > v8::internal::detail::AsyncWaiterQueueNode< T >::GetUnlockedPromise ( )
inline

Definition at line 320 of file js-atomics-synchronization.cc.

Here is the caller graph for this function:

◆ IsEmpty()

template<typename T >
bool v8::internal::detail::AsyncWaiterQueueNode< T >::IsEmpty ( ) const
inline

Definition at line 311 of file js-atomics-synchronization.cc.

◆ IsSameIsolateForAsyncCleanup()

template<typename T >
bool v8::internal::detail::AsyncWaiterQueueNode< T >::IsSameIsolateForAsyncCleanup ( Isolate * isolate)
inlineoverridevirtual

◆ NewAsyncWaiterStoredInIsolate()

template<typename T >
static AsyncWaiterQueueNode< T > * v8::internal::detail::AsyncWaiterQueueNode< T >::NewAsyncWaiterStoredInIsolate ( Isolate * requester,
DirectHandle< T > synchronization_primitive,
Handle< JSPromise > internal_waiting_promise,
MaybeHandle< JSPromise > unlocked_promise = {} )
inlinestatic

Definition at line 272 of file js-atomics-synchronization.cc.

Here is the caller graph for this function:

◆ NewLockedAsyncWaiterStoredInIsolate()

template<typename T >
static AsyncWaiterQueueNode< T > * v8::internal::detail::AsyncWaiterQueueNode< T >::NewLockedAsyncWaiterStoredInIsolate ( Isolate * requester,
DirectHandle< T > synchronization_primitive )
inlinestatic

Definition at line 287 of file js-atomics-synchronization.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Notify()

template<typename T >
void v8::internal::detail::AsyncWaiterQueueNode< T >::Notify ( )
inlineoverridevirtual

Implements v8::internal::detail::WaiterQueueNode.

Definition at line 327 of file js-atomics-synchronization.cc.

Here is the call graph for this function:

◆ RemoveFromAsyncWaiterQueueList()

template<typename T >
static void v8::internal::detail::AsyncWaiterQueueNode< T >::RemoveFromAsyncWaiterQueueList ( AsyncWaiterQueueNode< T > * node)
inlinestatic

Definition at line 348 of file js-atomics-synchronization.cc.

Here is the caller graph for this function:

◆ SetReadyForAsyncCleanup()

template<typename T >
void v8::internal::detail::AsyncWaiterQueueNode< T >::SetReadyForAsyncCleanup ( )
inlineoverrideprivatevirtual

◆ task_runner()

template<typename T >
TaskRunner * v8::internal::detail::AsyncWaiterQueueNode< T >::task_runner ( )
inline

Definition at line 297 of file js-atomics-synchronization.cc.

Here is the caller graph for this function:

Member Data Documentation

◆ AsyncWaiterNotifyTask< T >

template<typename T >
friend v8::internal::detail::AsyncWaiterQueueNode< T >::AsyncWaiterNotifyTask< T >
private

Definition at line 356 of file js-atomics-synchronization.cc.

◆ AsyncWaiterTimeoutTask< T >

template<typename T >
friend v8::internal::detail::AsyncWaiterQueueNode< T >::AsyncWaiterTimeoutTask< T >
private

Definition at line 357 of file js-atomics-synchronization.cc.

◆ internal_waiting_promise_

template<typename T >
Global<v8::Promise> v8::internal::detail::AsyncWaiterQueueNode< T >::internal_waiting_promise_
private

Definition at line 404 of file js-atomics-synchronization.cc.

◆ JSAtomicsCondition

template<typename T >
friend v8::internal::detail::AsyncWaiterQueueNode< T >::JSAtomicsCondition
private

Definition at line 355 of file js-atomics-synchronization.cc.

◆ JSAtomicsMutex

template<typename T >
friend v8::internal::detail::AsyncWaiterQueueNode< T >::JSAtomicsMutex
private

Definition at line 354 of file js-atomics-synchronization.cc.

◆ native_context_

template<typename T >
Global<v8::Context> v8::internal::detail::AsyncWaiterQueueNode< T >::native_context_
private

Definition at line 401 of file js-atomics-synchronization.cc.

◆ notify_task_id_

template<typename T >
CancelableTaskManager::Id v8::internal::detail::AsyncWaiterQueueNode< T >::notify_task_id_
private

Definition at line 396 of file js-atomics-synchronization.cc.

◆ ready_for_async_cleanup_

template<typename T >
bool v8::internal::detail::AsyncWaiterQueueNode< T >::ready_for_async_cleanup_ = false
private

Definition at line 397 of file js-atomics-synchronization.cc.

◆ synchronization_primitive_

template<typename T >
Global<v8::Object> v8::internal::detail::AsyncWaiterQueueNode< T >::synchronization_primitive_
private

Definition at line 405 of file js-atomics-synchronization.cc.

◆ task_runner_

template<typename T >
std::shared_ptr<TaskRunner> v8::internal::detail::AsyncWaiterQueueNode< T >::task_runner_
private

Definition at line 394 of file js-atomics-synchronization.cc.

◆ timeout_task_id_

template<typename T >
CancelableTaskManager::Id v8::internal::detail::AsyncWaiterQueueNode< T >::timeout_task_id_
private

Definition at line 395 of file js-atomics-synchronization.cc.

◆ unlocked_promise_

template<typename T >
Global<v8::Promise> v8::internal::detail::AsyncWaiterQueueNode< T >::unlocked_promise_
private

Definition at line 408 of file js-atomics-synchronization.cc.


The documentation for this class was generated from the following files: