v8  9.4.146 (node 16.13.0)
V8 is Google's open source JavaScript engine
v8 Namespace Reference

Namespaces

 base
 
 debug
 
 internal
 
 metrics
 
 platform
 

Data Structures

struct  WrapperDescriptor
 
struct  CppHeapCreateParams
 
class  CppHeap
 
class  JSVisitor
 
class  JSHeapConsistency
 
class  CustomSpaceStatisticsReceiver
 
class  CTypeInfo
 
struct  FastApiTypedArrayBase
 
struct  FastApiTypedArray
 
struct  FastApiArrayBufferView
 
struct  FastApiArrayBuffer
 
class  CFunctionInfo
 
class  CFunction
 
struct  FastApiCallbackOptions
 
class  Local
 
class  Task
 
class  IdleTask
 
class  TaskRunner
 
class  JobDelegate
 
class  JobHandle
 
class  JobTask
 
class  ConvertableToTraceFormat
 
class  TracingController
 
class  PageAllocator
 
class  Platform
 
struct  CpuProfileDeoptFrame
 
struct  CpuProfileDeoptInfo
 
class  CpuProfileNode
 
class  CpuProfile
 
class  DiscardedSamplesDelegate
 
class  CpuProfilingOptions
 
class  CpuProfiler
 
class  HeapGraphEdge
 
class  HeapGraphNode
 
class  OutputStream
 
class  HeapSnapshot
 
class  ActivityControl
 
class  AllocationProfile
 
class  EmbedderGraph
 
class  HeapProfiler
 
struct  HeapStatsUpdate
 
class  CodeEvent
 
class  CodeEventHandler
 
class  StdMapTraits
 
class  DefaultPersistentValueMapTraits
 
class  DefaultGlobalMapTraits
 
class  PersistentValueMapBase
 
class  PersistentValueMap
 
class  GlobalValueMap
 
class  StdPersistentValueMap
 
class  StdGlobalValueMap
 
class  DefaultPersistentValueVectorTraits
 
class  PersistentValueVector
 
class  NonCopyablePersistentTraits
 
class  Persistent
 
class  BasicTracedReference
 
class  Eternal
 
class  Global
 
class  Maybe
 
class  MaybeLocal
 
class  TracedGlobal
 
class  TracedReference
 
class  WeakCallbackObject
 
class  PersistentBase
 
class  FunctionCallbackInfo
 
class  PropertyCallbackInfo
 
class  ReturnValue
 
class  WeakCallbackInfo
 
struct  CopyablePersistentTraits
 
struct  TracedGlobalTrait
 
class  TracedReferenceBase
 
class  HandleScope
 
class  EscapableHandleScope
 
class  SealHandleScope
 
class  Data
 
class  ScriptOrModule
 
class  PrimitiveArray
 
class  ScriptOriginOptions
 
class  ScriptOrigin
 
class  UnboundScript
 
class  UnboundModuleScript
 
class  Location
 
class  FixedArray
 
class  ModuleRequest
 
class  Module
 
class  Script
 
class  ScriptCompiler
 
class  Message
 
class  StackTrace
 
class  StackFrame
 
struct  RegisterState
 
struct  SampleInfo
 
struct  MemoryRange
 
struct  JSEntryStub
 
struct  JSEntryStubs
 
class  JSON
 
class  ValueSerializer
 
class  ValueDeserializer
 
class  Value
 
class  Primitive
 
class  Boolean
 
class  Name
 
class  String
 
class  Symbol
 
class  Private
 
class  Number
 
class  Integer
 
class  Int32
 
class  Uint32
 
class  BigInt
 
class  Object
 
class  Array
 
class  Map
 
class  Set
 
class  Function
 
class  Promise
 
class  PropertyDescriptor
 
class  Proxy
 
class  MemorySpan
 
struct  OwnedBuffer
 
class  CompiledWasmModule
 
class  WasmMemoryObject
 
class  WasmModuleObject
 
class  WasmStreaming
 
class  WasmModuleObjectBuilderStreaming
 
class  BackingStore
 
class  ArrayBuffer
 
class  ArrayBufferView
 
class  TypedArray
 
class  Uint8Array
 
class  Uint8ClampedArray
 
class  Int8Array
 
class  Uint16Array
 
class  Int16Array
 
class  Uint32Array
 
class  Int32Array
 
class  Float32Array
 
class  Float64Array
 
class  BigInt64Array
 
class  BigUint64Array
 
class  DataView
 
class  SharedArrayBuffer
 
class  Date
 
class  NumberObject
 
class  BigIntObject
 
class  BooleanObject
 
class  StringObject
 
class  SymbolObject
 
class  RegExp
 
class  External
 
class  Template
 
class  FunctionTemplate
 
struct  NamedPropertyHandlerConfiguration
 
struct  IndexedPropertyHandlerConfiguration
 
class  ObjectTemplate
 
class  Signature
 
class  AccessorSignature
 
class  Extension
 
class  ResourceConstraints
 
class  Exception
 
class  PromiseRejectMessage
 
class  MicrotaskQueue
 
class  MicrotasksScope
 
struct  ModifyCodeGenerationFromStringsResult
 
class  SharedMemoryStatistics
 
class  HeapStatistics
 
class  HeapSpaceStatistics
 
class  HeapObjectStatistics
 
class  HeapCodeStatistics
 
struct  JitCodeEvent
 
class  ExternalResourceVisitor
 
class  PersistentHandleVisitor
 
class  EmbedderRootsHandler
 
class  EmbedderHeapTracer
 
struct  SerializeInternalFieldsCallback
 
struct  DeserializeInternalFieldsCallback
 
class  MeasureMemoryDelegate
 
class  Isolate
 
class  StartupData
 
class  V8
 
class  SnapshotCreator
 
class  Maybe< void >
 
class  TryCatch
 
class  ExtensionConfiguration
 
class  Context
 
class  Unlocker
 
class  Locker
 
class  Unwinder
 

Typedefs

using CFunctionBuilder = internal::CFunctionBuilder
 
using NativeObject = void *
 
using SnapshotObjectId = uint32_t
 
typedef uintptr_t PersistentContainerValue
 
template<class T >
using Handle = Local< T >
 
template<class T >
using UniquePersistent = Global< T >
 
using AccessorGetterCallback = void(*)(Local< String > property, const PropertyCallbackInfo< Value > &info)
 
using AccessorNameGetterCallback = void(*)(Local< Name > property, const PropertyCallbackInfo< Value > &info)
 
using AccessorSetterCallback = void(*)(Local< String > property, Local< Value > value, const PropertyCallbackInfo< void > &info)
 
using AccessorNameSetterCallback = void(*)(Local< Name > property, Local< Value > value, const PropertyCallbackInfo< void > &info)
 
using FunctionCallback = void(*)(const FunctionCallbackInfo< Value > &info)
 
using BackingStoreDeleterCallback = void(*)(void *data, size_t length, void *deleter_data)
 
using GenericNamedPropertyGetterCallback = void(*)(Local< Name > property, const PropertyCallbackInfo< Value > &info)
 
using GenericNamedPropertySetterCallback = void(*)(Local< Name > property, Local< Value > value, const PropertyCallbackInfo< Value > &info)
 
using GenericNamedPropertyQueryCallback = void(*)(Local< Name > property, const PropertyCallbackInfo< Integer > &info)
 
using GenericNamedPropertyDeleterCallback = void(*)(Local< Name > property, const PropertyCallbackInfo< Boolean > &info)
 
using GenericNamedPropertyEnumeratorCallback = void(*)(const PropertyCallbackInfo< Array > &info)
 
using GenericNamedPropertyDefinerCallback = void(*)(Local< Name > property, const PropertyDescriptor &desc, const PropertyCallbackInfo< Value > &info)
 
using GenericNamedPropertyDescriptorCallback = void(*)(Local< Name > property, const PropertyCallbackInfo< Value > &info)
 
using IndexedPropertyGetterCallback = void(*)(uint32_t index, const PropertyCallbackInfo< Value > &info)
 
