V8 Project
v8::ArrayBuffer Class Reference

An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5). More...

#include <v8.h>

+ Inheritance diagram for v8::ArrayBuffer:
+ Collaboration diagram for v8::ArrayBuffer:

Classes

class  Allocator
 Allocator that V8 uses to allocate |ArrayBuffer|'s memory. More...
 
class  Contents
 The contents of an |ArrayBuffer|. More...
 

Public Member Functions

size_t ByteLength () const
 Data length in bytes. More...
 
bool IsExternal () const
 Returns true if ArrayBuffer is extrenalized, that is, does not own its memory block. More...
 
void Neuter ()
 Neuters this ArrayBuffer and all its views (typed arrays). More...
 
Contents Externalize ()
 Make this ArrayBuffer external. More...
 
- Public Member Functions inherited from v8::Object
bool Set (Handle< Value > key, Handle< Value > value)
 
bool Set (uint32_t index, Handle< Value > value)
 
bool ForceSet (Handle< Value > key, Handle< Value > value, PropertyAttribute attribs=None)
 
Local< ValueGet (Handle< Value > key)
 
Local< ValueGet (uint32_t index)
 
PropertyAttribute GetPropertyAttributes (Handle< Value > key)
 Gets the property attributes of a property which can be None or any combination of ReadOnly, DontEnum and DontDelete. More...
 
Local< ValueGetOwnPropertyDescriptor (Local< String > key)
 Returns Object.getOwnPropertyDescriptor as per ES5 section 15.2.3.3. More...
 
bool Has (Handle< Value > key)
 
bool Delete (Handle< Value > key)
 
bool ForceDelete (Handle< Value > key)
 
bool Has (uint32_t index)
 
bool Delete (uint32_t index)
 
bool SetAccessor (Handle< String > name, AccessorGetterCallback getter, AccessorSetterCallback setter=0, Handle< Value > data=Handle< Value >(), AccessControl settings=DEFAULT, PropertyAttribute attribute=None)
 
bool SetAccessor (Handle< Name > name, AccessorNameGetterCallback getter, AccessorNameSetterCallback setter=0, Handle< Value > data=Handle< Value >(), AccessControl settings=DEFAULT, PropertyAttribute attribute=None)
 
bool SetDeclaredAccessor (Local< Name > name, Local< DeclaredAccessorDescriptor > descriptor, PropertyAttribute attribute=None, AccessControl settings=DEFAULT)
 
void SetAccessorProperty (Local< Name > name, Local< Function > getter, Handle< Function > setter=Handle< Function >(), PropertyAttribute attribute=None, AccessControl settings=DEFAULT)
 
bool HasPrivate (Handle< Private > key)
 Functionality for private properties. More...
 
bool SetPrivate (Handle< Private > key, Handle< Value > value)
 
bool DeletePrivate (Handle< Private > key)
 
Local< ValueGetPrivate (Handle< Private > key)
 
Local< ArrayGetPropertyNames ()
 Returns an array containing the names of the enumerable properties of this object, including properties from prototype objects. More...
 
Local< ArrayGetOwnPropertyNames ()
 This function has the same functionality as GetPropertyNames but the returned array doesn't contain the names of properties from prototype objects. More...
 
Local< ValueGetPrototype ()
 Get the prototype object. More...
 
bool SetPrototype (Handle< Value > prototype)
 Set the prototype object. More...
 
Local< ObjectFindInstanceInPrototypeChain (Handle< FunctionTemplate > tmpl)
 Finds an instance of the given function template in the prototype chain. More...
 
Local< StringObjectProtoToString ()
 Call builtin Object.prototype.toString on this object. More...
 
Local< StringGetConstructorName ()
 Returns the name of the function invoked as a constructor for this object. More...
 
int InternalFieldCount ()
 Gets the number of internal fields for this Object. More...
 
Local< ValueGetInternalField (int index)
 Gets the value from an internal field. More...
 
