![]() |
v8
10.1.124 (node 18.2.0)
V8 is Google's open source JavaScript engine
|
#include <v8-array-buffer.h>


Public Types | |
| using | DeleterCallback = void(*)(void *data, size_t length, void *deleter_data) |
Public Member Functions | |
| ~BackingStore () | |
| void * | Data () const |
| size_t | ByteLength () const |
| bool | IsShared () const |
| void | operator delete (void *ptr) |
Static Public Member Functions | |
| static std::unique_ptr< BackingStore > | Reallocate (v8::Isolate *isolate, std::unique_ptr< BackingStore > backing_store, size_t byte_length) |
| static void | EmptyDeleter (void *data, size_t length, void *deleter_data) |
A wrapper around the backing store (i.e. the raw memory) of an array buffer. See a document linked in http://crbug.com/v8/9908 for more information.
The allocation and destruction of backing stores is generally managed by V8. Clients should always use standard C++ memory ownership types (i.e. std::unique_ptr and std::shared_ptr) to manage lifetimes of backing stores properly, since V8 internal objects may alias backing stores.
This object does not keep the underlying |ArrayBuffer::Allocator| alive by default. Use Isolate::CreateParams::array_buffer_allocator_shared when creating the Isolate to make it hold a reference to the allocator itself.
Definition at line 40 of file v8-array-buffer.h.
| using DeleterCallback = void (*)(void* data, size_t length, void* deleter_data) |
This callback is used only if the memory block for a BackingStore cannot be allocated with an ArrayBuffer::Allocator. In such cases the destructor of the BackingStore invokes the callback to free the memory block.
Definition at line 83 of file v8-array-buffer.h.
| ~BackingStore | ( | ) |
| size_t ByteLength | ( | ) | const |
The length (in bytes) of this backing store.
| void* Data | ( | ) | const |
Return a pointer to the beginning of the memory block for this backing store. The pointer is only valid as long as this backing store object lives.
|
static |
If the memory block of a BackingStore is static or is managed manually, then this empty deleter along with nullptr deleter_data can be passed to ArrayBuffer::NewBackingStore to indicate that.
The manually managed case should be used with caution and only when it is guaranteed that the memory block freeing happens after detaching its ArrayBuffer.
| bool IsShared | ( | ) | const |
Indicates whether the backing store was created for an ArrayBuffer or a SharedArrayBuffer.
|
inline |
Prevent implicit instantiation of operator delete with size_t argument. The size_t argument would be incorrect because ptr points to the internal BackingStore object.
Definition at line 67 of file v8-array-buffer.h.
|
static |
Wrapper around ArrayBuffer::Allocator::Reallocate that preserves IsShared. Assumes that the backing_store was allocated by the ArrayBuffer allocator of the given isolate.