using IndexedPropertySetterCallback = void(*)(uint32_t index, Local< Value > value, const PropertyCallbackInfo< Value > &info)
 
using IndexedPropertyQueryCallback = void(*)(uint32_t index, const PropertyCallbackInfo< Integer > &info)
 
using IndexedPropertyDeleterCallback = void(*)(uint32_t index, const PropertyCallbackInfo< Boolean > &info)
 
using IndexedPropertyEnumeratorCallback = void(*)(const PropertyCallbackInfo< Array > &info)
 
using IndexedPropertyDefinerCallback = void(*)(uint32_t index, const PropertyDescriptor &desc, const PropertyCallbackInfo< Value > &info)
 
using IndexedPropertyDescriptorCallback = void(*)(uint32_t index, const PropertyCallbackInfo< Value > &info)
 
using AccessCheckCallback = bool(*)(Local< Context > accessing_context, Local< Object > accessed_object, Local< Value > data)
 
using FatalErrorCallback = void(*)(const char *location, const char *message)
 
using OOMErrorCallback = void(*)(const char *location, bool is_heap_oom)
 
using DcheckErrorCallback = void(*)(const char *file, int line, const char *message)
 
using MessageCallback = void(*)(Local< Message > message, Local< Value > data)
 
using LogEventCallback = void(*)(const char *name, int status)
 
using CounterLookupCallback = int *(*)(const char *name)
 
using CreateHistogramCallback = void *(*)(const char *name, int min, int max, size_t buckets)
 
using AddHistogramSampleCallback = void(*)(void *histogram, int sample)
 
using AddCrashKeyCallback = void(*)(CrashKeyId id, const std::string &value)
 
using BeforeCallEnteredCallback = void(*)(Isolate *)
 
using CallCompletedCallback = void(*)(Isolate *)
 
using instead = MaybeLocal< Promise >(*)(Local< Context > context, Local< ScriptOrModule > referrer, Local< String > specifier)
 
using HostImportModuleDynamicallyWithImportAssertionsCallback = MaybeLocal< Promise >(*)(Local< Context > context, Local< ScriptOrModule > referrer, Local< String > specifier, Local< FixedArray > import_assertions)
 
using HostInitializeImportMetaObjectCallback = void(*)(Local< Context > context, Local< Module > module, Local< Object > meta)
 
using PrepareStackTraceCallback = MaybeLocal< Value >(*)(Local< Context > context, Local< Value > error, Local< Array > sites)
 
using PromiseHook = void(*)(PromiseHookType type, Local< Promise > promise, Local< Value > parent)
 
using PromiseRejectCallback = void(*)(PromiseRejectMessage message)
 
using MicrotasksCompletedCallbackWithData = void(*)(Isolate *, void *)
 
using MicrotaskCallback = void(*)(void *data)
 
using FailedAccessCheckCallback = void(*)(Local< Object > target, AccessType type, Local< Value > data)
 
using AllowCodeGenerationFromStringsCallback = bool(*)(Local< Context > context, Local< String > source)
 
using ModifyCodeGenerationFromStringsCallback = ModifyCodeGenerationFromStringsResult(*)(Local< Context > context, Local< Value > source)
 
using ModifyCodeGenerationFromStringsCallback2 = ModifyCodeGenerationFromStringsResult(*)(Local< Context > context, Local< Value > source, bool is_code_like)
 
using ExtensionCallback = bool(*)(const FunctionCallbackInfo< Value > &)
 
using AllowWasmCodeGenerationCallback = bool(*)(Local< Context > context, Local< String > source)
 
using ApiImplementationCallback = void(*)(const FunctionCallbackInfo< Value > &)
 
using WasmStreamingCallback = void(*)(const FunctionCallbackInfo< Value > &)
 
using WasmLoadSourceMapCallback = Local< String >(*)(Isolate *isolate, const char *name)
 
using WasmSimdEnabledCallback = bool(*)(Local< Context > context)
 
using WasmExceptionsEnabledCallback = bool(*)(Local< Context > context)
 
using SharedArrayBufferConstructorEnabledCallback = bool(*)(Local< Context > context)
 
using GCCallback = void(*)(GCType type, GCCallbackFlags flags)
 
using InterruptCallback = void(*)(Isolate *isolate, void *data)
 
using NearHeapLimitCallback = size_t(*)(void *data, size_t current_heap_limit, size_t initial_heap_limit)
 
using JitCodeEventHandler = void(*)(const JitCodeEvent *event)
 
using SerializeEmbedderFieldsCallback = SerializeInternalFieldsCallback
 
using DeserializeEmbedderFieldsCallback = DeserializeInternalFieldsCallback
 
using EntropySource = bool(*)(unsigned char *buffer, size_t length)
 
using ReturnAddressLocationResolver = uintptr_t(*)(uintptr_t return_addr_location)
 

Enumerations

enum class  TaskPriority : uint8_t { kBestEffort , kUserVisible , kUserBlocking }
 
enum  CpuProfilingMode { kLeafNodeLineNumbers , kCallerLineNumbers }
 
enum  CpuProfilingNamingMode { kStandardNaming , kDebugNaming }
 
enum  CpuProfilingLoggingMode { kLazyLogging , kEagerLogging }
 
enum class  CpuProfilingStatus { kStarted , kAlreadyStarted , kErrorTooManyProfilers }
 
enum  CodeEventType { kUnknownType }
 
enum  PersistentContainerCallbackType { kNotWeak , kWeakWithParameter , kWeakWithInternalFields }
 
enum class  WeakCallbackType { kParameter , kInternalFields , kFinalizer }
 
enum class  ScriptType { kClassic , kModule }
 
enum  StateTag {
  JS , GC , PARSER , BYTECODE_COMPILER ,
  COMPILER , OTHER , EXTERNAL , ATOMICS_WAIT ,
  IDLE
}
 
enum class  NewStringType { kNormal , kInternalized }
 
enum  PropertyAttribute { None = 0 , ReadOnly = 1 << 0 , DontEnum = 1 << 1 , DontDelete = 1 << 2 }
 
enum  AccessControl { DEFAULT = 0 , ALL_CAN_READ = 1 , ALL_CAN_WRITE = 1 << 1 , PROHIBITS_OVERWRITING = 1 << 2 }
 
enum  PropertyFilter {
  ALL_PROPERTIES = 0 , ONLY_WRITABLE = 1 , ONLY_ENUMERABLE = 2 , ONLY_CONFIGURABLE = 4 ,
  SKIP_STRINGS = 8 , SKIP_SYMBOLS = 16
}
 
enum class  SideEffectType { kHasSideEffect , kHasNoSideEffect , kHasSideEffectToReceiver }
 
enum class  KeyCollectionMode { kOwnOnly , kIncludePrototypes }
 
enum class  IndexFilter { kIncludeIndices , kSkipIndices }
 
enum class  KeyConversionMode { kConvertToString , kKeepNumbers , kNoNumbers }
 
enum class  IntegrityLevel { kFrozen , kSealed }
 
enum class  ConstructorBehavior { kThrow , kAllow }
 
enum class  ArrayBufferCreationMode { kInternalized , kExternalized }
 
enum  Intrinsic
 
enum  AccessType {
  ACCESS_GET , ACCESS_SET , ACCESS_HAS , ACCESS_DELETE ,
  ACCESS_KEYS
}
 
enum class  PropertyHandlerFlags {
  kNone = 0 , kAllCanRead = 1 , kNonMasking = 1 << 1 , kOnlyInterceptStrings = 1 << 2 ,
  kHasNoSideEffect = 1 << 3
}
 
enum  LogEventStatus : int { kStart = 0 , kEnd = 1 , kStamp = 2 }
 
enum class  CrashKeyId {
  kIsolateAddress , kReadonlySpaceFirstPageAddress , kMapSpaceFirstPageAddress , kCodeSpaceFirstPageAddress ,
  kDumpType
}
 
enum class  PromiseHookType { kInit , kResolve , kBefore , kAfter }
 
