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

#include <v8-array-buffer.h>

Collaboration diagram for v8::ArrayBuffer::Allocator:

Public Types

enum class  AllocationMode { kNormal , kReservation }
 

Public Member Functions

virtual ~Allocator ()=default
 
virtual void * Allocate (size_t length)=0
 
virtual void * AllocateUninitialized (size_t length)=0
 
virtual void Free (void *data, size_t length)=0
 
virtual size_t MaxAllocationSize () const
 
virtual PageAllocatorGetPageAllocator ()
 

Static Public Member Functions

static AllocatorNewDefaultAllocator ()
 

Detailed Description

A thread-safe allocator that V8 uses to allocate |ArrayBuffer|'s memory. The allocator is a global V8 setting. It has to be set via Isolate::CreateParams.

Memory allocated through this allocator by V8 is accounted for as external memory by V8. Note that V8 keeps track of the memory for all internalized |ArrayBuffer|s. Responsibility for tracking external memory (using Isolate::AdjustAmountOfExternalAllocatedMemory) is handed over to the embedder upon externalization and taken over upon internalization (creating an internalized buffer from an existing buffer).

Note that it is unsafe to call back into V8 from any of the allocator functions.

Definition at line 148 of file v8-array-buffer.h.

Member Enumeration Documentation

◆ AllocationMode

ArrayBuffer allocation mode. kNormal is a malloc/free style allocation, while kReservation is for larger allocations with the ability to set access permissions.

Enumerator
kNormal 
kReservation 

Definition at line 184 of file v8-array-buffer.h.

Constructor & Destructor Documentation

◆ ~Allocator()

virtual v8::ArrayBuffer::Allocator::~Allocator ( )
virtualdefault

Member Function Documentation

◆ Allocate()

virtual void * v8::ArrayBuffer::Allocator::Allocate ( size_t length)
pure virtual

Allocate |length| bytes. Return nullptr if allocation is not successful. Memory should be initialized to zeroes.

◆ AllocateUninitialized()

virtual void * v8::ArrayBuffer::Allocator::AllocateUninitialized ( size_t length)
pure virtual

Allocate |length| bytes. Return nullptr if allocation is not successful. Memory does not have to be initialized.

◆ Free()

virtual void v8::ArrayBuffer::Allocator::Free ( void * data,
size_t length )
pure virtual

Free the memory block of size |length|, pointed to by |data|. That memory is guaranteed to be previously allocated by |Allocate|.

◆ GetPageAllocator()

virtual PageAllocator * v8::ArrayBuffer::Allocator::GetPageAllocator ( )
inlinevirtual

Returns page allocator used by this Allocator instance.

When the sandbox used by Allocator it is expected that this returns sandbox's page allocator. Otherwise, it should return system page allocator.

Definition at line 193 of file v8-array-buffer.h.

◆ MaxAllocationSize()

virtual size_t v8::ArrayBuffer::Allocator::MaxAllocationSize ( ) const
inlinevirtual

Returns a size_t that determines the largest ArrayBuffer that can be allocated. Override if your Allocator is more restrictive than the default. Will only be called once, and the value returned will be cached. Should not return a value that is larger than kMaxByteLength.

Definition at line 177 of file v8-array-buffer.h.

Here is the caller graph for this function:

◆ NewDefaultAllocator()

v8::ArrayBuffer::Allocator * v8::ArrayBuffer::Allocator::NewDefaultAllocator ( )
static

Convenience allocator.

When the sandbox is enabled, this allocator will allocate its backing memory inside the default global sandbox. Otherwise, it will rely on malloc/free.

Caller takes ownership, i.e. the returned object needs to be freed using |delete allocator| once it is no longer in use.

Definition at line 8923 of file api.cc.

Here is the caller graph for this function:

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