5#ifndef INCLUDE_V8_ARRAY_BUFFER_H_
6#define INCLUDE_V8_ARRAY_BUFFER_H_
21class SharedArrayBuffer;
23#if defined(V8_COMPRESS_POINTERS) && \
24 !defined(V8_COMPRESS_POINTERS_IN_SHARED_CAGE)
28#ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
30#define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2
103 void operator delete(
void* ptr) { ::operator
delete(ptr); }
122 static void EmptyDeleter(
void* data,
size_t length,
void* deleter_data);
132#if !defined(V8_IMMINENT_DEPRECATION_WARNINGS)
187 size_t target_start)
const;
213#ifdef V8_ENABLE_CHECKS
219 static constexpr int kInternalFieldCount =
221 static constexpr int kEmbedderFieldCount = kInternalFieldCount;
224 static constexpr size_t kMaxByteLength =
225 internal::kMaxSafeBufferSizeForSandbox;
226#elif V8_HOST_ARCH_32_BIT
227 static constexpr size_t kMaxByteLength = std::numeric_limits<int>::max();
230 static constexpr size_t kMaxByteLength =
231 static_cast<size_t>((uint64_t{1} << 53) - 1);
236 static void CheckCast(
Value* obj);
281 virtual void Free(
void* data,
size_t length) = 0;
308#if defined(V8_COMPRESS_POINTERS) && \
309 !defined(V8_COMPRESS_POINTERS_IN_SHARED_CAGE)
345 Isolate* isolate,
size_t byte_length,
347 BackingStoreInitializationMode::kZeroInitialized);
356 Isolate* isolate,
size_t byte_length,
358 BackingStoreInitializationMode::kZeroInitialized);
373 std::shared_ptr<BackingStore> backing_store);
391 Isolate* isolate,
size_t byte_length,
393 BackingStoreInitializationMode::kZeroInitialized,
395 BackingStoreOnFailureMode::kOutOfMemory);
422 size_t byte_length,
size_t max_byte_length);
431 "Use the version which takes a key parameter (passing a null handle is "
451#ifdef V8_ENABLE_CHECKS
459 static void CheckCast(
Value* obj);
463#ifndef V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT
465#define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT 2
501 size_t CopyContents(
void* dest,
size_t byte_length);
511 std::span<uint8_t> GetContents(std::span<uint8_t> storage);
517 bool HasBuffer() const;
520#ifdef V8_ENABLE_CHECKS
526 static constexpr int kInternalFieldCount =
528 static const int kEmbedderFieldCount = kInternalFieldCount;
532 static void CheckCast(
Value* obj);
541 size_t byte_offset,
size_t length);
543#ifdef V8_ENABLE_CHECKS
546 return static_cast<DataView*
>(value);
551 static void CheckCast(
Value* obj);
566 Isolate* isolate,
size_t byte_length,
568 BackingStoreInitializationMode::kZeroInitialized);
578 Isolate* isolate,
size_t byte_length,
580 BackingStoreInitializationMode::kZeroInitialized);
595 Isolate* isolate, std::shared_ptr<BackingStore> backing_store);
614 Isolate* isolate,
size_t byte_length,
616 BackingStoreInitializationMode::kZeroInitialized,
618 BackingStoreOnFailureMode::kOutOfMemory);
633#ifdef V8_ENABLE_CHECKS
641 static void CheckCast(
Value* obj);
Definition: v8-array-buffer.h:143
bool IsResizableByUserJavaScript() const
size_t CopyArrayBufferBytes(size_t source_start, size_t bytes_to_copy, Local< ArrayBufferBase > target, size_t target_start) const
static ArrayBufferBase * Cast(Value *value)
Definition: v8-array-buffer.h:212
size_t ByteLength() const
bool IsDetachable() const
size_t MaxByteLength() const
std::shared_ptr< BackingStore > GetBackingStore()
Definition: v8-array-buffer.h:472
Definition: v8-array-buffer.h:261
virtual ~Allocator()=default
virtual void Free(void *data, size_t length)=0
static Allocator * NewDefaultAllocator()
virtual void * AllocateUninitialized(size_t length)=0
virtual size_t MaxAllocationSize() const
Definition: v8-array-buffer.h:290
virtual PageAllocator * GetPageAllocator()
Definition: v8-array-buffer.h:306
AllocationMode
Definition: v8-array-buffer.h:297
virtual void * Allocate(size_t length)=0
Definition: v8-array-buffer.h:244
static std::unique_ptr< BackingStore > NewBackingStore(void *data, size_t byte_length, v8::BackingStore::DeleterCallback deleter, void *deleter_data)
static std::unique_ptr< BackingStore > NewResizableBackingStore(size_t byte_length, size_t max_byte_length)
static Local< ArrayBuffer > New(Isolate *isolate, std::shared_ptr< BackingStore > backing_store)
static Local< ArrayBuffer > New(Isolate *isolate, size_t byte_length, BackingStoreInitializationMode initialization_mode=BackingStoreInitializationMode::kZeroInitialized)
static std::unique_ptr< BackingStore > NewBackingStore(Isolate *isolate, size_t byte_length, BackingStoreInitializationMode initialization_mode=BackingStoreInitializationMode::kZeroInitialized, BackingStoreOnFailureMode on_failure=BackingStoreOnFailureMode::kOutOfMemory)
static MaybeLocal< ArrayBuffer > MaybeNew(Isolate *isolate, size_t byte_length, BackingStoreInitializationMode initialization_mode=BackingStoreInitializationMode::kZeroInitialized)
Definition: v8-array-buffer.h:50
size_t MaxByteLength() const
size_t ByteLength() const
void(*)(void *data, size_t length, void *deleter_data) DeleterCallback
Definition: v8-array-buffer.h:111
static void EmptyDeleter(void *data, size_t length, void *deleter_data)
bool IsResizableByUserJavaScript() const
std::span< uint8_t > ByteSpan() const
Definition: v8-array-buffer.h:538
static Local< DataView > New(Local< ArrayBufferBase > array_buffer, size_t byte_offset, size_t length)
static DataView * Cast(Value *value)
Definition: v8-array-buffer.h:542
Definition: v8-isolate.h:232
Definition: v8-isolate.h:305
Definition: v8-local-handle.h:359
Definition: v8-local-handle.h:730
Definition: v8-maybe.h:39
Definition: v8-object.h:262
Definition: v8-platform.h:557
Definition: v8-array-buffer.h:557
static Local< SharedArrayBuffer > New(Isolate *isolate, std::shared_ptr< BackingStore > backing_store)
static MaybeLocal< SharedArrayBuffer > MaybeNew(Isolate *isolate, size_t byte_length, BackingStoreInitializationMode initialization_mode=BackingStoreInitializationMode::kZeroInitialized)
static std::unique_ptr< BackingStore > NewBackingStore(void *data, size_t byte_length, v8::BackingStore::DeleterCallback deleter, void *deleter_data)
static std::unique_ptr< BackingStore > NewBackingStore(Isolate *isolate, size_t byte_length, BackingStoreInitializationMode initialization_mode=BackingStoreInitializationMode::kZeroInitialized, BackingStoreOnFailureMode on_failure=BackingStoreOnFailureMode::kOutOfMemory)
static Local< SharedArrayBuffer > New(Isolate *isolate, size_t byte_length, BackingStoreInitializationMode initialization_mode=BackingStoreInitializationMode::kZeroInitialized)
static SharedArrayBuffer * Cast(Value *value)
Definition: v8-array-buffer.h:632
Definition: v8-typed-array.h:20
Definition: v8-value.h:32
Definition: v8-internal.h:1559
Definition: libplatform.h:15
void(*)(void *data, size_t length, void *deleter_data) BackingStoreDeleterCallback
Definition: v8-array-buffer.h:135
BackingStoreInitializationMode
Definition: v8-array-buffer.h:34
ArrayBufferCreationMode
Definition: v8-array-buffer.h:33
BackingStoreOnFailureMode
Definition: v8-array-buffer.h:35
#define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
Definition: v8-array-buffer.h:30
#define V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT
Definition: v8-array-buffer.h:465
#define V8_EXPORT
Definition: v8config.h:875
#define V8_INLINE
Definition: v8config.h:519
#define V8_DEPRECATE_SOON(message)
Definition: v8config.h:632
#define V8_DEPRECATED(message)
Definition: v8config.h:624
#define V8_WARN_UNUSED_RESULT
Definition: v8config.h:689