enum  PromiseRejectEvent { kPromiseRejectWithNoHandler = 0 , kPromiseHandlerAddedAfterReject = 1 , kPromiseRejectAfterResolved = 2 , kPromiseResolveAfterResolved = 3 }
 
enum class  MicrotasksPolicy { kExplicit , kScoped , kAuto }
 
enum  GCType {
  kGCTypeScavenge = 1 << 0 , kGCTypeMarkSweepCompact = 1 << 1 , kGCTypeIncrementalMarking = 1 << 2 , kGCTypeProcessWeakCallbacks = 1 << 3 ,
  kGCTypeAll
}
 
enum  GCCallbackFlags {
  kNoGCCallbackFlags = 0 , kGCCallbackFlagConstructRetainedObjectInfos = 1 << 1 , kGCCallbackFlagForced = 1 << 2 , kGCCallbackFlagSynchronousPhantomCallbackProcessing = 1 << 3 ,
  kGCCallbackFlagCollectAllAvailableGarbage = 1 << 4 , kGCCallbackFlagCollectAllExternalMemory = 1 << 5 , kGCCallbackScheduleIdleGarbageCollection = 1 << 6
}
 
enum  RAILMode : unsigned { PERFORMANCE_RESPONSE , PERFORMANCE_ANIMATION , PERFORMANCE_IDLE , PERFORMANCE_LOAD }
 
enum  JitCodeEventOptions { kJitCodeEventDefault = 0 , kJitCodeEventEnumExisting = 1 }
 
enum class  MemoryPressureLevel { kNone , kModerate , kCritical }
 
enum class  MeasureMemoryMode { kSummary , kDetailed }
 
enum class  MeasureMemoryExecution { kDefault , kEager , kLazy }
 

Functions

struct V8_DEPRECATE_SOON ("Use v8::Local<v8::Value> instead.") ApiObject
 
template<const CTypeInfo * type_info, typename T >
bool V8_EXPORT V8_WARN_UNUSED_RESULT TryCopyAndConvertArrayToCppBuffer (Local< Array > src, T *dst, uint32_t max_length)
 
template<>
bool V8_WARN_UNUSED_RESULT TryCopyAndConvertArrayToCppBuffer<&kTypeInfoInt32, int32_t > (Local< Array > src, int32_t *dst, uint32_t max_length)
 
template<>
bool V8_WARN_UNUSED_RESULT TryCopyAndConvertArrayToCppBuffer<&kTypeInfoFloat64, double > (Local< Array > src, double *dst, uint32_t max_length)
 
V8_EXPORT bool CopyAndConvertArrayToCppBufferInt32 (Local< Array > src, int32_t *dst, uint32_t max_length)
 
V8_EXPORT bool CopyAndConvertArrayToCppBufferFloat64 (Local< Array > src, double *dst, uint32_t max_length)
 
constexpr uint32_t CurrentValueSerializerFormatVersion ()
 
V8_EXPORT bool TryHandleWebAssemblyTrapPosix (int sig_code, siginfo_t *info, void *context)
 
V8_EXPORT bool TryHandleWebAssemblyTrapWindows (EXCEPTION_POINTERS *exception)
 
void V8_EXPORT RegisterExtension (std::unique_ptr< Extension >)
 
V8_INLINE Local< PrimitiveUndefined (Isolate *isolate)
 
V8_INLINE Local< PrimitiveNull (Isolate *isolate)
 
V8_INLINE Local< BooleanTrue (Isolate *isolate)
 
V8_INLINE Local< BooleanFalse (Isolate *isolate)
 
template<class T >
Maybe< T > Nothing ()
 
template<class T >
Maybe< T > Just (const T &t)
 
Maybe< void > JustVoid ()
 
V8_INLINE bool operator== (const TracedReferenceBase &lhs, const TracedReferenceBase &rhs)
 
template<typename U >
V8_INLINE bool operator== (const TracedReferenceBase &lhs, const v8::Local< U > &rhs)
 
template<typename U >
V8_INLINE bool operator== (const v8::Local< U > &lhs, const TracedReferenceBase &rhs)
 
V8_INLINE bool operator!= (const TracedReferenceBase &lhs, const TracedReferenceBase &rhs)
 
template<typename U >
V8_INLINE bool operator!= (const TracedReferenceBase &lhs, const v8::Local< U > &rhs)
 
template<typename U >
V8_INLINE bool operator!= (const v8::Local< U > &lhs, const TracedReferenceBase &rhs)
 

Detailed Description

This file provides additional API on top of the default one for making API calls, which come from embedder C++ functions. The functions are being called directly from optimized code, doing all the necessary typechecks in the compiler itself, instead of on the embedder side. Hence the "fast" in the name. Example usage might look like:

void FastMethod(int param, bool another_param);
v8::FunctionTemplate::New(isolate, SlowCallback, data,
signature, length, constructor_behavior
side_effect_type,
&v8::CFunction::Make(FastMethod));
static CFunction Make(F *func)
static Local< FunctionTemplate > New(Isolate *isolate, FunctionCallback callback=nullptr, Local< Value > data=Local< Value >(), Local< Signature > signature=Local< Signature >(), int length=0, ConstructorBehavior behavior=ConstructorBehavior::kAllow, SideEffectType side_effect_type=SideEffectType::kHasSideEffect, const CFunction *c_function=nullptr, uint16_t instance_type=0, uint16_t allowed_receiver_instance_type_range_start=0, uint16_t allowed_receiver_instance_type_range_end=0)

By design, fast calls are limited by the following requirements, which the embedder should enforce themselves:

Due to these limitations, it's not directly possible to report errors by throwing a JS exception or to otherwise do an allocation. There is an alternative way of creating fast calls that supports falling back to the slow call and then performing the necessary allocation. When one creates the fast method by using CFunction::MakeWithFallbackSupport instead of CFunction::Make, the fast callback gets as last parameter an output variable, through which it can request falling back to the slow call. So one might declare their method like:

void FastMethodWithFallback(int param, FastApiCallbackOptions& options);

If the callback wants to signal an error condition or to perform an allocation, it must set options.fallback to true and do an early return from the fast method. Then V8 checks the value of options.fallback and if it's true, falls back to executing the SlowCallback, which is capable of reporting the error (either by throwing a JS exception or logging to the console) or doing the allocation. It's the embedder's responsibility to ensure that the fast callback is idempotent up to the point where error and fallback conditions are checked, because otherwise executing the slow callback might produce visible side-effects twice.

An example for custom embedder type support might employ a way to wrap/ unwrap various C++ types in JSObject instances, e.g:

// Helper method with a check for field count.
template <typename T, int offset>
inline T* GetInternalField(v8::Local<v8::Object> wrapper) {
assert(offset < wrapper->InternalFieldCount());
return reinterpret_cast<T*>(
wrapper->GetAlignedPointerFromInternalField(offset));
}
class CustomEmbedderType {
public:
// Returns the raw C object from a wrapper JS object.
static CustomEmbedderType* Unwrap(v8::Local<v8::Object> wrapper) {
return GetInternalField<CustomEmbedderType,
kV8EmbedderWrapperObjectIndex>(wrapper);
}
static void FastMethod(v8::Local<v8::Object> receiver_obj, int param) {
CustomEmbedderType* receiver = static_cast<CustomEmbedderType*>(
receiver_obj->GetAlignedPointerFromInternalField(
kV8EmbedderWrapperObjectIndex));
// Type checks are already done by the optimized code.
// Then call some performance-critical method like:
// receiver->Method(param);
}
static void SlowMethod(
CustomEmbedderType* receiver = Unwrap(instance);
// TODO: Do type checks and extract {param}.
receiver->Method(param);
}
};
// TODO(mslekova): Clean-up these constants
// The constants kV8EmbedderWrapperTypeIndex and
// kV8EmbedderWrapperObjectIndex describe the offsets for the type info
// struct and the native object, when expressed as internal field indices
// within a JSObject. The existance of this helper function assumes that
// all embedder objects have their JSObject-side type info at the same
// offset, but this is not a limitation of the API itself. For a detailed
// use case, see the third example.
static constexpr int kV8EmbedderWrapperTypeIndex = 0;
static constexpr int kV8EmbedderWrapperObjectIndex = 1;
// The following setup function can be templatized based on
// the {embedder_object} argument.
void SetupCustomEmbedderObject(v8::Isolate* isolate,
CustomEmbedderType* embedder_object) {
isolate->set_embedder_wrapper_type_index(
kV8EmbedderWrapperTypeIndex);
isolate->set_embedder_wrapper_object_index(
kV8EmbedderWrapperObjectIndex);
v8::CFunction c_func =
MakeV8CFunction(CustomEmbedderType::FastMethod);
Local<v8::FunctionTemplate> method_template =
isolate, CustomEmbedderType::SlowMethod, v8::Local<v8::Value>(),
object_template->SetInternalFieldCount(
kV8EmbedderWrapperObjectIndex + 1);
object_template->Set(isolate, "method", method_template);
// Instantiate the wrapper JS object.
object_template->NewInstance(context).ToLocalChecked();
object->SetAlignedPointerInInternalField(
kV8EmbedderWrapperObjectIndex,
reinterpret_cast<void*>(embedder_object));
// TODO: Expose {object} where it's necessary.
}
V8_INLINE Local< Object > Holder() const
Definition: v8.h:11441
Definition: v8.h:201
static V8_INLINE Local< T > Cast(Local< S > that)
Definition: v8.h:282
static Local< ObjectTemplate > New(Isolate *isolate, Local< FunctionTemplate > constructor=Local< FunctionTemplate >())

