5#ifndef INCLUDE_V8_ISOLATE_H_
6#define INCLUDE_V8_ISOLATE_H_
85 size_t maximum_heap_size_in_bytes);
97 uint64_t virtual_memory_limit);
125 return max_old_generation_size_;
128 max_old_generation_size_ = limit;
137 return max_young_generation_size_;
140 max_young_generation_size_ = limit;
144 return initial_old_generation_size_;
147 initial_old_generation_size_ = initial_size;
151 return initial_young_generation_size_;
154 initial_young_generation_size_ = initial_size;
158 static constexpr size_t kMB = 1048576u;
159 size_t code_range_size_ = 0;
160 size_t max_old_generation_size_ = 0;
161 size_t max_young_generation_size_ = 0;
162 size_t initial_old_generation_size_ = 0;
163 size_t initial_young_generation_size_ = 0;
164 uint32_t* stack_limit_ =
nullptr;
249 return isolate_group_ == other.isolate_group_;
261 explicit IsolateGroup(internal::IsolateGroup*&& isolate_group);
263 internal::IsolateGroup* isolate_group_;
371 v8_isolate_->Enter();
403 bool was_execution_allowed_;
422 bool was_execution_allowed_assert_;
423 bool was_execution_allowed_throws_;
424 bool was_execution_allowed_dump_;
444 internal::Isolate*
const i_isolate_;
445 internal::MicrotaskQueue*
const microtask_queue_;
448 friend class internal::ThreadLocalTop;
812#if defined(V8_OS_WIN)
817 void SetFilterETWSessionByURLCallback(FilterETWSessionByURLCallback callback);
818 void SetFilterETWSessionByURL2Callback(
819 FilterETWSessionByURL2Callback callback);
994 std::unique_ptr<MeasureMemoryDelegate> delegate,
1010 size_t frames_limit,
SampleInfo* sample_info);
1164 void* data =
nullptr);
1410 const std::shared_ptr<metrics::Recorder>& metrics_recorder);
1658 "Will be removed, use ScriptCompiler::CompileOptions for enabling the "
1659 "compile hints magic comments")
1660 void SetJavaScriptCompileHintsMagicEnabledCallback(
1716 bool capture,
int frame_limit = 10,
1788 void*
operator new(
size_t size) =
delete;
1789 void*
operator new[](
size_t size) =
delete;
1790 void operator delete(
void*, size_t) =
delete;
1791 void operator delete[](
void*, size_t) =
delete;
1794 template <
class K,
class V,
class Traits>
1800 int64_t AdjustAmountOfExternalAllocatedMemoryImpl(int64_t change_in_bytes);
1801 void HandleExternalMemoryInterrupt();
1806 I::SetEmbedderData(
this, slot, data);
1811 return I::GetEmbedderData(
this, slot);
1816 return I::kNumIsolateDataSlots;
1824 return Local<T>::FromRepr(repr);
AllowJavascriptExecutionScope & operator=(const AllowJavascriptExecutionScope &)=delete
AllowJavascriptExecutionScope(Isolate *isolate)
~AllowJavascriptExecutionScope()
AllowJavascriptExecutionScope(const AllowJavascriptExecutionScope &)=delete
DisallowJavascriptExecutionScope(Isolate *isolate, OnFailure on_failure)
DisallowJavascriptExecutionScope(const DisallowJavascriptExecutionScope &)=delete
~DisallowJavascriptExecutionScope()
DisallowJavascriptExecutionScope & operator=(const DisallowJavascriptExecutionScope &)=delete
Scope(const Scope &)=delete
Scope & operator=(const Scope &)=delete
~SuppressMicrotaskExecutionScope()
SuppressMicrotaskExecutionScope & operator=(const SuppressMicrotaskExecutionScope &)=delete
SuppressMicrotaskExecutionScope(Isolate *isolate, MicrotaskQueue *microtask_queue=nullptr)
SuppressMicrotaskExecutionScope(const SuppressMicrotaskExecutionScope &)=delete
IsolateGroup & operator=(IsolateGroup &&other)
static IsolateGroup Create()
bool operator!=(const IsolateGroup &other) const
bool operator==(const IsolateGroup &other) const
IsolateGroup & operator=(const IsolateGroup &)
IsolateGroup(const IsolateGroup &)
IsolateGroup(IsolateGroup &&other)
static bool CanCreateNewGroups()
static IsolateGroup GetDefault()
void SetJitCodeEventHandler(JitCodeEventOptions options, JitCodeEventHandler event_handler)
void SetCounterFunction(CounterLookupCallback)
void DiscardThreadSpecificMetadata()
void SetWasmInstanceCallback(ExtensionCallback callback)
void SetReleaseCppHeapCallbackForTesting(ReleaseCppHeapCallback callback)
void SetIdle(bool is_idle)
friend class PersistentValueMapBase
void SetOOMErrorHandler(OOMErrorCallback that)
IsolateGroup GetGroup() const
Local< Context > GetEnteredOrMicrotaskContext()
void SetAddCrashKeyCallback(AddCrashKeyCallback)
bool HasPendingException()
void AddGCPrologueCallback(GCCallbackWithData callback, void *data=nullptr, GCType gc_type_filter=kGCTypeAll)
void SetSharedArrayBufferConstructorEnabledCallback(SharedArrayBufferConstructorEnabledCallback callback)
void SetWasmAsyncResolvePromiseCallback(WasmAsyncResolvePromiseCallback callback)
void SetBatterySaverMode(bool battery_saver_mode_enabled)
void SetWasmJSPIEnabledCallback(WasmJSPIEnabledCallback callback)
bool(*)(Isolate *) AbortOnUncaughtExceptionCallback
void SetHostInitializeImportMetaObjectCallback(HostInitializeImportMetaObjectCallback callback)
void LowMemoryNotification()
void SetWasmModuleCallback(ExtensionCallback callback)
void SetHostImportModuleDynamicallyCallback(HostImportModuleDynamicallyCallback callback)
void(*)(Isolate *isolate, GCType type, GCCallbackFlags flags, void *data) GCCallbackWithData
void EnqueueMicrotask(MicrotaskCallback callback, void *data=nullptr)
static void Initialize(Isolate *isolate, const CreateParams ¶ms)
static Isolate * New(const IsolateGroup &group, const CreateParams ¶ms)
bool AddMessageListener(MessageCallback that, Local< Value > data=Local< Value >())
CppHeap * GetCppHeap() const
void GetEmbeddedCodeRange(const void **start, size_t *length_in_bytes)
void SetStackLimit(uintptr_t stack_limit)
@ kMinorGarbageCollection
@ kErrorCaptureStackTrace
@ kInvalidatedStringLengthOverflowLookupChainProtector
@ kPromiseConstructorReturnedUndefined
@ kRegExpPrototypeStickyGetter
@ kRegExpPrototypeToString
@ kOBSOLETE_RegExpUnicodeSetIncompatibilitiesWithUnicodeMode
@ kOBSOLETE_LineOrParagraphSeparatorAsLineTerminator
@ kWebAssemblyInstantiation
@ kOBSOLETE_ArrayProtectorDirtied
@ kOBSOLETE_DateGetTimezoneOffset
@ kInvalidatedRegExpSpeciesLookupChainProtector
@ kArrayPrototypeConstructorModified
@ kLocaleInfoObsoletedGetters
@ kDefineGetterOrSetterWouldThrow
@ kRegExpExecCalledOnSlowRegExp
@ kOBSOLETE_LegacyFunctionDeclaration
@ kInvalidatedMapIteratorLookupChainProtector
@ kDateToLocaleDateString
@ kInvalidatedNoProfilingProtector
@ kInvalidatedArrayConstructorProtector
@ kInvalidatedArrayIteratorLookupChainProtector
@ kObjectPrototypeHasElements
@ kInvalidatedNoUndetectableObjectsProtector
@ kDateToLocaleTimeString
@ kArrayPrototypeHasElements
@ kWasmJavaScriptPromiseIntegration
@ kInvalidatedArraySpeciesLookupChainProtector
@ kOBSOLETE_StoreBufferOverflow
@ kOBSOLETE_RegExpPrototypeSourceGetter
@ kFunctionPrototypeCaller
@ kOBSOLETE_RegExpMatchAllWithNonGlobalRegExp
@ kExplicitResourceManagement
@ kRegExpMatchIsTrueishOnNonJSRegExp
@ kArrayInstanceConstructorModified
@ kStringToLocaleLowerCase
@ kInvalidatedPromiseHookProtector
@ kAsyncStackTaggingCreateTaskCall
@ kDateTimeFormatDateTimeStyle
@ kRegExpMatchIsFalseishOnJSRegExp
@ kInvalidatedMegaDOMProtector
@ kOBSOLETE_ArrayPrototypeSortJSArrayModifiedPrototype
@ kOBSOLETE_OptimizedFunctionWithOneShotBytecode
@ kAttemptOverrideReadOnlyOnPrototypeStrict
@ kGrowableSharedArrayBuffer
@ kOBSOLETE_PromiseAccept
@ kExtendingNonExtensibleWithPrivate
@ kSourceMappingUrlMagicCommentAtSign
@ kInvalidatedPromiseSpeciesLookupChainProtector
@ kOBSOLETE_StringToLocaleUpperCase
@ kInvalidatedSetIteratorLookupChainProtector
@ kTurboFanOsrCompileStarted
@ kHtmlCommentInExternalScript
@ kCallSiteAPIGetFunctionSloppyCall
@ kAssigmentExpressionLHSIsCallInSloppy
@ kOBSOLETE_ObjectObserve
@ kFunctionConstructorReturnedUndefined
@ kOBSOLETE_RegExpPrototypeOldFlagGetter
@ kOBSOLETE_ConstructorNonUndefinedPrimitiveReturn
@ kOBSOLETE_WasmBulkMemory
@ kInvalidatedIsConcatSpreadableLookupChainProtector
@ kFunctionTokenOffsetTooLongForToString
@ kOBSOLETE_MarkDequeOverflow
@ kOBSOLETE_LabeledExpressionStatement
@ kOBSOLETE_ArrayInstanceProtoModified
@ kOBSOLETE_SlotsBufferOverflow
@ kDecimalWithLeadingZeroInStrictMode
@ kRegExpPrototypeUnicodeGetter
@ kInvalidatedStringWrapperToPrimitiveProtector
@ kInvalidatedTypedArraySpeciesLookupChainProtector
@ kOBSOLETE_ImportAssertionDeprecatedSyntax
@ kDocumentAllLegacyConstruct
@ kRegExpReplaceCalledOnSlowRegExp
@ kWasmImportedStringsUtf8
@ kOBSOLETE_AtomicsNotify
@ kCallSiteAPIGetThisSloppyCall
@ kSharedArrayBufferConstructed
@ kAssigmentExpressionLHSIsCallInStrict
@ kInvalidatedNoElementsProtector
@ kVarRedeclaredCatchBinding
@ kErrorPrepareStackTrace
@ kDeoptimizerDisableSpeculation
@ kInvalidatedNumberStringNotRegexpLikeProtector
@ kInvalidatedArrayBufferDetachingProtector
@ kOBSOLETE_WasmMultiValue
@ kFunctionPrototypeArguments
@ kInvalidatedStringIteratorLookupChainProtector
@ kSloppyModeBlockScopedFunctionRedefinition
@ kInvalidatedPromiseResolveLookupChainProtector
@ kAttemptOverrideReadOnlyOnPrototypeSloppy
@ kInvalidatedPromiseThenLookupChainProtector
@ kUseCounterFeatureCount
@ kInvalidatedTypedArrayLengthLookupChainProtector
void GetStackSample(const RegisterState &state, void **frames, size_t frames_limit, SampleInfo *sample_info)
void AddCallCompletedCallback(CallCompletedCallback callback)
void(*)(std::unique_ptr< CppHeap >) ReleaseCppHeapCallback
void SetExceptionPropagationCallback(ExceptionPropagationCallback callback)
static Isolate * GetCurrent()
void SetContinuationPreservedEmbedderData(Local< Value > data)
bool GetHeapObjectStatisticsAtLastGC(HeapObjectStatistics *object_statistics, size_t type_index)
static V8_INLINE uint32_t GetNumberOfDataSlots()
std::string GetDefaultLocale()
void SetPromiseRejectCallback(PromiseRejectCallback callback)
ArrayBuffer::Allocator * GetArrayBufferAllocator()
void SetCreateHistogramFunction(CreateHistogramCallback)
void GetHeapStatistics(HeapStatistics *heap_statistics)
void SetPrepareStackTraceCallback(PrepareStackTraceCallback callback)
void AddGCEpilogueCallback(GCCallback callback, GCType gc_type_filter=kGCTypeAll)
Local< Context > GetIncumbentContext()
void SetIsLoading(bool is_loading)
MicrotasksPolicy GetMicrotasksPolicy() const
Local< Value > GetContinuationPreservedEmbedderData()
void RequestGarbageCollectionForTesting(GarbageCollectionType type)
JSEntryStubs GetJSEntryStubs()
void RemoveGCPrologueCallback(GCCallback callback)
size_t NumberOfHeapSpaces()
bool GetHeapCodeAndMetadataStatistics(HeapCodeStatistics *object_statistics)
static constexpr size_t kMinCodePagesBufferSize
size_t(*)() GetExternallyAllocatedMemoryInBytesCallback
void RemoveGCEpilogueCallback(GCCallbackWithData callback, void *data=nullptr)
void ClearCachesForTesting()
void AddGCPrologueCallback(GCCallback callback, GCType gc_type_filter=kGCTypeAll)
void DateTimeConfigurationChangeNotification(TimeZoneDetection time_zone_detection=TimeZoneDetection::kSkip)
static Isolate * TryGetCurrent()
void AutomaticallyRestoreInitialHeapLimit(double threshold_percent=0.5)
void RequestInterrupt(InterruptCallback callback, void *data)
V8_INLINE void SetData(uint32_t slot, void *data)
void GetCodeRange(void **start, size_t *length_in_bytes)
void RemoveBeforeCallEnteredCallback(BeforeCallEnteredCallback callback)
void RestoreOriginalHeapLimit()
void SetWasmLoadSourceMapCallback(WasmLoadSourceMapCallback callback)
void RemoveNearHeapLimitCallback(NearHeapLimitCallback callback, size_t heap_limit)
void RemoveMicrotasksCompletedCallback(MicrotasksCompletedCallbackWithData callback, void *data=nullptr)
void RemoveCallCompletedCallback(CallCompletedCallback callback)
void SetAllowAtomicsWait(bool allow)
void SetAllowWasmCodeGenerationCallback(AllowWasmCodeGenerationCallback callback)
Local< Value > ThrowError(const char(&message)[N])
void SetFailedAccessCheckCallbackFunction(FailedAccessCheckCallback)
void SetPromiseHook(PromiseHook hook)
void SetEmbedderRootsHandler(EmbedderRootsHandler *handler)
Local< Value > ThrowError(Local< String > message)
void SetGetExternallyAllocatedMemoryInBytesCallback(GetExternallyAllocatedMemoryInBytesCallback callback)
void SetCaptureStackTraceForUncaughtExceptions(bool capture, int frame_limit=10, StackTrace::StackTraceOptions options=StackTrace::kOverview)
V8_INLINE void * GetData(uint32_t slot)
void SetIsJSApiWrapperNativeErrorCallback(IsJSApiWrapperNativeErrorCallback callback)
void SetMicrotasksPolicy(MicrotasksPolicy policy)
HeapProfiler * GetHeapProfiler()
void RequestGarbageCollectionForTesting(GarbageCollectionType type, StackState stack_state)
void TerminateExecution()
V8_INLINE MaybeLocal< T > GetDataFromSnapshotOnce(size_t index)
bool MeasureMemory(std::unique_ptr< MeasureMemoryDelegate > delegate, MeasureMemoryExecution execution=MeasureMemoryExecution::kDefault)
void SetMetricsRecorder(const std::shared_ptr< metrics::Recorder > &metrics_recorder)
bool IsHeapLimitIncreasedForDebugging()
void IsolateInBackgroundNotification()
size_t NumberOfTrackedHeapObjectTypes()
Local< Value > ThrowException(Local< Value > exception)
void SetMemorySaverMode(bool memory_saver_mode_enabled)
Local< Context > GetCurrentContext()
void SetWasmImportedStringsEnabledCallback(WasmImportedStringsEnabledCallback callback)
Isolate(const Isolate &)=delete
size_t CopyCodePages(size_t capacity, MemoryRange *code_pages_out)
bool GetHeapSpaceStatistics(HeapSpaceStatistics *space_statistics, size_t index)
void RemoveGCPrologueCallback(GCCallbackWithData, void *data=nullptr)
void SetUseCounterCallback(UseCounterCallback callback)
void LocaleConfigurationChangeNotification()
friend class ExternalMemoryAccounter
void CancelTerminateExecution()
void SetPriority(Priority priority)
void AddMicrotasksCompletedCallback(MicrotasksCompletedCallbackWithData callback, void *data=nullptr)
void MemoryPressureNotification(MemoryPressureLevel level)
void Freeze(bool is_frozen)
void AddGCEpilogueCallback(GCCallbackWithData callback, void *data=nullptr, GCType gc_type_filter=kGCTypeAll)
void SetEventLogger(LogEventCallback that)
void AddNearHeapLimitCallback(NearHeapLimitCallback callback, void *data)
void(*)(Isolate *isolate, UseCounterFeature feature) UseCounterCallback
static Isolate * Allocate(const IsolateGroup &group)
void EnqueueMicrotask(Local< Function > microtask)
int ContextDisposedNotification(bool dependant_context=true)
Isolate & operator=(const Isolate &)=delete
void IncreaseHeapLimitForDebugging()
bool IsExecutionTerminating()
static Isolate * New(const CreateParams ¶ms)
void RemoveGCEpilogueCallback(GCCallback callback)
void SetWasmStreamingCallback(WasmStreamingCallback callback)
int64_t AdjustAmountOfExternalAllocatedMemory(int64_t change_in_bytes)
void SetHostImportModuleWithPhaseDynamicallyCallback(HostImportModuleWithPhaseDynamicallyCallback callback)
void InstallConditionalFeatures(Local< Context > context)
void RemoveMessageListeners(MessageCallback that)
V8_DEPRECATED("Will be removed, use ScriptCompiler::CompileOptions for enabling the " "compile hints magic comments") void SetJavaScriptCompileHintsMagicEnabledCallback(JavaScriptCompileHintsMagicEnabledCallback callback)
static Isolate * Allocate()
void SetAddHistogramSampleFunction(AddHistogramSampleCallback)
void SetHostCreateShadowRealmContextCallback(HostCreateShadowRealmContextCallback callback)
void AddBeforeCallEnteredCallback(BeforeCallEnteredCallback callback)
void SetModifyCodeGenerationFromStringsCallback(ModifyCodeGenerationFromStringsCallback2 callback)
void PerformMicrotaskCheckpoint()
void SetAbortOnUncaughtExceptionCallback(AbortOnUncaughtExceptionCallback callback)
bool AddMessageListenerWithErrorLevel(MessageCallback that, int message_levels, Local< Value > data=Local< Value >())
bool HasPendingBackgroundTasks()
void IsolateInForegroundNotification()
void(*)(Isolate *isolate, GCType type, GCCallbackFlags flags) GCCallback
MaybeLocal< Data > GetCurrentHostDefinedOptions()
void SetFatalErrorHandler(FatalErrorCallback that)
void set_max_young_generation_size_in_bytes(size_t limit)
void set_stack_limit(uint32_t *value)
void set_initial_young_generation_size_in_bytes(size_t initial_size)
size_t max_old_generation_size_in_bytes() const
size_t initial_old_generation_size_in_bytes() const
size_t initial_young_generation_size_in_bytes() const
void set_code_range_size_in_bytes(size_t limit)
size_t code_range_size_in_bytes() const
size_t max_young_generation_size_in_bytes() const
void ConfigureDefaults(uint64_t physical_memory, uint64_t virtual_memory_limit)
void set_max_old_generation_size_in_bytes(size_t limit)
uint32_t * stack_limit() const
void set_initial_old_generation_size_in_bytes(size_t initial_size)
void ConfigureDefaultsFromHeapSize(size_t initial_heap_size_in_bytes, size_t maximum_heap_size_in_bytes)
static V8_WARN_UNUSED_RESULT Local< String > NewFromUtf8Literal(Isolate *isolate, const char(&literal)[N], NewStringType type=NewStringType::kNormal)
static constexpr InternalRepresentationType kEmpty
internal::Address * InternalRepresentationType
static V8_INLINE T * ReprAsValue(InternalRepresentationType repr)
V8_INLINE void PerformCastCheck(T *data)
void(*)(Local< Context > context, Local< Module > module, Local< Object > meta) HostInitializeImportMetaObjectCallback
enum V8_DEPRECATE_SOON("This enum is no longer used and will be removed in V8 12.9.") AccessControl
bool(*)(Local< Context > context, Local< String > source) AllowWasmCodeGenerationCallback
bool(*)(Local< Context > context) WasmJSPIEnabledCallback
bool(*)(const FunctionCallbackInfo< Value > &) ExtensionCallback
void(*)(Local< Message > message, Local< Value > data) MessageCallback
void *(*)(const char *name, int min, int max, size_t buckets) CreateHistogramCallback
MaybeLocal< Value >(*)(Local< Context > context, Local< Value > error, Local< Array > sites) PrepareStackTraceCallback
void(*)(Isolate *, void *) MicrotasksCompletedCallbackWithData
void(*)(CrashKeyId id, const std::string &value) AddCrashKeyCallback
void(*)(PromiseRejectMessage message) PromiseRejectCallback
bool(*)(Isolate *isolate, Local< Object > obj) IsJSApiWrapperNativeErrorCallback
void(*)(Local< Object > target, AccessType type, Local< Value > data) FailedAccessCheckCallback
MaybeLocal< Promise >(*)( Local< Context > context, Local< Data > host_defined_options, Local< Value > resource_name, Local< String > specifier, ModuleImportPhase phase, Local< FixedArray > import_attributes) HostImportModuleWithPhaseDynamicallyCallback
void(*)(const char *name, int status) LogEventCallback
void(*)(void *data) MicrotaskCallback
void(*)(PromiseHookType type, Local< Promise > promise, Local< Value > parent) PromiseHook
void(*)(Isolate *) CallCompletedCallback
ModifyCodeGenerationFromStringsResult(*)(Local< Context > context, Local< Value > source, bool is_code_like) ModifyCodeGenerationFromStringsCallback2
bool(*)(Local< Context > context) WasmImportedStringsEnabledCallback
MaybeLocal< Promise >(*)( Local< Context > context, Local< Data > host_defined_options, Local< Value > resource_name, Local< String > specifier, Local< FixedArray > import_attributes) HostImportModuleDynamicallyCallback
void(*)(Isolate *isolate, void *data) InterruptCallback
cppgc::EmbedderStackState StackState
size_t(*)(void *data, size_t current_heap_limit, size_t initial_heap_limit) NearHeapLimitCallback
void(*)(const FunctionCallbackInfo< Value > &) WasmStreamingCallback
void(*)(const char *location, const char *message) FatalErrorCallback
void(*)( Isolate *isolate, Local< Context > context, Local< Promise::Resolver > resolver, Local< Value > result, WasmAsyncSuccess success) WasmAsyncResolvePromiseCallback
void(*)(Isolate *) BeforeCallEnteredCallback
bool(*)(Local< Context > context) SharedArrayBufferConstructorEnabledCallback
void(*)(void *histogram, int sample) AddHistogramSampleCallback
int *(*)(const char *name) CounterLookupCallback
MaybeLocal< Context >(*)(Local< Context > initiator_context) HostCreateShadowRealmContextCallback
void(*)(ExceptionPropagationMessage message) ExceptionPropagationCallback
bool(*)(Local< Context > context) JavaScriptCompileHintsMagicEnabledCallback
void(*)(const char *location, const OOMDetails &details) OOMErrorCallback
Local< String >(*)(Isolate *isolate, const char *name) WasmLoadSourceMapCallback
void(*)(const JitCodeEvent *event) JitCodeEventHandler
AddHistogramSampleCallback add_histogram_sample_callback
CreateHistogramCallback create_histogram_callback
OOMErrorCallback oom_error_callback
JitCodeEventHandler code_event_handler
const intptr_t * external_references
ArrayBuffer::Allocator * array_buffer_allocator
ResourceConstraints constraints
int embedder_wrapper_type_index
FatalErrorCallback fatal_error_callback
const StartupData * snapshot_blob
CounterLookupCallback counter_lookup_callback
int embedder_wrapper_object_index
std::shared_ptr< ArrayBuffer::Allocator > array_buffer_allocator_shared
#define V8_DEPRECATE_SOON(message)
#define ALLOW_COPY_AND_MOVE_WITH_DEPRECATED_FIELDS(ClassName)