void SetInternalField (int index, Handle< Value > value)
 Sets the value in an internal field. More...
 
void * GetAlignedPointerFromInternalField (int index)
 Gets a 2-byte-aligned native pointer from an internal field. More...
 
void SetAlignedPointerInInternalField (int index, void *value)
 Sets a 2-byte-aligned native pointer in an internal field. More...
 
bool HasOwnProperty (Handle< String > key)
 
bool HasRealNamedProperty (Handle< String > key)
 
bool HasRealIndexedProperty (uint32_t index)
 
bool HasRealNamedCallbackProperty (Handle< String > key)
 
Local< ValueGetRealNamedPropertyInPrototypeChain (Handle< String > key)
 If result.IsEmpty() no real property was located in the prototype chain. More...
 
Local< ValueGetRealNamedProperty (Handle< String > key)
 If result.IsEmpty() no real property was located on the object or in the prototype chain. More...
 
bool HasNamedLookupInterceptor ()
 Tests for a named lookup interceptor. More...
 
bool HasIndexedLookupInterceptor ()
 Tests for an index lookup interceptor. More...
 
void TurnOnAccessCheck ()
 Turns on access check on the object if the object is an instance of a template that has access check callbacks. More...
 
int GetIdentityHash ()
 Returns the identity hash for this object. More...
 
bool SetHiddenValue (Handle< String > key, Handle< Value > value)
 Access hidden properties on JavaScript objects. More...
 
Local< ValueGetHiddenValue (Handle< String > key)
 
bool DeleteHiddenValue (Handle< String > key)
 
bool IsDirty ()
 Returns true if this is an instance of an api function (one created from a function created from a function template) and has been modified since it was created. More...
 
Local< ObjectClone ()
 Clone this object with a fast but shallow copy. More...
 
Local< ContextCreationContext ()
 Returns the context in which the object was created. More...
 
void SetIndexedPropertiesToPixelData (uint8_t *data, int length)
 Set the backing store of the indexed properties to be managed by the embedding layer. More...
 
bool HasIndexedPropertiesInPixelData ()
 
uint8_t * GetIndexedPropertiesPixelData ()
 
int GetIndexedPropertiesPixelDataLength ()
 
void SetIndexedPropertiesToExternalArrayData (void *data, ExternalArrayType array_type, int number_of_elements)
 Set the backing store of the indexed properties to be managed by the embedding layer. More...
 
bool HasIndexedPropertiesInExternalArrayData ()
 
void * GetIndexedPropertiesExternalArrayData ()
 
ExternalArrayType GetIndexedPropertiesExternalArrayDataType ()
 
int GetIndexedPropertiesExternalArrayDataLength ()
 
bool IsCallable ()
 Checks whether a callback is set by the ObjectTemplate::SetCallAsFunctionHandler method. More...
 
Local< ValueCallAsFunction (Handle< Value > recv, int argc, Handle< Value > argv[])
 Call an Object as a function if a callback is set by the ObjectTemplate::SetCallAsFunctionHandler method. More...
 
Local< ValueCallAsConstructor (int argc, Handle< Value > argv[])
 Call an Object as a constructor if a callback is set by the ObjectTemplate::SetCallAsFunctionHandler method. More...
 
- Public Member Functions inherited from v8::Value
bool IsUndefined () const
 Returns true if this value is the undefined value. More...
 
bool IsNull () const
 Returns true if this value is the null value. More...
 
bool IsTrue () const
 Returns true if this value is true. More...
 
bool IsFalse () const
 Returns true if this value is false. More...
 
bool IsName () const
 Returns true if this value is a symbol or a string. More...
 
bool IsString () const
 Returns true if this value is an instance of the String type. More...
 
bool IsSymbol () const
 Returns true if this value is a symbol. More...
 
bool IsFunction () const
 Returns true if this value is a function. More...
 
bool IsArray () const
 Returns true if this value is an array. More...
 