For instance if {object} is exposed via a global "obj" variable, one could write in JS: function hot_func() { obj.method(42); } and once {hot_func} gets optimized, CustomEmbedderType::FastMethod will be called instead of the slow version, with the following arguments: receiver := the {embedder_object} from above param := 42

Currently supported return types:

  • void
  • bool
  • int32_t
  • uint32_t
  • float32_t
  • float64_t Currently supported argument types:

pointer to an embedder type

  • JavaScript array of primitive types
  • bool
  • int32_t
  • uint32_t
  • int64_t
  • uint64_t
  • float32_t
  • float64_t

The 64-bit integer types currently have the IDL (unsigned) long long semantics: https://heycam.github.io/webidl/#abstract-opdef-converttoint In the future we'll extend the API to also provide conversions from/to BigInt to preserve full precision. The floating point types currently have the IDL (unrestricted) semantics, which is the only one used by WebGL. We plan to add support also for restricted floats/doubles, similarly to the BigInt conversion policies. We also differ from the specific NaN bit pattern that WebIDL prescribes (https://heycam.github.io/webidl/#es-unrestricted-float) in that Blink passes NaN values as-is, i.e. doesn't normalize them.

To be supported types:

  • TypedArrays and ArrayBuffers
  • arrays of embedder types

The API offers a limited support for function overloads:

void FastMethod_2Args(int param, bool another_param);
void FastMethod_3Args(int param, bool another_param, int third_param);
v8::CFunction fast_method_2args_c_func =
MakeV8CFunction(FastMethod_2Args);
v8::CFunction fast_method_3args_c_func =
MakeV8CFunction(FastMethod_3Args);
const v8::CFunction fast_method_overloads[] = {fast_method_2args_c_func,
fast_method_3args_c_func};
Local<v8::FunctionTemplate> method_template =
isolate, SlowCallback, data, signature, length,
constructor_behavior, side_effect_type,
{fast_method_overloads, 2});
static Local< FunctionTemplate > NewWithCFunctionOverloads(Isolate *isolate, FunctionCallback callback=nullptr, Local< Value > data=Local< Value >(), Local< Signature > signature=Local< Signature >(), int length=0, ConstructorBehavior behavior=ConstructorBehavior::kAllow, SideEffectType side_effect_type=SideEffectType::kHasSideEffect, const MemorySpan< const CFunction > &c_function_overloads={})

In this example a single FunctionTemplate is associated to multiple C++ functions. The overload resolution is currently only based on the number of arguments passed in a call. For example, if this method_template is registered with a wrapper JS object as described above, a call with two arguments: obj.method(42, true); will result in a fast call to FastMethod_2Args, while a call with three or more arguments: obj.method(42, true, 11); will result in a fast call to FastMethod_3Args. Instead a call with less than two arguments, like: obj.method(42); would not result in a fast call but would fall back to executing the associated SlowCallback.

Profiler support for the V8 JavaScript engine.

Support for Persistent containers.

C++11 embedders can use STL containers with Global values, but pre-C++11 does not support the required move semantic and hence may want these container classes.

Compile-time constants.

This header provides access to information about the value serializer at compile time, without declaring or defining any symbols that require linking to V8.

The v8 JavaScript engine.

Typedef Documentation

◆ AccessCheckCallback

using AccessCheckCallback = bool (*)(Local<Context> accessing_context, Local<Object> accessed_object, Local<Value> data)

Returns true if the given context should be allowed to access the given object.

Definition at line 6414 of file v8.h.

◆ AccessorGetterCallback

using AccessorGetterCallback = void (*)(Local<String> property, const PropertyCallbackInfo<Value>& info)

Accessor[Getter|Setter] are used as callback functions when setting|getting a particular property. See Object and ObjectTemplate's method SetAccessor.

Definition at line 3873 of file v8.h.

◆ AccessorNameGetterCallback

using AccessorNameGetterCallback = void (*)(Local<Name> property, const PropertyCallbackInfo<Value>& info)

Definition at line 3875 of file v8.h.

◆ AccessorNameSetterCallback

using AccessorNameSetterCallback = void (*)(Local<Name> property, Local<Value> value, const PropertyCallbackInfo<void>& info)

Definition at line 3881 of file v8.h.

◆ AccessorSetterCallback

using AccessorSetterCallback = void (*)(Local<String> property, Local<Value> value, const PropertyCallbackInfo<void>& info)

Definition at line 3878 of file v8.h.

◆ AddCrashKeyCallback

using AddCrashKeyCallback = void (*)(CrashKeyId id, const std::string& value)

Definition at line 7308 of file v8.h.

◆ AddHistogramSampleCallback

using AddHistogramSampleCallback = void (*)(void* histogram, int sample)

Definition at line 7297 of file v8.h.

◆ AllowCodeGenerationFromStringsCallback

using AllowCodeGenerationFromStringsCallback = bool (*)(Local<Context> context, Local<String> source)

Callback to check if code generation from strings is allowed. See Context::AllowCodeGenerationFromStrings.

Definition at line 7593 of file v8.h.

◆ AllowWasmCodeGenerationCallback

using AllowWasmCodeGenerationCallback = bool (*)(Local<Context> context, Local<String> source)

Definition at line 7620 of file v8.h.

◆ ApiImplementationCallback

Definition at line 7625 of file v8.h.

◆ BackingStoreDeleterCallback

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

Definition at line 5358 of file v8.h.

◆ BeforeCallEnteredCallback

using BeforeCallEnteredCallback = void (*)(Isolate*)

Definition at line 7311 of file v8.h.

◆ CallCompletedCallback

using CallCompletedCallback = void (*)(Isolate*)

Definition at line 7312 of file v8.h.

◆ CFunctionBuilder

◆ CounterLookupCallback

using CounterLookupCallback = int* (*)(const char* name)

Definition at line 7292 of file v8.h.

◆ CreateHistogramCallback

using CreateHistogramCallback = void* (*)(const char* name, int min, int max, size_t buckets)

Definition at line 7294 of file v8.h.

◆ DcheckErrorCallback

using DcheckErrorCallback = void (*)(const char* file, int line, const char* message)

Definition at line 7249 of file v8.h.

◆ DeserializeEmbedderFieldsCallback

◆ EntropySource

using EntropySource = bool (*)(unsigned char* buffer, size_t length)

EntropySource is used as a callback function when v8 needs a source of entropy.

Definition at line 9767 of file v8.h.

◆ ExtensionCallback

using ExtensionCallback = bool (*)(const FunctionCallbackInfo<Value>&)

Definition at line 7618 of file v8.h.

◆ FailedAccessCheckCallback

