v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::JSAtomicsCondition Class Reference

#include <js-atomics-synchronization.h>

Inheritance diagram for v8::internal::JSAtomicsCondition:
Collaboration diagram for v8::internal::JSAtomicsCondition:

Public Types

enum  { kMutexAsyncContextSlot = Context::MIN_CONTEXT_SLOTS , kConditionVariableAsyncContextSlot , kAsyncContextLength }
 
using AsyncWaiterNodeType = WaitAsyncWaiterQueueNode
 

Static Public Member Functions

static V8_EXPORT_PRIVATE bool WaitFor (Isolate *requester, DirectHandle< JSAtomicsCondition > cv, DirectHandle< JSAtomicsMutex > mutex, std::optional< base::TimeDelta > timeout)
 
static V8_EXPORT_PRIVATE MaybeDirectHandle< JSReceiverWaitAsync (Isolate *requester, DirectHandle< JSAtomicsCondition > cv, DirectHandle< JSAtomicsMutex > mutex, std::optional< base::TimeDelta > timeout)
 
static void HandleAsyncNotify (WaitAsyncWaiterQueueNode *node)
 
static void HandleAsyncTimeout (WaitAsyncWaiterQueueNode *node)
 
static V8_EXPORT_PRIVATE uint32_t Notify (Isolate *requester, DirectHandle< JSAtomicsCondition > cv, uint32_t count)
 
static void CleanupMatchingAsyncWaiters (Isolate *isolate, WaiterQueueNode *node, DequeueMatcher matcher)
 

Static Public Attributes

static constexpr uint32_t kAllWaiters = UINT32_MAX
 

Private Types

using DequeueAction = std::function<uint32_t(WaiterQueueNode**)>
 

Static Private Member Functions

static void QueueWaiter (Isolate *requester, DirectHandle< JSAtomicsCondition > cv, WaiterQueueNode *waiter)
 
static uint32_t DequeueExplicit (Isolate *requester, DirectHandle< JSAtomicsCondition > cv, std::atomic< StateT > *state, const DequeueAction &dequeue_action)
 

Friends

class Factory
 

Detailed Description

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

Member Typedef Documentation

◆ AsyncWaiterNodeType

◆ DequeueAction

using v8::internal::JSAtomicsCondition::DequeueAction = std::function<uint32_t(WaiterQueueNode**)>
private

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

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kMutexAsyncContextSlot 
kConditionVariableAsyncContextSlot 
kAsyncContextLength 

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

Member Function Documentation

◆ CleanupMatchingAsyncWaiters()

void v8::internal::JSAtomicsCondition::CleanupMatchingAsyncWaiters ( Isolate * isolate,
WaiterQueueNode * node,
DequeueMatcher matcher )
static

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

Here is the call graph for this function:

◆ DequeueExplicit()

uint32_t v8::internal::JSAtomicsCondition::DequeueExplicit ( Isolate * requester,
DirectHandle< JSAtomicsCondition > cv,
std::atomic< StateT > * state,
const DequeueAction & dequeue_action )
staticprivate

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

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

◆ HandleAsyncNotify()

void v8::internal::JSAtomicsCondition::HandleAsyncNotify ( WaitAsyncWaiterQueueNode * node)
static

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

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

◆ HandleAsyncTimeout()

void v8::internal::JSAtomicsCondition::HandleAsyncTimeout ( WaitAsyncWaiterQueueNode * node)
static

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

Here is the call graph for this function:

◆ Notify()

uint32_t v8::internal::JSAtomicsCondition::Notify ( Isolate * requester,
DirectHandle< JSAtomicsCondition > cv,
uint32_t count )
static

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

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

◆ QueueWaiter()

void v8::internal::JSAtomicsCondition::QueueWaiter ( Isolate * requester,
DirectHandle< JSAtomicsCondition > cv,
WaiterQueueNode * waiter )
staticprivate

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

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

◆ WaitAsync()

MaybeDirectHandle< JSReceiver > v8::internal::JSAtomicsCondition::WaitAsync ( Isolate * requester,
DirectHandle< JSAtomicsCondition > cv,
DirectHandle< JSAtomicsMutex > mutex,
std::optional< base::TimeDelta > timeout )
static

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

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

◆ WaitFor()

bool v8::internal::JSAtomicsCondition::WaitFor ( Isolate * requester,
DirectHandle< JSAtomicsCondition > cv,
DirectHandle< JSAtomicsMutex > mutex,
std::optional< base::TimeDelta > timeout )
static

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

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

Friends And Related Symbol Documentation

◆ Factory

friend class Factory
friend

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

Member Data Documentation

◆ kAllWaiters

uint32_t v8::internal::JSAtomicsCondition::kAllWaiters = UINT32_MAX
staticconstexpr

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


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