bool IsObject () const
 Returns true if this value is an object. More...
 
bool IsBoolean () const
 Returns true if this value is boolean. More...
 
bool IsNumber () const
 Returns true if this value is a number. More...
 
bool IsExternal () const
 Returns true if this value is external. More...
 
bool IsInt32 () const
 Returns true if this value is a 32-bit signed integer. More...
 
bool IsUint32 () const
 Returns true if this value is a 32-bit unsigned integer. More...
 
bool IsDate () const
 Returns true if this value is a Date. More...
 
bool IsArgumentsObject () const
 Returns true if this value is an Arguments object. More...
 
bool IsBooleanObject () const
 Returns true if this value is a Boolean object. More...
 
bool IsNumberObject () const
 Returns true if this value is a Number object. More...
 
bool IsStringObject () const
 Returns true if this value is a String object. More...
 
bool IsSymbolObject () const
 Returns true if this value is a Symbol object. More...
 
bool IsNativeError () const
 Returns true if this value is a NativeError. More...
 
bool IsRegExp () const
 Returns true if this value is a RegExp. More...
 
bool IsGeneratorFunction () const
 Returns true if this value is a Generator function. More...
 
bool IsGeneratorObject () const
 Returns true if this value is a Generator object (iterator). More...
 
bool IsPromise () const
 Returns true if this value is a Promise. More...
 
bool IsMap () const
 Returns true if this value is a Map. More...
 
bool IsSet () const
 Returns true if this value is a Set. More...
 
bool IsWeakMap () const
 Returns true if this value is a WeakMap. More...
 
bool IsWeakSet () const
 Returns true if this value is a WeakSet. More...
 
bool IsArrayBuffer () const
 Returns true if this value is an ArrayBuffer. More...
 
bool IsArrayBufferView () const
 Returns true if this value is an ArrayBufferView. More...
 
bool IsTypedArray () const
 Returns true if this value is one of TypedArrays. More...
 
bool IsUint8Array () const
 Returns true if this value is an Uint8Array. More...
 
bool IsUint8ClampedArray () const
 Returns true if this value is an Uint8ClampedArray. More...
 
bool IsInt8Array () const
 Returns true if this value is an Int8Array. More...
 
bool IsUint16Array () const
 Returns true if this value is an Uint16Array. More...
 
bool IsInt16Array () const
 Returns true if this value is an Int16Array. More...
 
bool IsUint32Array () const
 Returns true if this value is an Uint32Array. More...
 
bool IsInt32Array () const
 Returns true if this value is an Int32Array. More...
 
bool IsFloat32Array () const
 Returns true if this value is a Float32Array. More...
 
bool IsFloat64Array () const
 Returns true if this value is a Float64Array. More...
 
bool IsDataView () const
 Returns true if this value is a DataView. More...
 
Local< BooleanToBoolean () const
 
Local< NumberToNumber () const
 
Local< StringToString () const
 
Local< StringToDetailString () const
 
Local< ObjectToObject () const
 
Local< IntegerToInteger () const
 
Local< Uint32ToUint32 () const
 
Local< Int32ToInt32 () const
 
Local< Uint32ToArrayIndex () const
 Attempts to convert a string to an array index. More...
 
bool BooleanValue () const
 
double NumberValue () const
 
int64_t IntegerValue () const
 
uint32_t Uint32Value () const
 
int32_t Int32Value () const
 
bool Equals (Handle< Value > that) const
 JS ==. More...
 
bool StrictEquals (Handle< Value > that) const
 
bool SameValue (Handle< Value > that) const
 

Static Public Member Functions

static Local< ArrayBufferNew (Isolate *isolate, size_t byte_length)
 Create a new ArrayBuffer. More...
 
static Local< ArrayBufferNew (Isolate *isolate, void *data, size_t byte_length)
 Create a new ArrayBuffer over an existing memory block. More...
 
static ArrayBufferCast (Value *obj)
 
