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

#include <v8-context.h>

Inheritance diagram for v8::Context:
Collaboration diagram for v8::Context:

Classes

class  BackupIncumbentScope
 
class  DeepFreezeDelegate
 
class  Scope
 

Public Types

enum  EmbedderDataFields { kDebugIdIndex = 0 }
 
using AbortScriptExecutionCallback
 

Public Member Functions

Local< ObjectGlobal ()
 
void DetachGlobal ()
 
void SetSecurityToken (Local< Value > token)
 
void UseDefaultSecurityToken ()
 
Local< ValueGetSecurityToken ()
 
void Enter ()
 
void Exit ()
 
Maybe< void > DeepFreeze (DeepFreezeDelegate *delegate=nullptr)
 
IsolateGetIsolate ()
 
MicrotaskQueueGetMicrotaskQueue ()
 
void SetMicrotaskQueue (MicrotaskQueue *queue)
 
uint32_t GetNumberOfEmbedderDataFields ()
 
V8_INLINE Local< ValueGetEmbedderData (int index)
 
Local< ObjectGetExtrasBindingObject ()
 
void SetEmbedderData (int index, Local< Value > value)
 
V8_INLINE void * GetAlignedPointerFromEmbedderData (Isolate *isolate, int index)
 
V8_INLINE void * GetAlignedPointerFromEmbedderData (int index)
 
void SetAlignedPointerInEmbedderData (int index, void *value)
 
void AllowCodeGenerationFromStrings (bool allow)
 
bool IsCodeGenerationFromStringsAllowed () const
 
void SetErrorMessageForCodeGenerationFromStrings (Local< String > message)
 
void SetErrorMessageForWasmCodeGeneration (Local< String > message)
 
template<class T >
V8_INLINE MaybeLocal< TGetDataFromSnapshotOnce (size_t index)
 
void SetAbortScriptExecution (AbortScriptExecutionCallback callback)
 
void SetPromiseHooks (Local< Function > init_hook, Local< Function > before_hook, Local< Function > after_hook, Local< Function > resolve_hook)
 
bool HasTemplateLiteralObject (Local< Value > object)
 
template<class T >
MaybeLocal< TGetDataFromSnapshotOnce (size_t index)
 
- Public Member Functions inherited from v8::Data
bool IsValue () const
 
bool IsModule () const
 
bool IsModuleRequest () const
 
bool IsFixedArray () const
 
bool IsPrivate () const
 
bool IsObjectTemplate () const
 
bool IsFunctionTemplate () const
 
bool IsContext () const
 

Static Public Member Functions

static Local< ContextNew (Isolate *isolate, ExtensionConfiguration *extensions=nullptr, MaybeLocal< ObjectTemplate > global_template=MaybeLocal< ObjectTemplate >(), MaybeLocal< Value > global_object=MaybeLocal< Value >(), DeserializeInternalFieldsCallback internal_fields_deserializer=DeserializeInternalFieldsCallback(), MicrotaskQueue *microtask_queue=nullptr, DeserializeContextDataCallback context_data_deserializer=DeserializeContextDataCallback(), DeserializeAPIWrapperCallback api_wrapper_deserializer=DeserializeAPIWrapperCallback())
 
static MaybeLocal< ContextFromSnapshot (Isolate *isolate, size_t context_snapshot_index, DeserializeInternalFieldsCallback internal_fields_deserializer=DeserializeInternalFieldsCallback(), ExtensionConfiguration *extensions=nullptr, MaybeLocal< Value > global_object=MaybeLocal< Value >(), MicrotaskQueue *microtask_queue=nullptr, DeserializeContextDataCallback context_data_deserializer=DeserializeContextDataCallback(), DeserializeAPIWrapperCallback api_wrapper_deserializer=DeserializeAPIWrapperCallback())
 
static MaybeLocal< ObjectNewRemoteContext (Isolate *isolate, Local< ObjectTemplate > global_template, MaybeLocal< Value > global_object=MaybeLocal< Value >())
 