using FailedAccessCheckCallback = void (*)(Local<Object> target, AccessType type, Local<Value> data)

Definition at line 7584 of file v8.h.

◆ FatalErrorCallback

using FatalErrorCallback = void (*)(const char* location, const char* message)

Definition at line 7245 of file v8.h.

◆ FunctionCallback

using FunctionCallback = void (*)(const FunctionCallbackInfo<Value>& info)

Definition at line 4743 of file v8.h.

◆ GCCallback

using GCCallback = void (*)(GCType type, GCCallbackFlags flags)

Definition at line 7686 of file v8.h.

◆ GenericNamedPropertyDefinerCallback

using GenericNamedPropertyDefinerCallback = void (*)(Local<Name> property, const PropertyDescriptor& desc, const PropertyCallbackInfo<Value>& info)

Interceptor for defineProperty requests on an object.

Use info.GetReturnValue() to indicate whether the request was intercepted or not. If the definer successfully intercepts the request, i.e., if the request should not be further executed, call info.GetReturnValue().Set(value). If the definer did not intercept the request, i.e., if the request should be handled as if no interceptor is present, do not not call Set().

Parameters
propertyThe name of the property for which the request was intercepted.
descThe property descriptor which is used to define the property if the request is not intercepted.
infoInformation about the intercepted request, such as isolate, receiver, return value, or whether running in ‘'use strict’mode. SeePropertyCallbackInfo`.

See also ObjectTemplate::SetHandler.

Definition at line 6325 of file v8.h.

◆ GenericNamedPropertyDeleterCallback

using GenericNamedPropertyDeleterCallback = void (*)(Local<Name> property, const PropertyCallbackInfo<Boolean>& info)

Interceptor for delete requests on an object.

Use info.GetReturnValue() to indicate whether the request was intercepted or not. If the deleter successfully intercepts the request, i.e., if the request should not be further executed, call info.GetReturnValue().Set(value) with a boolean value. The value is used as the return value of delete.

Parameters
propertyThe name of the property for which the request was intercepted.
infoInformation about the intercepted request, such as isolate, receiver, return value, or whether running in ‘'use strict’mode. SeePropertyCallbackInfo`.
Note
If you need to mimic the behavior of delete, i.e., throw in strict mode instead of returning false, use info.ShouldThrowOnError() to determine if you are in strict mode.

See also ObjectTemplate::SetHandler.

Definition at line 6293 of file v8.h.

◆ GenericNamedPropertyDescriptorCallback

using GenericNamedPropertyDescriptorCallback = void (*)(Local<Name> property, const PropertyCallbackInfo<Value>& info)

Interceptor for getOwnPropertyDescriptor requests on an object.

Use info.GetReturnValue().Set() to set the return value of the intercepted request. The return value must be an object that can be converted to a PropertyDescriptor, e.g., a v8::value returned from v8::Object::getOwnPropertyDescriptor.

Parameters
propertyThe name of the property for which the request was intercepted. \info Information about the intercepted request, such as isolate, receiver, return value, or whether running in ‘'use strict’mode. SeePropertyCallbackInfo`.
Note
If GetOwnPropertyDescriptor is intercepted, it will always return true, i.e., indicate that the property was found.

See also ObjectTemplate::SetHandler.

Definition at line 6348 of file v8.h.

◆ GenericNamedPropertyEnumeratorCallback

Returns an array containing the names of the properties the named property getter intercepts.

Note: The values in the array must be of type v8::Name.

Definition at line 6302 of file v8.h.

◆ GenericNamedPropertyGetterCallback

using GenericNamedPropertyGetterCallback = void (*)(Local<Name> property, const PropertyCallbackInfo<Value>& info)

Interceptor for get requests on an object.

Use info.GetReturnValue().Set() to set the return value of the intercepted get request.