- Static Public Member Functions inherited from v8::Object
static int InternalFieldCount (const PersistentBase< Object > &object)
 Same as above, but works for Persistents. More...
 
static void * GetAlignedPointerFromInternalField (const PersistentBase< Object > &object, int index)
 Same as above, but works for Persistents. More...
 
static Local< ObjectNew (Isolate *isolate)
 
static ObjectCast (Value *obj)
 
- Static Public Member Functions inherited from v8::Value
template<class T >
static ValueCast (T *value)
 

Static Public Attributes

static const int kInternalFieldCount = V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
 

Private Member Functions

 ArrayBuffer ()
 

Static Private Member Functions

static void CheckCast (Value *obj)
 

Detailed Description

An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5).

This API is experimental and may change significantly.

Definition at line 2850 of file v8.h.

Constructor & Destructor Documentation

◆ ArrayBuffer()

v8::ArrayBuffer::ArrayBuffer ( )
private

Member Function Documentation

◆ ByteLength()

size_t v8::ArrayBuffer::ByteLength ( ) const

Data length in bytes.

Definition at line 6018 of file api.cc.

6018  {
6020  return static_cast<size_t>(obj->byte_length()->Number());
6021 }
static v8::internal::Handle< To > OpenHandle(v8::Local< From > handle)
Definition: api.h:288

References v8::Utils::OpenHandle().

+ Here is the call graph for this function:

◆ Cast()

ArrayBuffer * v8::ArrayBuffer::Cast ( v8::Value value)
inlinestatic

Definition at line 6686 of file v8.h.

6686  {
6687 #ifdef V8_ENABLE_CHECKS
6688  CheckCast(value);
6689 #endif
6690  return static_cast<ArrayBuffer*>(value);
6691 }
static void CheckCast(Value *obj)
Definition: api.cc:2784

◆ CheckCast()

void v8::ArrayBuffer::CheckCast ( Value obj)
staticprivate

Definition at line 2784 of file api.cc.

2784  {
2786  Utils::ApiCheck(obj->IsJSArrayBuffer(),
2787  "v8::ArrayBuffer::Cast()",
2788  "Could not convert to ArrayBuffer");
2789 }
static bool ApiCheck(bool condition, const char *location, const char *message)
Definition: api.h:177

References v8::Utils::ApiCheck(), and v8::Utils::OpenHandle().

+ Here is the call graph for this function:

◆ Externalize()

v8::ArrayBuffer::Contents v8::ArrayBuffer::Externalize ( )

Make this ArrayBuffer external.

The pointer to underlying memory block and byte length are returned as |Contents| structure. After ArrayBuffer had been etxrenalized, it does no longer owns the memory block. The caller should take steps to free memory when it is no longer needed.

The memory block is guaranteed to be allocated with |Allocator::Allocate| that has been set with V8::SetArrayBufferAllocator.

Definition at line 5992 of file api.cc.

5992  {
5994  Utils::ApiCheck(!obj->is_external(),
5995  "v8::ArrayBuffer::Externalize",
5996  "ArrayBuffer already externalized");
5997  obj->set_is_external(true);
5998  size_t byte_length = static_cast<size_t>(obj->byte_length()->Number());
5999  Contents contents;
6000  contents.data_ = obj->backing_store();
6001  contents.byte_length_ = byte_length;
6002  return contents;
6003 }

References v8::Utils::ApiCheck(), v8::ArrayBuffer::Contents::byte_length_, v8::ArrayBuffer::Contents::data_, and v8::Utils::OpenHandle().

+ Here is the call graph for this function:

◆ IsExternal()

bool v8::ArrayBuffer::IsExternal ( ) const

Returns true if ArrayBuffer is extrenalized, that is, does not own its memory block.

Definition at line 5987 of file api.cc.

5987  {
5988  return Utils::OpenHandle(this)->is_external();
5989 }

References v8::Utils::OpenHandle().