static V8_INLINE ContextCast (Data *data)
 

Private Member Functions

internal::ValueHelper::InternalRepresentationType GetDataFromSnapshotOnce (size_t index)
 
Local< ValueSlowGetEmbedderData (int index)
 
void * SlowGetAlignedPointerFromEmbedderData (int index)
 

Static Private Member Functions

static void CheckCast (Data *obj)
 

Friends

class Value
 
class Script
 
class Object
 
class Function
 

Detailed Description

A sandboxed execution context with its own set of built-in objects and functions.

Definition at line 48 of file v8-context.h.

Member Typedef Documentation

◆ AbortScriptExecutionCallback

Initial value:
void (*)(Isolate* isolate,
Local<Context> context)
Isolate * isolate
TNode< Context > context

If callback is set, abort any attempt to execute JavaScript in this context, call the specified callback, and throw an exception. To unset abort, pass nullptr as callback.

Definition at line 363 of file v8-context.h.

Member Enumeration Documentation

◆ EmbedderDataFields

The field at kDebugIdIndex used to be reserved for the inspector. It now serves no purpose.

Enumerator
kDebugIdIndex 

Definition at line 271 of file v8-context.h.

Member Function Documentation

◆ AllowCodeGenerationFromStrings()

void v8::Context::AllowCodeGenerationFromStrings ( bool allow)

Control whether code generation from strings is allowed. Calling this method with false will disable 'eval' and the 'Function' constructor for code running in this context. If 'eval' or the 'Function' constructor are used an exception will be thrown.

If code generation from strings is not allowed the V8::ModifyCodeGenerationFromStringsCallback callback will be invoked if set before blocking the call to 'eval' or the 'Function' constructor. If that callback returns true, the call will be allowed, otherwise an exception will be thrown. If no callback is set an exception will be thrown.

Definition at line 7235 of file api.cc.

Here is the call graph for this function:

◆ Cast()

Context * v8::Context::Cast ( v8::Data * data)
static

Definition at line 509 of file v8-context.h.

Here is the call graph for this function:

◆ CheckCast()

void v8::Context::CheckCast ( v8::Data * that)
staticprivate

Definition at line 3945 of file api.cc.

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

◆ DeepFreeze()

Maybe< void > v8::Context::DeepFreeze ( DeepFreezeDelegate * delegate = nullptr)

Attempts to recursively freeze all objects reachable from this context. Some objects (generators, iterators, non-const closures) can not be frozen and will cause this method to throw an error. An optional delegate can be provided to help freeze embedder-specific objects.

Freezing occurs in two steps:

  1. "Marking" where we iterate through all objects reachable by this context, accumulating a list of objects that need to be frozen and looking for objects that can't be frozen. This step is separated because it is more efficient when we can assume there is no garbage collection.
  2. "Freezing" where we go through the list of objects and freezing them. This effectively requires copying them so it may trigger garbage collection.

Definition at line 7159 of file api.cc.

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

◆ DetachGlobal()

void v8::Context::DetachGlobal ( )

Detaches the global object from its context before the global object can be reused to create a new context.

Definition at line 7221 of file api.cc.

Here is the call graph for this function:

◆ Enter()

void v8::Context::Enter ( )

Enter this context. After entering a context, all code compiled and run is compiled and run in this context. If another context is already entered, this old context is saved so it can be restored when the new context is exited.

Definition at line 818 of file api.cc.

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

◆ Exit()

void v8::Context::Exit ( )

Exit this context. Exiting the current context restores the context that was in place when entering the current context.

Definition at line 829 of file api.cc.

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

◆ FromSnapshot()

MaybeLocal< Context > v8::Context::FromSnapshot ( v8::Isolate * external_isolate,
size_t context_snapshot_index,
v8::DeserializeInternalFieldsCallback internal_fields_deserializer = DeserializeInternalFieldsCallback(),
v8::ExtensionConfiguration * extensions = nullptr,
MaybeLocal< Value > global_object = MaybeLocal<Value>(),
v8::MicrotaskQueue * microtask_queue = nullptr,
v8::DeserializeContextDataCallback context_callback_deserializer = DeserializeContextDataCallback(),
v8::DeserializeAPIWrapperCallback api_wrapper_deserializer = DeserializeAPIWrapperCallback() )
static

