5#ifndef INCLUDE_V8_CONTEXT_H_
6#define INCLUDE_V8_CONTEXT_H_
34 : name_count_(name_count), names_(names) {}
36 const char**
begin()
const {
return &names_[0]; }
37 const char**
end()
const {
return &names_[name_count_]; }
40 const int name_count_;
164 Isolate* isolate,
size_t context_snapshot_index,
260 "Use Isolate::GetCurrent() instead, which is guaranteed to return the "
261 "same isolate since https://crrev.com/c/6458560.")
310 V8_INLINE void* GetAlignedPointerFromEmbedderData(
int index);
318 "Use SetAlignedPointerInEmbedderData with EmbedderDataTypeTag parameter "
320 void SetAlignedPointerInEmbedderData(
int index,
void* value);
322 void SetAlignedPointerInEmbedderData(
int index,
void* value,
338 void AllowCodeGenerationFromStrings(
bool allow);
344 bool IsCodeGenerationFromStringsAllowed() const;
351 void SetErrorMessageForCodeGenerationFromStrings(
Local<
String> message);
418 friend class internal::Isolate;
420 uintptr_t JSStackComparableAddressPrivate()
const {
421 return js_stack_comparable_address_;
425 uintptr_t js_stack_comparable_address_ = 0;
437 static void CheckCast(
Data* obj);
442 void* SlowGetAlignedPointerFromEmbedderData(
int index);
448#ifndef V8_ENABLE_CHECKS
453 I::ReadTaggedPointerField(ctx, I::kNativeContextEmbedderDataOffset);
455 I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index);
456 A value = I::ReadRawField<A>(embedder_data, value_offset);
457#ifdef V8_COMPRESS_POINTERS
460 value = I::DecompressTaggedField(embedder_data,
static_cast<uint32_t
>(value));
463 auto* isolate = I::GetCurrentIsolate();
466 return SlowGetEmbedderData(index);
471#if !defined(V8_ENABLE_CHECKS)
476 I::ReadTaggedPointerField(ctx, I::kNativeContextEmbedderDataOffset);
477 int value_offset = I::kEmbedderDataArrayHeaderSize +
478 (I::kEmbedderDataSlotSize * index) +
479 I::kEmbedderDataSlotExternalPointerOffset;
480 return reinterpret_cast<void*
>(
483 isolate, embedder_data, value_offset));
485 return SlowGetAlignedPointerFromEmbedderData(index);
490#if !defined(V8_ENABLE_CHECKS)
495 I::ReadTaggedPointerField(ctx, I::kNativeContextEmbedderDataOffset);
496 int value_offset = I::kEmbedderDataArrayHeaderSize +
497 (I::kEmbedderDataSlotSize * index) +
498 I::kEmbedderDataSlotExternalPointerOffset;
499 Isolate* isolate = I::GetCurrentIsolateForSandbox();
500 return reinterpret_cast<void*
>(
503 isolate, embedder_data, value_offset));
505 return SlowGetAlignedPointerFromEmbedderData(index);
520#ifdef V8_ENABLE_CHECKS
523 return static_cast<Context*
>(data);
Definition: v8-context.h:408
BackupIncumbentScope(Local< Context > backup_incumbent_context)
Definition: v8-context.h:226
virtual bool FreezeEmbedderObjectAndGetChildren(Local< Object > obj, LocalVector< Object > &children_out)=0
Definition: v8-context.h:392
Scope(Local< Context > context)
Definition: v8-context.h:394
~Scope()
Definition: v8-context.h:397
Definition: v8-context.h:48
static MaybeLocal< Object > NewRemoteContext(Isolate *isolate, Local< ObjectTemplate > global_template, MaybeLocal< Value > global_object=MaybeLocal< Value >())
Local< Object > GetExtrasBindingObject()
void SetEmbedderData(int index, Local< Value > value)
void SetSecurityToken(Local< Value > token)
static Local< Context > New(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())
void * GetAlignedPointerFromEmbedderData(Isolate *isolate, int index)
Definition: v8-context.h:470
static Context * Cast(Data *data)
Definition: v8-context.h:519
Maybe< void > DeepFreeze(DeepFreezeDelegate *delegate=nullptr)
Local< Value > GetSecurityToken()
MaybeLocal< T > GetDataFromSnapshotOnce(size_t index)
Definition: v8-context.h:510
EmbedderDataFields
Definition: v8-context.h:274
uint32_t GetNumberOfEmbedderDataFields()
Local< Value > GetEmbedderData(int index)
Definition: v8-context.h:447
void UseDefaultSecurityToken()
void(*)(Isolate *isolate, Local< Context > context) AbortScriptExecutionCallback
Definition: v8-context.h:373
static MaybeLocal< Context > FromSnapshot(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())
Definition: v8-context.h:30
ExtensionConfiguration(int name_count, const char *names[])
Definition: v8-context.h:33
ExtensionConfiguration()
Definition: v8-context.h:32
const char ** begin() const
Definition: v8-context.h:36
const char ** end() const
Definition: v8-context.h:37
Definition: v8-function.h:27
Definition: v8-isolate.h:290
Definition: v8-local-handle.h:594
Definition: v8-local-handle.h:366
static Local< T > New(Isolate *isolate, Local< T > that)
Definition: v8-local-handle.h:448
Definition: v8-local-handle.h:734
Definition: v8-maybe.h:39
Definition: v8-microtask-queue.h:40
Definition: v8-object.h:243
Definition: v8-script.h:353
Definition: v8-primitive.h:124
Definition: v8-value.h:32
Definition: v8-internal.h:883
static Address ValueAsAddress(const T *value)
Definition: v8-internal.h:1757
internal::Address * InternalRepresentationType
Definition: v8-internal.h:1711
static constexpr InternalRepresentationType kEmpty
Definition: v8-internal.h:1712
@ kFirstEmbedderDataTag
Definition: v8-internal.h:580
@ kLastEmbedderDataTag
Definition: v8-internal.h:581
uintptr_t Address
Definition: v8-internal.h:52
void PerformCastCheck(T *data)
Definition: v8-internal.h:1418
Definition: libplatform.h:15
uint16_t EmbedderDataTypeTag
Definition: v8-object.h:34
Definition: v8-snapshot.h:116
Definition: v8-snapshot.h:106
Definition: v8-snapshot.h:91
#define V8_EXPORT
Definition: v8config.h:860
#define V8_INLINE
Definition: v8config.h:513
#define V8_DEPRECATE_SOON(message)
Definition: v8config.h:627
#define V8_NODISCARD
Definition: v8config.h:706