+ Here is the call graph for this function:

◆ Neuter()

void v8::ArrayBuffer::Neuter ( )

Neuters this ArrayBuffer and all its views (typed arrays).

Neutering sets the byte length of the buffer and all typed arrays to zero, preventing JavaScript from ever accessing underlying backing store. ArrayBuffer should have been externalized.

Definition at line 6006 of file api.cc.

6006  {
6008  i::Isolate* isolate = obj->GetIsolate();
6009  Utils::ApiCheck(obj->is_external(),
6010  "v8::ArrayBuffer::Neuter",
6011  "Only externalized ArrayBuffers can be neutered");
6012  LOG_API(obj->GetIsolate(), "v8::ArrayBuffer::Neuter()");
6013  ENTER_V8(isolate);
6015 }
#define LOG_API(isolate, expr)
Definition: api.cc:52
#define ENTER_V8(isolate)
Definition: api.cc:54
static void NeuterArrayBuffer(Handle< JSArrayBuffer > array_buffer)

References v8::Utils::ApiCheck(), ENTER_V8, LOG_API, v8::internal::Runtime::NeuterArrayBuffer(), and v8::Utils::OpenHandle().

+ Here is the call graph for this function:

◆ New() [1/2]

Local< ArrayBuffer > v8::ArrayBuffer::New ( Isolate isolate,
size_t  byte_length 
)
static

Create a new ArrayBuffer.

Allocate |byte_length| bytes. Allocated memory will be owned by a created ArrayBuffer and will be deallocated when it is garbage-collected, unless the object is externalized.

Definition at line 6024 of file api.cc.

6024  {
6025  i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
6026  LOG_API(i_isolate, "v8::ArrayBuffer::New(size_t)");
6027  ENTER_V8(i_isolate);
6029  i_isolate->factory()->NewJSArrayBuffer();
6030  i::Runtime::SetupArrayBufferAllocatingData(i_isolate, obj, byte_length);
6031  return Utils::ToLocal(obj);
6032 }
static Local< Context > ToLocal(v8::internal::Handle< v8::internal::Context > obj)
Factory * factory()
Definition: isolate.h:982
static bool SetupArrayBufferAllocatingData(Isolate *isolate, Handle< JSArrayBuffer > array_buffer, size_t allocated_length, bool initialize=true)

References ENTER_V8, v8::internal::Isolate::factory(), LOG_API, v8::internal::Runtime::SetupArrayBufferAllocatingData(), and v8::Utils::ToLocal().

Referenced by v8::Shell::ReadBuffer().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ New() [2/2]

Local< ArrayBuffer > v8::ArrayBuffer::New ( Isolate isolate,
void *  data,
size_t  byte_length 
)
static

Create a new ArrayBuffer over an existing memory block.

The created array buffer is immediately in externalized state. The memory block will not be reclaimed when a created ArrayBuffer is garbage-collected.

Definition at line 6035 of file api.cc.

6036  {
6037  i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
6038  LOG_API(i_isolate, "v8::ArrayBuffer::New(void*, size_t)");
6039  ENTER_V8(i_isolate);
6041  i_isolate->factory()->NewJSArrayBuffer();
6042  i::Runtime::SetupArrayBuffer(i_isolate, obj, true, data, byte_length);
6043  return Utils::ToLocal(obj);
6044 }
static void SetupArrayBuffer(Isolate *isolate, Handle< JSArrayBuffer > array_buffer, bool is_external, void *data, size_t allocated_length)

References ENTER_V8, v8::internal::Isolate::factory(), LOG_API, v8::internal::Runtime::SetupArrayBuffer(), and v8::Utils::ToLocal().

+ Here is the call graph for this function:

Member Data Documentation

◆ kInternalFieldCount

const int v8::ArrayBuffer::kInternalFieldCount = V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT
static

Definition at line 2955 of file v8.h.

Referenced by v8::internal::Runtime::SetupArrayBuffer().


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