Create a new context from a (non-default) context snapshot. There is no way to provide a global object template since we do not create a new global object from template, but we can reuse a global object.

Parameters
isolateSee v8::Context::New().
context_snapshot_indexThe index of the context snapshot to deserialize from. Use v8::Context::New() for the default snapshot.
internal_fields_deserializerAn optional callback used to deserialize fields set by v8::Object::SetAlignedPointerInInternalField() in wrapper objects from the default context snapshot. It does not need to be configured if there are no wrapper objects with no internal pointer fields in the default context snapshot or if no startup snapshot is configured when the isolate is created.
extensionsSee v8::Context::New().
global_objectSee v8::Context::New().
internal_fields_deserializerSimilar to internal_fields_deserializer in v8::Context::New() but applies to the context specified by the context_snapshot_index.
microtask_queueSee v8::Context::New().
context_data_deserializerSimilar to context_data_deserializer in v8::Context::New() but applies to the context specified by the context_snapshot_index.
api_wrapper_deserializerSimilar to api_wrapper_deserializer in v8::Context::New() but applies to the context specified by the context_snapshot_index.

Definition at line 6794 of file api.cc.

Here is the call graph for this function:

◆ GetAlignedPointerFromEmbedderData() [1/2]

void * v8::Context::GetAlignedPointerFromEmbedderData ( int index)

Definition at line 480 of file v8-context.h.

Here is the call graph for this function:

◆ GetAlignedPointerFromEmbedderData() [2/2]

void * v8::Context::GetAlignedPointerFromEmbedderData ( Isolate * isolate,
int index )

Gets a 2-byte-aligned native pointer from the embedder data with the given index, which must have been set by a previous call to SetAlignedPointerInEmbedderData with the same index. Note that index 0 currently has a special meaning for Chrome's debugger.

Definition at line 462 of file v8-context.h.

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

◆ GetDataFromSnapshotOnce() [1/3]

template<class T >
V8_INLINE MaybeLocal< T > v8::Context::GetDataFromSnapshotOnce ( size_t index)

Return data that was previously attached to the context snapshot via SnapshotCreator, and removes the reference to it. Repeated call with the same index returns an empty MaybeLocal.

Here is the caller graph for this function:

◆ GetDataFromSnapshotOnce() [2/3]

i::ValueHelper::InternalRepresentationType v8::Context::GetDataFromSnapshotOnce ( size_t index)
private

Definition at line 7368 of file api.cc.

Here is the call graph for this function:

◆ GetDataFromSnapshotOnce() [3/3]

template<class T >
MaybeLocal< T > v8::Context::GetDataFromSnapshotOnce ( size_t index)

Definition at line 500 of file v8-context.h.

Here is the call graph for this function:

◆ GetEmbedderData()

Local< Value > v8::Context::GetEmbedderData ( int index)

Gets the embedder data with the given index, which must have been set by a previous call to SetEmbedderData with the same index.

Definition at line 438 of file v8-context.h.

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

◆ GetExtrasBindingObject()

Local< v8::Object > v8::Context::GetExtrasBindingObject ( )

Gets the binding object used by V8 extras. Extra natives get a reference to this object and can use it to "export" functionality by adding properties. Extra natives can also "import" functionality by accessing properties added by the embedder using the V8 API.

Definition at line 7228 of file api.cc.

Here is the call graph for this function:

◆ GetIsolate()

v8::Isolate * v8::Context::GetIsolate ( )

Returns the isolate associated with a current context.

Definition at line 7176 of file api.cc.

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

◆ GetMicrotaskQueue()

v8::MicrotaskQueue * v8::Context::GetMicrotaskQueue ( )

Returns the microtask queue associated with a current context.

Definition at line 7181 of file api.cc.

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