Parameters
propertyThe name of the property for which the request was intercepted.
infoInformation about the intercepted request, such as isolate, receiver, return value, or whether running in 'use strict' mode. See PropertyCallbackInfo.
void GetterCallback(
Local<Name> name,
info.GetReturnValue().Set(v8_num(42));
}
templ->InstanceTemplate()->SetHandler(
LocalContext env;
env->Global()
->Set(env.local(), v8_str("obj"), templ->GetFunction(env.local())
.ToLocalChecked()
->NewInstance(env.local())
.ToLocalChecked())
.FromJust();
v8::Local<v8::Value> result = CompileRun("obj.a = 17; obj.a");
CHECK(v8_num(42)->Equals(env.local(), result).FromJust());
V8_INLINE ReturnValue< T > GetReturnValue() const
Definition: v8.h:12186

See also ObjectTemplate::SetHandler.

Definition at line 6220 of file v8.h.

◆ GenericNamedPropertyQueryCallback

using GenericNamedPropertyQueryCallback = void (*)(Local<Name> property, const PropertyCallbackInfo<Integer>& info)

Intercepts all requests that query the attributes of the property, e.g., getOwnPropertyDescriptor(), propertyIsEnumerable(), and defineProperty().

Use info.GetReturnValue().Set(value) to set the property attributes. The value is an integer encoding a v8::PropertyAttribute.

Parameters
propertyThe name of the property for which the request was intercepted.
infoInformation about the intercepted request, such as isolate, receiver, return value, or whether running in ‘'use strict’mode. SeePropertyCallbackInfo`.
Note
Some functions query the property attributes internally, even though they do not return the attributes. For example, hasOwnProperty() can trigger this interceptor depending on the state of the object.

See also ObjectTemplate::SetHandler.

Definition at line 6269 of file v8.h.

◆ GenericNamedPropertySetterCallback

using GenericNamedPropertySetterCallback = void (*)(Local<Name> property, Local<Value> value, const PropertyCallbackInfo<Value>& info)

Interceptor for set requests on an object.

Use info.GetReturnValue() to indicate whether the request was intercepted or not. If the setter successfully intercepts the request, i.e., if the request should not be further executed, call info.GetReturnValue().Set(value). If the setter did not intercept the request, i.e., if the request should be handled as if no interceptor is present, do not not call Set().

Parameters
propertyThe name of the property for which the request was intercepted.
valueThe value which the property will have if the request is not intercepted.
infoInformation about the intercepted request, such as isolate, receiver, return value, or whether running in ‘'use strict’mode. SeePropertyCallbackInfo`.

See also ObjectTemplate::SetHandler.

Definition at line 6244 of file v8.h.

◆ Handle

using Handle = Local<T>

Definition at line 358 of file v8.h.

◆ HostImportModuleDynamicallyWithImportAssertionsCallback

HostImportModuleDynamicallyWithImportAssertionsCallback is called when we require the embedder to load a module. This is used as part of the dynamic import syntax.

The referrer contains metadata about the script/module that calls import.

The specifier is the name of the module that should be imported.

The import_assertions are import assertions for this request in the form: [key1, value1, key2, value2, ...] where the keys and values are of type v8::String. Note, unlike the FixedArray passed to ResolveModuleCallback and returned from ModuleRequest::GetImportAssertions(), this array does not contain the source Locations of the assertions.

The embedder must compile, instantiate, evaluate the Module, and obtain its namespace object.

The Promise returned from this function is forwarded to userland JavaScript. The embedder must resolve this promise with the module namespace object. In case of an exception, the embedder must reject this promise with the exception. If the promise creation itself fails (e.g. due to stack overflow), the embedder must propagate that exception by returning an empty MaybeLocal.

Definition at line 7366 of file v8.h.

◆ HostInitializeImportMetaObjectCallback

using HostInitializeImportMetaObjectCallback = void (*)(Local<Context> context, Local<Module> module, Local<Object> meta)

HostInitializeImportMetaObjectCallback is called the first time import.meta is accessed for a module. Subsequent access will reuse the same value.

The method combines two implementation-defined abstract operations into one: HostGetImportMetaProperties and HostFinalizeImportMeta.

The embedder should use v8::Object::CreateDataProperty to add properties on the meta object.

Definition at line 7382 of file v8.h.

◆ IndexedPropertyDefinerCallback

using IndexedPropertyDefinerCallback = void (*)(uint32_t index, const PropertyDescriptor& desc, const PropertyCallbackInfo<Value>& info)

See v8::GenericNamedPropertyDefinerCallback.

Definition at line 6388 of file v8.h.

◆ IndexedPropertyDeleterCallback

using IndexedPropertyDeleterCallback = void (*)(uint32_t index, const PropertyCallbackInfo<Boolean>& info)

See v8::GenericNamedPropertyDeleterCallback.

Definition at line 6373 of file v8.h.

◆ IndexedPropertyDescriptorCallback

using IndexedPropertyDescriptorCallback = void (*)(uint32_t index, const PropertyCallbackInfo<Value>& info)

See v8::GenericNamedPropertyDescriptorCallback.

Definition at line 6395 of file v8.h.

◆ IndexedPropertyEnumeratorCallback

Returns an array containing the indices of the properties the indexed property getter intercepts.

Note: The values in the array must be uint32_t.

Definition at line 6382 of file v8.h.

◆ IndexedPropertyGetterCallback

using IndexedPropertyGetterCallback = void (*)(uint32_t index, const PropertyCallbackInfo<Value>& info)

See v8::GenericNamedPropertyGetterCallback.

Definition at line 6354 of file v8.h.

◆ IndexedPropertyQueryCallback

using IndexedPropertyQueryCallback = void (*)(uint32_t index, const PropertyCallbackInfo<Integer>& info)

See v8::GenericNamedPropertyQueryCallback.

Definition at line 6367 of file v8.h.

◆ IndexedPropertySetterCallback

using IndexedPropertySetterCallback = void (*)(uint32_t index, Local<Value> value, const PropertyCallbackInfo<Value>& info)

See v8::GenericNamedPropertySetterCallback.

Definition at line 6360 of file v8.h.

◆ instead

using instead = MaybeLocal<Promise> (*)(Local<Context> context, Local<ScriptOrModule> referrer, Local<String> specifier)

Definition at line 7335 of file v8.h.

◆ InterruptCallback

using InterruptCallback = void (*)(Isolate* isolate, void* data)

Definition at line 7688 of file v8.h.

◆ JitCodeEventHandler

using JitCodeEventHandler = void (*)(const JitCodeEvent* event)

Callback function passed to SetJitCodeEventHandler.

Parameters
eventcode add, move or removal event.

Definition at line 7952 of file v8.h.

◆ LogEventCallback

using LogEventCallback = void (*)(const char* name, int status)

Definition at line 7257 of file v8.h.

◆ MessageCallback

using MessageCallback = void (*)(Local<Message> message, Local<Value> data)

Definition at line 7252 of file v8.h.

◆ MicrotaskCallback

using MicrotaskCallback = void (*)(void* data)

Definition at line 7446 of file v8.h.

◆ MicrotasksCompletedCallbackWithData

using MicrotasksCompletedCallbackWithData = void (*)(Isolate*, void*)

Definition at line 7445 of file v8.h.

◆ ModifyCodeGenerationFromStringsCallback

Callback to check if codegen is allowed from a source object, and convert the source to string if necessary. See: ModifyCodeGenerationFromStrings.

Definition at line 7609 of file v8.h.

◆ ModifyCodeGenerationFromStringsCallback2

Definition at line 7612 of file v8.h.

◆ NativeObject

using NativeObject = void*

Definition at line 24 of file v8-profiler.h.

◆ NearHeapLimitCallback

using NearHeapLimitCallback = size_t (*)(void* data, size_t current_heap_limit, size_t initial_heap_limit)

This callback is invoked when the heap size is close to the heap limit and V8 is likely to abort with out-of-memory error. The callback can extend the heap limit by returning a value that is greater than the current_heap_limit. The initial heap limit is the limit that was set after heap setup.

Definition at line 7697 of file v8.h.

◆ OOMErrorCallback

using OOMErrorCallback = void (*)(const char* location, bool is_heap_oom)

Definition at line 7247 of file v8.h.

◆ PersistentContainerValue

typedef uintptr_t PersistentContainerValue

Definition at line 22 of file v8-util.h.

◆ PrepareStackTraceCallback

using PrepareStackTraceCallback = MaybeLocal<Value> (*)(Local<Context> context, Local<Value> error, Local<Array> sites)

PrepareStackTraceCallback is called when the stack property of an error is first accessed. The return value will be used as the stack value. If this callback is registed, the |Error.prepareStackTrace| API will be disabled. |sites| is an array of call sites, specified in https://v8.dev/docs/stack-trace-api

Definition at line 7393 of file v8.h.

◆ PromiseHook

using PromiseHook = void (*)(PromiseHookType type, Local<Promise> promise, Local<Value> parent)

Definition at line 7415 of file v8.h.

◆ PromiseRejectCallback

using PromiseRejectCallback = void (*)(PromiseRejectMessage message)

Definition at line 7442 of file v8.h.

◆ ReturnAddressLocationResolver

using ReturnAddressLocationResolver = uintptr_t (*)(uintptr_t return_addr_location)

ReturnAddressLocationResolver is used as a callback function when v8 is resolving the location of a return address on the stack. Profilers that change the return address on the stack can use this to resolve the stack location to wherever the profiler stashed the original return address.

Parameters
return_addr_locationA location on stack where a machine return address resides.
Returns
Either return_addr_location, or else a pointer to the profiler's copy of the original return address.
Note
The resolver function must not cause garbage collection.

Definition at line 9782 of file v8.h.

◆ SerializeEmbedderFieldsCallback

◆ SharedArrayBufferConstructorEnabledCallback

Definition at line 7641 of file v8.h.

◆ SnapshotObjectId

using SnapshotObjectId = uint32_t

Definition at line 25 of file v8-profiler.h.

◆ UniquePersistent

Definition at line 827 of file v8.h.

◆ WasmExceptionsEnabledCallback

using WasmExceptionsEnabledCallback = bool (*)(Local<Context> context)

Definition at line 7638 of file v8.h.

◆ WasmLoadSourceMapCallback

using WasmLoadSourceMapCallback = Local<String> (*)(Isolate* isolate, const char* name)

Definition at line 7631 of file v8.h.

◆ WasmSimdEnabledCallback

using WasmSimdEnabledCallback = bool (*)(Local<Context> context)

Definition at line 7635 of file v8.h.

◆ WasmStreamingCallback

Definition at line 7628 of file v8.h.

Enumeration Type Documentation

◆ AccessControl

Access control specifications.

Some accessors should be accessible across contexts. These accessors have an explicit access control parameter which specifies the kind of cross-context access that should be allowed.

TODO(dcarney): Remove PROHIBITS_OVERWRITING as it is now unused.

Enumerator
DEFAULT 
ALL_CAN_READ 
ALL_CAN_WRITE 
PROHIBITS_OVERWRITING 

Definition at line 3894 of file v8.h.

◆ AccessType

enum AccessType

Access type specification.

Enumerator
ACCESS_GET 
ACCESS_SET 
ACCESS_HAS 
ACCESS_DELETE 
ACCESS_KEYS 

Definition at line 6401 of file v8.h.

◆ ArrayBufferCreationMode

Enumerator
kInternalized 
kExternalized 

Definition at line 5276 of file v8.h.

◆ CodeEventType

Note that this enum may be extended in the future. Please include a default case if this enum is used in a switch statement.

Enumerator
kUnknownType 

Definition at line 1043 of file v8-profiler.h.

◆ ConstructorBehavior

enum ConstructorBehavior
strong
Enumerator
kThrow 
kAllow 

Definition at line 4745 of file v8.h.

◆ CpuProfilingLoggingMode

Enumerator
kLazyLogging 
kEagerLogging 

Definition at line 243 of file v8-profiler.h.

◆ CpuProfilingMode

Enumerator
kLeafNodeLineNumbers 
kCallerLineNumbers 

Definition at line 224 of file v8-profiler.h.

◆ CpuProfilingNamingMode

Enumerator
kStandardNaming 
kDebugNaming 

Definition at line 235 of file v8-profiler.h.

◆ CpuProfilingStatus

enum CpuProfilingStatus
strong
Enumerator
kStarted 
kAlreadyStarted 
kErrorTooManyProfilers 

Definition at line 255 of file v8-profiler.h.

◆ CrashKeyId

enum CrashKeyId
strong
Enumerator
kIsolateAddress 
kReadonlySpaceFirstPageAddress 
kMapSpaceFirstPageAddress 
kCodeSpaceFirstPageAddress 
kDumpType 

Definition at line 7300 of file v8.h.

◆ GCCallbackFlags

GCCallbackFlags is used to notify additional information about the GC callback.

  • kGCCallbackFlagConstructRetainedObjectInfos: The GC callback is for constructing retained object infos.
  • kGCCallbackFlagForced: The GC callback is for a forced GC for testing.
  • kGCCallbackFlagSynchronousPhantomCallbackProcessing: The GC callback is called synchronously without getting posted to an idle task.
  • kGCCallbackFlagCollectAllAvailableGarbage: The GC callback is called in a phase where V8 is trying to collect all available garbage (e.g., handling a low memory notification).
  • kGCCallbackScheduleIdleGarbageCollection: The GC callback is called to trigger an idle garbage collection.
Enumerator
kNoGCCallbackFlags 
kGCCallbackFlagConstructRetainedObjectInfos 
kGCCallbackFlagForced 
kGCCallbackFlagSynchronousPhantomCallbackProcessing 
kGCCallbackFlagCollectAllAvailableGarbage 
kGCCallbackFlagCollectAllExternalMemory 
kGCCallbackScheduleIdleGarbageCollection 

Definition at line 7676 of file v8.h.

◆ GCType

enum GCType

Applications can register callback functions which will be called before and after certain garbage collection operations. Allocations are not allowed in the callback functions, you therefore cannot manipulate objects (set or delete properties for example) since it is possible such operations will result in the allocation of objects.

Enumerator
kGCTypeScavenge 
kGCTypeMarkSweepCompact 
kGCTypeIncrementalMarking 
kGCTypeProcessWeakCallbacks 
kGCTypeAll 

Definition at line 7653 of file v8.h.

◆ IndexFilter

enum IndexFilter
strong

kIncludesIndices allows for integer indices to be collected, while kSkipIndices will exclude integer indices from being collected.

Enumerator
kIncludeIndices 
kSkipIndices 

Definition at line 3942 of file v8.h.

◆ IntegrityLevel

enum IntegrityLevel
strong

Integrity level for objects.

Enumerator
kFrozen 
kSealed 

Definition at line 3953 of file v8.h.

◆ Intrinsic

enum Intrinsic

Definition at line 6079 of file v8.h.

◆ JitCodeEventOptions

Option flags passed to the SetJitCodeEventHandler function.

Enumerator
kJitCodeEventDefault 
kJitCodeEventEnumExisting 

Definition at line 7940 of file v8.h.

◆ KeyCollectionMode

enum KeyCollectionMode
strong

Keys/Properties filter enums:

KeyCollectionMode limits the range of collected properties. kOwnOnly limits the collected properties to the given Object only. kIncludesPrototypes will include all keys of the objects's prototype chain as well.

Enumerator
kOwnOnly 
kIncludePrototypes 

Definition at line 3936 of file v8.h.

◆ KeyConversionMode

enum KeyConversionMode
strong

kConvertToString will convert integer indices to strings. kKeepNumbers will return numbers for integer indices.

Enumerator
kConvertToString 
kKeepNumbers 
kNoNumbers 

Definition at line 3948 of file v8.h.

◆ LogEventStatus

enum LogEventStatus : int
Enumerator
kStart 
kEnd 
kStamp 

Definition at line 7256 of file v8.h.

◆ MeasureMemoryExecution

Controls how promptly a memory measurement request is executed. By default the measurement is folded with the next scheduled GC which may happen after a while and is forced after some timeout. The kEager mode starts incremental GC right away and is useful for testing. The kLazy mode does not force GC.

Enumerator
kDefault 
kEager 
kLazy 

Definition at line 8249 of file v8.h.

◆ MeasureMemoryMode

enum MeasureMemoryMode
strong

Controls how the default MeasureMemoryDelegate reports the result of the memory measurement to JS. With kSummary only the total size is reported. With kDetailed the result includes the size of each native context.

Enumerator
kSummary 
kDetailed 

Definition at line 8240 of file v8.h.

◆ MemoryPressureLevel

enum MemoryPressureLevel
strong

Memory pressure level for the MemoryPressureNotification. kNone hints V8 that there is no memory pressure. kModerate hints V8 to speed up incremental garbage collection at the cost of of higher latency due to garbage collection pauses. kCritical hints V8 to free memory as soon as possible. Garbage collection pauses at this level will be large.

Enumerator
kNone 
kModerate 
kCritical 

Definition at line 7989 of file v8.h.

◆ MicrotasksPolicy

enum MicrotasksPolicy
strong

Policy for running microtasks:

Enumerator
kExplicit 
kScoped 
kAuto 

Definition at line 7456 of file v8.h.

◆ NewStringType

enum NewStringType
strong

A flag describing different modes of string creation.

Aside from performance implications there are no differences between the two creation modes.

Enumerator
kNormal 

Create a new string, always allocating new storage memory.

kInternalized 

Acts as a hint that the string should be created in the old generation heap space and be deduplicated if an identical string already exists.

Definition at line 3186 of file v8.h.

◆ PersistentContainerCallbackType

Enumerator
kNotWeak 
kWeakWithParameter 
kWeakWithInternalFields 

Definition at line 24 of file v8-util.h.

◆ PromiseHookType

enum PromiseHookType
strong

PromiseHook with type kInit is called when a new promise is created. When a new promise is created as part of the chain in the case of Promise.then or in the intermediate promises created by Promise.{race, all}/AsyncFunctionAwait, we pass the parent promise otherwise we pass undefined.

PromiseHook with type kResolve is called at the beginning of resolve or reject function defined by CreateResolvingFunctions.

PromiseHook with type kBefore is called at the beginning of the PromiseReactionJob.

PromiseHook with type kAfter is called right at the end of the PromiseReactionJob.

Enumerator
kInit 
kResolve 
kBefore 
kAfter 

Definition at line 7413 of file v8.h.

◆ PromiseRejectEvent

Enumerator
kPromiseRejectWithNoHandler 
kPromiseHandlerAddedAfterReject 
kPromiseRejectAfterResolved 
kPromiseResolveAfterResolved 

Definition at line 7419 of file v8.h.

◆ PropertyAttribute

PropertyAttribute.

Enumerator
None 

None.

ReadOnly 

ReadOnly, i.e., not writable.

DontEnum 

DontEnum, i.e., not enumerable.

DontDelete 

DontDelete, i.e., not configurable.

Definition at line 3857 of file v8.h.

◆ PropertyFilter

Property filter bits. They can be or'ed to build a composite filter.

Enumerator
ALL_PROPERTIES 
ONLY_WRITABLE 
ONLY_ENUMERABLE 
ONLY_CONFIGURABLE 
SKIP_STRINGS 
SKIP_SYMBOLS 

Definition at line 3904 of file v8.h.

◆ PropertyHandlerFlags

enum PropertyHandlerFlags
strong

Configuration flags for v8::NamedPropertyHandlerConfiguration or v8::IndexedPropertyHandlerConfiguration.

Enumerator
kNone 

None.

kAllCanRead 

See ALL_CAN_READ above.

kNonMasking 

Will not call into interceptor for properties on the receiver or prototype chain, i.e., only call into interceptor for properties that do not exist. Currently only valid for named interceptors.

kOnlyInterceptStrings 

Will not call into interceptor for symbol lookup. Only meaningful for named interceptors.

kHasNoSideEffect 

The getter, query, enumerator callbacks do not produce side effects.

Definition at line 6662 of file v8.h.

◆ RAILMode

enum RAILMode : unsigned

Option flags passed to the SetRAILMode function. See documentation https://developers.google.com/web/tools/chrome-devtools/ profile/evaluate-performance/rail

Enumerator
PERFORMANCE_RESPONSE 
PERFORMANCE_ANIMATION 
PERFORMANCE_IDLE 
PERFORMANCE_LOAD 

Definition at line 7920 of file v8.h.

◆ ScriptType

enum ScriptType
strong
Enumerator
kClassic 
kModule 

Definition at line 1804 of file v8.h.

◆ SideEffectType

enum SideEffectType
strong

Options for marking whether callbacks may trigger JS-observable side effects. Side-effect-free callbacks are allowlisted during debug evaluation with throwOnSideEffect. It applies when calling a Function, FunctionTemplate, or an Accessor callback. For Interceptors, please see PropertyHandlerFlags's kHasNoSideEffect. Callbacks that only cause side effects to the receiver are allowlisted if invoked on receiver objects that are created within the same debug-evaluate call, as these objects are temporary and the side effect does not escape.

Enumerator
kHasSideEffect 
kHasNoSideEffect 
kHasSideEffectToReceiver 

Definition at line 3923 of file v8.h.

◆ StateTag

enum StateTag
Enumerator
JS 
GC 
PARSER 
BYTECODE_COMPILER 
COMPILER 
OTHER 
EXTERNAL 
ATOMICS_WAIT 
IDLE 

Definition at line 2414 of file v8.h.

◆ TaskPriority

enum TaskPriority : uint8_t
strong
Enumerator
kBestEffort 

Best effort tasks are not critical for performance of the application. The platform implementation should preempt such tasks if higher priority tasks arrive.

kUserVisible 

User visible tasks are long running background tasks that will improve performance and memory usage of the application upon completion. Example: background compilation and garbage collection.

kUserBlocking 

User blocking tasks are highest priority tasks that block the execution thread (e.g. major garbage collection). They must be finished as soon as possible.

Definition at line 21 of file v8-platform.h.

◆ WeakCallbackType

enum WeakCallbackType
strong
Enumerator
kParameter 
kInternalFields 
kFinalizer 

Definition at line 476 of file v8.h.

Function Documentation

◆ CopyAndConvertArrayToCppBufferFloat64()

V8_EXPORT bool v8::CopyAndConvertArrayToCppBufferFloat64 ( Local< Array src,
double *  dst,
uint32_t  max_length 
)

◆ CopyAndConvertArrayToCppBufferInt32()

V8_EXPORT bool v8::CopyAndConvertArrayToCppBufferInt32 ( Local< Array src,
int32_t *  dst,
uint32_t  max_length 
)

◆ CurrentValueSerializerFormatVersion()

constexpr uint32_t v8::CurrentValueSerializerFormatVersion ( )
constexpr

Definition at line 20 of file v8-value-serializer-version.h.

◆ False()

Local< Boolean > False ( Isolate isolate)

Definition at line 12228 of file v8.h.

◆ Just()

Maybe<T> v8::Just ( const T &  t)
inline

Definition at line 10205 of file v8.h.

References V8::Maybe.

◆ JustVoid()

Maybe<void> v8::JustVoid ( )
inline

Definition at line 10237 of file v8.h.

◆ Nothing()

Maybe<T> v8::Nothing ( )
inline

Definition at line 10200 of file v8.h.

◆ Null()

Local< Primitive > Null ( Isolate isolate)

Definition at line 12210 of file v8.h.

◆ operator!=() [1/3]

V8_INLINE bool v8::operator!= ( const TracedReferenceBase lhs,
const TracedReferenceBase rhs 
)

Definition at line 11153 of file v8.h.

References TracedReferenceBase::operator==.

◆ operator!=() [2/3]

V8_INLINE bool v8::operator!= ( const TracedReferenceBase lhs,
const v8::Local< U > &  rhs 
)

Definition at line 11159 of file v8.h.

◆ operator!=() [3/3]

V8_INLINE bool v8::operator!= ( const v8::Local< U > &  lhs,
const TracedReferenceBase rhs 
)

Definition at line 11165 of file v8.h.

◆ operator==() [1/3]

V8_INLINE bool v8::operator== ( const TracedReferenceBase lhs,
const TracedReferenceBase rhs 
)

Definition at line 11128 of file v8.h.

◆ operator==() [2/3]

V8_INLINE bool v8::operator== ( const TracedReferenceBase lhs,
const v8::Local< U > &  rhs 
)

Definition at line 11138 of file v8.h.

◆ operator==() [3/3]

V8_INLINE bool v8::operator== ( const v8::Local< U > &  lhs,
const TracedReferenceBase rhs 
)

Definition at line 11148 of file v8.h.

◆ RegisterExtension()

void V8_EXPORT v8::RegisterExtension ( std::unique_ptr< Extension )

◆ True()

Local< Boolean > True ( Isolate isolate)

Definition at line 12219 of file v8.h.

◆ TryCopyAndConvertArrayToCppBuffer()

bool V8_EXPORT V8_WARN_UNUSED_RESULT v8::TryCopyAndConvertArrayToCppBuffer ( Local< Array src,
T *  dst,
uint32_t  max_length 
)

Copies the contents of this JavaScript array to a C++ buffer with a given max_length. A CTypeInfo is passed as an argument, instructing different rules for conversion (e.g. restricted float/double). The element type T of the destination array must match the C type corresponding to the CTypeInfo (specified by CTypeInfoTraits). If the array length is larger than max_length or the array is of unsupported type, the operation will fail, returning false. Generally, an array which contains objects, undefined, null or anything not convertible to the requested destination type, is considered unsupported. The operation returns true on success. type_info will be used for conversions.

◆ TryCopyAndConvertArrayToCppBuffer<&kTypeInfoFloat64, double >()

bool V8_WARN_UNUSED_RESULT v8::TryCopyAndConvertArrayToCppBuffer<&kTypeInfoFloat64, double > ( Local< Array src,
double *  dst,
uint32_t  max_length 
)
inline

Definition at line 828 of file v8-fast-api-calls.h.

References CopyAndConvertArrayToCppBufferFloat64().

◆ TryCopyAndConvertArrayToCppBuffer<&kTypeInfoInt32, int32_t >()

bool V8_WARN_UNUSED_RESULT v8::TryCopyAndConvertArrayToCppBuffer<&kTypeInfoInt32, int32_t > ( Local< Array src,
int32_t *  dst,
uint32_t  max_length 
)
inline

Definition at line 821 of file v8-fast-api-calls.h.

References CopyAndConvertArrayToCppBufferInt32().

◆ TryHandleWebAssemblyTrapPosix()

V8_EXPORT bool v8::TryHandleWebAssemblyTrapPosix ( int  sig_code,
siginfo_t *  info,
void *  context 
)

This function determines whether a memory access violation has been an out-of-bounds memory access in WebAssembly. If so, it will modify the context parameter and add a return address where the execution can continue after the signal handling, and return true. Otherwise, false will be returned.

The parameters to this function correspond to those passed to a Posix signal handler. Use this function only on Linux and Mac.

Parameters
sig_codeThe signal code, e.g. SIGSEGV.
infoA pointer to the siginfo_t struct provided to the signal handler.
contextA pointer to a ucontext_t struct provided to the signal handler.

◆ TryHandleWebAssemblyTrapWindows()

V8_EXPORT bool v8::TryHandleWebAssemblyTrapWindows ( EXCEPTION_POINTERS *  exception)

This function determines whether a memory access violation has been an out-of-bounds memory access in WebAssembly. If so, it will modify the exception parameter and add a return address where the execution can continue after the exception handling, and return true. Otherwise the return value will be false.

The parameter to this function corresponds to the one passed to a Windows vectored exception handler. Use this function only on Windows.

Parameters
exceptionAn EXCEPTION_POINTERS* as provided to the exception handler.

◆ Undefined()

Local< Primitive > Undefined ( Isolate isolate)

Definition at line 12201 of file v8.h.

◆ V8_DEPRECATE_SOON()

struct v8::V8_DEPRECATE_SOON ( "Use v8::Local<v8::Value> instead."  )

Definition at line 1 of file v8-fast-api-calls.h.