#include "src/base/macros.h"
#include "src/base/platform/yield-processor.h"
#include "src/builtins/builtins-utils-inl.h"
#include "src/common/globals.h"
#include "src/execution/futex-emulation.h"
#include "src/heap/factory.h"
#include "src/logging/counters.h"
#include "src/numbers/conversions-inl.h"
#include "src/objects/js-array-buffer-inl.h"
#include "src/objects/objects-inl.h"
namespace v8 {
namespace internal {
inline bool AtomicIsLockFree(double size) { … }
BUILTIN(AtomicsIsLockFree) { … }
V8_WARN_UNUSED_RESULT MaybeHandle<JSTypedArray> ValidateIntegerTypedArray(
Isolate* isolate, Handle<Object> object, const char* method_name,
bool only_int32_and_big_int64 = false) { … }
V8_WARN_UNUSED_RESULT Maybe<size_t> ValidateAtomicAccess(
Isolate* isolate, DirectHandle<JSTypedArray> typed_array,
Handle<Object> request_index) { … }
namespace {
inline size_t GetAddress64(size_t index, size_t byte_offset) { … }
inline size_t GetAddress32(size_t index, size_t byte_offset) { … }
}
BUILTIN(AtomicsNotify) { … }
Tagged<Object> DoWait(Isolate* isolate, FutexEmulation::WaitMode mode,
Handle<Object> array, Handle<Object> index,
Handle<Object> value, Handle<Object> timeout) { … }
BUILTIN(AtomicsWait) { … }
BUILTIN(AtomicsWaitAsync) { … }
namespace {
V8_NOINLINE Maybe<bool> CheckAtomicsPauseIterationNumber(
Isolate* isolate, DirectHandle<Object> iteration_number) { … }
}
BUILTIN(AtomicsPause) { … }
}
}