◆ GetNumberOfEmbedderDataFields()

uint32_t v8::Context::GetNumberOfEmbedderDataFields ( )

Return the number of fields allocated for embedder data.

Definition at line 895 of file api.cc.

Here is the call graph for this function:

◆ GetSecurityToken()

Local< Value > v8::Context::GetSecurityToken ( )

Returns the security token of this context.

Definition at line 6856 of file api.cc.

Here is the call graph for this function:

◆ Global()

v8::Local< v8::Object > v8::Context::Global ( )

Returns the global proxy object.

Global proxy object is a thin wrapper whose prototype points to actual context's global object with the properties like Object, etc. This is done that way for security reasons (for more details see https://wiki.mozilla.org/Gecko:SplitWindow).

Please note that changes to global proxy object prototype most probably would break VM—v8 expects only global object as a prototype of global proxy object.

Definition at line 7208 of file api.cc.

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

◆ HasTemplateLiteralObject()

bool v8::Context::HasTemplateLiteralObject ( Local< Value > object)

Definition at line 7319 of file api.cc.

Here is the call graph for this function:

◆ IsCodeGenerationFromStringsAllowed()

bool v8::Context::IsCodeGenerationFromStringsAllowed ( ) const

Returns true if code generation from strings is allowed for the context. For more details see AllowCodeGenerationFromStrings(bool) documentation.

Definition at line 7243 of file api.cc.

Here is the call graph for this function:

◆ New()

Local< Context > v8::Context::New ( v8::Isolate * external_isolate,
v8::ExtensionConfiguration * extensions = nullptr,
v8::MaybeLocal< ObjectTemplate > global_template = MaybeLocal<ObjectTemplate>(),
v8::MaybeLocal< Value > global_object = MaybeLocal<Value>(),
v8::DeserializeInternalFieldsCallback internal_fields_deserializer = DeserializeInternalFieldsCallback(),
v8::MicrotaskQueue * microtask_queue = nullptr,
v8::DeserializeContextDataCallback context_callback_deserializer = DeserializeContextDataCallback(),
v8::DeserializeAPIWrapperCallback api_wrapper_deserializer = DeserializeAPIWrapperCallback() )
static

Creates a new context and returns a handle to the newly allocated context.

Parameters
isolateThe isolate in which to create the context.
extensionsAn optional extension configuration containing the extensions to be installed in the newly created context.
global_templateAn optional object template from which the global object for the newly created context will be created.
global_objectAn optional global object to be reused for the newly created context. This global object must have been created by a previous call to Context::New with the same global template. The state of the global object will be completely reset and only object identify will remain.
internal_fields_deserializerAn optional callback used to deserialize fields set by v8::Object::SetAlignedPointerInInternalField() in wrapper objects from the default context snapshot. It should match the SerializeInternalFieldsCallback() used by v8::SnapshotCreator::SetDefaultContext() when the default context snapshot is created. It does not need to be configured if the default context snapshot contains no wrapper objects with pointer internal fields, or if no custom startup snapshot is configured in the v8::CreateParams used to create the isolate.
microtask_queueAn optional microtask queue used to manage the microtasks created in this context. If not set the per-isolate default microtask queue would be used.
context_data_deserializerAn optional callback used to deserialize embedder data set by v8::Context::SetAlignedPointerInEmbedderData() in the default context from the default context snapshot. It does not need to be configured if the default context snapshot contains no pointer embedder data, or if no custom startup snapshot is configured in the v8::CreateParams used to create the isolate.
api_wrapper_deserializerAn optional callback used to deserialize API wrapper objects that was initially set with v8::Object::Wrap() and then serialized using SerializeAPIWrapperCallback.

Definition at line 6778 of file api.cc.

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

◆ NewRemoteContext()

MaybeLocal< Object > v8::Context::NewRemoteContext ( v8::Isolate * external_isolate,
v8::Local< ObjectTemplate > global_template,
MaybeLocal< Value > global_object = MaybeLocal<Value>() )
static

