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_;
115 Isolate* isolate,
size_t context_snapshot_index,
252 V8_INLINE void* GetAlignedPointerFromEmbedderData(
int index);
366 friend class internal::Isolate;
368 uintptr_t JSStackComparableAddressPrivate()
const {
369 return js_stack_comparable_address_;
373 uintptr_t js_stack_comparable_address_ = 0;
385 static void CheckCast(
Data* obj);
389 void* SlowGetAlignedPointerFromEmbedderData(
int index);
395#ifndef V8_ENABLE_CHECKS
398 A ctx = *
reinterpret_cast<const A*
>(
this);
400 I::ReadTaggedPointerField(ctx, I::kNativeContextEmbedderDataOffset);
402 I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index);
403 A value = I::ReadRawField<A>(embedder_data, value_offset);
404#ifdef V8_COMPRESS_POINTERS
407 value = I::DecompressTaggedField(embedder_data,
static_cast<uint32_t
>(value));
410#ifdef V8_ENABLE_CONSERVATIVE_STACK_SCANNING
414 *
reinterpret_cast<A*
>(
this));
420 return SlowGetEmbedderData(index);
425#if !defined(V8_ENABLE_CHECKS)
430 I::ReadTaggedPointerField(ctx, I::kNativeContextEmbedderDataOffset);
431 int value_offset = I::kEmbedderDataArrayHeaderSize +
432 (I::kEmbedderDataSlotSize * index) +
433 I::kEmbedderDataSlotExternalPointerOffset;
434 Isolate* isolate = I::GetIsolateForSandbox(ctx);
435 return reinterpret_cast<void*
>(
436 I::ReadExternalPointerField<internal::kEmbedderDataSlotPayloadTag>(
437 isolate, embedder_data, value_offset));
439 return SlowGetAlignedPointerFromEmbedderData(index);
451#ifdef V8_ENABLE_CHECKS
454 return static_cast<Context*
>(data);
BackupIncumbentScope(Local< Context > backup_incumbent_context)
virtual bool FreezeEmbedderObjectAndGetChildren(Local< Object > obj, std::vector< Local< Object > > &children_out)=0
V8_INLINE Scope(Local< Context > context)
void SetEmbedderData(int index, Local< Value > value)
V8_INLINE Local< Value > GetEmbedderData(int index)
Local< Value > GetContinuationPreservedEmbedderData() const
static MaybeLocal< Object > NewRemoteContext(Isolate *isolate, Local< ObjectTemplate > global_template, MaybeLocal< Value > global_object=MaybeLocal< Value >())
Local< Object > GetExtrasBindingObject()
bool IsCodeGenerationFromStringsAllowed() const
V8_INLINE void * GetAlignedPointerFromEmbedderData(int index)
Local< Value > GetSecurityToken()
void SetAlignedPointerInEmbedderData(int index, void *value)
void SetContinuationPreservedEmbedderData(Local< Value > context)
void SetAbortScriptExecution(AbortScriptExecutionCallback callback)
void(*)(Isolate *isolate, Local< Context > context) AbortScriptExecutionCallback
V8_INLINE MaybeLocal< T > GetDataFromSnapshotOnce(size_t index)
void AllowCodeGenerationFromStrings(bool allow)
void SetErrorMessageForCodeGenerationFromStrings(Local< String > message)
void UseDefaultSecurityToken()
void SetMicrotaskQueue(MicrotaskQueue *queue)
MicrotaskQueue * GetMicrotaskQueue()
Maybe< void > DeepFreeze(DeepFreezeDelegate *delegate=nullptr)
void SetErrorMessageForWasmCodeGeneration(Local< String > message)
static V8_INLINE Context * Cast(Data *data)
void SetSecurityToken(Local< Value > token)
static MaybeLocal< Context > FromSnapshot(Isolate *isolate, size_t context_snapshot_index, DeserializeInternalFieldsCallback embedder_fields_deserializer=DeserializeInternalFieldsCallback(), ExtensionConfiguration *extensions=nullptr, MaybeLocal< Value > global_object=MaybeLocal< Value >(), MicrotaskQueue *microtask_queue=nullptr)
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)
bool HasTemplateLiteralObject(Local< Value > object)
void SetPromiseHooks(Local< Function > init_hook, Local< Function > before_hook, Local< Function > after_hook, Local< Function > resolve_hook)
uint32_t GetNumberOfEmbedderDataFields()
const char ** begin() const
ExtensionConfiguration(int name_count, const char *names[])
const char ** end() const
static internal::Address * CreateHandle(internal::Isolate *i_isolate, internal::Address value)
static V8_INLINE Address ValueAsAddress(const T *value)
V8_EXPORT internal::Isolate * IsolateFromNeverReadOnlySpaceObject(Address obj)
V8_INLINE void PerformCastCheck(T *data)