Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | List of all members
v8::BackingStore Class Reference

#include <v8-array-buffer.h>

Inheritance diagram for v8::BackingStore:
[legend]
Collaboration diagram for v8::BackingStore:
[legend]

Public Types

using DeleterCallback = void(*)(void *data, size_t length, void *deleter_data)
 

Public Member Functions

 ~BackingStore ()
 
void * Data () const
 
size_t ByteLength () const
 
size_t MaxByteLength () const
 
bool IsShared () const
 
bool IsResizableByUserJavaScript () const
 
void operator delete (void *ptr)
 

Static Public Member Functions

static std::unique_ptr< BackingStoreReallocate (v8::Isolate *isolate, std::unique_ptr< BackingStore > backing_store, size_t byte_length)
 
static void EmptyDeleter (void *data, size_t length, void *deleter_data)
 

Detailed Description

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.

Member Typedef Documentation

◆ DeleterCallback

using v8::BackingStore::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.

Constructor & Destructor Documentation

◆ ~BackingStore()

v8::BackingStore::~BackingStore ( )

Member Function Documentation

◆ ByteLength()

size_t v8::BackingStore::ByteLength ( ) const

The length (in bytes) of this backing store.

◆ Data()

void * v8::BackingStore::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.

◆ EmptyDeleter()

static void v8::BackingStore::EmptyDeleter ( void *  data,
size_t  length,
void *  deleter_data 
)
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.

◆ IsResizableByUserJavaScript()

bool v8::BackingStore::IsResizableByUserJavaScript ( ) const

Indicates whether the backing store was created for a resizable ArrayBuffer or a growable SharedArrayBuffer, and thus may be resized by user JavaScript code.

◆ IsShared()

bool v8::BackingStore::IsShared ( ) const

Indicates whether the backing store was created for an ArrayBuffer or a SharedArrayBuffer.

◆ MaxByteLength()

size_t v8::BackingStore::MaxByteLength ( ) const

The maximum length (in bytes) that this backing store may grow to.

If this backing store was created for a resizable ArrayBuffer or a growable SharedArrayBuffer, it is >= ByteLength(). Otherwise it is == ByteLength().

◆ operator delete()

void v8::BackingStore::operator delete ( void *  ptr)
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.

◆ Reallocate()

static std::unique_ptr< BackingStore > v8::BackingStore::Reallocate ( v8::Isolate isolate,
std::unique_ptr< BackingStore backing_store,
size_t  byte_length 
)
static

Wrapper around ArrayBuffer::Allocator::Reallocate that preserves IsShared. Assumes that the backing_store was allocated by the ArrayBuffer allocator of the given isolate.


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