v8 12.4.254 (node 22.4.1)
V8 is Google's open source JavaScript engine
|
#include <v8-context.h>
Data Structures | |
class | BackupIncumbentScope |
class | DeepFreezeDelegate |
class | Scope |
Public Types | |
enum | EmbedderDataFields { kDebugIdIndex = 0 } |
using | AbortScriptExecutionCallback = void(*)(Isolate *isolate, Local< Context > context) |
Friends | |
class | Value |
class | Script |
class | Object |
class | Function |
A sandboxed execution context with its own set of built-in objects and functions.
Definition at line 48 of file v8-context.h.
using AbortScriptExecutionCallback = void (*)(Isolate* isolate, Local<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 349 of file v8-context.h.
enum EmbedderDataFields |
The field at kDebugIdIndex used to be reserved for the inspector. It now serves no purpose.
Enumerator | |
---|---|
kDebugIdIndex |
Definition at line 259 of file v8-context.h.
void 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::AllowCodeGenerationFromStrings 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 476 of file v8-context.h.
Maybe< void > 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:
void DetachGlobal | ( | ) |
Detaches the global object from its context before the global object can be reused to create a new context.
void 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.
void Exit | ( | ) |
Exit this context. Exiting the current context restores the context that was in place when entering the current context.
|
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.
isolate | See v8::Context::New. |
context_snapshot_index | The index of the context snapshot to deserialize from. Use v8::Context::New for the default snapshot. |
internal_fields_deserializer | An 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. |
extensions | See v8::Context::New. |
global_object | See v8::Context::New. |
internal_fields_deserializer | Similar to internal_fields_deserializer in v8::Context::New but applies to the context specified by the context_snapshot_index. |
microtask_queue | See v8::Context::New. |
context_data_deserializer | Similar to context_data_deserializer in v8::Context::New but applies to the context specified by the context_snapshot_index. |
void * GetAlignedPointerFromEmbedderData | ( | 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 447 of file v8-context.h.
References ValueHelper::ValueAsAddress().
V8_INLINE MaybeLocal< T > 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.
Referenced by Context::GetDataFromSnapshotOnce().
MaybeLocal< T > GetDataFromSnapshotOnce | ( | size_t | index | ) |
Definition at line 467 of file v8-context.h.
References Context::GetDataFromSnapshotOnce(), and v8::internal::PerformCastCheck().
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 423 of file v8-context.h.
References v8::internal::IsolateFromNeverReadOnlySpaceObject(), Local< T >::New(), and ValueHelper::ValueAsAddress().
Isolate * GetIsolate | ( | ) |
Returns the isolate associated with a current context.
MicrotaskQueue * GetMicrotaskQueue | ( | ) |
Returns the microtask queue associated with a current context.
uint32_t GetNumberOfEmbedderDataFields | ( | ) |
Return the number of fields allocated for embedder data.
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.
bool IsCodeGenerationFromStringsAllowed | ( | ) | const |
Returns true if code generation from strings is allowed for the context. For more details see AllowCodeGenerationFromStrings(bool) documentation.
|
static |
Creates a new context and returns a handle to the newly allocated context.
isolate | The isolate in which to create the context. |
extensions | An optional extension configuration containing the extensions to be installed in the newly created context. |
global_template | An optional object template from which the global object for the newly created context will be created. |
global_object | An 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_deserializer | An 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_queue | An 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_deserializer | An 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. |
|
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.
void SetAbortScriptExecution | ( | AbortScriptExecutionCallback | callback | ) |
void 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.
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.
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.
Sets the error description for the exception that is thrown when wasm code generation is not allowed.
void SetMicrotaskQueue | ( | MicrotaskQueue * | queue | ) |
Sets the microtask queue associated with the current context.
void 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.
Sets the security token for the context. To access an object in another context, the security tokens must match.
void UseDefaultSecurityToken | ( | ) |
Restores the security token to the default value.
|
friend |
Definition at line 412 of file v8-context.h.
|
friend |
Definition at line 411 of file v8-context.h.
|
friend |
Definition at line 410 of file v8-context.h.
|
friend |
Definition at line 409 of file v8-context.h.