v8 13.6.233 (node 24.1.0)
V8 is Google's open source JavaScript engine
Loading...
Searching...
No Matches
v8-isolate.h
Go to the documentation of this file.
1// Copyright 2021 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef INCLUDE_V8_ISOLATE_H_
6#define INCLUDE_V8_ISOLATE_H_
7
8#include <stddef.h>
9#include <stdint.h>
10
11#include <memory>
12#include <string>
13#include <utility>
14
15#include "cppgc/common.h"
16#include "v8-array-buffer.h" // NOLINT(build/include_directory)
17#include "v8-callbacks.h" // NOLINT(build/include_directory)
18#include "v8-data.h" // NOLINT(build/include_directory)
19#include "v8-debug.h" // NOLINT(build/include_directory)
20#include "v8-embedder-heap.h" // NOLINT(build/include_directory)
21#include "v8-exception.h" // NOLINT(build/include_directory)
22#include "v8-function-callback.h" // NOLINT(build/include_directory)
23#include "v8-internal.h" // NOLINT(build/include_directory)
24#include "v8-local-handle.h" // NOLINT(build/include_directory)
25#include "v8-microtask.h" // NOLINT(build/include_directory)
26#include "v8-persistent-handle.h" // NOLINT(build/include_directory)
27#include "v8-primitive.h" // NOLINT(build/include_directory)
28#include "v8-statistics.h" // NOLINT(build/include_directory)
29#include "v8-unwinder.h" // NOLINT(build/include_directory)
30#include "v8config.h" // NOLINT(build/include_directory)
31
32namespace v8 {
33
34class CppHeap;
35class HeapProfiler;
36class MicrotaskQueue;
37class StartupData;
38class ScriptOrModule;
40
41namespace internal {
42class MicrotaskQueue;
43class ThreadLocalTop;
44} // namespace internal
45
46namespace metrics {
47class Recorder;
48} // namespace metrics
49
65 public:
84 void ConfigureDefaultsFromHeapSize(size_t initial_heap_size_in_bytes,
85 size_t maximum_heap_size_in_bytes);
86
96 void ConfigureDefaults(uint64_t physical_memory,
97 uint64_t virtual_memory_limit);
98
102 uint32_t* stack_limit() const { return stack_limit_; }
103 void set_stack_limit(uint32_t* value) { stack_limit_ = value; }
104
114 size_t code_range_size_in_bytes() const { return code_range_size_; }
115 void set_code_range_size_in_bytes(size_t limit) { code_range_size_ = limit; }
116
125 return max_old_generation_size_;
126 }
128 max_old_generation_size_ = limit;
129 }
130
137 return max_young_generation_size_;
138 }
140 max_young_generation_size_ = limit;
141 }
142
144 return initial_old_generation_size_;
145 }
147 initial_old_generation_size_ = initial_size;
148 }
149
151 return initial_young_generation_size_;
152 }
154 initial_young_generation_size_ = initial_size;
155 }
156
157 private:
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;
165};
166
176
188
193
219 public:
227
232 static bool CanCreateNewGroups();
233
239
242
245
247
248 bool operator==(const IsolateGroup& other) const {
249 return isolate_group_ == other.isolate_group_;
250 }
251
252 bool operator!=(const IsolateGroup& other) const {
253 return !operator==(other);
254 }
255
256 private:
257 friend class Isolate;
259
260 // The isolate_group pointer should be already acquired.
261 explicit IsolateGroup(internal::IsolateGroup*&& isolate_group);
262
263 internal::IsolateGroup* isolate_group_;
264};
265
275 public:
363
369 public:
370 explicit Scope(Isolate* isolate) : v8_isolate_(isolate) {
371 v8_isolate_->Enter();
372 }
373
374 ~Scope() { v8_isolate_->Exit(); }
375
376 // Prevent copying of Scope objects.
377 Scope(const Scope&) = delete;
378 Scope& operator=(const Scope&) = delete;
379
380 private:
381 Isolate* const v8_isolate_;
382 };
383
388 public:
390
393
394 // Prevent copying of Scope objects.
396 delete;
398 const DisallowJavascriptExecutionScope&) = delete;
399
400 private:
401 v8::Isolate* const v8_isolate_;
402 const OnFailure on_failure_;
403 bool was_execution_allowed_;
404 };
405
410 public:
413
414 // Prevent copying of Scope objects.
416 delete;
418 const AllowJavascriptExecutionScope&) = delete;
419
420 private:
421 Isolate* const v8_isolate_;
422 bool was_execution_allowed_assert_;
423 bool was_execution_allowed_throws_;
424 bool was_execution_allowed_dump_;
425 };
426
432 public:
434 Isolate* isolate, MicrotaskQueue* microtask_queue = nullptr);
436
437 // Prevent copying of Scope objects.
439 delete;
441 const SuppressMicrotaskExecutionScope&) = delete;
442
443 private:
444 internal::Isolate* const i_isolate_;
445 internal::MicrotaskQueue* const microtask_queue_;
446 internal::Address previous_stack_height_;
447
448 friend class internal::ThreadLocalTop;
449 };
450
459
596 kWasmGC = 127,
637
638 // If you add new values here, you'll also need to update Chromium's:
639 // web_feature.mojom, use_counter_callback.cc, and enums.xml. V8 changes to
640 // this list need to be landed first, then changes on the Chromium side.
641 kUseCounterFeatureCount // This enum value must be last.
642 };
643
653
654 // The different priorities that an isolate can have.
655 enum class Priority {
656 // The isolate does not relate to content that is currently important
657 // to the user. Lowest priority.
659
660 // The isolate contributes to content that is visible to the user, like a
661 // visible iframe that's not interacted directly with. High priority.
663
664 // The isolate contributes to content that is of the utmost importance to
665 // the user, like visible content in the focused window. Highest priority.
667 };
668
669 using UseCounterCallback = void (*)(Isolate* isolate,
670 UseCounterFeature feature);
671
686 static Isolate* Allocate();
687 static Isolate* Allocate(const IsolateGroup& group);
688
693
697 static void Initialize(Isolate* isolate, const CreateParams& params);
698
708 static Isolate* New(const CreateParams& params);
709 static Isolate* New(const IsolateGroup& group, const CreateParams& params);
710
718
726
730 bool IsCurrent() const;
731
746
759
766
778
785
792
800
806
811
812#if defined(V8_OS_WIN)
816 V8_DEPRECATE_SOON("Use SetFilterETWSessionByURL2Callback instead")
817 void SetFilterETWSessionByURLCallback(FilterETWSessionByURLCallback callback);
818 void SetFilterETWSessionByURL2Callback(
819 FilterETWSessionByURL2Callback callback);
820#endif // V8_OS_WIN
821
829
836 void SetBatterySaverMode(bool battery_saver_mode_enabled);
837
844 void SetMemorySaverMode(bool memory_saver_mode_enabled);
845
852
857
863 void Enter();
864
872 void Exit();
873
878 void Dispose();
879
885
894
899 V8_INLINE void SetData(uint32_t slot, void* data);
900
905 V8_INLINE void* GetData(uint32_t slot);
906
911 V8_INLINE static uint32_t GetNumberOfDataSlots();
912
918 template <class T>
920
926
932
936 void GetHeapStatistics(HeapStatistics* heap_statistics);
937
942
953 size_t index);
954
959
970 size_t type_index);
971
980
994 std::unique_ptr<MeasureMemoryDelegate> delegate,
996
1009 void GetStackSample(const RegisterState& state, void** frames,
1010 size_t frames_limit, SampleInfo* sample_info);
1011
1019 V8_DEPRECATE_SOON("Use ExternalMemoryAccounter instead.")
1020 int64_t AdjustAmountOfExternalAllocatedMemory(int64_t change_in_bytes);
1021
1027
1031 void SetIdle(bool is_idle);
1032
1035
1038
1044
1052
1058
1064
1070 template <int N>
1071 Local<Value> ThrowError(const char (&message)[N]) {
1072 return ThrowError(String::NewFromUtf8Literal(this, message));
1073 }
1075
1083
1091
1092 using GCCallback = void (*)(Isolate* isolate, GCType type,
1093 GCCallbackFlags flags);
1094 using GCCallbackWithData = void (*)(Isolate* isolate, GCType type,
1095 GCCallbackFlags flags, void* data);
1096
1108 GCType gc_type_filter = kGCTypeAll);
1109
1115 void AddGCPrologueCallback(GCCallbackWithData callback, void* data = nullptr,
1116 GCType gc_type_filter = kGCTypeAll);
1117
1125
1132
1140 GCType gc_type_filter = kGCTypeAll);
1141
1147 void AddGCEpilogueCallback(GCCallbackWithData callback, void* data = nullptr,
1148 GCType gc_type_filter = kGCTypeAll);
1149
1157
1164 void* data = nullptr);
1165
1174
1175 using ReleaseCppHeapCallback = void (*)(std::unique_ptr<CppHeap>);
1176
1183
1189
1191
1200
1209
1219
1235
1244 void RequestInterrupt(InterruptCallback callback, void* data);
1245
1252
1263
1275 StackState stack_state);
1276
1281
1289
1294
1303
1308
1314
1320
1329
1337
1342
1346 void EnqueueMicrotask(MicrotaskCallback callback, void* data = nullptr);
1347
1352
1357
1372 MicrotasksCompletedCallbackWithData callback, void* data = nullptr);
1373
1378 MicrotasksCompletedCallbackWithData callback, void* data = nullptr);
1379
1384
1390
1399
1410 const std::shared_ptr<metrics::Recorder>& metrics_recorder);
1411
1418
1424
1434 V8_DEPRECATE_SOON("Use version that passes ContextDependants.")
1435 int ContextDisposedNotification(bool dependant_context = true);
1436
1445
1450 V8_DEPRECATE_SOON("Use SetPriority(Priority::kUserBlocking) instead")
1452
1457 V8_DEPRECATE_SOON("Use SetPriority(Priority::kBestEffort) instead")
1459
1464 void SetPriority(Priority priority);
1465
1478 void SetIsLoading(bool is_loading);
1479
1486 void Freeze(bool is_frozen);
1487
1493
1498
1504
1528 JitCodeEventHandler event_handler);
1529
1539 void SetStackLimit(uintptr_t stack_limit);
1540
1556 void GetCodeRange(void** start, size_t* length_in_bytes);
1557
1562 void GetEmbeddedCodeRange(const void** start, size_t* length_in_bytes);
1563
1568
1569 static constexpr size_t kMinCodePagesBufferSize = 32;
1570
1584 size_t CopyCodePages(size_t capacity, MemoryRange* code_pages_out);
1585
1588
1591
1598
1607 size_t heap_limit);
1608
1615 void AutomaticallyRestoreInitialHeapLimit(double threshold_percent = 0.5);
1616
1623
1630
1637
1639
1642
1644
1647
1650
1652
1658 "Will be removed, use ScriptCompiler::CompileOptions for enabling the "
1659 "compile hints magic comments")
1660 void SetJavaScriptCompileHintsMagicEnabledCallback(
1662
1669
1674 bool IsDead();
1675
1686 Local<Value> data = Local<Value>());
1687
1700 int message_levels,
1701 Local<Value> data = Local<Value>());
1702
1707
1710
1716 bool capture, int frame_limit = 10,
1717 StackTrace::StackTraceOptions options = StackTrace::kOverview);
1718
1723 bool IsInUse();
1724
1730 void SetAllowAtomicsWait(bool allow);
1731
1746
1758 TimeZoneDetection time_zone_detection = TimeZoneDetection::kSkip);
1759
1770
1775 std::string GetDefaultLocale();
1776
1780 uint64_t GetHashSeed();
1781
1782 Isolate() = delete;
1783 ~Isolate() = delete;
1784 Isolate(const Isolate&) = delete;
1785 Isolate& operator=(const Isolate&) = delete;
1786 // Deleting operator new and delete here is allowed as ctor and dtor is also
1787 // deleted.
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;
1792
1793 private:
1794 template <class K, class V, class Traits>
1797
1799 size_t index);
1800 int64_t AdjustAmountOfExternalAllocatedMemoryImpl(int64_t change_in_bytes);
1801 void HandleExternalMemoryInterrupt();
1802};
1803
1804void Isolate::SetData(uint32_t slot, void* data) {
1805 using I = internal::Internals;
1806 I::SetEmbedderData(this, slot, data);
1807}
1808
1809void* Isolate::GetData(uint32_t slot) {
1810 using I = internal::Internals;
1811 return I::GetEmbedderData(this, slot);
1812}
1813
1815 using I = internal::Internals;
1816 return I::kNumIsolateDataSlots;
1817}
1818
1819template <class T>
1821 if (auto repr = GetDataFromSnapshotOnce(index);
1824 return Local<T>::FromRepr(repr);
1825 }
1826 return {};
1827}
1828
1829} // namespace v8
1830
1831#endif // INCLUDE_V8_ISOLATE_H_
AllowJavascriptExecutionScope & operator=(const AllowJavascriptExecutionScope &)=delete
AllowJavascriptExecutionScope(const AllowJavascriptExecutionScope &)=delete
DisallowJavascriptExecutionScope(Isolate *isolate, OnFailure on_failure)
DisallowJavascriptExecutionScope(const DisallowJavascriptExecutionScope &)=delete
DisallowJavascriptExecutionScope & operator=(const DisallowJavascriptExecutionScope &)=delete
Scope(Isolate *isolate)
Definition v8-isolate.h:370
Scope(const Scope &)=delete
Scope & operator=(const Scope &)=delete
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
Definition v8-isolate.h:252
bool operator==(const IsolateGroup &other) const
Definition v8-isolate.h:248
IsolateGroup & operator=(const IsolateGroup &)
IsolateGroup(const IsolateGroup &)
IsolateGroup(IsolateGroup &&other)
friend class Isolate
Definition v8-isolate.h:257
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
Definition v8-isolate.h:756
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)
bool IsDead()
static void Initialize(Isolate *isolate, const CreateParams &params)
static Isolate * New(const IsolateGroup &group, const CreateParams &params)
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)
void DumpAndResetStats()
@ kMinorGarbageCollection
Definition v8-isolate.h:457
@ kFullGarbageCollection
Definition v8-isolate.h:456
@ kErrorCaptureStackTrace
Definition v8-isolate.h:512
@ kArrayBufferTransfer
Definition v8-isolate.h:623
@ kInvalidatedStringLengthOverflowLookupChainProtector
Definition v8-isolate.h:573
@ kStringLocaleCompare
Definition v8-isolate.h:531
@ kPromiseConstructorReturnedUndefined
Definition v8-isolate.h:507
@ kResizableArrayBuffer
Definition v8-isolate.h:614
@ kRegExpPrototypeStickyGetter
Definition v8-isolate.h:480
@ kRegExpPrototypeToString
Definition v8-isolate.h:481
@ kOBSOLETE_RegExpUnicodeSetIncompatibilitiesWithUnicodeMode
Definition v8-isolate.h:588
@ kOBSOLETE_LineOrParagraphSeparatorAsLineTerminator
Definition v8-isolate.h:510
@ kWebAssemblyInstantiation
Definition v8-isolate.h:515
@ kOBSOLETE_ArrayProtectorDirtied
Definition v8-isolate.h:493
@ kOBSOLETE_DateGetTimezoneOffset
Definition v8-isolate.h:543
@ kOBSOLETE_IntlPattern
Definition v8-isolate.h:484
@ kInvalidatedRegExpSpeciesLookupChainProtector
Definition v8-isolate.h:570
@ kArrayPrototypeConstructorModified
Definition v8-isolate.h:495
@ kLocaleInfoObsoletedGetters
Definition v8-isolate.h:590
@ kDefineGetterOrSetterWouldThrow
Definition v8-isolate.h:503
@ kRegExpExecCalledOnSlowRegExp
Definition v8-isolate.h:548
@ kOBSOLETE_LegacyFunctionDeclaration
Definition v8-isolate.h:498
@ kInvalidatedMapIteratorLookupChainProtector
Definition v8-isolate.h:564
@ kDateToLocaleDateString
Definition v8-isolate.h:536
@ kArraySpeciesModified
Definition v8-isolate.h:494
@ kInvalidatedNoProfilingProtector
Definition v8-isolate.h:593
@ kInvalidatedArrayConstructorProtector
Definition v8-isolate.h:560
@ kCompileHintsMagicAll
Definition v8-isolate.h:592
@ kInvalidatedArrayIteratorLookupChainProtector
Definition v8-isolate.h:561
@ kObjectPrototypeHasElements
Definition v8-isolate.h:553
@ kDateTimeFormatRange
Definition v8-isolate.h:555
@ kInvalidatedNoUndetectableObjectsProtector
Definition v8-isolate.h:601
@ kOBSOLETE_IntlResolved
Definition v8-isolate.h:485
@ kDateToLocaleTimeString
Definition v8-isolate.h:537
@ kNumberToLocaleString
Definition v8-isolate.h:534
@ kWasmImportedStrings
Definition v8-isolate.h:597
@ kWasmModuleCompilation
Definition v8-isolate.h:600
@ kArrayPrototypeHasElements
Definition v8-isolate.h:552
@ kWasmJavaScriptPromiseIntegration
Definition v8-isolate.h:602
@ kOBSOLETE_LegacyConst
Definition v8-isolate.h:471
@ kInvalidatedArraySpeciesLookupChainProtector
Definition v8-isolate.h:562
@ kOBSOLETE_StoreBufferOverflow
Definition v8-isolate.h:473
@ kBreakIteratorTypeWord
Definition v8-isolate.h:557
@ kOBSOLETE_RegExpPrototypeSourceGetter
Definition v8-isolate.h:499
@ kFunctionPrototypeCaller
Definition v8-isolate.h:583
@ kOBSOLETE_RegExpMatchAllWithNonGlobalRegExp
Definition v8-isolate.h:547
@ kOBSOLETE_AtomicsWake
Definition v8-isolate.h:522
@ kExplicitResourceManagement
Definition v8-isolate.h:635
@ kRegExpMatchIsTrueishOnNonJSRegExp
Definition v8-isolate.h:541
@ kArrayInstanceConstructorModified
Definition v8-isolate.h:497
@ kStringToLocaleLowerCase
Definition v8-isolate.h:533
@ kInvalidatedPromiseHookProtector
Definition v8-isolate.h:566
@ kAsyncStackTaggingCreateTaskCall
Definition v8-isolate.h:585
@ kDateTimeFormatDateTimeStyle
Definition v8-isolate.h:556
@ kRegExpMatchIsFalseishOnJSRegExp
Definition v8-isolate.h:542
@ kInvalidatedMegaDOMProtector
Definition v8-isolate.h:581
@ kOBSOLETE_ArrayPrototypeSortJSArrayModifiedPrototype
Definition v8-isolate.h:517
@ kOBSOLETE_OptimizedFunctionWithOneShotBytecode
Definition v8-isolate.h:540
@ kAttemptOverrideReadOnlyOnPrototypeStrict
Definition v8-isolate.h:539
@ kNumberFormatStyleUnit
Definition v8-isolate.h:554
@ kGrowableSharedArrayBuffer
Definition v8-isolate.h:615
@ kOBSOLETE_PromiseAccept
Definition v8-isolate.h:487
@ kWasmTypeReflection
Definition v8-isolate.h:606
@ kExtendingNonExtensibleWithPrivate
Definition v8-isolate.h:626
@ kPromiseWithResolvers
Definition v8-isolate.h:624
@ kDateToLocaleString
Definition v8-isolate.h:535
@ kSourceMappingUrlMagicCommentAtSign
Definition v8-isolate.h:598
@ kInvalidatedPromiseSpeciesLookupChainProtector
Definition v8-isolate.h:568
@ kOBSOLETE_StringToLocaleUpperCase
Definition v8-isolate.h:532
@ kInvalidatedSetIteratorLookupChainProtector
Definition v8-isolate.h:571
@ kOBSOLETE_StrongMode
Definition v8-isolate.h:479
@ kTurboFanOsrCompileStarted
Definition v8-isolate.h:584
@ kOBSOLETE_PromiseChain
Definition v8-isolate.h:486
@ kHtmlCommentInExternalScript
Definition v8-isolate.h:489
@ kCallSiteAPIGetFunctionSloppyCall
Definition v8-isolate.h:545
@ kAssigmentExpressionLHSIsCallInSloppy
Definition v8-isolate.h:505
@ kOBSOLETE_ObjectObserve
Definition v8-isolate.h:475
@ kFunctionConstructorReturnedUndefined
Definition v8-isolate.h:504
@ kOBSOLETE_RegExpPrototypeOldFlagGetter
Definition v8-isolate.h:500
@ kOBSOLETE_ConstructorNonUndefinedPrimitiveReturn
Definition v8-isolate.h:508
@ kOBSOLETE_IntlV8Parse
Definition v8-isolate.h:483
@ kOBSOLETE_WasmBulkMemory
Definition v8-isolate.h:578
@ kInvalidatedIsConcatSpreadableLookupChainProtector
Definition v8-isolate.h:563
@ kOBSOLETE_PromiseDefer
Definition v8-isolate.h:488
@ kFunctionTokenOffsetTooLongForToString
Definition v8-isolate.h:518
@ kOBSOLETE_MarkDequeOverflow
Definition v8-isolate.h:472
@ kOBSOLETE_LabeledExpressionStatement
Definition v8-isolate.h:509
@ kOBSOLETE_ArrayInstanceProtoModified
Definition v8-isolate.h:496
@ kRelativeTimeFormat
Definition v8-isolate.h:527
@ kOBSOLETE_SlotsBufferOverflow
Definition v8-isolate.h:474
@ kDecimalWithLeadingZeroInStrictMode
Definition v8-isolate.h:501
@ kRegExpPrototypeUnicodeGetter
Definition v8-isolate.h:482
@ kDocumentAllLegacyCall
Definition v8-isolate.h:610
@ kInvalidatedStringWrapperToPrimitiveProtector
Definition v8-isolate.h:609
@ kInvalidatedTypedArraySpeciesLookupChainProtector
Definition v8-isolate.h:574
@ kOBSOLETE_ImportAssertionDeprecatedSyntax
Definition v8-isolate.h:589
@ kDocumentAllLegacyConstruct
Definition v8-isolate.h:611
@ kRegExpReplaceCalledOnSlowRegExp
Definition v8-isolate.h:549
@ kWasmImportedStringsUtf8
Definition v8-isolate.h:613
@ kOBSOLETE_AtomicsNotify
Definition v8-isolate.h:521
@ kCallSiteAPIGetThisSloppyCall
Definition v8-isolate.h:546
@ kSharedArrayBufferConstructed
Definition v8-isolate.h:551
@ kAssigmentExpressionLHSIsCallInStrict
Definition v8-isolate.h:506
@ kInvalidatedNoElementsProtector
Definition v8-isolate.h:565
@ kVarRedeclaredCatchBinding
Definition v8-isolate.h:576
@ kErrorPrepareStackTrace
Definition v8-isolate.h:513
@ kDeoptimizerDisableSpeculation
Definition v8-isolate.h:516
@ kInvalidatedNumberStringNotRegexpLikeProtector
Definition v8-isolate.h:587
@ kBreakIteratorTypeLine
Definition v8-isolate.h:558
@ kInvalidatedArrayBufferDetachingProtector
Definition v8-isolate.h:559
@ kWasmExceptionHandling
Definition v8-isolate.h:580
@ kOBSOLETE_WasmMultiValue
Definition v8-isolate.h:579
@ kErrorStackTraceLimit
Definition v8-isolate.h:514
@ kFunctionPrototypeArguments
Definition v8-isolate.h:582
@ kInvalidatedStringIteratorLookupChainProtector
Definition v8-isolate.h:572
@ kSloppyModeBlockScopedFunctionRedefinition
Definition v8-isolate.h:491
@ kInvalidatedPromiseResolveLookupChainProtector
Definition v8-isolate.h:567
@ kAttemptOverrideReadOnlyOnPrototypeSloppy
Definition v8-isolate.h:538
@ kInvalidatedPromiseThenLookupChainProtector
Definition v8-isolate.h:569
@ kUseCounterFeatureCount
Definition v8-isolate.h:641
@ kInvalidatedTypedArrayLengthLookupChainProtector
Definition v8-isolate.h:632
@ kLocaleInfoFunctions
Definition v8-isolate.h:591
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)
Isolate()=delete
void AddGCEpilogueCallback(GCCallback callback, GCType gc_type_filter=kGCTypeAll)
Local< Context > GetIncumbentContext()
void SetIsLoading(bool is_loading)
MicrotasksPolicy GetMicrotasksPolicy() const
bool IsInUse()
Local< Value > GetContinuationPreservedEmbedderData()
void RequestGarbageCollectionForTesting(GarbageCollectionType type)
bool InContext()
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 Dispose()
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 Enter()
void SetAllowWasmCodeGenerationCallback(AllowWasmCodeGenerationCallback callback)
uint64_t GetHashSeed()
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)
int GetStackTraceLimit()
void ClearKeptObjects()
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
~Isolate()=delete
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
Definition v8-isolate.h:669
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 &params)
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()
bool IsCurrent() const
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)
Definition v8-isolate.h:139
void set_stack_limit(uint32_t *value)
Definition v8-isolate.h:103
void set_initial_young_generation_size_in_bytes(size_t initial_size)
Definition v8-isolate.h:153
size_t max_old_generation_size_in_bytes() const
Definition v8-isolate.h:124
size_t initial_old_generation_size_in_bytes() const
Definition v8-isolate.h:143
size_t initial_young_generation_size_in_bytes() const
Definition v8-isolate.h:150
void set_code_range_size_in_bytes(size_t limit)
Definition v8-isolate.h:115
size_t code_range_size_in_bytes() const
Definition v8-isolate.h:114
size_t max_young_generation_size_in_bytes() const
Definition v8-isolate.h:136
void ConfigureDefaults(uint64_t physical_memory, uint64_t virtual_memory_limit)
void set_max_old_generation_size_in_bytes(size_t limit)
Definition v8-isolate.h:127
uint32_t * stack_limit() const
Definition v8-isolate.h:102
void set_initial_old_generation_size_in_bytes(size_t initial_size)
Definition v8-isolate.h:146
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)
EmbedderStackState
Definition common.h:15
uintptr_t Address
Definition v8-internal.h:52
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
Definition v8-object.h:170
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
MemoryPressureLevel
Definition v8-isolate.h:175
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
Definition v8-promise.h:170
ContextDependants
Definition v8-isolate.h:181
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
Definition v8-promise.h:143
GCCallbackFlags
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
@ kGCTypeAll
JitCodeEventOptions
void(*)(Isolate *isolate, void *data) InterruptCallback
cppgc::EmbedderStackState StackState
Definition v8-isolate.h:192
size_t(*)(void *data, size_t current_heap_limit, size_t initial_heap_limit) NearHeapLimitCallback
MeasureMemoryExecution
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
MicrotasksPolicy
void(*)(const JitCodeEvent *event) JitCodeEventHandler
AddHistogramSampleCallback add_histogram_sample_callback
Definition v8-isolate.h:315
CreateHistogramCallback create_histogram_callback
Definition v8-isolate.h:314
OOMErrorCallback oom_error_callback
Definition v8-isolate.h:355
JitCodeEventHandler code_event_handler
Definition v8-isolate.h:289
const intptr_t * external_references
Definition v8-isolate.h:335
ArrayBuffer::Allocator * array_buffer_allocator
Definition v8-isolate.h:326
ResourceConstraints constraints
Definition v8-isolate.h:294
FatalErrorCallback fatal_error_callback
Definition v8-isolate.h:354
const StartupData * snapshot_blob
Definition v8-isolate.h:300
CounterLookupCallback counter_lookup_callback
Definition v8-isolate.h:306
std::shared_ptr< ArrayBuffer::Allocator > array_buffer_allocator_shared
Definition v8-isolate.h:327
Definition v8-unwinder.h:69
#define V8_EXPORT
Definition v8config.h:800
#define V8_INLINE
Definition v8config.h:500
#define V8_DEPRECATE_SOON(message)
Definition v8config.h:614
#define ALLOW_COPY_AND_MOVE_WITH_DEPRECATED_FIELDS(ClassName)
Definition v8config.h:637
#define V8_NODISCARD
Definition v8config.h:693