Returns an global object that isn't backed by an actual context.

The global template needs to have access checks with handlers installed. If an existing global object is passed in, the global object is detached from its context.

Note that this is different from a detached context where all accesses to the global proxy will fail. Instead, the access check handlers are invoked.

It is also not possible to detach an object returned by this method. Instead, the access check handlers need to return nothing to achieve the same effect.

It is possible, however, to create a new context from the global object returned by this method.

Definition at line 6816 of file api.cc.

Here is the call graph for this function:

◆ SetAbortScriptExecution()

void v8::Context::SetAbortScriptExecution ( Context::AbortScriptExecutionCallback callback)

Definition at line 7261 of file api.cc.

Here is the call graph for this function:

◆ SetAlignedPointerInEmbedderData()

void v8::Context::SetAlignedPointerInEmbedderData ( int index,
void * value )

Sets a 2-byte-aligned native pointer in the embedder data with the given index, growing the data as needed. Note that index 0 currently has a special meaning for Chrome's debugger.

Definition at line 941 of file api.cc.

Here is the call graph for this function:

◆ SetEmbedderData()

void v8::Context::SetEmbedderData ( int index,
v8::Local< Value > value )

Sets the embedder data with the given index, growing the data as needed. Note that index 0 currently has a special meaning for Chrome's debugger.

Definition at line 916 of file api.cc.

Here is the call graph for this function:

◆ SetErrorMessageForCodeGenerationFromStrings()

void v8::Context::SetErrorMessageForCodeGenerationFromStrings ( Local< String > message)

Sets the error description for the exception that is thrown when code generation from strings is not allowed and 'eval' or the 'Function' constructor are called.

Definition at line 7249 of file api.cc.

Here is the call graph for this function:

◆ SetErrorMessageForWasmCodeGeneration()

void v8::Context::SetErrorMessageForWasmCodeGeneration ( Local< String > message)

Sets the error description for the exception that is thrown when wasm code generation is not allowed.

Definition at line 7255 of file api.cc.

Here is the call graph for this function:

◆ SetMicrotaskQueue()

void v8::Context::SetMicrotaskQueue ( v8::MicrotaskQueue * queue)

Sets the microtask queue associated with the current context.

Definition at line 7188 of file api.cc.

Here is the call graph for this function:

◆ SetPromiseHooks()

void v8::Context::SetPromiseHooks ( Local< Function > init_hook,
Local< Function > before_hook,
Local< Function > after_hook,
Local< Function > resolve_hook )

Set or clear hooks to be invoked for promise lifecycle operations. To clear a hook, set it to an empty v8::Function. Each function will receive the observed promise as the first argument. If a chaining operation is used on a promise, the init will additionally receive the parent promise as the second argument.

Definition at line 7274 of file api.cc.

Here is the call graph for this function:

◆ SetSecurityToken()

void v8::Context::SetSecurityToken ( Local< Value > token)

Sets the security token for the context. To access an object in another context, the security tokens must match.

Definition at line 6845 of file api.cc.

Here is the call graph for this function:

◆ SlowGetAlignedPointerFromEmbedderData()

void * v8::Context::SlowGetAlignedPointerFromEmbedderData ( int index)
private

Definition at line 927 of file api.cc.

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

◆ SlowGetEmbedderData()

v8::Local< v8::Value > v8::Context::SlowGetEmbedderData ( int index)
private

Definition at line 906 of file api.cc.

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

◆ UseDefaultSecurityToken()

void v8::Context::UseDefaultSecurityToken ( )

Restores the security token to the default value.

Definition at line 6851 of file api.cc.

Here is the call graph for this function:

Friends And Related Symbol Documentation

◆ Function

friend class Function
friend

Definition at line 426 of file v8-context.h.

◆ Object

friend class Object
friend

Definition at line 425 of file v8-context.h.

◆ Script

friend class Script
friend

Definition at line 424 of file v8-context.h.

◆ Value

friend class Value
friend

Definition at line 423 of file v8-context.h.


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