libv8-node 15.14.0.0-x86_64-linux → 16.17.0.0-x86_64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/libv8-node/location.rb +1 -1
- data/ext/libv8-node/paths.rb +5 -1
- data/lib/libv8/node/version.rb +3 -3
- data/vendor/v8/include/cppgc/allocation.h +105 -45
- data/vendor/v8/include/cppgc/common.h +9 -6
- data/vendor/v8/include/cppgc/cross-thread-persistent.h +413 -0
- data/vendor/v8/include/cppgc/custom-space.h +37 -2
- data/vendor/v8/include/cppgc/default-platform.h +47 -48
- data/vendor/v8/include/cppgc/ephemeron-pair.h +30 -0
- data/vendor/v8/include/cppgc/explicit-management.h +82 -0
- data/vendor/v8/include/cppgc/garbage-collected.h +4 -3
- data/vendor/v8/include/cppgc/heap-consistency.h +253 -0
- data/vendor/v8/include/cppgc/heap-state.h +70 -0
- data/vendor/v8/include/cppgc/heap-statistics.h +120 -0
- data/vendor/v8/include/cppgc/heap.h +68 -6
- data/vendor/v8/include/cppgc/internal/api-constants.h +3 -3
- data/vendor/v8/include/cppgc/internal/caged-heap-local-data.h +2 -1
- data/vendor/v8/include/cppgc/internal/compiler-specific.h +2 -2
- data/vendor/v8/include/cppgc/internal/gc-info.h +44 -13
- data/vendor/v8/include/cppgc/internal/name-trait.h +111 -0
- data/vendor/v8/include/cppgc/internal/persistent-node.h +58 -2
- data/vendor/v8/include/cppgc/internal/pointer-policies.h +69 -28
- data/vendor/v8/include/cppgc/internal/prefinalizer-handler.h +1 -1
- data/vendor/v8/include/cppgc/internal/write-barrier.h +390 -35
- data/vendor/v8/include/cppgc/liveness-broker.h +11 -2
- data/vendor/v8/include/cppgc/macros.h +2 -0
- data/vendor/v8/include/cppgc/member.h +87 -25
- data/vendor/v8/include/cppgc/name-provider.h +65 -0
- data/vendor/v8/include/cppgc/object-size-trait.h +58 -0
- data/vendor/v8/include/cppgc/persistent.h +40 -10
- data/vendor/v8/include/cppgc/platform.h +49 -25
- data/vendor/v8/include/cppgc/prefinalizer.h +1 -1
- data/vendor/v8/include/cppgc/process-heap-statistics.h +36 -0
- data/vendor/v8/include/cppgc/sentinel-pointer.h +32 -0
- data/vendor/v8/include/cppgc/source-location.h +2 -1
- data/vendor/v8/include/cppgc/testing.h +99 -0
- data/vendor/v8/include/cppgc/trace-trait.h +8 -3
- data/vendor/v8/include/cppgc/type-traits.h +157 -19
- data/vendor/v8/include/cppgc/visitor.h +194 -28
- data/vendor/v8/include/libplatform/libplatform.h +11 -0
- data/vendor/v8/include/libplatform/v8-tracing.h +2 -0
- data/vendor/v8/include/v8-cppgc.h +258 -159
- data/vendor/v8/include/v8-fast-api-calls.h +603 -155
- data/vendor/v8/include/v8-inspector.h +22 -4
- data/vendor/v8/include/v8-internal.h +111 -27
- data/vendor/v8/include/v8-metrics.h +77 -8
- data/vendor/v8/include/v8-platform.h +47 -22
- data/vendor/v8/include/v8-profiler.h +75 -11
- data/vendor/v8/include/v8-unwinder-state.h +30 -0
- data/vendor/v8/include/v8-util.h +1 -1
- data/vendor/v8/include/v8-version.h +4 -4
- data/vendor/v8/include/v8.h +1196 -642
- data/vendor/v8/include/v8config.h +87 -11
- data/vendor/v8/{out.gn → x86_64-linux}/libv8/obj/libv8_monolith.a +0 -0
- metadata +17 -5
- data/vendor/v8/include/cppgc/internal/process-heap.h +0 -34
    
        data/vendor/v8/include/v8.h
    CHANGED
    
    | @@ -19,6 +19,7 @@ | |
| 19 19 | 
             
            #include <stdint.h>
         | 
| 20 20 | 
             
            #include <stdio.h>
         | 
| 21 21 |  | 
| 22 | 
            +
            #include <atomic>
         | 
| 22 23 | 
             
            #include <memory>
         | 
| 23 24 | 
             
            #include <string>
         | 
| 24 25 | 
             
            #include <type_traits>
         | 
| @@ -46,9 +47,13 @@ class BigIntObject; | |
| 46 47 | 
             
            class Boolean;
         | 
| 47 48 | 
             
            class BooleanObject;
         | 
| 48 49 | 
             
            class CFunction;
         | 
| 50 | 
            +
            class CallHandlerHelper;
         | 
| 49 51 | 
             
            class Context;
         | 
| 52 | 
            +
            class CppHeap;
         | 
| 53 | 
            +
            class CTypeInfo;
         | 
| 50 54 | 
             
            class Data;
         | 
| 51 55 | 
             
            class Date;
         | 
| 56 | 
            +
            class EscapableHandleScope;
         | 
| 52 57 | 
             
            class External;
         | 
| 53 58 | 
             
            class Function;
         | 
| 54 59 | 
             
            class FunctionTemplate;
         | 
| @@ -57,8 +62,7 @@ class ImplementationUtilities; | |
| 57 62 | 
             
            class Int32;
         | 
| 58 63 | 
             
            class Integer;
         | 
| 59 64 | 
             
            class Isolate;
         | 
| 60 | 
            -
             | 
| 61 | 
            -
            class Maybe;
         | 
| 65 | 
            +
            class Isolate;
         | 
| 62 66 | 
             
            class MicrotaskQueue;
         | 
| 63 67 | 
             
            class Name;
         | 
| 64 68 | 
             
            class Number;
         | 
| @@ -68,6 +72,8 @@ class ObjectOperationDescriptor; | |
| 68 72 | 
             
            class ObjectTemplate;
         | 
| 69 73 | 
             
            class Platform;
         | 
| 70 74 | 
             
            class Primitive;
         | 
| 75 | 
            +
            class PrimitiveArray;
         | 
| 76 | 
            +
            class Private;
         | 
| 71 77 | 
             
            class Promise;
         | 
| 72 78 | 
             
            class PropertyDescriptor;
         | 
| 73 79 | 
             
            class Proxy;
         | 
| @@ -75,72 +81,72 @@ class RawOperationDescriptor; | |
| 75 81 | 
             
            class Script;
         | 
| 76 82 | 
             
            class SharedArrayBuffer;
         | 
| 77 83 | 
             
            class Signature;
         | 
| 78 | 
            -
            class StartupData;
         | 
| 79 84 | 
             
            class StackFrame;
         | 
| 80 85 | 
             
            class StackTrace;
         | 
| 86 | 
            +
            class StartupData;
         | 
| 81 87 | 
             
            class String;
         | 
| 82 88 | 
             
            class StringObject;
         | 
| 83 89 | 
             
            class Symbol;
         | 
| 84 90 | 
             
            class SymbolObject;
         | 
| 85 | 
            -
            class  | 
| 86 | 
            -
            class Private;
         | 
| 91 | 
            +
            class TracedReferenceBase;
         | 
| 87 92 | 
             
            class Uint32;
         | 
| 88 93 | 
             
            class Utils;
         | 
| 89 94 | 
             
            class Value;
         | 
| 95 | 
            +
            class WasmMemoryObject;
         | 
| 90 96 | 
             
            class WasmModuleObject;
         | 
| 91 | 
            -
            template <class  | 
| 92 | 
            -
             | 
| 93 | 
            -
            class  | 
| 94 | 
            -
             | 
| 97 | 
            +
            template <class K, class V, class T>
         | 
| 98 | 
            +
            class GlobalValueMap;
         | 
| 99 | 
            +
            template <class K, class V, class T>
         | 
| 100 | 
            +
            class PersistentValueMapBase;
         | 
| 95 101 | 
             
            template<class T> class NonCopyablePersistentTraits;
         | 
| 96 | 
            -
            template<class T | 
| 97 | 
            -
            template <class T, class M = NonCopyablePersistentTraits<T> >
         | 
| 102 | 
            +
            template <class T, class M = NonCopyablePersistentTraits<T>>
         | 
| 98 103 | 
             
            class Persistent;
         | 
| 99 104 | 
             
            template <class T>
         | 
| 105 | 
            +
            class BasicTracedReference;
         | 
| 106 | 
            +
            template <class T>
         | 
| 107 | 
            +
            class Eternal;
         | 
| 108 | 
            +
            template <class T>
         | 
| 100 109 | 
             
            class Global;
         | 
| 101 110 | 
             
            template <class T>
         | 
| 111 | 
            +
            class Local;
         | 
| 112 | 
            +
            template <class T>
         | 
| 113 | 
            +
            class Maybe;
         | 
| 114 | 
            +
            template <class T>
         | 
| 115 | 
            +
            class MaybeLocal;
         | 
| 116 | 
            +
            template <class T>
         | 
| 102 117 | 
             
            class TracedGlobal;
         | 
| 103 118 | 
             
            template <class T>
         | 
| 104 119 | 
             
            class TracedReference;
         | 
| 105 | 
            -
            template <class T>
         | 
| 106 | 
            -
            class TracedReferenceBase;
         | 
| 107 120 | 
             
            template<class K, class V, class T> class PersistentValueMap;
         | 
| 108 | 
            -
            template <class K, class V, class T>
         | 
| 109 | 
            -
            class PersistentValueMapBase;
         | 
| 110 | 
            -
            template <class K, class V, class T>
         | 
| 111 | 
            -
            class GlobalValueMap;
         | 
| 112 | 
            -
            template<class V, class T> class PersistentValueVector;
         | 
| 113 121 | 
             
            template<class T, class P> class WeakCallbackObject;
         | 
| 114 | 
            -
            class  | 
| 115 | 
            -
            class  | 
| 122 | 
            +
            template <class T>
         | 
| 123 | 
            +
            class PersistentBase;
         | 
| 124 | 
            +
            template <class V, class T>
         | 
| 125 | 
            +
            class PersistentValueVector;
         | 
| 116 126 | 
             
            template<typename T> class FunctionCallbackInfo;
         | 
| 117 127 | 
             
            template<typename T> class PropertyCallbackInfo;
         | 
| 118 | 
            -
            class StackTrace;
         | 
| 119 | 
            -
            class StackFrame;
         | 
| 120 | 
            -
            class Isolate;
         | 
| 121 | 
            -
            class CallHandlerHelper;
         | 
| 122 | 
            -
            class EscapableHandleScope;
         | 
| 123 128 | 
             
            template<typename T> class ReturnValue;
         | 
| 124 129 |  | 
| 125 130 | 
             
            namespace internal {
         | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 128 | 
            -
            class Arguments;
         | 
| 129 | 
            -
            template <typename T>
         | 
| 130 | 
            -
            class CustomArguments;
         | 
| 131 | 
            +
            class BasicTracedReferenceExtractor;
         | 
| 132 | 
            +
            class ExternalString;
         | 
| 131 133 | 
             
            class FunctionCallbackArguments;
         | 
| 132 134 | 
             
            class GlobalHandles;
         | 
| 133 135 | 
             
            class Heap;
         | 
| 134 136 | 
             
            class HeapObject;
         | 
| 135 | 
            -
            class ExternalString;
         | 
| 136 137 | 
             
            class Isolate;
         | 
| 137 138 | 
             
            class LocalEmbedderHeapTracer;
         | 
| 138 139 | 
             
            class MicrotaskQueue;
         | 
| 139 140 | 
             
            class PropertyCallbackArguments;
         | 
| 140 141 | 
             
            class ReadOnlyHeap;
         | 
| 141 142 | 
             
            class ScopedExternalStringLock;
         | 
| 142 | 
            -
            struct ScriptStreamingData;
         | 
| 143 143 | 
             
            class ThreadLocalTop;
         | 
| 144 | 
            +
            struct ScriptStreamingData;
         | 
| 145 | 
            +
            enum class ArgumentsType;
         | 
| 146 | 
            +
            template <ArgumentsType>
         | 
| 147 | 
            +
            class Arguments;
         | 
| 148 | 
            +
            template <typename T>
         | 
| 149 | 
            +
            class CustomArguments;
         | 
| 144 150 |  | 
| 145 151 | 
             
            namespace wasm {
         | 
| 146 152 | 
             
            class NativeModule;
         | 
| @@ -300,9 +306,10 @@ class Local { | |
| 300 306 | 
             
              V8_INLINE static Local<T> New(Isolate* isolate,
         | 
| 301 307 | 
             
                                            const PersistentBase<T>& that);
         | 
| 302 308 | 
             
              V8_INLINE static Local<T> New(Isolate* isolate,
         | 
| 303 | 
            -
                                            const  | 
| 309 | 
            +
                                            const BasicTracedReference<T>& that);
         | 
| 304 310 |  | 
| 305 311 | 
             
             private:
         | 
| 312 | 
            +
              friend class TracedReferenceBase;
         | 
| 306 313 | 
             
              friend class Utils;
         | 
| 307 314 | 
             
              template<class F> friend class Eternal;
         | 
| 308 315 | 
             
              template<class F> friend class PersistentBase;
         | 
| @@ -334,7 +341,7 @@ class Local { | |
| 334 341 | 
             
              template <class F>
         | 
| 335 342 | 
             
              friend class TracedGlobal;
         | 
| 336 343 | 
             
              template <class F>
         | 
| 337 | 
            -
              friend class  | 
| 344 | 
            +
              friend class BasicTracedReference;
         | 
| 338 345 | 
             
              template <class F>
         | 
| 339 346 | 
             
              friend class TracedReference;
         | 
| 340 347 |  | 
| @@ -429,7 +436,7 @@ static const int kEmbedderFieldsInWeakCallback = 2; | |
| 429 436 | 
             
            template <typename T>
         | 
| 430 437 | 
             
            class WeakCallbackInfo {
         | 
| 431 438 | 
             
             public:
         | 
| 432 | 
            -
               | 
| 439 | 
            +
              using Callback = void (*)(const WeakCallbackInfo<T>& data);
         | 
| 433 440 |  | 
| 434 441 | 
             
              WeakCallbackInfo(Isolate* isolate, T* parameter,
         | 
| 435 442 | 
             
                               void* embedder_fields[kEmbedderFieldsInWeakCallback],
         | 
| @@ -590,7 +597,7 @@ template <class T> class PersistentBase { | |
| 590 597 | 
             
               */
         | 
| 591 598 | 
             
              V8_INLINE uint16_t WrapperClassId() const;
         | 
| 592 599 |  | 
| 593 | 
            -
              PersistentBase(const PersistentBase& other) = delete; | 
| 600 | 
            +
              PersistentBase(const PersistentBase& other) = delete;
         | 
| 594 601 | 
             
              void operator=(const PersistentBase&) = delete;
         | 
| 595 602 |  | 
| 596 603 | 
             
             private:
         | 
| @@ -623,7 +630,7 @@ template <class T> class PersistentBase { | |
| 623 630 | 
             
            template<class T>
         | 
| 624 631 | 
             
            class NonCopyablePersistentTraits {
         | 
| 625 632 | 
             
             public:
         | 
| 626 | 
            -
               | 
| 633 | 
            +
              using NonCopyablePersistent = Persistent<T, NonCopyablePersistentTraits<T>>;
         | 
| 627 634 | 
             
              static const bool kResetInDestructor = false;
         | 
| 628 635 | 
             
              template<class S, class M>
         | 
| 629 636 | 
             
              V8_INLINE static void Copy(const Persistent<S, M>& source,
         | 
| @@ -640,7 +647,7 @@ class NonCopyablePersistentTraits { | |
| 640 647 | 
             
             */
         | 
| 641 648 | 
             
            template<class T>
         | 
| 642 649 | 
             
            struct CopyablePersistentTraits {
         | 
| 643 | 
            -
               | 
| 650 | 
            +
              using CopyablePersistent = Persistent<T, CopyablePersistentTraits<T>>;
         | 
| 644 651 | 
             
              static const bool kResetInDestructor = true;
         | 
| 645 652 | 
             
              template<class S, class M>
         | 
| 646 653 | 
             
              static V8_INLINE void Copy(const Persistent<S, M>& source,
         | 
| @@ -702,7 +709,7 @@ template <class T, class M> class Persistent : public PersistentBase<T> { | |
| 702 709 | 
             
                return *this;
         | 
| 703 710 | 
             
              }
         | 
| 704 711 | 
             
              template <class S, class M2>
         | 
| 705 | 
            -
              V8_INLINE Persistent& operator=(const Persistent<S, M2>& that) { | 
| 712 | 
            +
              V8_INLINE Persistent& operator=(const Persistent<S, M2>& that) {
         | 
| 706 713 | 
             
                Copy(that);
         | 
| 707 714 | 
             
                return *this;
         | 
| 708 715 | 
             
              }
         | 
| @@ -717,7 +724,7 @@ template <class T, class M> class Persistent : public PersistentBase<T> { | |
| 717 724 |  | 
| 718 725 | 
             
              // TODO(dcarney): this is pretty useless, fix or remove
         | 
| 719 726 | 
             
              template <class S>
         | 
| 720 | 
            -
              V8_INLINE static Persistent<T>& Cast(const Persistent<S>& that) { | 
| 727 | 
            +
              V8_INLINE static Persistent<T>& Cast(const Persistent<S>& that) {
         | 
| 721 728 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 722 729 | 
             
                // If we're going to perform the type check then we have to check
         | 
| 723 730 | 
             
                // that the handle isn't empty before doing the checked cast.
         | 
| @@ -728,7 +735,7 @@ template <class T, class M> class Persistent : public PersistentBase<T> { | |
| 728 735 |  | 
| 729 736 | 
             
              // TODO(dcarney): this is pretty useless, fix or remove
         | 
| 730 737 | 
             
              template <class S>
         | 
| 731 | 
            -
              V8_INLINE Persistent<S>& As() const { | 
| 738 | 
            +
              V8_INLINE Persistent<S>& As() const {
         | 
| 732 739 | 
             
                return Persistent<S>::Cast(*this);
         | 
| 733 740 | 
             
              }
         | 
| 734 741 |  | 
| @@ -797,12 +804,12 @@ class Global : public PersistentBase<T> { | |
| 797 804 | 
             
              /**
         | 
| 798 805 | 
             
               * Pass allows returning uniques from functions, etc.
         | 
| 799 806 | 
             
               */
         | 
| 800 | 
            -
              Global Pass() { return static_cast<Global&&>(*this); } | 
| 807 | 
            +
              Global Pass() { return static_cast<Global&&>(*this); }
         | 
| 801 808 |  | 
| 802 809 | 
             
              /*
         | 
| 803 810 | 
             
               * For compatibility with Chromium's base::Bind (base::Passed).
         | 
| 804 811 | 
             
               */
         | 
| 805 | 
            -
               | 
| 812 | 
            +
              using MoveOnlyTypeForCPP03 = void;
         | 
| 806 813 |  | 
| 807 814 | 
             
              Global(const Global&) = delete;
         | 
| 808 815 | 
             
              void operator=(const Global&) = delete;
         | 
| @@ -824,27 +831,11 @@ using UniquePersistent = Global<T>; | |
| 824 831 | 
             
            template <typename T>
         | 
| 825 832 | 
             
            struct TracedGlobalTrait {};
         | 
| 826 833 |  | 
| 827 | 
            -
            /**
         | 
| 828 | 
            -
             * A traced handle with copy and move semantics. The handle is to be used
         | 
| 829 | 
            -
             * together with |v8::EmbedderHeapTracer| and specifies edges from the embedder
         | 
| 830 | 
            -
             * into V8's heap.
         | 
| 831 | 
            -
             *
         | 
| 832 | 
            -
             * The exact semantics are:
         | 
| 833 | 
            -
             * - Tracing garbage collections use |v8::EmbedderHeapTracer|.
         | 
| 834 | 
            -
             * - Non-tracing garbage collections refer to
         | 
| 835 | 
            -
             *   |v8::EmbedderHeapTracer::IsRootForNonTracingGC()| whether the handle should
         | 
| 836 | 
            -
             *   be treated as root or not.
         | 
| 837 | 
            -
             *
         | 
| 838 | 
            -
             * Note that the base class cannot be instantiated itself. Choose from
         | 
| 839 | 
            -
             * - TracedGlobal
         | 
| 840 | 
            -
             * - TracedReference
         | 
| 841 | 
            -
             */
         | 
| 842 | 
            -
            template <typename T>
         | 
| 843 834 | 
             
            class TracedReferenceBase {
         | 
| 844 835 | 
             
             public:
         | 
| 845 836 | 
             
              /**
         | 
| 846 | 
            -
               * Returns true if  | 
| 847 | 
            -
               *  | 
| 837 | 
            +
               * Returns true if the reference is empty, i.e., has not been assigned
         | 
| 838 | 
            +
               * object.
         | 
| 848 839 | 
             
               */
         | 
| 849 840 | 
             
              bool IsEmpty() const { return val_ == nullptr; }
         | 
| 850 841 |  | 
| @@ -855,36 +846,16 @@ class TracedReferenceBase { | |
| 855 846 | 
             
              V8_INLINE void Reset();
         | 
| 856 847 |  | 
| 857 848 | 
             
              /**
         | 
| 858 | 
            -
               * Construct a Local< | 
| 849 | 
            +
               * Construct a Local<Value> from this handle.
         | 
| 859 850 | 
             
               */
         | 
| 860 | 
            -
              Local< | 
| 861 | 
            -
             | 
| 862 | 
            -
              template <class S>
         | 
| 863 | 
            -
              V8_INLINE bool operator==(const TracedReferenceBase<S>& that) const {
         | 
| 864 | 
            -
                internal::Address* a = reinterpret_cast<internal::Address*>(val_);
         | 
| 865 | 
            -
                internal::Address* b = reinterpret_cast<internal::Address*>(that.val_);
         | 
| 866 | 
            -
                if (a == nullptr) return b == nullptr;
         | 
| 867 | 
            -
                if (b == nullptr) return false;
         | 
| 868 | 
            -
                return *a == *b;
         | 
| 869 | 
            -
              }
         | 
| 870 | 
            -
             | 
| 871 | 
            -
              template <class S>
         | 
| 872 | 
            -
              V8_INLINE bool operator==(const Local<S>& that) const {
         | 
| 873 | 
            -
                internal::Address* a = reinterpret_cast<internal::Address*>(val_);
         | 
| 874 | 
            -
                internal::Address* b = reinterpret_cast<internal::Address*>(that.val_);
         | 
| 875 | 
            -
                if (a == nullptr) return b == nullptr;
         | 
| 876 | 
            -
                if (b == nullptr) return false;
         | 
| 877 | 
            -
                return *a == *b;
         | 
| 878 | 
            -
              }
         | 
| 879 | 
            -
             | 
| 880 | 
            -
              template <class S>
         | 
| 881 | 
            -
              V8_INLINE bool operator!=(const TracedReferenceBase<S>& that) const {
         | 
| 882 | 
            -
                return !operator==(that);
         | 
| 883 | 
            -
              }
         | 
| 851 | 
            +
              V8_INLINE v8::Local<v8::Value> Get(v8::Isolate* isolate) const;
         | 
| 884 852 |  | 
| 885 | 
            -
               | 
| 886 | 
            -
             | 
| 887 | 
            -
             | 
| 853 | 
            +
              /**
         | 
| 854 | 
            +
               * Returns true if this TracedReference is empty, i.e., has not been
         | 
| 855 | 
            +
               * assigned an object. This version of IsEmpty is thread-safe.
         | 
| 856 | 
            +
               */
         | 
| 857 | 
            +
              bool IsEmptyThreadSafe() const {
         | 
| 858 | 
            +
                return this->GetSlotThreadSafe() == nullptr;
         | 
| 888 859 | 
             
              }
         | 
| 889 860 |  | 
| 890 861 | 
             
              /**
         | 
| @@ -898,41 +869,89 @@ class TracedReferenceBase { | |
| 898 869 | 
             
               */
         | 
| 899 870 | 
             
              V8_INLINE uint16_t WrapperClassId() const;
         | 
| 900 871 |  | 
| 901 | 
            -
              template <class S>
         | 
| 902 | 
            -
              V8_INLINE TracedReferenceBase<S>& As() const {
         | 
| 903 | 
            -
                return reinterpret_cast<TracedReferenceBase<S>&>(
         | 
| 904 | 
            -
                    const_cast<TracedReferenceBase<T>&>(*this));
         | 
| 905 | 
            -
              }
         | 
| 906 | 
            -
             | 
| 907 872 | 
             
             protected:
         | 
| 908 873 | 
             
              /**
         | 
| 909 | 
            -
               * Update this reference in a thread-safe way
         | 
| 874 | 
            +
               * Update this reference in a thread-safe way.
         | 
| 910 875 | 
             
               */
         | 
| 911 | 
            -
              void SetSlotThreadSafe( | 
| 912 | 
            -
                reinterpret_cast<std::atomic< | 
| 913 | 
            -
             | 
| 876 | 
            +
              void SetSlotThreadSafe(void* new_val) {
         | 
| 877 | 
            +
                reinterpret_cast<std::atomic<void*>*>(&val_)->store(
         | 
| 878 | 
            +
                    new_val, std::memory_order_relaxed);
         | 
| 914 879 | 
             
              }
         | 
| 915 880 |  | 
| 916 881 | 
             
              /**
         | 
| 917 882 | 
             
               * Get this reference in a thread-safe way
         | 
| 918 883 | 
             
               */
         | 
| 919 | 
            -
              const  | 
| 920 | 
            -
                return reinterpret_cast<std::atomic<const  | 
| 884 | 
            +
              const void* GetSlotThreadSafe() const {
         | 
| 885 | 
            +
                return reinterpret_cast<std::atomic<const void*> const*>(&val_)->load(
         | 
| 921 886 | 
             
                    std::memory_order_relaxed);
         | 
| 922 887 | 
             
              }
         | 
| 923 888 |  | 
| 889 | 
            +
              V8_EXPORT void CheckValue() const;
         | 
| 890 | 
            +
             | 
| 891 | 
            +
              // val_ points to a GlobalHandles node.
         | 
| 892 | 
            +
              internal::Address* val_ = nullptr;
         | 
| 893 | 
            +
             | 
| 894 | 
            +
              friend class internal::BasicTracedReferenceExtractor;
         | 
| 895 | 
            +
              template <typename F>
         | 
| 896 | 
            +
              friend class Local;
         | 
| 897 | 
            +
              template <typename U>
         | 
| 898 | 
            +
              friend bool operator==(const TracedReferenceBase&, const Local<U>&);
         | 
| 899 | 
            +
              friend bool operator==(const TracedReferenceBase&,
         | 
| 900 | 
            +
                                     const TracedReferenceBase&);
         | 
| 901 | 
            +
            };
         | 
| 902 | 
            +
             | 
| 903 | 
            +
            /**
         | 
| 904 | 
            +
             * A traced handle with copy and move semantics. The handle is to be used
         | 
| 905 | 
            +
             * together with |v8::EmbedderHeapTracer| or as part of GarbageCollected objects
         | 
| 906 | 
            +
             * (see v8-cppgc.h) and specifies edges from C++ objects to JavaScript.
         | 
| 907 | 
            +
             *
         | 
| 908 | 
            +
             * The exact semantics are:
         | 
| 909 | 
            +
             * - Tracing garbage collections use |v8::EmbedderHeapTracer| or cppgc.
         | 
| 910 | 
            +
             * - Non-tracing garbage collections refer to
         | 
| 911 | 
            +
             *   |v8::EmbedderRootsHandler::IsRoot()| whether the handle should
         | 
| 912 | 
            +
             * be treated as root or not.
         | 
| 913 | 
            +
             *
         | 
| 914 | 
            +
             * Note that the base class cannot be instantiated itself. Choose from
         | 
| 915 | 
            +
             * - TracedGlobal
         | 
| 916 | 
            +
             * - TracedReference
         | 
| 917 | 
            +
             */
         | 
| 918 | 
            +
            template <typename T>
         | 
| 919 | 
            +
            class BasicTracedReference : public TracedReferenceBase {
         | 
| 920 | 
            +
             public:
         | 
| 921 | 
            +
              /**
         | 
| 922 | 
            +
               * Construct a Local<T> from this handle.
         | 
| 923 | 
            +
               */
         | 
| 924 | 
            +
              Local<T> Get(Isolate* isolate) const { return Local<T>::New(isolate, *this); }
         | 
| 925 | 
            +
             | 
| 926 | 
            +
              template <class S>
         | 
| 927 | 
            +
              V8_INLINE BasicTracedReference<S>& As() const {
         | 
| 928 | 
            +
                return reinterpret_cast<BasicTracedReference<S>&>(
         | 
| 929 | 
            +
                    const_cast<BasicTracedReference<T>&>(*this));
         | 
| 930 | 
            +
              }
         | 
| 931 | 
            +
             | 
| 932 | 
            +
              T* operator->() const {
         | 
| 933 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 934 | 
            +
                CheckValue();
         | 
| 935 | 
            +
            #endif  // V8_ENABLE_CHECKS
         | 
| 936 | 
            +
                return reinterpret_cast<T*>(val_);
         | 
| 937 | 
            +
              }
         | 
| 938 | 
            +
              T* operator*() const {
         | 
| 939 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 940 | 
            +
                CheckValue();
         | 
| 941 | 
            +
            #endif  // V8_ENABLE_CHECKS
         | 
| 942 | 
            +
                return reinterpret_cast<T*>(val_);
         | 
| 943 | 
            +
              }
         | 
| 944 | 
            +
             | 
| 924 945 | 
             
             private:
         | 
| 925 946 | 
             
              enum DestructionMode { kWithDestructor, kWithoutDestructor };
         | 
| 926 947 |  | 
| 927 948 | 
             
              /**
         | 
| 928 | 
            -
               * An empty  | 
| 949 | 
            +
               * An empty BasicTracedReference without storage cell.
         | 
| 929 950 | 
             
               */
         | 
| 930 | 
            -
               | 
| 951 | 
            +
              BasicTracedReference() = default;
         | 
| 931 952 |  | 
| 932 | 
            -
              V8_INLINE static  | 
| 933 | 
            -
             | 
| 934 | 
            -
             | 
| 935 | 
            -
              T* val_ = nullptr;
         | 
| 953 | 
            +
              V8_INLINE static internal::Address* New(Isolate* isolate, T* that, void* slot,
         | 
| 954 | 
            +
                                                      DestructionMode destruction_mode);
         | 
| 936 955 |  | 
| 937 956 | 
             
              friend class EmbedderHeapTracer;
         | 
| 938 957 | 
             
              template <typename F>
         | 
| @@ -943,27 +962,29 @@ class TracedReferenceBase { | |
| 943 962 | 
             
              template <typename F>
         | 
| 944 963 | 
             
              friend class TracedReference;
         | 
| 945 964 | 
             
              template <typename F>
         | 
| 965 | 
            +
              friend class BasicTracedReference;
         | 
| 966 | 
            +
              template <typename F>
         | 
| 946 967 | 
             
              friend class ReturnValue;
         | 
| 947 968 | 
             
            };
         | 
| 948 969 |  | 
| 949 970 | 
             
            /**
         | 
| 950 971 | 
             
             * A traced handle with destructor that clears the handle. For more details see
         | 
| 951 | 
            -
             *  | 
| 972 | 
            +
             * BasicTracedReference.
         | 
| 952 973 | 
             
             */
         | 
| 953 974 | 
             
            template <typename T>
         | 
| 954 | 
            -
            class TracedGlobal : public  | 
| 975 | 
            +
            class TracedGlobal : public BasicTracedReference<T> {
         | 
| 955 976 | 
             
             public:
         | 
| 956 | 
            -
              using  | 
| 977 | 
            +
              using BasicTracedReference<T>::Reset;
         | 
| 957 978 |  | 
| 958 979 | 
             
              /**
         | 
| 959 | 
            -
               * Destructor resetting the handle.
         | 
| 980 | 
            +
               * Destructor resetting the handle.Is
         | 
| 960 981 | 
             
               */
         | 
| 961 982 | 
             
              ~TracedGlobal() { this->Reset(); }
         | 
| 962 983 |  | 
| 963 984 | 
             
              /**
         | 
| 964 985 | 
             
               * An empty TracedGlobal without storage cell.
         | 
| 965 986 | 
             
               */
         | 
| 966 | 
            -
              TracedGlobal() :  | 
| 987 | 
            +
              TracedGlobal() : BasicTracedReference<T>() {}
         | 
| 967 988 |  | 
| 968 989 | 
             
              /**
         | 
| 969 990 | 
             
               * Construct a TracedGlobal from a Local.
         | 
| @@ -972,9 +993,9 @@ class TracedGlobal : public TracedReferenceBase<T> { | |
| 972 993 | 
             
               * pointing to the same object.
         | 
| 973 994 | 
             
               */
         | 
| 974 995 | 
             
              template <class S>
         | 
| 975 | 
            -
              TracedGlobal(Isolate* isolate, Local<S> that) :  | 
| 996 | 
            +
              TracedGlobal(Isolate* isolate, Local<S> that) : BasicTracedReference<T>() {
         | 
| 976 997 | 
             
                this->val_ = this->New(isolate, that.val_, &this->val_,
         | 
| 977 | 
            -
                                        | 
| 998 | 
            +
                                       BasicTracedReference<T>::kWithDestructor);
         | 
| 978 999 | 
             
                static_assert(std::is_base_of<T, S>::value, "type check");
         | 
| 979 1000 | 
             
              }
         | 
| 980 1001 |  | 
| @@ -1071,7 +1092,7 @@ class TracedGlobal : public TracedReferenceBase<T> { | |
| 1071 1092 | 
             
             * A traced handle without destructor that clears the handle. The embedder needs
         | 
| 1072 1093 | 
             
             * to ensure that the handle is not accessed once the V8 object has been
         | 
| 1073 1094 | 
             
             * reclaimed. This can happen when the handle is not passed through the
         | 
| 1074 | 
            -
             * EmbedderHeapTracer. For more details see  | 
| 1095 | 
            +
             * EmbedderHeapTracer. For more details see BasicTracedReference.
         | 
| 1075 1096 | 
             
             *
         | 
| 1076 1097 | 
             
             * The reference assumes the embedder has precise knowledge about references at
         | 
| 1077 1098 | 
             
             * all times. In case V8 needs to separately handle on-stack references, the
         | 
| @@ -1079,14 +1100,14 @@ class TracedGlobal : public TracedReferenceBase<T> { | |
| 1079 1100 | 
             
             * |EmbedderHeapTracer::SetStackStart|.
         | 
| 1080 1101 | 
             
             */
         | 
| 1081 1102 | 
             
            template <typename T>
         | 
| 1082 | 
            -
            class TracedReference : public  | 
| 1103 | 
            +
            class TracedReference : public BasicTracedReference<T> {
         | 
| 1083 1104 | 
             
             public:
         | 
| 1084 | 
            -
              using  | 
| 1105 | 
            +
              using BasicTracedReference<T>::Reset;
         | 
| 1085 1106 |  | 
| 1086 1107 | 
             
              /**
         | 
| 1087 1108 | 
             
               * An empty TracedReference without storage cell.
         | 
| 1088 1109 | 
             
               */
         | 
| 1089 | 
            -
              TracedReference() :  | 
| 1110 | 
            +
              TracedReference() : BasicTracedReference<T>() {}
         | 
| 1090 1111 |  | 
| 1091 1112 | 
             
              /**
         | 
| 1092 1113 | 
             
               * Construct a TracedReference from a Local.
         | 
| @@ -1095,9 +1116,9 @@ class TracedReference : public TracedReferenceBase<T> { | |
| 1095 1116 | 
             
               * pointing to the same object.
         | 
| 1096 1117 | 
             
               */
         | 
| 1097 1118 | 
             
              template <class S>
         | 
| 1098 | 
            -
              TracedReference(Isolate* isolate, Local<S> that) :  | 
| 1119 | 
            +
              TracedReference(Isolate* isolate, Local<S> that) : BasicTracedReference<T>() {
         | 
| 1099 1120 | 
             
                this->val_ = this->New(isolate, that.val_, &this->val_,
         | 
| 1100 | 
            -
                                        | 
| 1121 | 
            +
                                       BasicTracedReference<T>::kWithoutDestructor);
         | 
| 1101 1122 | 
             
                static_assert(std::is_base_of<T, S>::value, "type check");
         | 
| 1102 1123 | 
             
              }
         | 
| 1103 1124 |  | 
| @@ -1173,14 +1194,6 @@ class TracedReference : public TracedReferenceBase<T> { | |
| 1173 1194 | 
             
                return reinterpret_cast<TracedReference<S>&>(
         | 
| 1174 1195 | 
             
                    const_cast<TracedReference<T>&>(*this));
         | 
| 1175 1196 | 
             
              }
         | 
| 1176 | 
            -
             | 
| 1177 | 
            -
              /**
         | 
| 1178 | 
            -
               * Returns true if this TracedReference is empty, i.e., has not been
         | 
| 1179 | 
            -
               * assigned an object. This version of IsEmpty is thread-safe.
         | 
| 1180 | 
            -
               */
         | 
| 1181 | 
            -
              bool IsEmptyThreadSafe() const {
         | 
| 1182 | 
            -
                return this->GetSlotThreadSafe() == nullptr;
         | 
| 1183 | 
            -
              }
         | 
| 1184 1197 | 
             
            };
         | 
| 1185 1198 |  | 
| 1186 1199 | 
             
             /**
         | 
| @@ -1197,7 +1210,7 @@ class TracedReference : public TracedReferenceBase<T> { | |
| 1197 1210 | 
             
             * handle and may deallocate it.  The behavior of accessing a handle
         | 
| 1198 1211 | 
             
             * for which the handle scope has been deleted is undefined.
         | 
| 1199 1212 | 
             
             */
         | 
| 1200 | 
            -
            class V8_EXPORT HandleScope {
         | 
| 1213 | 
            +
            class V8_EXPORT V8_NODISCARD HandleScope {
         | 
| 1201 1214 | 
             
             public:
         | 
| 1202 1215 | 
             
              explicit HandleScope(Isolate* isolate);
         | 
| 1203 1216 |  | 
| @@ -1244,12 +1257,11 @@ class V8_EXPORT HandleScope { | |
| 1244 1257 | 
             
              friend class Context;
         | 
| 1245 1258 | 
             
            };
         | 
| 1246 1259 |  | 
| 1247 | 
            -
             | 
| 1248 1260 | 
             
            /**
         | 
| 1249 1261 | 
             
             * A HandleScope which first allocates a handle in the current scope
         | 
| 1250 1262 | 
             
             * which will be later filled with the escape value.
         | 
| 1251 1263 | 
             
             */
         | 
| 1252 | 
            -
            class V8_EXPORT EscapableHandleScope : public HandleScope {
         | 
| 1264 | 
            +
            class V8_EXPORT V8_NODISCARD EscapableHandleScope : public HandleScope {
         | 
| 1253 1265 | 
             
             public:
         | 
| 1254 1266 | 
             
              explicit EscapableHandleScope(Isolate* isolate);
         | 
| 1255 1267 | 
             
              V8_INLINE ~EscapableHandleScope() = default;
         | 
| @@ -1290,7 +1302,7 @@ class V8_EXPORT EscapableHandleScope : public HandleScope { | |
| 1290 1302 | 
             
             * are allowed. It can be useful for debugging handle leaks.
         | 
| 1291 1303 | 
             
             * Handles can be allocated within inner normal HandleScopes.
         | 
| 1292 1304 | 
             
             */
         | 
| 1293 | 
            -
            class V8_EXPORT SealHandleScope {
         | 
| 1305 | 
            +
            class V8_EXPORT V8_NODISCARD SealHandleScope {
         | 
| 1294 1306 | 
             
             public:
         | 
| 1295 1307 | 
             
              explicit SealHandleScope(Isolate* isolate);
         | 
| 1296 1308 | 
             
              ~SealHandleScope();
         | 
| @@ -1311,13 +1323,43 @@ class V8_EXPORT SealHandleScope { | |
| 1311 1323 | 
             
              int prev_sealed_level_;
         | 
| 1312 1324 | 
             
            };
         | 
| 1313 1325 |  | 
| 1314 | 
            -
             | 
| 1315 1326 | 
             
            // --- Special objects ---
         | 
| 1316 1327 |  | 
| 1317 1328 | 
             
            /**
         | 
| 1318 1329 | 
             
             * The superclass of objects that can reside on V8's heap.
         | 
| 1319 1330 | 
             
             */
         | 
| 1320 1331 | 
             
            class V8_EXPORT Data {
         | 
| 1332 | 
            +
             public:
         | 
| 1333 | 
            +
              /**
         | 
| 1334 | 
            +
               * Returns true if this data is a |v8::Value|.
         | 
| 1335 | 
            +
               */
         | 
| 1336 | 
            +
              bool IsValue() const;
         | 
| 1337 | 
            +
             | 
| 1338 | 
            +
              /**
         | 
| 1339 | 
            +
               * Returns true if this data is a |v8::Module|.
         | 
| 1340 | 
            +
               */
         | 
| 1341 | 
            +
              bool IsModule() const;
         | 
| 1342 | 
            +
             | 
| 1343 | 
            +
              /**
         | 
| 1344 | 
            +
               * Returns true if this data is a |v8::Private|.
         | 
| 1345 | 
            +
               */
         | 
| 1346 | 
            +
              bool IsPrivate() const;
         | 
| 1347 | 
            +
             | 
| 1348 | 
            +
              /**
         | 
| 1349 | 
            +
               * Returns true if this data is a |v8::ObjectTemplate|.
         | 
| 1350 | 
            +
               */
         | 
| 1351 | 
            +
              bool IsObjectTemplate() const;
         | 
| 1352 | 
            +
             | 
| 1353 | 
            +
              /**
         | 
| 1354 | 
            +
               * Returns true if this data is a |v8::FunctionTemplate|.
         | 
| 1355 | 
            +
               */
         | 
| 1356 | 
            +
              bool IsFunctionTemplate() const;
         | 
| 1357 | 
            +
             | 
| 1358 | 
            +
              /**
         | 
| 1359 | 
            +
               * Returns true if this data is a |v8::Context|.
         | 
| 1360 | 
            +
               */
         | 
| 1361 | 
            +
              bool IsContext() const;
         | 
| 1362 | 
            +
             | 
| 1321 1363 | 
             
             private:
         | 
| 1322 1364 | 
             
              Data();
         | 
| 1323 1365 | 
             
            };
         | 
| @@ -1398,10 +1440,12 @@ class ScriptOriginOptions { | |
| 1398 1440 | 
             
             */
         | 
| 1399 1441 | 
             
            class ScriptOrigin {
         | 
| 1400 1442 | 
             
             public:
         | 
| 1401 | 
            -
             | 
| 1402 | 
            -
             | 
| 1403 | 
            -
             | 
| 1404 | 
            -
             | 
| 1443 | 
            +
            #if defined(_MSC_VER) && _MSC_VER >= 1910 /* Disable on VS2015 */
         | 
| 1444 | 
            +
              V8_DEPRECATED("Use constructor with primitive C++ types")
         | 
| 1445 | 
            +
            #endif
         | 
| 1446 | 
            +
              V8_INLINE explicit ScriptOrigin(
         | 
| 1447 | 
            +
                  Local<Value> resource_name, Local<Integer> resource_line_offset,
         | 
| 1448 | 
            +
                  Local<Integer> resource_column_offset,
         | 
| 1405 1449 | 
             
                  Local<Boolean> resource_is_shared_cross_origin = Local<Boolean>(),
         | 
| 1406 1450 | 
             
                  Local<Integer> script_id = Local<Integer>(),
         | 
| 1407 1451 | 
             
                  Local<Value> source_map_url = Local<Value>(),
         | 
| @@ -1409,21 +1453,47 @@ class ScriptOrigin { | |
| 1409 1453 | 
             
                  Local<Boolean> is_wasm = Local<Boolean>(),
         | 
| 1410 1454 | 
             
                  Local<Boolean> is_module = Local<Boolean>(),
         | 
| 1411 1455 | 
             
                  Local<PrimitiveArray> host_defined_options = Local<PrimitiveArray>());
         | 
| 1456 | 
            +
            #if defined(_MSC_VER) && _MSC_VER >= 1910 /* Disable on VS2015 */
         | 
| 1457 | 
            +
              V8_DEPRECATED("Use constructor that takes an isolate")
         | 
| 1458 | 
            +
            #endif
         | 
| 1459 | 
            +
              V8_INLINE explicit ScriptOrigin(
         | 
| 1460 | 
            +
                  Local<Value> resource_name, int resource_line_offset = 0,
         | 
| 1461 | 
            +
                  int resource_column_offset = 0,
         | 
| 1462 | 
            +
                  bool resource_is_shared_cross_origin = false, int script_id = -1,
         | 
| 1463 | 
            +
                  Local<Value> source_map_url = Local<Value>(),
         | 
| 1464 | 
            +
                  bool resource_is_opaque = false, bool is_wasm = false,
         | 
| 1465 | 
            +
                  bool is_module = false,
         | 
| 1466 | 
            +
                  Local<PrimitiveArray> host_defined_options = Local<PrimitiveArray>());
         | 
| 1467 | 
            +
              V8_INLINE explicit ScriptOrigin(
         | 
| 1468 | 
            +
                  Isolate* isolate, Local<Value> resource_name,
         | 
| 1469 | 
            +
                  int resource_line_offset = 0, int resource_column_offset = 0,
         | 
| 1470 | 
            +
                  bool resource_is_shared_cross_origin = false, int script_id = -1,
         | 
| 1471 | 
            +
                  Local<Value> source_map_url = Local<Value>(),
         | 
| 1472 | 
            +
                  bool resource_is_opaque = false, bool is_wasm = false,
         | 
| 1473 | 
            +
                  bool is_module = false,
         | 
| 1474 | 
            +
                  Local<PrimitiveArray> host_defined_options = Local<PrimitiveArray>());
         | 
| 1412 1475 |  | 
| 1413 1476 | 
             
              V8_INLINE Local<Value> ResourceName() const;
         | 
| 1477 | 
            +
              V8_DEPRECATED("Use getter with primitvie C++ types.")
         | 
| 1414 1478 | 
             
              V8_INLINE Local<Integer> ResourceLineOffset() const;
         | 
| 1479 | 
            +
              V8_DEPRECATED("Use getter with primitvie C++ types.")
         | 
| 1415 1480 | 
             
              V8_INLINE Local<Integer> ResourceColumnOffset() const;
         | 
| 1481 | 
            +
              V8_DEPRECATED("Use getter with primitvie C++ types.")
         | 
| 1416 1482 | 
             
              V8_INLINE Local<Integer> ScriptID() const;
         | 
| 1483 | 
            +
              V8_INLINE int LineOffset() const;
         | 
| 1484 | 
            +
              V8_INLINE int ColumnOffset() const;
         | 
| 1485 | 
            +
              V8_INLINE int ScriptId() const;
         | 
| 1417 1486 | 
             
              V8_INLINE Local<Value> SourceMapUrl() const;
         | 
| 1418 1487 | 
             
              V8_INLINE Local<PrimitiveArray> HostDefinedOptions() const;
         | 
| 1419 1488 | 
             
              V8_INLINE ScriptOriginOptions Options() const { return options_; }
         | 
| 1420 1489 |  | 
| 1421 1490 | 
             
             private:
         | 
| 1491 | 
            +
              Isolate* isolate_;
         | 
| 1422 1492 | 
             
              Local<Value> resource_name_;
         | 
| 1423 | 
            -
               | 
| 1424 | 
            -
               | 
| 1493 | 
            +
              int resource_line_offset_;
         | 
| 1494 | 
            +
              int resource_column_offset_;
         | 
| 1425 1495 | 
             
              ScriptOriginOptions options_;
         | 
| 1426 | 
            -
               | 
| 1496 | 
            +
              int script_id_;
         | 
| 1427 1497 | 
             
              Local<Value> source_map_url_;
         | 
| 1428 1498 | 
             
              Local<PrimitiveArray> host_defined_options_;
         | 
| 1429 1499 | 
             
            };
         | 
| @@ -1482,6 +1552,50 @@ class V8_EXPORT Location { | |
| 1482 1552 | 
             
              int column_number_;
         | 
| 1483 1553 | 
             
            };
         | 
| 1484 1554 |  | 
| 1555 | 
            +
            /**
         | 
| 1556 | 
            +
             * A fixed-sized array with elements of type Data.
         | 
| 1557 | 
            +
             */
         | 
| 1558 | 
            +
            class V8_EXPORT FixedArray : public Data {
         | 
| 1559 | 
            +
             public:
         | 
| 1560 | 
            +
              int Length() const;
         | 
| 1561 | 
            +
              Local<Data> Get(Local<Context> context, int i) const;
         | 
| 1562 | 
            +
            };
         | 
| 1563 | 
            +
             | 
| 1564 | 
            +
            class V8_EXPORT ModuleRequest : public Data {
         | 
| 1565 | 
            +
             public:
         | 
| 1566 | 
            +
              /**
         | 
| 1567 | 
            +
               * Returns the module specifier for this ModuleRequest.
         | 
| 1568 | 
            +
               */
         | 
| 1569 | 
            +
              Local<String> GetSpecifier() const;
         | 
| 1570 | 
            +
             | 
| 1571 | 
            +
              /**
         | 
| 1572 | 
            +
               * Returns the source code offset of this module request.
         | 
| 1573 | 
            +
               * Use Module::SourceOffsetToLocation to convert this to line/column numbers.
         | 
| 1574 | 
            +
               */
         | 
| 1575 | 
            +
              int GetSourceOffset() const;
         | 
| 1576 | 
            +
             | 
| 1577 | 
            +
              /**
         | 
| 1578 | 
            +
               * Contains the import assertions for this request in the form:
         | 
| 1579 | 
            +
               * [key1, value1, source_offset1, key2, value2, source_offset2, ...].
         | 
| 1580 | 
            +
               * The keys and values are of type v8::String, and the source offsets are of
         | 
| 1581 | 
            +
               * type Int32. Use Module::SourceOffsetToLocation to convert the source
         | 
| 1582 | 
            +
               * offsets to Locations with line/column numbers.
         | 
| 1583 | 
            +
               *
         | 
| 1584 | 
            +
               * All assertions present in the module request will be supplied in this
         | 
| 1585 | 
            +
               * list, regardless of whether they are supported by the host. Per
         | 
| 1586 | 
            +
               * https://tc39.es/proposal-import-assertions/#sec-hostgetsupportedimportassertions,
         | 
| 1587 | 
            +
               * hosts are expected to ignore assertions that they do not support (as
         | 
| 1588 | 
            +
               * opposed to, for example, triggering an error if an unsupported assertion is
         | 
| 1589 | 
            +
               * present).
         | 
| 1590 | 
            +
               */
         | 
| 1591 | 
            +
              Local<FixedArray> GetImportAssertions() const;
         | 
| 1592 | 
            +
             | 
| 1593 | 
            +
              V8_INLINE static ModuleRequest* Cast(Data* data);
         | 
| 1594 | 
            +
             | 
| 1595 | 
            +
             private:
         | 
| 1596 | 
            +
              static void CheckCast(Data* obj);
         | 
| 1597 | 
            +
            };
         | 
| 1598 | 
            +
             | 
| 1485 1599 | 
             
            /**
         | 
| 1486 1600 | 
             
             * A compiled JavaScript module.
         | 
| 1487 1601 | 
             
             */
         | 
| @@ -1516,28 +1630,48 @@ class V8_EXPORT Module : public Data { | |
| 1516 1630 | 
             
              /**
         | 
| 1517 1631 | 
             
               * Returns the number of modules requested by this module.
         | 
| 1518 1632 | 
             
               */
         | 
| 1633 | 
            +
              V8_DEPRECATED("Use Module::GetModuleRequests() and FixedArray::Length().")
         | 
| 1519 1634 | 
             
              int GetModuleRequestsLength() const;
         | 
| 1520 1635 |  | 
| 1521 1636 | 
             
              /**
         | 
| 1522 1637 | 
             
               * Returns the ith module specifier in this module.
         | 
| 1523 1638 | 
             
               * i must be < GetModuleRequestsLength() and >= 0.
         | 
| 1524 1639 | 
             
               */
         | 
| 1640 | 
            +
              V8_DEPRECATED(
         | 
| 1641 | 
            +
                  "Use Module::GetModuleRequests() and ModuleRequest::GetSpecifier().")
         | 
| 1525 1642 | 
             
              Local<String> GetModuleRequest(int i) const;
         | 
| 1526 1643 |  | 
| 1527 1644 | 
             
              /**
         | 
| 1528 1645 | 
             
               * Returns the source location (line number and column number) of the ith
         | 
| 1529 1646 | 
             
               * module specifier's first occurrence in this module.
         | 
| 1530 1647 | 
             
               */
         | 
| 1648 | 
            +
              V8_DEPRECATED(
         | 
| 1649 | 
            +
                  "Use Module::GetModuleRequests(), ModuleRequest::GetSourceOffset(), and "
         | 
| 1650 | 
            +
                  "Module::SourceOffsetToLocation().")
         | 
| 1531 1651 | 
             
              Location GetModuleRequestLocation(int i) const;
         | 
| 1532 1652 |  | 
| 1653 | 
            +
              /**
         | 
| 1654 | 
            +
               * Returns the ModuleRequests for this module.
         | 
| 1655 | 
            +
               */
         | 
| 1656 | 
            +
              Local<FixedArray> GetModuleRequests() const;
         | 
| 1657 | 
            +
             | 
| 1658 | 
            +
              /**
         | 
| 1659 | 
            +
               * For the given source text offset in this module, returns the corresponding
         | 
| 1660 | 
            +
               * Location with line and column numbers.
         | 
| 1661 | 
            +
               */
         | 
| 1662 | 
            +
              Location SourceOffsetToLocation(int offset) const;
         | 
| 1663 | 
            +
             | 
| 1533 1664 | 
             
              /**
         | 
| 1534 1665 | 
             
               * Returns the identity hash for this object.
         | 
| 1535 1666 | 
             
               */
         | 
| 1536 1667 | 
             
              int GetIdentityHash() const;
         | 
| 1537 1668 |  | 
| 1538 | 
            -
               | 
| 1539 | 
            -
             | 
| 1540 | 
            -
             | 
| 1669 | 
            +
              using ResolveCallback =
         | 
| 1670 | 
            +
                  MaybeLocal<Module> (*)(Local<Context> context, Local<String> specifier,
         | 
| 1671 | 
            +
                                         Local<Module> referrer);
         | 
| 1672 | 
            +
              using ResolveModuleCallback = MaybeLocal<Module> (*)(
         | 
| 1673 | 
            +
                  Local<Context> context, Local<String> specifier,
         | 
| 1674 | 
            +
                  Local<FixedArray> import_assertions, Local<Module> referrer);
         | 
| 1541 1675 |  | 
| 1542 1676 | 
             
              /**
         | 
| 1543 1677 | 
             
               * Instantiates the module and its dependencies.
         | 
| @@ -1546,16 +1680,23 @@ class V8_EXPORT Module : public Data { | |
| 1546 1680 | 
             
               * instantiation. (In the case where the callback throws an exception, that
         | 
| 1547 1681 | 
             
               * exception is propagated.)
         | 
| 1548 1682 | 
             
               */
         | 
| 1683 | 
            +
              V8_DEPRECATED(
         | 
| 1684 | 
            +
                  "Use the version of InstantiateModule that takes a ResolveModuleCallback "
         | 
| 1685 | 
            +
                  "parameter")
         | 
| 1549 1686 | 
             
              V8_WARN_UNUSED_RESULT Maybe<bool> InstantiateModule(Local<Context> context,
         | 
| 1550 1687 | 
             
                                                                  ResolveCallback callback);
         | 
| 1688 | 
            +
              V8_WARN_UNUSED_RESULT Maybe<bool> InstantiateModule(
         | 
| 1689 | 
            +
                  Local<Context> context, ResolveModuleCallback callback);
         | 
| 1551 1690 |  | 
| 1552 1691 | 
             
              /**
         | 
| 1553 1692 | 
             
               * Evaluates the module and its dependencies.
         | 
| 1554 1693 | 
             
               *
         | 
| 1555 | 
            -
               * If status is kInstantiated, run the module's code | 
| 1556 | 
            -
               *  | 
| 1557 | 
            -
               *  | 
| 1558 | 
            -
               *  | 
| 1694 | 
            +
               * If status is kInstantiated, run the module's code and return a Promise
         | 
| 1695 | 
            +
               * object. On success, set status to kEvaluated and resolve the Promise with
         | 
| 1696 | 
            +
               * the completion value; on failure, set status to kErrored and reject the
         | 
| 1697 | 
            +
               * Promise with the error.
         | 
| 1698 | 
            +
               *
         | 
| 1699 | 
            +
               * If IsGraphAsync() is false, the returned Promise is settled.
         | 
| 1559 1700 | 
             
               */
         | 
| 1560 1701 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> Evaluate(Local<Context> context);
         | 
| 1561 1702 |  | 
| @@ -1581,6 +1722,14 @@ class V8_EXPORT Module : public Data { | |
| 1581 1722 | 
             
               */
         | 
| 1582 1723 | 
             
              int ScriptId();
         | 
| 1583 1724 |  | 
| 1725 | 
            +
              /**
         | 
| 1726 | 
            +
               * Returns whether this module or any of its requested modules is async,
         | 
| 1727 | 
            +
               * i.e. contains top-level await.
         | 
| 1728 | 
            +
               *
         | 
| 1729 | 
            +
               * The module's status must be at least kInstantiated.
         | 
| 1730 | 
            +
               */
         | 
| 1731 | 
            +
              bool IsGraphAsync() const;
         | 
| 1732 | 
            +
             | 
| 1584 1733 | 
             
              /**
         | 
| 1585 1734 | 
             
               * Returns whether the module is a SourceTextModule.
         | 
| 1586 1735 | 
             
               */
         | 
| @@ -1594,12 +1743,12 @@ class V8_EXPORT Module : public Data { | |
| 1594 1743 | 
             
              /*
         | 
| 1595 1744 | 
             
               * Callback defined in the embedder.  This is responsible for setting
         | 
| 1596 1745 | 
             
               * the module's exported values with calls to SetSyntheticModuleExport().
         | 
| 1597 | 
            -
               * The callback must return a  | 
| 1746 | 
            +
               * The callback must return a resolved Promise to indicate success (where no
         | 
| 1598 1747 | 
             
               * exception was thrown) and return an empy MaybeLocal to indicate falure
         | 
| 1599 1748 | 
             
               * (where an exception was thrown).
         | 
| 1600 1749 | 
             
               */
         | 
| 1601 | 
            -
               | 
| 1602 | 
            -
                  Local<Context> context, Local<Module> module);
         | 
| 1750 | 
            +
              using SyntheticModuleEvaluationSteps =
         | 
| 1751 | 
            +
                  MaybeLocal<Value> (*)(Local<Context> context, Local<Module> module);
         | 
| 1603 1752 |  | 
| 1604 1753 | 
             
              /**
         | 
| 1605 1754 | 
             
               * Creates a new SyntheticModule with the specified export names, where
         | 
| @@ -1622,13 +1771,18 @@ class V8_EXPORT Module : public Data { | |
| 1622 1771 | 
             
               */
         | 
| 1623 1772 | 
             
              V8_WARN_UNUSED_RESULT Maybe<bool> SetSyntheticModuleExport(
         | 
| 1624 1773 | 
             
                  Isolate* isolate, Local<String> export_name, Local<Value> export_value);
         | 
| 1625 | 
            -
               | 
| 1774 | 
            +
              V8_DEPRECATED(
         | 
| 1626 1775 | 
             
                  "Use the preceding SetSyntheticModuleExport with an Isolate parameter, "
         | 
| 1627 1776 | 
             
                  "instead of the one that follows.  The former will throw a runtime "
         | 
| 1628 1777 | 
             
                  "error if called for an export that doesn't exist (as per spec); "
         | 
| 1629 1778 | 
             
                  "the latter will crash with a failed CHECK().")
         | 
| 1630 1779 | 
             
              void SetSyntheticModuleExport(Local<String> export_name,
         | 
| 1631 1780 | 
             
                                            Local<Value> export_value);
         | 
| 1781 | 
            +
             | 
| 1782 | 
            +
              V8_INLINE static Module* Cast(Data* data);
         | 
| 1783 | 
            +
             | 
| 1784 | 
            +
             private:
         | 
| 1785 | 
            +
              static void CheckCast(Data* obj);
         | 
| 1632 1786 | 
             
            };
         | 
| 1633 1787 |  | 
| 1634 1788 | 
             
            /**
         | 
| @@ -1657,6 +1811,7 @@ class V8_EXPORT Script { | |
| 1657 1811 | 
             
              Local<UnboundScript> GetUnboundScript();
         | 
| 1658 1812 | 
             
            };
         | 
| 1659 1813 |  | 
| 1814 | 
            +
            enum class ScriptType { kClassic, kModule };
         | 
| 1660 1815 |  | 
| 1661 1816 | 
             
            /**
         | 
| 1662 1817 | 
             
             * For compiling scripts.
         | 
| @@ -1709,8 +1864,8 @@ class V8_EXPORT ScriptCompiler { | |
| 1709 1864 | 
             
                // Source takes ownership of CachedData.
         | 
| 1710 1865 | 
             
                V8_INLINE Source(Local<String> source_string, const ScriptOrigin& origin,
         | 
| 1711 1866 | 
             
                                 CachedData* cached_data = nullptr);
         | 
| 1712 | 
            -
                V8_INLINE Source(Local<String> source_string,
         | 
| 1713 | 
            -
             | 
| 1867 | 
            +
                V8_INLINE explicit Source(Local<String> source_string,
         | 
| 1868 | 
            +
                                          CachedData* cached_data = nullptr);
         | 
| 1714 1869 | 
             
                V8_INLINE ~Source();
         | 
| 1715 1870 |  | 
| 1716 1871 | 
             
                // Ownership of the CachedData or its buffers is *not* transferred to the
         | 
| @@ -1731,8 +1886,8 @@ class V8_EXPORT ScriptCompiler { | |
| 1731 1886 |  | 
| 1732 1887 | 
             
                // Origin information
         | 
| 1733 1888 | 
             
                Local<Value> resource_name;
         | 
| 1734 | 
            -
                 | 
| 1735 | 
            -
                 | 
| 1889 | 
            +
                int resource_line_offset;
         | 
| 1890 | 
            +
                int resource_column_offset;
         | 
| 1736 1891 | 
             
                ScriptOriginOptions resource_options;
         | 
| 1737 1892 | 
             
                Local<Value> source_map_url;
         | 
| 1738 1893 | 
             
                Local<PrimitiveArray> host_defined_options;
         | 
| @@ -1800,10 +1955,10 @@ class V8_EXPORT ScriptCompiler { | |
| 1800 1955 | 
             
               */
         | 
| 1801 1956 | 
             
              class V8_EXPORT StreamedSource {
         | 
| 1802 1957 | 
             
               public:
         | 
| 1803 | 
            -
                enum Encoding { ONE_BYTE, TWO_BYTE, UTF8 };
         | 
| 1958 | 
            +
                enum Encoding { ONE_BYTE, TWO_BYTE, UTF8, WINDOWS_1252 };
         | 
| 1804 1959 |  | 
| 1805 1960 | 
             
            #if defined(_MSC_VER) && _MSC_VER >= 1910 /* Disable on VS2015 */
         | 
| 1806 | 
            -
                 | 
| 1961 | 
            +
                V8_DEPRECATED(
         | 
| 1807 1962 | 
             
                    "This class takes ownership of source_stream, so use the constructor "
         | 
| 1808 1963 | 
             
                    "taking a unique_ptr to make these semantics clearer")
         | 
| 1809 1964 | 
             
            #endif
         | 
| @@ -1824,7 +1979,7 @@ class V8_EXPORT ScriptCompiler { | |
| 1824 1979 |  | 
| 1825 1980 | 
             
              /**
         | 
| 1826 1981 | 
             
               * A streaming task which the embedder must run on a background thread to
         | 
| 1827 | 
            -
               * stream scripts into V8. Returned by ScriptCompiler:: | 
| 1982 | 
            +
               * stream scripts into V8. Returned by ScriptCompiler::StartStreaming.
         | 
| 1828 1983 | 
             
               */
         | 
| 1829 1984 | 
             
              class V8_EXPORT ScriptStreamingTask final {
         | 
| 1830 1985 | 
             
               public:
         | 
| @@ -1873,7 +2028,8 @@ class V8_EXPORT ScriptCompiler { | |
| 1873 2028 | 
             
               *
         | 
| 1874 2029 | 
             
               * Note that when producing cached data, the source must point to NULL for
         | 
| 1875 2030 | 
             
               * cached data. When consuming cached data, the cached data must have been
         | 
| 1876 | 
            -
               * produced by the same version of V8 | 
| 2031 | 
            +
               * produced by the same version of V8, and the embedder needs to ensure the
         | 
| 2032 | 
            +
               * cached data is the correct one for the given script.
         | 
| 1877 2033 | 
             
               *
         | 
| 1878 2034 | 
             
               * \param source Script source code.
         | 
| 1879 2035 | 
             
               * \return Compiled script object (context independent; for running it must be
         | 
| @@ -1911,9 +2067,13 @@ class V8_EXPORT ScriptCompiler { | |
| 1911 2067 | 
             
               * This API allows to start the streaming with as little data as possible, and
         | 
| 1912 2068 | 
             
               * the remaining data (for example, the ScriptOrigin) is passed to Compile.
         | 
| 1913 2069 | 
             
               */
         | 
| 2070 | 
            +
              V8_DEPRECATED("Use ScriptCompiler::StartStreaming instead.")
         | 
| 1914 2071 | 
             
              static ScriptStreamingTask* StartStreamingScript(
         | 
| 1915 2072 | 
             
                  Isolate* isolate, StreamedSource* source,
         | 
| 1916 2073 | 
             
                  CompileOptions options = kNoCompileOptions);
         | 
| 2074 | 
            +
              static ScriptStreamingTask* StartStreaming(
         | 
| 2075 | 
            +
                  Isolate* isolate, StreamedSource* source,
         | 
| 2076 | 
            +
                  ScriptType type = ScriptType::kClassic);
         | 
| 1917 2077 |  | 
| 1918 2078 | 
             
              /**
         | 
| 1919 2079 | 
             
               * Compiles a streamed script (bound to current context).
         | 
| @@ -1958,6 +2118,17 @@ class V8_EXPORT ScriptCompiler { | |
| 1958 2118 | 
             
                  CompileOptions options = kNoCompileOptions,
         | 
| 1959 2119 | 
             
                  NoCacheReason no_cache_reason = kNoCacheNoReason);
         | 
| 1960 2120 |  | 
| 2121 | 
            +
              /**
         | 
| 2122 | 
            +
               * Compiles a streamed module script.
         | 
| 2123 | 
            +
               *
         | 
| 2124 | 
            +
               * This can only be called after the streaming has finished
         | 
| 2125 | 
            +
               * (ScriptStreamingTask has been run). V8 doesn't construct the source string
         | 
| 2126 | 
            +
               * during streaming, so the embedder needs to pass the full source here.
         | 
| 2127 | 
            +
               */
         | 
| 2128 | 
            +
              static V8_WARN_UNUSED_RESULT MaybeLocal<Module> CompileModule(
         | 
| 2129 | 
            +
                  Local<Context> context, StreamedSource* v8_source,
         | 
| 2130 | 
            +
                  Local<String> full_source_string, const ScriptOrigin& origin);
         | 
| 2131 | 
            +
             | 
| 1961 2132 | 
             
              /**
         | 
| 1962 2133 | 
             
               * Compile a function for a given context. This is equivalent to running
         | 
| 1963 2134 | 
             
               *
         | 
| @@ -2018,6 +2189,8 @@ class V8_EXPORT Message { | |
| 2018 2189 | 
             
               */
         | 
| 2019 2190 | 
             
              Isolate* GetIsolate() const;
         | 
| 2020 2191 |  | 
| 2192 | 
            +
              V8_WARN_UNUSED_RESULT MaybeLocal<String> GetSource(
         | 
| 2193 | 
            +
                  Local<Context> context) const;
         | 
| 2021 2194 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<String> GetSourceLine(
         | 
| 2022 2195 | 
             
                  Local<Context> context) const;
         | 
| 2023 2196 |  | 
| @@ -2192,6 +2365,17 @@ class V8_EXPORT StackFrame { | |
| 2192 2365 | 
             
               */
         | 
| 2193 2366 | 
             
              Local<String> GetScriptNameOrSourceURL() const;
         | 
| 2194 2367 |  | 
| 2368 | 
            +
              /**
         | 
| 2369 | 
            +
               * Returns the source of the script for the function for this StackFrame.
         | 
| 2370 | 
            +
               */
         | 
| 2371 | 
            +
              Local<String> GetScriptSource() const;
         | 
| 2372 | 
            +
             | 
| 2373 | 
            +
              /**
         | 
| 2374 | 
            +
               * Returns the source mapping URL (if one is present) of the script for
         | 
| 2375 | 
            +
               * the function for this StackFrame.
         | 
| 2376 | 
            +
               */
         | 
| 2377 | 
            +
              Local<String> GetScriptSourceMappingURL() const;
         | 
| 2378 | 
            +
             | 
| 2195 2379 | 
             
              /**
         | 
| 2196 2380 | 
             
               * Returns the name of the function associated with this stack frame.
         | 
| 2197 2381 | 
             
               */
         | 
| @@ -2234,14 +2418,25 @@ enum StateTag { | |
| 2234 2418 | 
             
              IDLE
         | 
| 2235 2419 | 
             
            };
         | 
| 2236 2420 |  | 
| 2421 | 
            +
            // Holds the callee saved registers needed for the stack unwinder. It is the
         | 
| 2422 | 
            +
            // empty struct if no registers are required. Implemented in
         | 
| 2423 | 
            +
            // include/v8-unwinder-state.h.
         | 
| 2424 | 
            +
            struct CalleeSavedRegisters;
         | 
| 2425 | 
            +
             | 
| 2237 2426 | 
             
            // A RegisterState represents the current state of registers used
         | 
| 2238 2427 | 
             
            // by the sampling profiler API.
         | 
| 2239 | 
            -
            struct RegisterState {
         | 
| 2240 | 
            -
              RegisterState() | 
| 2428 | 
            +
            struct V8_EXPORT RegisterState {
         | 
| 2429 | 
            +
              RegisterState();
         | 
| 2430 | 
            +
              ~RegisterState();
         | 
| 2431 | 
            +
              RegisterState(const RegisterState& other);
         | 
| 2432 | 
            +
              RegisterState& operator=(const RegisterState& other);
         | 
| 2433 | 
            +
             | 
| 2241 2434 | 
             
              void* pc;  // Instruction pointer.
         | 
| 2242 2435 | 
             
              void* sp;  // Stack pointer.
         | 
| 2243 2436 | 
             
              void* fp;  // Frame pointer.
         | 
| 2244 2437 | 
             
              void* lr;  // Link register (or nullptr on platforms without a link register).
         | 
| 2438 | 
            +
              // Callee saved registers (or null if no callee saved registers were stored)
         | 
| 2439 | 
            +
              std::unique_ptr<CalleeSavedRegisters> callee_saved;
         | 
| 2245 2440 | 
             
            };
         | 
| 2246 2441 |  | 
| 2247 2442 | 
             
            // The output structure filled up by GetStackSample API function.
         | 
| @@ -2262,14 +2457,6 @@ struct JSEntryStub { | |
| 2262 2457 | 
             
              MemoryRange code;
         | 
| 2263 2458 | 
             
            };
         | 
| 2264 2459 |  | 
| 2265 | 
            -
            struct UnwindState {
         | 
| 2266 | 
            -
              MemoryRange code_range;
         | 
| 2267 | 
            -
              MemoryRange embedded_code_range;
         | 
| 2268 | 
            -
              JSEntryStub js_entry_stub;
         | 
| 2269 | 
            -
              JSEntryStub js_construct_entry_stub;
         | 
| 2270 | 
            -
              JSEntryStub js_run_microtasks_entry_stub;
         | 
| 2271 | 
            -
            };
         | 
| 2272 | 
            -
             | 
| 2273 2460 | 
             
            struct JSEntryStubs {
         | 
| 2274 2461 | 
             
              JSEntryStub js_entry_stub;
         | 
| 2275 2462 | 
             
              JSEntryStub js_construct_entry_stub;
         | 
| @@ -2830,6 +3017,11 @@ class V8_EXPORT Value : public Data { | |
| 2830 3017 | 
             
               */
         | 
| 2831 3018 | 
             
              bool IsProxy() const;
         | 
| 2832 3019 |  | 
| 3020 | 
            +
              /**
         | 
| 3021 | 
            +
               * Returns true if this value is a WasmMemoryObject.
         | 
| 3022 | 
            +
               */
         | 
| 3023 | 
            +
              bool IsWasmMemoryObject() const;
         | 
| 3024 | 
            +
             | 
| 2833 3025 | 
             
              /**
         | 
| 2834 3026 | 
             
               * Returns true if this value is a WasmModuleObject.
         | 
| 2835 3027 | 
             
               */
         | 
| @@ -2934,6 +3126,8 @@ class V8_EXPORT Value : public Data { | |
| 2934 3126 | 
             
              bool FullIsUndefined() const;
         | 
| 2935 3127 | 
             
              bool FullIsNull() const;
         | 
| 2936 3128 | 
             
              bool FullIsString() const;
         | 
| 3129 | 
            +
             | 
| 3130 | 
            +
              static void CheckCast(Data* that);
         | 
| 2937 3131 | 
             
            };
         | 
| 2938 3132 |  | 
| 2939 3133 |  | 
| @@ -2950,11 +3144,11 @@ class V8_EXPORT Primitive : public Value { }; | |
| 2950 3144 | 
             
            class V8_EXPORT Boolean : public Primitive {
         | 
| 2951 3145 | 
             
             public:
         | 
| 2952 3146 | 
             
              bool Value() const;
         | 
| 2953 | 
            -
              V8_INLINE static Boolean* Cast(v8:: | 
| 3147 | 
            +
              V8_INLINE static Boolean* Cast(v8::Data* data);
         | 
| 2954 3148 | 
             
              V8_INLINE static Local<Boolean> New(Isolate* isolate, bool value);
         | 
| 2955 3149 |  | 
| 2956 3150 | 
             
             private:
         | 
| 2957 | 
            -
              static void CheckCast(v8:: | 
| 3151 | 
            +
              static void CheckCast(v8::Data* that);
         | 
| 2958 3152 | 
             
            };
         | 
| 2959 3153 |  | 
| 2960 3154 |  | 
| @@ -2972,10 +3166,10 @@ class V8_EXPORT Name : public Primitive { | |
| 2972 3166 | 
             
               */
         | 
| 2973 3167 | 
             
              int GetIdentityHash();
         | 
| 2974 3168 |  | 
| 2975 | 
            -
              V8_INLINE static Name* Cast( | 
| 3169 | 
            +
              V8_INLINE static Name* Cast(Data* data);
         | 
| 2976 3170 |  | 
| 2977 3171 | 
             
             private:
         | 
| 2978 | 
            -
              static void CheckCast( | 
| 3172 | 
            +
              static void CheckCast(Data* that);
         | 
| 2979 3173 | 
             
            };
         | 
| 2980 3174 |  | 
| 2981 3175 | 
             
            /**
         | 
| @@ -3089,16 +3283,21 @@ class V8_EXPORT String : public Name { | |
| 3089 3283 | 
             
              V8_INLINE static Local<String> Empty(Isolate* isolate);
         | 
| 3090 3284 |  | 
| 3091 3285 | 
             
              /**
         | 
| 3092 | 
            -
               * Returns true if the string is external
         | 
| 3286 | 
            +
               * Returns true if the string is external.
         | 
| 3093 3287 | 
             
               */
         | 
| 3094 3288 | 
             
              bool IsExternal() const;
         | 
| 3095 3289 |  | 
| 3290 | 
            +
              /**
         | 
| 3291 | 
            +
               * Returns true if the string is both external and two-byte.
         | 
| 3292 | 
            +
               */
         | 
| 3293 | 
            +
              bool IsExternalTwoByte() const;
         | 
| 3294 | 
            +
             | 
| 3096 3295 | 
             
              /**
         | 
| 3097 3296 | 
             
               * Returns true if the string is both external and one-byte.
         | 
| 3098 3297 | 
             
               */
         | 
| 3099 3298 | 
             
              bool IsExternalOneByte() const;
         | 
| 3100 3299 |  | 
| 3101 | 
            -
              class V8_EXPORT ExternalStringResourceBase { | 
| 3300 | 
            +
              class V8_EXPORT ExternalStringResourceBase {
         | 
| 3102 3301 | 
             
               public:
         | 
| 3103 3302 | 
             
                virtual ~ExternalStringResourceBase() = default;
         | 
| 3104 3303 |  | 
| @@ -3164,7 +3363,8 @@ class V8_EXPORT String : public Name { | |
| 3164 3363 | 
             
                ~ExternalStringResource() override = default;
         | 
| 3165 3364 |  | 
| 3166 3365 | 
             
                /**
         | 
| 3167 | 
            -
                 * The string data from the underlying buffer.
         | 
| 3366 | 
            +
                 * The string data from the underlying buffer. If the resource is cacheable
         | 
| 3367 | 
            +
                 * then data() must return the same value for all invocations.
         | 
| 3168 3368 | 
             
                 */
         | 
| 3169 3369 | 
             
                virtual const uint16_t* data() const = 0;
         | 
| 3170 3370 |  | 
| @@ -3173,8 +3373,29 @@ class V8_EXPORT String : public Name { | |
| 3173 3373 | 
             
                 */
         | 
| 3174 3374 | 
             
                virtual size_t length() const = 0;
         | 
| 3175 3375 |  | 
| 3376 | 
            +
                /**
         | 
| 3377 | 
            +
                 * Returns the cached data from the underlying buffer. This method can be
         | 
| 3378 | 
            +
                 * called only for cacheable resources (i.e. IsCacheable() == true) and only
         | 
| 3379 | 
            +
                 * after UpdateDataCache() was called.
         | 
| 3380 | 
            +
                 */
         | 
| 3381 | 
            +
                const uint16_t* cached_data() const {
         | 
| 3382 | 
            +
                  CheckCachedDataInvariants();
         | 
| 3383 | 
            +
                  return cached_data_;
         | 
| 3384 | 
            +
                }
         | 
| 3385 | 
            +
             | 
| 3386 | 
            +
                /**
         | 
| 3387 | 
            +
                 * Update {cached_data_} with the data from the underlying buffer. This can
         | 
| 3388 | 
            +
                 * be called only for cacheable resources.
         | 
| 3389 | 
            +
                 */
         | 
| 3390 | 
            +
                void UpdateDataCache();
         | 
| 3391 | 
            +
             | 
| 3176 3392 | 
             
               protected:
         | 
| 3177 3393 | 
             
                ExternalStringResource() = default;
         | 
| 3394 | 
            +
             | 
| 3395 | 
            +
               private:
         | 
| 3396 | 
            +
                void CheckCachedDataInvariants() const;
         | 
| 3397 | 
            +
             | 
| 3398 | 
            +
                const uint16_t* cached_data_ = nullptr;
         | 
| 3178 3399 | 
             
              };
         | 
| 3179 3400 |  | 
| 3180 3401 | 
             
              /**
         | 
| @@ -3195,12 +3416,39 @@ class V8_EXPORT String : public Name { | |
| 3195 3416 | 
             
                 * buffer.
         | 
| 3196 3417 | 
             
                 */
         | 
| 3197 3418 | 
             
                ~ExternalOneByteStringResource() override = default;
         | 
| 3198 | 
            -
             | 
| 3419 | 
            +
             | 
| 3420 | 
            +
                /**
         | 
| 3421 | 
            +
                 * The string data from the underlying buffer. If the resource is cacheable
         | 
| 3422 | 
            +
                 * then data() must return the same value for all invocations.
         | 
| 3423 | 
            +
                 */
         | 
| 3199 3424 | 
             
                virtual const char* data() const = 0;
         | 
| 3425 | 
            +
             | 
| 3200 3426 | 
             
                /** The number of Latin-1 characters in the string.*/
         | 
| 3201 3427 | 
             
                virtual size_t length() const = 0;
         | 
| 3428 | 
            +
             | 
| 3429 | 
            +
                /**
         | 
| 3430 | 
            +
                 * Returns the cached data from the underlying buffer. If the resource is
         | 
| 3431 | 
            +
                 * uncacheable or if UpdateDataCache() was not called before, it has
         | 
| 3432 | 
            +
                 * undefined behaviour.
         | 
| 3433 | 
            +
                 */
         | 
| 3434 | 
            +
                const char* cached_data() const {
         | 
| 3435 | 
            +
                  CheckCachedDataInvariants();
         | 
| 3436 | 
            +
                  return cached_data_;
         | 
| 3437 | 
            +
                }
         | 
| 3438 | 
            +
             | 
| 3439 | 
            +
                /**
         | 
| 3440 | 
            +
                 * Update {cached_data_} with the data from the underlying buffer. This can
         | 
| 3441 | 
            +
                 * be called only for cacheable resources.
         | 
| 3442 | 
            +
                 */
         | 
| 3443 | 
            +
                void UpdateDataCache();
         | 
| 3444 | 
            +
             | 
| 3202 3445 | 
             
               protected:
         | 
| 3203 3446 | 
             
                ExternalOneByteStringResource() = default;
         | 
| 3447 | 
            +
             | 
| 3448 | 
            +
               private:
         | 
| 3449 | 
            +
                void CheckCachedDataInvariants() const;
         | 
| 3450 | 
            +
             | 
| 3451 | 
            +
                const char* cached_data_ = nullptr;
         | 
| 3204 3452 | 
             
              };
         | 
| 3205 3453 |  | 
| 3206 3454 | 
             
              /**
         | 
| @@ -3223,7 +3471,7 @@ class V8_EXPORT String : public Name { | |
| 3223 3471 | 
             
               */
         | 
| 3224 3472 | 
             
              const ExternalOneByteStringResource* GetExternalOneByteStringResource() const;
         | 
| 3225 3473 |  | 
| 3226 | 
            -
              V8_INLINE static String* Cast(v8:: | 
| 3474 | 
            +
              V8_INLINE static String* Cast(v8::Data* data);
         | 
| 3227 3475 |  | 
| 3228 3476 | 
             
              /**
         | 
| 3229 3477 | 
             
               * Allocates a new string from a UTF-8 literal. This is equivalent to calling
         | 
| @@ -3380,7 +3628,7 @@ class V8_EXPORT String : public Name { | |
| 3380 3628 | 
             
                                                          const char* literal,
         | 
| 3381 3629 | 
             
                                                          NewStringType type, int length);
         | 
| 3382 3630 |  | 
| 3383 | 
            -
              static void CheckCast(v8:: | 
| 3631 | 
            +
              static void CheckCast(v8::Data* that);
         | 
| 3384 3632 | 
             
            };
         | 
| 3385 3633 |  | 
| 3386 3634 | 
             
            // Zero-length string specialization (templated string size includes
         | 
| @@ -3400,8 +3648,9 @@ class V8_EXPORT Symbol : public Name { | |
| 3400 3648 | 
             
               * Returns the description string of the symbol, or undefined if none.
         | 
| 3401 3649 | 
             
               */
         | 
| 3402 3650 | 
             
              Local<Value> Description() const;
         | 
| 3651 | 
            +
              Local<Value> Description(Isolate* isolate) const;
         | 
| 3403 3652 |  | 
| 3404 | 
            -
               | 
| 3653 | 
            +
              V8_DEPRECATED("Use Symbol::Description()")
         | 
| 3405 3654 | 
             
              Local<Value> Name() const { return Description(); }
         | 
| 3406 3655 |  | 
| 3407 3656 | 
             
              /**
         | 
| @@ -3440,11 +3689,11 @@ class V8_EXPORT Symbol : public Name { | |
| 3440 3689 | 
             
              static Local<Symbol> GetToStringTag(Isolate* isolate);
         | 
| 3441 3690 | 
             
              static Local<Symbol> GetUnscopables(Isolate* isolate);
         | 
| 3442 3691 |  | 
| 3443 | 
            -
              V8_INLINE static Symbol* Cast( | 
| 3692 | 
            +
              V8_INLINE static Symbol* Cast(Data* data);
         | 
| 3444 3693 |  | 
| 3445 3694 | 
             
             private:
         | 
| 3446 3695 | 
             
              Symbol();
         | 
| 3447 | 
            -
              static void CheckCast( | 
| 3696 | 
            +
              static void CheckCast(Data* that);
         | 
| 3448 3697 | 
             
            };
         | 
| 3449 3698 |  | 
| 3450 3699 |  | 
| @@ -3493,10 +3742,11 @@ class V8_EXPORT Number : public Primitive { | |
| 3493 3742 | 
             
             public:
         | 
| 3494 3743 | 
             
              double Value() const;
         | 
| 3495 3744 | 
             
              static Local<Number> New(Isolate* isolate, double value);
         | 
| 3496 | 
            -
              V8_INLINE static Number* Cast(v8:: | 
| 3745 | 
            +
              V8_INLINE static Number* Cast(v8::Data* data);
         | 
| 3746 | 
            +
             | 
| 3497 3747 | 
             
             private:
         | 
| 3498 3748 | 
             
              Number();
         | 
| 3499 | 
            -
              static void CheckCast(v8:: | 
| 3749 | 
            +
              static void CheckCast(v8::Data* that);
         | 
| 3500 3750 | 
             
            };
         | 
| 3501 3751 |  | 
| 3502 3752 |  | 
| @@ -3508,10 +3758,11 @@ class V8_EXPORT Integer : public Number { | |
| 3508 3758 | 
             
              static Local<Integer> New(Isolate* isolate, int32_t value);
         | 
| 3509 3759 | 
             
              static Local<Integer> NewFromUnsigned(Isolate* isolate, uint32_t value);
         | 
| 3510 3760 | 
             
              int64_t Value() const;
         | 
| 3511 | 
            -
              V8_INLINE static Integer* Cast(v8:: | 
| 3761 | 
            +
              V8_INLINE static Integer* Cast(v8::Data* data);
         | 
| 3762 | 
            +
             | 
| 3512 3763 | 
             
             private:
         | 
| 3513 3764 | 
             
              Integer();
         | 
| 3514 | 
            -
              static void CheckCast(v8:: | 
| 3765 | 
            +
              static void CheckCast(v8::Data* that);
         | 
| 3515 3766 | 
             
            };
         | 
| 3516 3767 |  | 
| 3517 3768 |  | 
| @@ -3521,11 +3772,11 @@ class V8_EXPORT Integer : public Number { | |
| 3521 3772 | 
             
            class V8_EXPORT Int32 : public Integer {
         | 
| 3522 3773 | 
             
             public:
         | 
| 3523 3774 | 
             
              int32_t Value() const;
         | 
| 3524 | 
            -
              V8_INLINE static Int32* Cast(v8:: | 
| 3775 | 
            +
              V8_INLINE static Int32* Cast(v8::Data* data);
         | 
| 3525 3776 |  | 
| 3526 3777 | 
             
             private:
         | 
| 3527 3778 | 
             
              Int32();
         | 
| 3528 | 
            -
              static void CheckCast(v8:: | 
| 3779 | 
            +
              static void CheckCast(v8::Data* that);
         | 
| 3529 3780 | 
             
            };
         | 
| 3530 3781 |  | 
| 3531 3782 |  | 
| @@ -3535,11 +3786,11 @@ class V8_EXPORT Int32 : public Integer { | |
| 3535 3786 | 
             
            class V8_EXPORT Uint32 : public Integer {
         | 
| 3536 3787 | 
             
             public:
         | 
| 3537 3788 | 
             
              uint32_t Value() const;
         | 
| 3538 | 
            -
              V8_INLINE static Uint32* Cast(v8:: | 
| 3789 | 
            +
              V8_INLINE static Uint32* Cast(v8::Data* data);
         | 
| 3539 3790 |  | 
| 3540 3791 | 
             
             private:
         | 
| 3541 3792 | 
             
              Uint32();
         | 
| 3542 | 
            -
              static void CheckCast(v8:: | 
| 3793 | 
            +
              static void CheckCast(v8::Data* that);
         | 
| 3543 3794 | 
             
            };
         | 
| 3544 3795 |  | 
| 3545 3796 | 
             
            /**
         | 
| @@ -3590,11 +3841,11 @@ class V8_EXPORT BigInt : public Primitive { | |
| 3590 3841 | 
             
               */
         | 
| 3591 3842 | 
             
              void ToWordsArray(int* sign_bit, int* word_count, uint64_t* words) const;
         | 
| 3592 3843 |  | 
| 3593 | 
            -
              V8_INLINE static BigInt* Cast(v8:: | 
| 3844 | 
            +
              V8_INLINE static BigInt* Cast(v8::Data* data);
         | 
| 3594 3845 |  | 
| 3595 3846 | 
             
             private:
         | 
| 3596 3847 | 
             
              BigInt();
         | 
| 3597 | 
            -
              static void CheckCast(v8:: | 
| 3848 | 
            +
              static void CheckCast(v8::Data* that);
         | 
| 3598 3849 | 
             
            };
         | 
| 3599 3850 |  | 
| 3600 3851 | 
             
            /**
         | 
| @@ -3616,23 +3867,17 @@ enum PropertyAttribute { | |
| 3616 3867 | 
             
             * setting|getting a particular property. See Object and ObjectTemplate's
         | 
| 3617 3868 | 
             
             * method SetAccessor.
         | 
| 3618 3869 | 
             
             */
         | 
| 3619 | 
            -
             | 
| 3620 | 
            -
                Local<String> property,
         | 
| 3621 | 
            -
             | 
| 3622 | 
            -
             | 
| 3623 | 
            -
                Local<Name> property,
         | 
| 3624 | 
            -
                const PropertyCallbackInfo<Value>& info);
         | 
| 3625 | 
            -
             | 
| 3626 | 
            -
             | 
| 3627 | 
            -
            typedef void (*AccessorSetterCallback)(
         | 
| 3628 | 
            -
                Local<String> property,
         | 
| 3629 | 
            -
                Local<Value> value,
         | 
| 3630 | 
            -
                const PropertyCallbackInfo<void>& info);
         | 
| 3631 | 
            -
            typedef void (*AccessorNameSetterCallback)(
         | 
| 3632 | 
            -
                Local<Name> property,
         | 
| 3633 | 
            -
                Local<Value> value,
         | 
| 3634 | 
            -
                const PropertyCallbackInfo<void>& info);
         | 
| 3870 | 
            +
            using AccessorGetterCallback =
         | 
| 3871 | 
            +
                void (*)(Local<String> property, const PropertyCallbackInfo<Value>& info);
         | 
| 3872 | 
            +
            using AccessorNameGetterCallback =
         | 
| 3873 | 
            +
                void (*)(Local<Name> property, const PropertyCallbackInfo<Value>& info);
         | 
| 3635 3874 |  | 
| 3875 | 
            +
            using AccessorSetterCallback = void (*)(Local<String> property,
         | 
| 3876 | 
            +
                                                    Local<Value> value,
         | 
| 3877 | 
            +
                                                    const PropertyCallbackInfo<void>& info);
         | 
| 3878 | 
            +
            using AccessorNameSetterCallback =
         | 
| 3879 | 
            +
                void (*)(Local<Name> property, Local<Value> value,
         | 
| 3880 | 
            +
                         const PropertyCallbackInfo<void>& info);
         | 
| 3636 3881 |  | 
| 3637 3882 | 
             
            /**
         | 
| 3638 3883 | 
             
             * Access control specifications.
         | 
| @@ -3757,8 +4002,7 @@ class V8_EXPORT Object : public Value { | |
| 3757 4002 | 
             
              //
         | 
| 3758 4003 | 
             
              // Returns true on success.
         | 
| 3759 4004 | 
             
              V8_WARN_UNUSED_RESULT Maybe<bool> DefineProperty(
         | 
| 3760 | 
            -
                  Local<Context> context, Local<Name> key,
         | 
| 3761 | 
            -
                  PropertyDescriptor& descriptor);  // NOLINT(runtime/references)
         | 
| 4005 | 
            +
                  Local<Context> context, Local<Name> key, PropertyDescriptor& descriptor);
         | 
| 3762 4006 |  | 
| 3763 4007 | 
             
              V8_WARN_UNUSED_RESULT MaybeLocal<Value> Get(Local<Context> context,
         | 
| 3764 4008 | 
             
                                                          Local<Value> key);
         | 
| @@ -3941,10 +4185,10 @@ class V8_EXPORT Object : public Value { | |
| 3941 4185 | 
             
                return object.val_->InternalFieldCount();
         | 
| 3942 4186 | 
             
              }
         | 
| 3943 4187 |  | 
| 3944 | 
            -
              /** Same as above, but works for  | 
| 4188 | 
            +
              /** Same as above, but works for BasicTracedReference. */
         | 
| 3945 4189 | 
             
              V8_INLINE static int InternalFieldCount(
         | 
| 3946 | 
            -
                  const  | 
| 3947 | 
            -
                return object | 
| 4190 | 
            +
                  const BasicTracedReference<Object>& object) {
         | 
| 4191 | 
            +
                return object->InternalFieldCount();
         | 
| 3948 4192 | 
             
              }
         | 
| 3949 4193 |  | 
| 3950 4194 | 
             
              /** Gets the value from an internal field. */
         | 
| @@ -3968,8 +4212,8 @@ class V8_EXPORT Object : public Value { | |
| 3968 4212 |  | 
| 3969 4213 | 
             
              /** Same as above, but works for TracedGlobal. */
         | 
| 3970 4214 | 
             
              V8_INLINE static void* GetAlignedPointerFromInternalField(
         | 
| 3971 | 
            -
                  const  | 
| 3972 | 
            -
                return object | 
| 4215 | 
            +
                  const BasicTracedReference<Object>& object, int index) {
         | 
| 4216 | 
            +
                return object->GetAlignedPointerFromInternalField(index);
         | 
| 3973 4217 | 
             
              }
         | 
| 3974 4218 |  | 
| 3975 4219 | 
             
              /**
         | 
| @@ -4067,12 +4311,20 @@ class V8_EXPORT Object : public Value { | |
| 4067 4311 | 
             
              /**
         | 
| 4068 4312 | 
             
               * Returns the context in which the object was created.
         | 
| 4069 4313 | 
             
               */
         | 
| 4314 | 
            +
              // TODO(chromium:1166077): Mark as deprecate once users are updated.
         | 
| 4315 | 
            +
              V8_DEPRECATE_SOON("Use MaybeLocal<Context> GetCreationContext()")
         | 
| 4070 4316 | 
             
              Local<Context> CreationContext();
         | 
| 4317 | 
            +
              MaybeLocal<Context> GetCreationContext();
         | 
| 4071 4318 |  | 
| 4072 4319 | 
             
              /** Same as above, but works for Persistents */
         | 
| 4073 | 
            -
               | 
| 4320 | 
            +
              // TODO(chromium:1166077): Mark as deprecate once users are updated.
         | 
| 4321 | 
            +
              V8_DEPRECATE_SOON(
         | 
| 4322 | 
            +
                  "Use MaybeLocal<Context> GetCreationContext(const "
         | 
| 4323 | 
            +
                  "PersistentBase<Object>& object)")
         | 
| 4324 | 
            +
              static Local<Context> CreationContext(const PersistentBase<Object>& object);
         | 
| 4325 | 
            +
              V8_INLINE static MaybeLocal<Context> GetCreationContext(
         | 
| 4074 4326 | 
             
                  const PersistentBase<Object>& object) {
         | 
| 4075 | 
            -
                return object.val_-> | 
| 4327 | 
            +
                return object.val_->GetCreationContext();
         | 
| 4076 4328 | 
             
              }
         | 
| 4077 4329 |  | 
| 4078 4330 | 
             
              /**
         | 
| @@ -4152,6 +4404,16 @@ class V8_EXPORT Object : public Value { | |
| 4152 4404 |  | 
| 4153 4405 | 
             
              V8_INLINE static Object* Cast(Value* obj);
         | 
| 4154 4406 |  | 
| 4407 | 
            +
              /**
         | 
| 4408 | 
            +
               * Support for TC39 "dynamic code brand checks" proposal.
         | 
| 4409 | 
            +
               *
         | 
| 4410 | 
            +
               * This API allows to query whether an object was constructed from a
         | 
| 4411 | 
            +
               * "code like" ObjectTemplate.
         | 
| 4412 | 
            +
               *
         | 
| 4413 | 
            +
               * See also: v8::ObjectTemplate::SetCodeLike
         | 
| 4414 | 
            +
               */
         | 
| 4415 | 
            +
              bool IsCodeLike(Isolate* isolate);
         | 
| 4416 | 
            +
             | 
| 4155 4417 | 
             
             private:
         | 
| 4156 4418 | 
             
              Object();
         | 
| 4157 4419 | 
             
              static void CheckCast(Value* obj);
         | 
| @@ -4180,6 +4442,7 @@ class V8_EXPORT Array : public Object { | |
| 4180 4442 | 
             
              static Local<Array> New(Isolate* isolate, Local<Value>* elements,
         | 
| 4181 4443 | 
             
                                      size_t length);
         | 
| 4182 4444 | 
             
              V8_INLINE static Array* Cast(Value* obj);
         | 
| 4445 | 
            +
             | 
| 4183 4446 | 
             
             private:
         | 
| 4184 4447 | 
             
              Array();
         | 
| 4185 4448 | 
             
              static void CheckCast(Value* obj);
         | 
| @@ -4265,7 +4528,7 @@ class ReturnValue { | |
| 4265 4528 | 
             
              template <typename S>
         | 
| 4266 4529 | 
             
              V8_INLINE void Set(const Global<S>& handle);
         | 
| 4267 4530 | 
             
              template <typename S>
         | 
| 4268 | 
            -
              V8_INLINE void Set(const  | 
| 4531 | 
            +
              V8_INLINE void Set(const BasicTracedReference<S>& handle);
         | 
| 4269 4532 | 
             
              template <typename S>
         | 
| 4270 4533 | 
             
              V8_INLINE void Set(const Local<S> handle);
         | 
| 4271 4534 | 
             
              // Fast primitive setters
         | 
| @@ -4474,8 +4737,7 @@ class PropertyCallbackInfo { | |
| 4474 4737 | 
             
              internal::Address* args_;
         | 
| 4475 4738 | 
             
            };
         | 
| 4476 4739 |  | 
| 4477 | 
            -
             | 
| 4478 | 
            -
            typedef void (*FunctionCallback)(const FunctionCallbackInfo<Value>& info);
         | 
| 4740 | 
            +
            using FunctionCallback = void (*)(const FunctionCallbackInfo<Value>& info);
         | 
| 4479 4741 |  | 
| 4480 4742 | 
             
            enum class ConstructorBehavior { kThrow, kAllow };
         | 
| 4481 4743 |  | 
| @@ -4536,6 +4798,11 @@ class V8_EXPORT Function : public Object { | |
| 4536 4798 | 
             
               * User-defined name assigned to the "displayName" property of this function.
         | 
| 4537 4799 | 
             
               * Used to facilitate debugging and profiling of JavaScript code.
         | 
| 4538 4800 | 
             
               */
         | 
| 4801 | 
            +
              V8_DEPRECATED(
         | 
| 4802 | 
            +
                  "Use v8::Object::Get() instead to look up \"displayName\". "
         | 
| 4803 | 
            +
                  "V8 and DevTools no longer use \"displayName\" in stack "
         | 
| 4804 | 
            +
                  "traces, but the standard \"name\" property. "
         | 
| 4805 | 
            +
                  "See http://crbug.com/1177685.")
         | 
| 4539 4806 | 
             
              Local<Value> GetDisplayName() const;
         | 
| 4540 4807 |  | 
| 4541 4808 | 
             
              /**
         | 
| @@ -4560,6 +4827,15 @@ class V8_EXPORT Function : public Object { | |
| 4560 4827 | 
             
               */
         | 
| 4561 4828 | 
             
              Local<Value> GetBoundFunction() const;
         | 
| 4562 4829 |  | 
| 4830 | 
            +
              /**
         | 
| 4831 | 
            +
               * Calls builtin Function.prototype.toString on this function.
         | 
| 4832 | 
            +
               * This is different from Value::ToString() that may call a user-defined
         | 
| 4833 | 
            +
               * toString() function, and different than Object::ObjectProtoToString() which
         | 
| 4834 | 
            +
               * always serializes "[object Function]".
         | 
| 4835 | 
            +
               */
         | 
| 4836 | 
            +
              V8_WARN_UNUSED_RESULT MaybeLocal<String> FunctionProtoToString(
         | 
| 4837 | 
            +
                  Local<Context> context);
         | 
| 4838 | 
            +
             | 
| 4563 4839 | 
             
              ScriptOrigin GetScriptOrigin() const;
         | 
| 4564 4840 | 
             
              V8_INLINE static Function* Cast(Value* obj);
         | 
| 4565 4841 | 
             
              static const int kLineOffsetNotFound;
         | 
| @@ -4653,6 +4929,12 @@ class V8_EXPORT Promise : public Object { | |
| 4653 4929 | 
             
               */
         | 
| 4654 4930 | 
             
              void MarkAsHandled();
         | 
| 4655 4931 |  | 
| 4932 | 
            +
              /**
         | 
| 4933 | 
            +
               * Marks this promise as silent to prevent pausing the debugger when the
         | 
| 4934 | 
            +
               * promise is rejected.
         | 
| 4935 | 
            +
               */
         | 
| 4936 | 
            +
              void MarkAsSilent();
         | 
| 4937 | 
            +
             | 
| 4656 4938 | 
             
              V8_INLINE static Promise* Cast(Value* obj);
         | 
| 4657 4939 |  | 
| 4658 4940 | 
             
              static const int kEmbedderFieldCount = V8_PROMISE_INTERNAL_FIELD_COUNT;
         | 
| @@ -4827,6 +5109,22 @@ class V8_EXPORT CompiledWasmModule { | |
| 4827 5109 | 
             
              const std::string source_url_;
         | 
| 4828 5110 | 
             
            };
         | 
| 4829 5111 |  | 
| 5112 | 
            +
            // An instance of WebAssembly.Memory.
         | 
| 5113 | 
            +
            class V8_EXPORT WasmMemoryObject : public Object {
         | 
| 5114 | 
            +
             public:
         | 
| 5115 | 
            +
              WasmMemoryObject() = delete;
         | 
| 5116 | 
            +
             | 
| 5117 | 
            +
              /**
         | 
| 5118 | 
            +
               * Returns underlying ArrayBuffer.
         | 
| 5119 | 
            +
               */
         | 
| 5120 | 
            +
              Local<ArrayBuffer> Buffer();
         | 
| 5121 | 
            +
             | 
| 5122 | 
            +
              V8_INLINE static WasmMemoryObject* Cast(Value* obj);
         | 
| 5123 | 
            +
             | 
| 5124 | 
            +
             private:
         | 
| 5125 | 
            +
              static void CheckCast(Value* object);
         | 
| 5126 | 
            +
            };
         | 
| 5127 | 
            +
             | 
| 4830 5128 | 
             
            // An instance of WebAssembly.Module.
         | 
| 4831 5129 | 
             
            class V8_EXPORT WasmModuleObject : public Object {
         | 
| 4832 5130 | 
             
             public:
         | 
| @@ -5090,7 +5388,7 @@ class V8_EXPORT ArrayBuffer : public Object { | |
| 5090 5388 | 
             
               * Note that it is unsafe to call back into V8 from any of the allocator
         | 
| 5091 5389 | 
             
               * functions.
         | 
| 5092 5390 | 
             
               */
         | 
| 5093 | 
            -
              class V8_EXPORT Allocator { | 
| 5391 | 
            +
              class V8_EXPORT Allocator {
         | 
| 5094 5392 | 
             
               public:
         | 
| 5095 5393 | 
             
                virtual ~Allocator() = default;
         | 
| 5096 5394 |  | 
| @@ -5215,7 +5513,7 @@ class V8_EXPORT ArrayBuffer : public Object { | |
| 5215 5513 | 
             
               * |Allocator::Free| once all ArrayBuffers referencing it are collected by
         | 
| 5216 5514 | 
             
               * the garbage collector.
         | 
| 5217 5515 | 
             
               */
         | 
| 5218 | 
            -
               | 
| 5516 | 
            +
              V8_DEPRECATED(
         | 
| 5219 5517 | 
             
                  "Use the version that takes a BackingStore. "
         | 
| 5220 5518 | 
             
                  "See http://crbug.com/v8/9908.")
         | 
| 5221 5519 | 
             
              static Local<ArrayBuffer> New(
         | 
| @@ -5264,7 +5562,7 @@ class V8_EXPORT ArrayBuffer : public Object { | |
| 5264 5562 | 
             
               * Returns true if ArrayBuffer is externalized, that is, does not
         | 
| 5265 5563 | 
             
               * own its memory block.
         | 
| 5266 5564 | 
             
               */
         | 
| 5267 | 
            -
               | 
| 5565 | 
            +
              V8_DEPRECATED(
         | 
| 5268 5566 | 
             
                  "With v8::BackingStore externalized ArrayBuffers are "
         | 
| 5269 5567 | 
             
                  "the same as ordinary ArrayBuffers. See http://crbug.com/v8/9908.")
         | 
| 5270 5568 | 
             
              bool IsExternal() const;
         | 
| @@ -5292,8 +5590,7 @@ class V8_EXPORT ArrayBuffer : public Object { | |
| 5292 5590 | 
             
               * deleter, which will call ArrayBuffer::Allocator::Free if the buffer
         | 
| 5293 5591 | 
             
               * was allocated with ArrayBuffer::Allocator::Allocate.
         | 
| 5294 5592 | 
             
               */
         | 
| 5295 | 
            -
               | 
| 5296 | 
            -
                  "Use GetBackingStore or Detach. See http://crbug.com/v8/9908.")
         | 
| 5593 | 
            +
              V8_DEPRECATED("Use GetBackingStore or Detach. See http://crbug.com/v8/9908.")
         | 
| 5297 5594 | 
             
              Contents Externalize();
         | 
| 5298 5595 |  | 
| 5299 5596 | 
             
              /**
         | 
| @@ -5303,7 +5600,7 @@ class V8_EXPORT ArrayBuffer : public Object { | |
| 5303 5600 | 
             
               * With the new lifetime management of backing stores there is no need for
         | 
| 5304 5601 | 
             
               * externalizing, so this function exists only to make the transition easier.
         | 
| 5305 5602 | 
             
               */
         | 
| 5306 | 
            -
               | 
| 5603 | 
            +
              V8_DEPRECATED("This will be removed together with IsExternal.")
         | 
| 5307 5604 | 
             
              void Externalize(const std::shared_ptr<BackingStore>& backing_store);
         | 
| 5308 5605 |  | 
| 5309 5606 | 
             
              /**
         | 
| @@ -5314,7 +5611,7 @@ class V8_EXPORT ArrayBuffer : public Object { | |
| 5314 5611 | 
             
               * The embedder should make sure to hold a strong reference to the
         | 
| 5315 5612 | 
             
               * ArrayBuffer while accessing this pointer.
         | 
| 5316 5613 | 
             
               */
         | 
| 5317 | 
            -
               | 
| 5614 | 
            +
              V8_DEPRECATED("Use GetBackingStore. See http://crbug.com/v8/9908.")
         | 
| 5318 5615 | 
             
              Contents GetContents();
         | 
| 5319 5616 |  | 
| 5320 5617 | 
             
              /**
         | 
| @@ -5698,7 +5995,7 @@ class V8_EXPORT SharedArrayBuffer : public Object { | |
| 5698 5995 | 
             
               * specified. The memory block will not be reclaimed when a created
         | 
| 5699 5996 | 
             
               * SharedArrayBuffer is garbage-collected.
         | 
| 5700 5997 | 
             
               */
         | 
| 5701 | 
            -
               | 
| 5998 | 
            +
              V8_DEPRECATED(
         | 
| 5702 5999 | 
             
                  "Use the version that takes a BackingStore. "
         | 
| 5703 6000 | 
             
                  "See http://crbug.com/v8/9908.")
         | 
| 5704 6001 | 
             
              static Local<SharedArrayBuffer> New(
         | 
| @@ -5758,7 +6055,7 @@ class V8_EXPORT SharedArrayBuffer : public Object { | |
| 5758 6055 | 
             
               * Returns true if SharedArrayBuffer is externalized, that is, does not
         | 
| 5759 6056 | 
             
               * own its memory block.
         | 
| 5760 6057 | 
             
               */
         | 
| 5761 | 
            -
               | 
| 6058 | 
            +
              V8_DEPRECATED(
         | 
| 5762 6059 | 
             
                  "With v8::BackingStore externalized SharedArrayBuffers are the same "
         | 
| 5763 6060 | 
             
                  "as ordinary SharedArrayBuffers. See http://crbug.com/v8/9908.")
         | 
| 5764 6061 | 
             
              bool IsExternal() const;
         | 
| @@ -5775,8 +6072,7 @@ class V8_EXPORT SharedArrayBuffer : public Object { | |
| 5775 6072 | 
             
               * v8::Isolate::CreateParams::array_buffer_allocator.
         | 
| 5776 6073 | 
             
               *
         | 
| 5777 6074 | 
             
               */
         | 
| 5778 | 
            -
               | 
| 5779 | 
            -
                  "Use GetBackingStore or Detach. See http://crbug.com/v8/9908.")
         | 
| 6075 | 
            +
              V8_DEPRECATED("Use GetBackingStore or Detach. See http://crbug.com/v8/9908.")
         | 
| 5780 6076 | 
             
              Contents Externalize();
         | 
| 5781 6077 |  | 
| 5782 6078 | 
             
              /**
         | 
| @@ -5786,7 +6082,7 @@ class V8_EXPORT SharedArrayBuffer : public Object { | |
| 5786 6082 | 
             
               * With the new lifetime management of backing stores there is no need for
         | 
| 5787 6083 | 
             
               * externalizing, so this function exists only to make the transition easier.
         | 
| 5788 6084 | 
             
               */
         | 
| 5789 | 
            -
               | 
| 6085 | 
            +
              V8_DEPRECATED("This will be removed together with IsExternal.")
         | 
| 5790 6086 | 
             
              void Externalize(const std::shared_ptr<BackingStore>& backing_store);
         | 
| 5791 6087 |  | 
| 5792 6088 | 
             
              /**
         | 
| @@ -5801,7 +6097,7 @@ class V8_EXPORT SharedArrayBuffer : public Object { | |
| 5801 6097 | 
             
               * by the allocator specified in
         | 
| 5802 6098 | 
             
               * v8::Isolate::CreateParams::array_buffer_allocator.
         | 
| 5803 6099 | 
             
               */
         | 
| 5804 | 
            -
               | 
| 6100 | 
            +
              V8_DEPRECATED("Use GetBackingStore. See http://crbug.com/v8/9908.")
         | 
| 5805 6101 | 
             
              Contents GetContents();
         | 
| 5806 6102 |  | 
| 5807 6103 | 
             
              /**
         | 
| @@ -5932,6 +6228,10 @@ class V8_EXPORT RegExp : public Object { | |
| 5932 6228 | 
             
              /**
         | 
| 5933 6229 | 
             
               * Regular expression flag bits. They can be or'ed to enable a set
         | 
| 5934 6230 | 
             
               * of flags.
         | 
| 6231 | 
            +
               * The kLinear value ('l') is experimental and can only be used with
         | 
| 6232 | 
            +
               * --enable-experimental-regexp-engine.  RegExps with kLinear flag are
         | 
| 6233 | 
            +
               *  guaranteed to be executed in asymptotic linear time wrt. the length of
         | 
| 6234 | 
            +
               *  the subject string.
         | 
| 5935 6235 | 
             
               */
         | 
| 5936 6236 | 
             
              enum Flags {
         | 
| 5937 6237 | 
             
                kNone = 0,
         | 
| @@ -5941,9 +6241,11 @@ class V8_EXPORT RegExp : public Object { | |
| 5941 6241 | 
             
                kSticky = 1 << 3,
         | 
| 5942 6242 | 
             
                kUnicode = 1 << 4,
         | 
| 5943 6243 | 
             
                kDotAll = 1 << 5,
         | 
| 6244 | 
            +
                kLinear = 1 << 6,
         | 
| 6245 | 
            +
                kHasIndices = 1 << 7,
         | 
| 5944 6246 | 
             
              };
         | 
| 5945 6247 |  | 
| 5946 | 
            -
              static constexpr int kFlagCount =  | 
| 6248 | 
            +
              static constexpr int kFlagCount = 8;
         | 
| 5947 6249 |  | 
| 5948 6250 | 
             
              /**
         | 
| 5949 6251 | 
             
               * Creates a regular expression from the given pattern string and
         | 
| @@ -6085,7 +6387,6 @@ class V8_EXPORT Template : public Data { | |
| 6085 6387 | 
             
              void SetNativeDataProperty(
         | 
| 6086 6388 | 
             
                  Local<String> name, AccessorGetterCallback getter,
         | 
| 6087 6389 | 
             
                  AccessorSetterCallback setter = nullptr,
         | 
| 6088 | 
            -
                  // TODO(dcarney): gcc can't handle Local below
         | 
| 6089 6390 | 
             
                  Local<Value> data = Local<Value>(), PropertyAttribute attribute = None,
         | 
| 6090 6391 | 
             
                  Local<AccessorSignature> signature = Local<AccessorSignature>(),
         | 
| 6091 6392 | 
             
                  AccessControl settings = DEFAULT,
         | 
| @@ -6094,7 +6395,6 @@ class V8_EXPORT Template : public Data { | |
| 6094 6395 | 
             
              void SetNativeDataProperty(
         | 
| 6095 6396 | 
             
                  Local<Name> name, AccessorNameGetterCallback getter,
         | 
| 6096 6397 | 
             
                  AccessorNameSetterCallback setter = nullptr,
         | 
| 6097 | 
            -
                  // TODO(dcarney): gcc can't handle Local below
         | 
| 6098 6398 | 
             
                  Local<Value> data = Local<Value>(), PropertyAttribute attribute = None,
         | 
| 6099 6399 | 
             
                  Local<AccessorSignature> signature = Local<AccessorSignature>(),
         | 
| 6100 6400 | 
             
                  AccessControl settings = DEFAULT,
         | 
| @@ -6164,8 +6464,8 @@ class V8_EXPORT Template : public Data { | |
| 6164 6464 | 
             
             *
         | 
| 6165 6465 | 
             
             * See also `ObjectTemplate::SetHandler`.
         | 
| 6166 6466 | 
             
             */
         | 
| 6167 | 
            -
             | 
| 6168 | 
            -
                Local<Name> property, const PropertyCallbackInfo<Value>& info);
         | 
| 6467 | 
            +
            using GenericNamedPropertyGetterCallback =
         | 
| 6468 | 
            +
                void (*)(Local<Name> property, const PropertyCallbackInfo<Value>& info);
         | 
| 6169 6469 |  | 
| 6170 6470 | 
             
            /**
         | 
| 6171 6471 | 
             
             * Interceptor for set requests on an object.
         | 
| @@ -6188,9 +6488,9 @@ typedef void (*GenericNamedPropertyGetterCallback)( | |
| 6188 6488 | 
             
             * See also
         | 
| 6189 6489 | 
             
             * `ObjectTemplate::SetHandler.`
         | 
| 6190 6490 | 
             
             */
         | 
| 6191 | 
            -
             | 
| 6192 | 
            -
                Local<Name> property, Local<Value> value,
         | 
| 6193 | 
            -
             | 
| 6491 | 
            +
            using GenericNamedPropertySetterCallback =
         | 
| 6492 | 
            +
                void (*)(Local<Name> property, Local<Value> value,
         | 
| 6493 | 
            +
                         const PropertyCallbackInfo<Value>& info);
         | 
| 6194 6494 |  | 
| 6195 6495 | 
             
            /**
         | 
| 6196 6496 | 
             
             * Intercepts all requests that query the attributes of the
         | 
| @@ -6213,8 +6513,8 @@ typedef void (*GenericNamedPropertySetterCallback)( | |
| 6213 6513 | 
             
             * See also
         | 
| 6214 6514 | 
             
             * `ObjectTemplate::SetHandler.`
         | 
| 6215 6515 | 
             
             */
         | 
| 6216 | 
            -
             | 
| 6217 | 
            -
                Local<Name> property, const PropertyCallbackInfo<Integer>& info);
         | 
| 6516 | 
            +
            using GenericNamedPropertyQueryCallback =
         | 
| 6517 | 
            +
                void (*)(Local<Name> property, const PropertyCallbackInfo<Integer>& info);
         | 
| 6218 6518 |  | 
| 6219 6519 | 
             
            /**
         | 
| 6220 6520 | 
             
             * Interceptor for delete requests on an object.
         | 
| @@ -6237,8 +6537,8 @@ typedef void (*GenericNamedPropertyQueryCallback)( | |
| 6237 6537 | 
             
             *
         | 
| 6238 6538 | 
             
             * See also `ObjectTemplate::SetHandler.`
         | 
| 6239 6539 | 
             
             */
         | 
| 6240 | 
            -
             | 
| 6241 | 
            -
                Local<Name> property, const PropertyCallbackInfo<Boolean>& info);
         | 
| 6540 | 
            +
            using GenericNamedPropertyDeleterCallback =
         | 
| 6541 | 
            +
                void (*)(Local<Name> property, const PropertyCallbackInfo<Boolean>& info);
         | 
| 6242 6542 |  | 
| 6243 6543 | 
             
            /**
         | 
| 6244 6544 | 
             
             * Returns an array containing the names of the properties the named
         | 
| @@ -6246,8 +6546,8 @@ typedef void (*GenericNamedPropertyDeleterCallback)( | |
| 6246 6546 | 
             
             *
         | 
| 6247 6547 | 
             
             * Note: The values in the array must be of type v8::Name.
         | 
| 6248 6548 | 
             
             */
         | 
| 6249 | 
            -
             | 
| 6250 | 
            -
                const PropertyCallbackInfo<Array>& info);
         | 
| 6549 | 
            +
            using GenericNamedPropertyEnumeratorCallback =
         | 
| 6550 | 
            +
                void (*)(const PropertyCallbackInfo<Array>& info);
         | 
| 6251 6551 |  | 
| 6252 6552 | 
             
            /**
         | 
| 6253 6553 | 
             
             * Interceptor for defineProperty requests on an object.
         | 
| @@ -6269,9 +6569,9 @@ typedef void (*GenericNamedPropertyEnumeratorCallback)( | |
| 6269 6569 | 
             
             *
         | 
| 6270 6570 | 
             
             * See also `ObjectTemplate::SetHandler`.
         | 
| 6271 6571 | 
             
             */
         | 
| 6272 | 
            -
             | 
| 6273 | 
            -
                Local<Name> property, const PropertyDescriptor& desc,
         | 
| 6274 | 
            -
             | 
| 6572 | 
            +
            using GenericNamedPropertyDefinerCallback =
         | 
| 6573 | 
            +
                void (*)(Local<Name> property, const PropertyDescriptor& desc,
         | 
| 6574 | 
            +
                         const PropertyCallbackInfo<Value>& info);
         | 
| 6275 6575 |  | 
| 6276 6576 | 
             
            /**
         | 
| 6277 6577 | 
             
             * Interceptor for getOwnPropertyDescriptor requests on an object.
         | 
| @@ -6292,37 +6592,33 @@ typedef void (*GenericNamedPropertyDefinerCallback)( | |
| 6292 6592 | 
             
             *
         | 
| 6293 6593 | 
             
             * See also `ObjectTemplate::SetHandler`.
         | 
| 6294 6594 | 
             
             */
         | 
| 6295 | 
            -
             | 
| 6296 | 
            -
                Local<Name> property, const PropertyCallbackInfo<Value>& info);
         | 
| 6595 | 
            +
            using GenericNamedPropertyDescriptorCallback =
         | 
| 6596 | 
            +
                void (*)(Local<Name> property, const PropertyCallbackInfo<Value>& info);
         | 
| 6297 6597 |  | 
| 6298 6598 | 
             
            /**
         | 
| 6299 6599 | 
             
             * See `v8::GenericNamedPropertyGetterCallback`.
         | 
| 6300 6600 | 
             
             */
         | 
| 6301 | 
            -
             | 
| 6302 | 
            -
                uint32_t index,
         | 
| 6303 | 
            -
                const PropertyCallbackInfo<Value>& info);
         | 
| 6601 | 
            +
            using IndexedPropertyGetterCallback =
         | 
| 6602 | 
            +
                void (*)(uint32_t index, const PropertyCallbackInfo<Value>& info);
         | 
| 6304 6603 |  | 
| 6305 6604 | 
             
            /**
         | 
| 6306 6605 | 
             
             * See `v8::GenericNamedPropertySetterCallback`.
         | 
| 6307 6606 | 
             
             */
         | 
| 6308 | 
            -
             | 
| 6309 | 
            -
                uint32_t index,
         | 
| 6310 | 
            -
             | 
| 6311 | 
            -
                const PropertyCallbackInfo<Value>& info);
         | 
| 6607 | 
            +
            using IndexedPropertySetterCallback =
         | 
| 6608 | 
            +
                void (*)(uint32_t index, Local<Value> value,
         | 
| 6609 | 
            +
                         const PropertyCallbackInfo<Value>& info);
         | 
| 6312 6610 |  | 
| 6313 6611 | 
             
            /**
         | 
| 6314 6612 | 
             
             * See `v8::GenericNamedPropertyQueryCallback`.
         | 
| 6315 6613 | 
             
             */
         | 
| 6316 | 
            -
             | 
| 6317 | 
            -
                uint32_t index,
         | 
| 6318 | 
            -
                const PropertyCallbackInfo<Integer>& info);
         | 
| 6614 | 
            +
            using IndexedPropertyQueryCallback =
         | 
| 6615 | 
            +
                void (*)(uint32_t index, const PropertyCallbackInfo<Integer>& info);
         | 
| 6319 6616 |  | 
| 6320 6617 | 
             
            /**
         | 
| 6321 6618 | 
             
             * See `v8::GenericNamedPropertyDeleterCallback`.
         | 
| 6322 6619 | 
             
             */
         | 
| 6323 | 
            -
             | 
| 6324 | 
            -
                uint32_t index,
         | 
| 6325 | 
            -
                const PropertyCallbackInfo<Boolean>& info);
         | 
| 6620 | 
            +
            using IndexedPropertyDeleterCallback =
         | 
| 6621 | 
            +
                void (*)(uint32_t index, const PropertyCallbackInfo<Boolean>& info);
         | 
| 6326 6622 |  | 
| 6327 6623 | 
             
            /**
         | 
| 6328 6624 | 
             
             * Returns an array containing the indices of the properties the indexed
         | 
| @@ -6330,21 +6626,21 @@ typedef void (*IndexedPropertyDeleterCallback)( | |
| 6330 6626 | 
             
             *
         | 
| 6331 6627 | 
             
             * Note: The values in the array must be uint32_t.
         | 
| 6332 6628 | 
             
             */
         | 
| 6333 | 
            -
             | 
| 6334 | 
            -
                const PropertyCallbackInfo<Array>& info);
         | 
| 6629 | 
            +
            using IndexedPropertyEnumeratorCallback =
         | 
| 6630 | 
            +
                void (*)(const PropertyCallbackInfo<Array>& info);
         | 
| 6335 6631 |  | 
| 6336 6632 | 
             
            /**
         | 
| 6337 6633 | 
             
             * See `v8::GenericNamedPropertyDefinerCallback`.
         | 
| 6338 6634 | 
             
             */
         | 
| 6339 | 
            -
             | 
| 6340 | 
            -
                uint32_t index, const PropertyDescriptor& desc,
         | 
| 6341 | 
            -
             | 
| 6635 | 
            +
            using IndexedPropertyDefinerCallback =
         | 
| 6636 | 
            +
                void (*)(uint32_t index, const PropertyDescriptor& desc,
         | 
| 6637 | 
            +
                         const PropertyCallbackInfo<Value>& info);
         | 
| 6342 6638 |  | 
| 6343 6639 | 
             
            /**
         | 
| 6344 6640 | 
             
             * See `v8::GenericNamedPropertyDescriptorCallback`.
         | 
| 6345 6641 | 
             
             */
         | 
| 6346 | 
            -
             | 
| 6347 | 
            -
                uint32_t index, const PropertyCallbackInfo<Value>& info);
         | 
| 6642 | 
            +
            using IndexedPropertyDescriptorCallback =
         | 
| 6643 | 
            +
                void (*)(uint32_t index, const PropertyCallbackInfo<Value>& info);
         | 
| 6348 6644 |  | 
| 6349 6645 | 
             
            /**
         | 
| 6350 6646 | 
             
             * Access type specification.
         | 
| @@ -6362,9 +6658,9 @@ enum AccessType { | |
| 6362 6658 | 
             
             * Returns true if the given context should be allowed to access the given
         | 
| 6363 6659 | 
             
             * object.
         | 
| 6364 6660 | 
             
             */
         | 
| 6365 | 
            -
             | 
| 6366 | 
            -
             | 
| 6367 | 
            -
             | 
| 6661 | 
            +
            using AccessCheckCallback = bool (*)(Local<Context> accessing_context,
         | 
| 6662 | 
            +
                                                 Local<Object> accessed_object,
         | 
| 6663 | 
            +
                                                 Local<Value> data);
         | 
| 6368 6664 |  | 
| 6369 6665 | 
             
            /**
         | 
| 6370 6666 | 
             
             * A FunctionTemplate is used to create functions at runtime. There
         | 
| @@ -6484,6 +6780,15 @@ class V8_EXPORT FunctionTemplate : public Template { | |
| 6484 6780 | 
             
                  SideEffectType side_effect_type = SideEffectType::kHasSideEffect,
         | 
| 6485 6781 | 
             
                  const CFunction* c_function = nullptr);
         | 
| 6486 6782 |  | 
| 6783 | 
            +
              /** Creates a function template for multiple overloaded fast API calls.*/
         | 
| 6784 | 
            +
              static Local<FunctionTemplate> NewWithCFunctionOverloads(
         | 
| 6785 | 
            +
                  Isolate* isolate, FunctionCallback callback = nullptr,
         | 
| 6786 | 
            +
                  Local<Value> data = Local<Value>(),
         | 
| 6787 | 
            +
                  Local<Signature> signature = Local<Signature>(), int length = 0,
         | 
| 6788 | 
            +
                  ConstructorBehavior behavior = ConstructorBehavior::kAllow,
         | 
| 6789 | 
            +
                  SideEffectType side_effect_type = SideEffectType::kHasSideEffect,
         | 
| 6790 | 
            +
                  const MemorySpan<const CFunction>& c_function_overloads = {});
         | 
| 6791 | 
            +
             | 
| 6487 6792 | 
             
              /**
         | 
| 6488 6793 | 
             
               * Creates a function template backed/cached by a private property.
         | 
| 6489 6794 | 
             
               */
         | 
| @@ -6517,6 +6822,17 @@ class V8_EXPORT FunctionTemplate : public Template { | |
| 6517 6822 | 
             
                  SideEffectType side_effect_type = SideEffectType::kHasSideEffect,
         | 
| 6518 6823 | 
             
                  const CFunction* c_function = nullptr);
         | 
| 6519 6824 |  | 
| 6825 | 
            +
              /**
         | 
| 6826 | 
            +
               * Set the call-handler callback for a FunctionTemplate.  This
         | 
| 6827 | 
            +
               * callback is called whenever the function created from this
         | 
| 6828 | 
            +
               * FunctionTemplate is called. The 'c_function' represents a fast
         | 
| 6829 | 
            +
               * API call, see the comment above the class declaration.
         | 
| 6830 | 
            +
               */
         | 
| 6831 | 
            +
              void SetCallHandlerV8_92(
         | 
| 6832 | 
            +
                  FunctionCallback callback, Local<Value> data = Local<Value>(),
         | 
| 6833 | 
            +
                  SideEffectType side_effect_type = SideEffectType::kHasSideEffect,
         | 
| 6834 | 
            +
                  const MemorySpan<const CFunction>& c_function_overloads = {});
         | 
| 6835 | 
            +
             | 
| 6520 6836 | 
             
              /** Set the predefined length property for the FunctionTemplate. */
         | 
| 6521 6837 | 
             
              void SetLength(int length);
         | 
| 6522 6838 |  | 
| @@ -6576,6 +6892,15 @@ class V8_EXPORT FunctionTemplate : public Template { | |
| 6576 6892 | 
             
               */
         | 
| 6577 6893 | 
             
              bool HasInstance(Local<Value> object);
         | 
| 6578 6894 |  | 
| 6895 | 
            +
              /**
         | 
| 6896 | 
            +
               * Returns true if the given value is an API object that was constructed by an
         | 
| 6897 | 
            +
               * instance of this function template (without checking for inheriting
         | 
| 6898 | 
            +
               * function templates).
         | 
| 6899 | 
            +
               *
         | 
| 6900 | 
            +
               * This is an experimental feature and may still change significantly.
         | 
| 6901 | 
            +
               */
         | 
| 6902 | 
            +
              bool IsLeafTemplateForApiObject(v8::Local<v8::Value> value) const;
         | 
| 6903 | 
            +
             | 
| 6579 6904 | 
             
              V8_INLINE static FunctionTemplate* Cast(Data* data);
         | 
| 6580 6905 |  | 
| 6581 6906 | 
             
             private:
         | 
| @@ -6940,6 +7265,18 @@ class V8_EXPORT ObjectTemplate : public Template { | |
| 6940 7265 | 
             
               */
         | 
| 6941 7266 | 
             
              void SetImmutableProto();
         | 
| 6942 7267 |  | 
| 7268 | 
            +
              /**
         | 
| 7269 | 
            +
               * Support for TC39 "dynamic code brand checks" proposal.
         | 
| 7270 | 
            +
               *
         | 
| 7271 | 
            +
               * This API allows to mark (& query) objects as "code like", which causes
         | 
| 7272 | 
            +
               * them to be treated like Strings in the context of eval and function
         | 
| 7273 | 
            +
               * constructor.
         | 
| 7274 | 
            +
               *
         | 
| 7275 | 
            +
               * Reference: https://github.com/tc39/proposal-dynamic-code-brand-checks
         | 
| 7276 | 
            +
               */
         | 
| 7277 | 
            +
              void SetCodeLike();
         | 
| 7278 | 
            +
              bool IsCodeLike();
         | 
| 7279 | 
            +
             | 
| 6943 7280 | 
             
              V8_INLINE static ObjectTemplate* Cast(Data* data);
         | 
| 6944 7281 |  | 
| 6945 7282 | 
             
             private:
         | 
| @@ -6997,7 +7334,7 @@ class V8_EXPORT AccessorSignature : public Data { | |
| 6997 7334 | 
             
            /**
         | 
| 6998 7335 | 
             
             * Ignore
         | 
| 6999 7336 | 
             
             */
         | 
| 7000 | 
            -
            class V8_EXPORT Extension { | 
| 7337 | 
            +
            class V8_EXPORT Extension {
         | 
| 7001 7338 | 
             
             public:
         | 
| 7002 7339 | 
             
              // Note that the strings passed into this constructor must live as long
         | 
| 7003 7340 | 
             
              // as the Extension itself.
         | 
| @@ -7099,6 +7436,11 @@ class V8_EXPORT ResourceConstraints { | |
| 7099 7436 | 
             
              /**
         | 
| 7100 7437 | 
             
               * The amount of virtual memory reserved for generated code. This is relevant
         | 
| 7101 7438 | 
             
               * for 64-bit architectures that rely on code range for calls in code.
         | 
| 7439 | 
            +
               *
         | 
| 7440 | 
            +
               * When V8_COMPRESS_POINTERS_IN_SHARED_CAGE is defined, there is a shared
         | 
| 7441 | 
            +
               * process-wide code range that is lazily initialized. This value is used to
         | 
| 7442 | 
            +
               * configure that shared code range when the first Isolate is
         | 
| 7443 | 
            +
               * created. Subsequent Isolates ignore this value.
         | 
| 7102 7444 | 
             
               */
         | 
| 7103 7445 | 
             
              size_t code_range_size_in_bytes() const { return code_range_size_; }
         | 
| 7104 7446 | 
             
              void set_code_range_size_in_bytes(size_t limit) { code_range_size_ = limit; }
         | 
| @@ -7143,36 +7485,11 @@ class V8_EXPORT ResourceConstraints { | |
| 7143 7485 | 
             
                initial_young_generation_size_ = initial_size;
         | 
| 7144 7486 | 
             
              }
         | 
| 7145 7487 |  | 
| 7146 | 
            -
              /**
         | 
| 7147 | 
            -
               * Deprecated functions. Do not use in new code.
         | 
| 7148 | 
            -
               */
         | 
| 7149 | 
            -
              V8_DEPRECATE_SOON("Use code_range_size_in_bytes.")
         | 
| 7150 | 
            -
              size_t code_range_size() const { return code_range_size_ / kMB; }
         | 
| 7151 | 
            -
              V8_DEPRECATE_SOON("Use set_code_range_size_in_bytes.")
         | 
| 7152 | 
            -
              void set_code_range_size(size_t limit_in_mb) {
         | 
| 7153 | 
            -
                code_range_size_ = limit_in_mb * kMB;
         | 
| 7154 | 
            -
              }
         | 
| 7155 | 
            -
              V8_DEPRECATE_SOON("Use max_young_generation_size_in_bytes.")
         | 
| 7156 | 
            -
              size_t max_semi_space_size_in_kb() const;
         | 
| 7157 | 
            -
              V8_DEPRECATE_SOON("Use set_max_young_generation_size_in_bytes.")
         | 
| 7158 | 
            -
              void set_max_semi_space_size_in_kb(size_t limit_in_kb);
         | 
| 7159 | 
            -
              V8_DEPRECATE_SOON("Use max_old_generation_size_in_bytes.")
         | 
| 7160 | 
            -
              size_t max_old_space_size() const { return max_old_generation_size_ / kMB; }
         | 
| 7161 | 
            -
              V8_DEPRECATE_SOON("Use set_max_old_generation_size_in_bytes.")
         | 
| 7162 | 
            -
              void set_max_old_space_size(size_t limit_in_mb) {
         | 
| 7163 | 
            -
                max_old_generation_size_ = limit_in_mb * kMB;
         | 
| 7164 | 
            -
              }
         | 
| 7165 | 
            -
              V8_DEPRECATE_SOON("Zone does not pool memory any more.")
         | 
| 7166 | 
            -
              size_t max_zone_pool_size() const { return max_zone_pool_size_; }
         | 
| 7167 | 
            -
              V8_DEPRECATE_SOON("Zone does not pool memory any more.")
         | 
| 7168 | 
            -
              void set_max_zone_pool_size(size_t bytes) { max_zone_pool_size_ = bytes; }
         | 
| 7169 | 
            -
             | 
| 7170 7488 | 
             
             private:
         | 
| 7171 7489 | 
             
              static constexpr size_t kMB = 1048576u;
         | 
| 7172 7490 | 
             
              size_t code_range_size_ = 0;
         | 
| 7173 7491 | 
             
              size_t max_old_generation_size_ = 0;
         | 
| 7174 7492 | 
             
              size_t max_young_generation_size_ = 0;
         | 
| 7175 | 
            -
              size_t max_zone_pool_size_ = 0;
         | 
| 7176 7493 | 
             
              size_t initial_old_generation_size_ = 0;
         | 
| 7177 7494 | 
             
              size_t initial_young_generation_size_ = 0;
         | 
| 7178 7495 | 
             
              uint32_t* stack_limit_ = nullptr;
         | 
| @@ -7181,19 +7498,20 @@ class V8_EXPORT ResourceConstraints { | |
| 7181 7498 |  | 
| 7182 7499 | 
             
            // --- Exceptions ---
         | 
| 7183 7500 |  | 
| 7501 | 
            +
            using FatalErrorCallback = void (*)(const char* location, const char* message);
         | 
| 7184 7502 |  | 
| 7185 | 
            -
             | 
| 7186 | 
            -
             | 
| 7187 | 
            -
            typedef void (*OOMErrorCallback)(const char* location, bool is_heap_oom);
         | 
| 7503 | 
            +
            using OOMErrorCallback = void (*)(const char* location, bool is_heap_oom);
         | 
| 7188 7504 |  | 
| 7189 | 
            -
             | 
| 7190 | 
            -
             | 
| 7505 | 
            +
            using DcheckErrorCallback = void (*)(const char* file, int line,
         | 
| 7506 | 
            +
                                                 const char* message);
         | 
| 7191 7507 |  | 
| 7192 | 
            -
             | 
| 7508 | 
            +
            using MessageCallback = void (*)(Local<Message> message, Local<Value> data);
         | 
| 7193 7509 |  | 
| 7194 7510 | 
             
            // --- Tracing ---
         | 
| 7195 7511 |  | 
| 7196 | 
            -
             | 
| 7512 | 
            +
            enum LogEventStatus : int { kStart = 0, kEnd = 1, kStamp = 2 };
         | 
| 7513 | 
            +
            using LogEventCallback = void (*)(const char* name,
         | 
| 7514 | 
            +
                                              int /* LogEventStatus */ status);
         | 
| 7197 7515 |  | 
| 7198 7516 | 
             
            /**
         | 
| 7199 7517 | 
             
             * Create new error objects by calling the corresponding error object
         | 
| @@ -7227,14 +7545,12 @@ class V8_EXPORT Exception { | |
| 7227 7545 |  | 
| 7228 7546 | 
             
            // --- Counters Callbacks ---
         | 
| 7229 7547 |  | 
| 7230 | 
            -
             | 
| 7548 | 
            +
            using CounterLookupCallback = int* (*)(const char* name);
         | 
| 7231 7549 |  | 
| 7232 | 
            -
             | 
| 7233 | 
            -
             | 
| 7234 | 
            -
                                                     int max,
         | 
| 7235 | 
            -
                                                     size_t buckets);
         | 
| 7550 | 
            +
            using CreateHistogramCallback = void* (*)(const char* name, int min, int max,
         | 
| 7551 | 
            +
                                                      size_t buckets);
         | 
| 7236 7552 |  | 
| 7237 | 
            -
             | 
| 7553 | 
            +
            using AddHistogramSampleCallback = void (*)(void* histogram, int sample);
         | 
| 7238 7554 |  | 
| 7239 7555 | 
             
            // --- Crashkeys Callback ---
         | 
| 7240 7556 | 
             
            enum class CrashKeyId {
         | 
| @@ -7245,11 +7561,11 @@ enum class CrashKeyId { | |
| 7245 7561 | 
             
              kDumpType,
         | 
| 7246 7562 | 
             
            };
         | 
| 7247 7563 |  | 
| 7248 | 
            -
             | 
| 7564 | 
            +
            using AddCrashKeyCallback = void (*)(CrashKeyId id, const std::string& value);
         | 
| 7249 7565 |  | 
| 7250 7566 | 
             
            // --- Enter/Leave Script Callback ---
         | 
| 7251 | 
            -
             | 
| 7252 | 
            -
             | 
| 7567 | 
            +
            using BeforeCallEnteredCallback = void (*)(Isolate*);
         | 
| 7568 | 
            +
            using CallCompletedCallback = void (*)(Isolate*);
         | 
| 7253 7569 |  | 
| 7254 7570 | 
             
            /**
         | 
| 7255 7571 | 
             
             * HostImportModuleDynamicallyCallback is called when we require the
         | 
| @@ -7262,7 +7578,38 @@ typedef void (*CallCompletedCallback)(Isolate*); | |
| 7262 7578 | 
             
             * The specifier is the name of the module that should be imported.
         | 
| 7263 7579 | 
             
             *
         | 
| 7264 7580 | 
             
             * The embedder must compile, instantiate, evaluate the Module, and
         | 
| 7265 | 
            -
             * obtain  | 
| 7581 | 
            +
             * obtain its namespace object.
         | 
| 7582 | 
            +
             *
         | 
| 7583 | 
            +
             * The Promise returned from this function is forwarded to userland
         | 
| 7584 | 
            +
             * JavaScript. The embedder must resolve this promise with the module
         | 
| 7585 | 
            +
             * namespace object. In case of an exception, the embedder must reject
         | 
| 7586 | 
            +
             * this promise with the exception. If the promise creation itself
         | 
| 7587 | 
            +
             * fails (e.g. due to stack overflow), the embedder must propagate
         | 
| 7588 | 
            +
             * that exception by returning an empty MaybeLocal.
         | 
| 7589 | 
            +
             */
         | 
| 7590 | 
            +
            using HostImportModuleDynamicallyCallback =
         | 
| 7591 | 
            +
                MaybeLocal<Promise> (*)(Local<Context> context,
         | 
| 7592 | 
            +
                                        Local<ScriptOrModule> referrer,
         | 
| 7593 | 
            +
                                        Local<String> specifier);
         | 
| 7594 | 
            +
             | 
| 7595 | 
            +
            /**
         | 
| 7596 | 
            +
             * HostImportModuleDynamicallyWithImportAssertionsCallback is called when we
         | 
| 7597 | 
            +
             * require the embedder to load a module. This is used as part of the dynamic
         | 
| 7598 | 
            +
             * import syntax.
         | 
| 7599 | 
            +
             *
         | 
| 7600 | 
            +
             * The referrer contains metadata about the script/module that calls
         | 
| 7601 | 
            +
             * import.
         | 
| 7602 | 
            +
             *
         | 
| 7603 | 
            +
             * The specifier is the name of the module that should be imported.
         | 
| 7604 | 
            +
             *
         | 
| 7605 | 
            +
             * The import_assertions are import assertions for this request in the form:
         | 
| 7606 | 
            +
             * [key1, value1, key2, value2, ...] where the keys and values are of type
         | 
| 7607 | 
            +
             * v8::String. Note, unlike the FixedArray passed to ResolveModuleCallback and
         | 
| 7608 | 
            +
             * returned from ModuleRequest::GetImportAssertions(), this array does not
         | 
| 7609 | 
            +
             * contain the source Locations of the assertions.
         | 
| 7610 | 
            +
             *
         | 
| 7611 | 
            +
             * The embedder must compile, instantiate, evaluate the Module, and
         | 
| 7612 | 
            +
             * obtain its namespace object.
         | 
| 7266 7613 | 
             
             *
         | 
| 7267 7614 | 
             
             * The Promise returned from this function is forwarded to userland
         | 
| 7268 7615 | 
             
             * JavaScript. The embedder must resolve this promise with the module
         | 
| @@ -7271,9 +7618,11 @@ typedef void (*CallCompletedCallback)(Isolate*); | |
| 7271 7618 | 
             
             * fails (e.g. due to stack overflow), the embedder must propagate
         | 
| 7272 7619 | 
             
             * that exception by returning an empty MaybeLocal.
         | 
| 7273 7620 | 
             
             */
         | 
| 7274 | 
            -
             | 
| 7275 | 
            -
                 | 
| 7276 | 
            -
             | 
| 7621 | 
            +
            using HostImportModuleDynamicallyWithImportAssertionsCallback =
         | 
| 7622 | 
            +
                MaybeLocal<Promise> (*)(Local<Context> context,
         | 
| 7623 | 
            +
                                        Local<ScriptOrModule> referrer,
         | 
| 7624 | 
            +
                                        Local<String> specifier,
         | 
| 7625 | 
            +
                                        Local<FixedArray> import_assertions);
         | 
| 7277 7626 |  | 
| 7278 7627 | 
             
            /**
         | 
| 7279 7628 | 
             
             * HostInitializeImportMetaObjectCallback is called the first time import.meta
         | 
| @@ -7285,9 +7634,9 @@ typedef MaybeLocal<Promise> (*HostImportModuleDynamicallyCallback)( | |
| 7285 7634 | 
             
             * The embedder should use v8::Object::CreateDataProperty to add properties on
         | 
| 7286 7635 | 
             
             * the meta object.
         | 
| 7287 7636 | 
             
             */
         | 
| 7288 | 
            -
             | 
| 7289 | 
            -
             | 
| 7290 | 
            -
             | 
| 7637 | 
            +
            using HostInitializeImportMetaObjectCallback = void (*)(Local<Context> context,
         | 
| 7638 | 
            +
                                                                    Local<Module> module,
         | 
| 7639 | 
            +
                                                                    Local<Object> meta);
         | 
| 7291 7640 |  | 
| 7292 7641 | 
             
            /**
         | 
| 7293 7642 | 
             
             * PrepareStackTraceCallback is called when the stack property of an error is
         | 
| @@ -7296,9 +7645,9 @@ typedef void (*HostInitializeImportMetaObjectCallback)(Local<Context> context, | |
| 7296 7645 | 
             
             * |sites| is an array of call sites, specified in
         | 
| 7297 7646 | 
             
             * https://v8.dev/docs/stack-trace-api
         | 
| 7298 7647 | 
             
             */
         | 
| 7299 | 
            -
             | 
| 7300 | 
            -
             | 
| 7301 | 
            -
             | 
| 7648 | 
            +
            using PrepareStackTraceCallback = MaybeLocal<Value> (*)(Local<Context> context,
         | 
| 7649 | 
            +
                                                                    Local<Value> error,
         | 
| 7650 | 
            +
                                                                    Local<Array> sites);
         | 
| 7302 7651 |  | 
| 7303 7652 | 
             
            /**
         | 
| 7304 7653 | 
             
             * PromiseHook with type kInit is called when a new promise is
         | 
| @@ -7318,8 +7667,8 @@ typedef MaybeLocal<Value> (*PrepareStackTraceCallback)(Local<Context> context, | |
| 7318 7667 | 
             
             */
         | 
| 7319 7668 | 
             
            enum class PromiseHookType { kInit, kResolve, kBefore, kAfter };
         | 
| 7320 7669 |  | 
| 7321 | 
            -
             | 
| 7322 | 
            -
             | 
| 7670 | 
            +
            using PromiseHook = void (*)(PromiseHookType type, Local<Promise> promise,
         | 
| 7671 | 
            +
                                         Local<Value> parent);
         | 
| 7323 7672 |  | 
| 7324 7673 | 
             
            // --- Promise Reject Callback ---
         | 
| 7325 7674 | 
             
            enum PromiseRejectEvent {
         | 
| @@ -7345,12 +7694,11 @@ class PromiseRejectMessage { | |
| 7345 7694 | 
             
              Local<Value> value_;
         | 
| 7346 7695 | 
             
            };
         | 
| 7347 7696 |  | 
| 7348 | 
            -
             | 
| 7697 | 
            +
            using PromiseRejectCallback = void (*)(PromiseRejectMessage message);
         | 
| 7349 7698 |  | 
| 7350 7699 | 
             
            // --- Microtasks Callbacks ---
         | 
| 7351 | 
            -
             | 
| 7352 | 
            -
             | 
| 7353 | 
            -
            typedef void (*MicrotaskCallback)(void* data);
         | 
| 7700 | 
            +
            using MicrotasksCompletedCallbackWithData = void (*)(Isolate*, void*);
         | 
| 7701 | 
            +
            using MicrotaskCallback = void (*)(void* data);
         | 
| 7354 7702 |  | 
| 7355 7703 | 
             
            /**
         | 
| 7356 7704 | 
             
             * Policy for running microtasks:
         | 
| @@ -7454,7 +7802,7 @@ class V8_EXPORT MicrotaskQueue { | |
| 7454 7802 | 
             
             * kDoNotRunMicrotasks should be used to annotate calls not intended to trigger
         | 
| 7455 7803 | 
             
             * microtasks.
         | 
| 7456 7804 | 
             
             */
         | 
| 7457 | 
            -
            class V8_EXPORT MicrotasksScope {
         | 
| 7805 | 
            +
            class V8_EXPORT V8_NODISCARD MicrotasksScope {
         | 
| 7458 7806 | 
             
             public:
         | 
| 7459 7807 | 
             
              enum Type { kRunMicrotasks, kDoNotRunMicrotasks };
         | 
| 7460 7808 |  | 
| @@ -7487,11 +7835,9 @@ class V8_EXPORT MicrotasksScope { | |
| 7487 7835 | 
             
              bool run_;
         | 
| 7488 7836 | 
             
            };
         | 
| 7489 7837 |  | 
| 7490 | 
            -
             | 
| 7491 7838 | 
             
            // --- Failed Access Check Callback ---
         | 
| 7492 | 
            -
             | 
| 7493 | 
            -
             | 
| 7494 | 
            -
                                                      Local<Value> data);
         | 
| 7839 | 
            +
            using FailedAccessCheckCallback = void (*)(Local<Object> target,
         | 
| 7840 | 
            +
                                                       AccessType type, Local<Value> data);
         | 
| 7495 7841 |  | 
| 7496 7842 | 
             
            // --- AllowCodeGenerationFromStrings callbacks ---
         | 
| 7497 7843 |  | 
| @@ -7499,8 +7845,8 @@ typedef void (*FailedAccessCheckCallback)(Local<Object> target, | |
| 7499 7845 | 
             
             * Callback to check if code generation from strings is allowed. See
         | 
| 7500 7846 | 
             
             * Context::AllowCodeGenerationFromStrings.
         | 
| 7501 7847 | 
             
             */
         | 
| 7502 | 
            -
             | 
| 7503 | 
            -
             | 
| 7848 | 
            +
            using AllowCodeGenerationFromStringsCallback = bool (*)(Local<Context> context,
         | 
| 7849 | 
            +
                                                                    Local<String> source);
         | 
| 7504 7850 |  | 
| 7505 7851 | 
             
            struct ModifyCodeGenerationFromStringsResult {
         | 
| 7506 7852 | 
             
              // If true, proceed with the codegen algorithm. Otherwise, block it.
         | 
| @@ -7513,34 +7859,42 @@ struct ModifyCodeGenerationFromStringsResult { | |
| 7513 7859 |  | 
| 7514 7860 | 
             
            /**
         | 
| 7515 7861 | 
             
             * Callback to check if codegen is allowed from a source object, and convert
         | 
| 7516 | 
            -
             * the source to string if necessary.See | 
| 7862 | 
            +
             * the source to string if necessary. See: ModifyCodeGenerationFromStrings.
         | 
| 7517 7863 | 
             
             */
         | 
| 7518 | 
            -
             | 
| 7519 | 
            -
                * | 
| 7864 | 
            +
            using ModifyCodeGenerationFromStringsCallback =
         | 
| 7865 | 
            +
                ModifyCodeGenerationFromStringsResult (*)(Local<Context> context,
         | 
| 7520 7866 | 
             
                                                          Local<Value> source);
         | 
| 7867 | 
            +
            using ModifyCodeGenerationFromStringsCallback2 =
         | 
| 7868 | 
            +
                ModifyCodeGenerationFromStringsResult (*)(Local<Context> context,
         | 
| 7869 | 
            +
                                                          Local<Value> source,
         | 
| 7870 | 
            +
                                                          bool is_code_like);
         | 
| 7521 7871 |  | 
| 7522 7872 | 
             
            // --- WebAssembly compilation callbacks ---
         | 
| 7523 | 
            -
             | 
| 7873 | 
            +
            using ExtensionCallback = bool (*)(const FunctionCallbackInfo<Value>&);
         | 
| 7524 7874 |  | 
| 7525 | 
            -
             | 
| 7526 | 
            -
             | 
| 7875 | 
            +
            using AllowWasmCodeGenerationCallback = bool (*)(Local<Context> context,
         | 
| 7876 | 
            +
                                                             Local<String> source);
         | 
| 7527 7877 |  | 
| 7528 7878 | 
             
            // --- Callback for APIs defined on v8-supported objects, but implemented
         | 
| 7529 7879 | 
             
            // by the embedder. Example: WebAssembly.{compile|instantiate}Streaming ---
         | 
| 7530 | 
            -
             | 
| 7880 | 
            +
            using ApiImplementationCallback = void (*)(const FunctionCallbackInfo<Value>&);
         | 
| 7531 7881 |  | 
| 7532 7882 | 
             
            // --- Callback for WebAssembly.compileStreaming ---
         | 
| 7533 | 
            -
             | 
| 7534 | 
            -
             | 
| 7535 | 
            -
            // --- Callback for checking if WebAssembly threads are enabled ---
         | 
| 7536 | 
            -
            typedef bool (*WasmThreadsEnabledCallback)(Local<Context> context);
         | 
| 7883 | 
            +
            using WasmStreamingCallback = void (*)(const FunctionCallbackInfo<Value>&);
         | 
| 7537 7884 |  | 
| 7538 7885 | 
             
            // --- Callback for loading source map file for Wasm profiling support
         | 
| 7539 | 
            -
             | 
| 7540 | 
            -
             | 
| 7886 | 
            +
            using WasmLoadSourceMapCallback = Local<String> (*)(Isolate* isolate,
         | 
| 7887 | 
            +
                                                                const char* name);
         | 
| 7541 7888 |  | 
| 7542 7889 | 
             
            // --- Callback for checking if WebAssembly Simd is enabled ---
         | 
| 7543 | 
            -
             | 
| 7890 | 
            +
            using WasmSimdEnabledCallback = bool (*)(Local<Context> context);
         | 
| 7891 | 
            +
             | 
| 7892 | 
            +
            // --- Callback for checking if WebAssembly exceptions are enabled ---
         | 
| 7893 | 
            +
            using WasmExceptionsEnabledCallback = bool (*)(Local<Context> context);
         | 
| 7894 | 
            +
             | 
| 7895 | 
            +
            // --- Callback for checking if the SharedArrayBuffer constructor is enabled ---
         | 
| 7896 | 
            +
            using SharedArrayBufferConstructorEnabledCallback =
         | 
| 7897 | 
            +
                bool (*)(Local<Context> context);
         | 
| 7544 7898 |  | 
| 7545 7899 | 
             
            // --- Garbage Collection Callbacks ---
         | 
| 7546 7900 |  | 
| @@ -7584,9 +7938,9 @@ enum GCCallbackFlags { | |
| 7584 7938 | 
             
              kGCCallbackScheduleIdleGarbageCollection = 1 << 6,
         | 
| 7585 7939 | 
             
            };
         | 
| 7586 7940 |  | 
| 7587 | 
            -
             | 
| 7941 | 
            +
            using GCCallback = void (*)(GCType type, GCCallbackFlags flags);
         | 
| 7588 7942 |  | 
| 7589 | 
            -
             | 
| 7943 | 
            +
            using InterruptCallback = void (*)(Isolate* isolate, void* data);
         | 
| 7590 7944 |  | 
| 7591 7945 | 
             
            /**
         | 
| 7592 7946 | 
             
             * This callback is invoked when the heap size is close to the heap limit and
         | 
| @@ -7595,8 +7949,8 @@ typedef void (*InterruptCallback)(Isolate* isolate, void* data); | |
| 7595 7949 | 
             
             * than the current_heap_limit. The initial heap limit is the limit that was
         | 
| 7596 7950 | 
             
             * set after heap setup.
         | 
| 7597 7951 | 
             
             */
         | 
| 7598 | 
            -
             | 
| 7599 | 
            -
             | 
| 7952 | 
            +
            using NearHeapLimitCallback = size_t (*)(void* data, size_t current_heap_limit,
         | 
| 7953 | 
            +
                                                     size_t initial_heap_limit);
         | 
| 7600 7954 |  | 
| 7601 7955 | 
             
            /**
         | 
| 7602 7956 | 
             
             * Collection of shared per-process V8 memory information.
         | 
| @@ -7850,30 +8204,29 @@ enum JitCodeEventOptions { | |
| 7850 8204 | 
             
             *
         | 
| 7851 8205 | 
             
             * \param event code add, move or removal event.
         | 
| 7852 8206 | 
             
             */
         | 
| 7853 | 
            -
             | 
| 8207 | 
            +
            using JitCodeEventHandler = void (*)(const JitCodeEvent* event);
         | 
| 7854 8208 |  | 
| 7855 8209 | 
             
            /**
         | 
| 7856 8210 | 
             
             * Callback function passed to SetUnhandledExceptionCallback.
         | 
| 7857 8211 | 
             
             */
         | 
| 7858 8212 | 
             
            #if defined(V8_OS_WIN)
         | 
| 7859 | 
            -
             | 
| 7860 | 
            -
                _EXCEPTION_POINTERS* exception_pointers);
         | 
| 8213 | 
            +
            using UnhandledExceptionCallback =
         | 
| 8214 | 
            +
                int (*)(_EXCEPTION_POINTERS* exception_pointers);
         | 
| 7861 8215 | 
             
            #endif
         | 
| 7862 8216 |  | 
| 7863 8217 | 
             
            /**
         | 
| 7864 8218 | 
             
             * Interface for iterating through all external resources in the heap.
         | 
| 7865 8219 | 
             
             */
         | 
| 7866 | 
            -
            class V8_EXPORT ExternalResourceVisitor { | 
| 8220 | 
            +
            class V8_EXPORT ExternalResourceVisitor {
         | 
| 7867 8221 | 
             
             public:
         | 
| 7868 8222 | 
             
              virtual ~ExternalResourceVisitor() = default;
         | 
| 7869 8223 | 
             
              virtual void VisitExternalString(Local<String> string) {}
         | 
| 7870 8224 | 
             
            };
         | 
| 7871 8225 |  | 
| 7872 | 
            -
             | 
| 7873 8226 | 
             
            /**
         | 
| 7874 8227 | 
             
             * Interface for iterating through all the persistent handles in the heap.
         | 
| 7875 8228 | 
             
             */
         | 
| 7876 | 
            -
            class V8_EXPORT PersistentHandleVisitor { | 
| 8229 | 
            +
            class V8_EXPORT PersistentHandleVisitor {
         | 
| 7877 8230 | 
             
             public:
         | 
| 7878 8231 | 
             
              virtual ~PersistentHandleVisitor() = default;
         | 
| 7879 8232 | 
             
              virtual void VisitPersistentHandle(Persistent<Value>* value,
         | 
| @@ -7890,6 +8243,45 @@ class V8_EXPORT PersistentHandleVisitor {  // NOLINT | |
| 7890 8243 | 
             
             */
         | 
| 7891 8244 | 
             
            enum class MemoryPressureLevel { kNone, kModerate, kCritical };
         | 
| 7892 8245 |  | 
| 8246 | 
            +
            /**
         | 
| 8247 | 
            +
             * Handler for embedder roots on non-unified heap garbage collections.
         | 
| 8248 | 
            +
             */
         | 
| 8249 | 
            +
            class V8_EXPORT EmbedderRootsHandler {
         | 
| 8250 | 
            +
             public:
         | 
| 8251 | 
            +
              virtual ~EmbedderRootsHandler() = default;
         | 
| 8252 | 
            +
             | 
| 8253 | 
            +
              /**
         | 
| 8254 | 
            +
               * Returns true if the TracedGlobal handle should be considered as root for
         | 
| 8255 | 
            +
               * the currently running non-tracing garbage collection and false otherwise.
         | 
| 8256 | 
            +
               * The default implementation will keep all TracedGlobal references as roots.
         | 
| 8257 | 
            +
               *
         | 
| 8258 | 
            +
               * If this returns false, then V8 may decide that the object referred to by
         | 
| 8259 | 
            +
               * such a handle is reclaimed. In that case:
         | 
| 8260 | 
            +
               * - No action is required if handles are used with destructors, i.e., by just
         | 
| 8261 | 
            +
               *   using |TracedGlobal|.
         | 
| 8262 | 
            +
               * - When run without destructors, i.e., by using |TracedReference|, V8 calls
         | 
| 8263 | 
            +
               *  |ResetRoot|.
         | 
| 8264 | 
            +
               *
         | 
| 8265 | 
            +
               * Note that the |handle| is different from the handle that the embedder holds
         | 
| 8266 | 
            +
               * for retaining the object. The embedder may use |WrapperClassId()| to
         | 
| 8267 | 
            +
               * distinguish cases where it wants handles to be treated as roots from not
         | 
| 8268 | 
            +
               * being treated as roots.
         | 
| 8269 | 
            +
               */
         | 
| 8270 | 
            +
              virtual bool IsRoot(const v8::TracedReference<v8::Value>& handle) = 0;
         | 
| 8271 | 
            +
              virtual bool IsRoot(const v8::TracedGlobal<v8::Value>& handle) = 0;
         | 
| 8272 | 
            +
             | 
| 8273 | 
            +
              /**
         | 
| 8274 | 
            +
               * Used in combination with |IsRoot|. Called by V8 when an
         | 
| 8275 | 
            +
               * object that is backed by a handle is reclaimed by a non-tracing garbage
         | 
| 8276 | 
            +
               * collection. It is up to the embedder to reset the original handle.
         | 
| 8277 | 
            +
               *
         | 
| 8278 | 
            +
               * Note that the |handle| is different from the handle that the embedder holds
         | 
| 8279 | 
            +
               * for retaining the object. It is up to the embedder to find the original
         | 
| 8280 | 
            +
               * handle via the object or class id.
         | 
| 8281 | 
            +
               */
         | 
| 8282 | 
            +
              virtual void ResetRoot(const v8::TracedReference<v8::Value>& handle) = 0;
         | 
| 8283 | 
            +
            };
         | 
| 8284 | 
            +
             | 
| 7893 8285 | 
             
            /**
         | 
| 7894 8286 | 
             
             * Interface for tracing through the embedder heap. During a V8 garbage
         | 
| 7895 8287 | 
             
             * collection, V8 collects hidden fields of all potential wrappers, and at the
         | 
| @@ -7952,6 +8344,9 @@ class V8_EXPORT EmbedderHeapTracer { | |
| 7952 8344 | 
             
              /**
         | 
| 7953 8345 | 
             
               * Called by the embedder to notify V8 of an empty execution stack.
         | 
| 7954 8346 | 
             
               */
         | 
| 8347 | 
            +
              V8_DEPRECATE_SOON(
         | 
| 8348 | 
            +
                  "This call only optimized internal caches which V8 is able to figure out "
         | 
| 8349 | 
            +
                  "on its own now.")
         | 
| 7955 8350 | 
             
              void NotifyEmptyEmbedderStack();
         | 
| 7956 8351 |  | 
| 7957 8352 | 
             
              /**
         | 
| @@ -7963,7 +8358,7 @@ class V8_EXPORT EmbedderHeapTracer { | |
| 7963 8358 | 
             
              virtual void RegisterV8References(
         | 
| 7964 8359 | 
             
                  const std::vector<std::pair<void*, void*> >& embedder_fields) = 0;
         | 
| 7965 8360 |  | 
| 7966 | 
            -
              void RegisterEmbedderReference(const  | 
| 8361 | 
            +
              void RegisterEmbedderReference(const BasicTracedReference<v8::Data>& ref);
         | 
| 7967 8362 |  | 
| 7968 8363 | 
             
              /**
         | 
| 7969 8364 | 
             
               * Called at the beginning of a GC cycle.
         | 
| @@ -8015,34 +8410,14 @@ class V8_EXPORT EmbedderHeapTracer { | |
| 8015 8410 | 
             
              void FinalizeTracing();
         | 
| 8016 8411 |  | 
| 8017 8412 | 
             
              /**
         | 
| 8018 | 
            -
               *  | 
| 8019 | 
            -
               * the currently running non-tracing garbage collection and false otherwise.
         | 
| 8020 | 
            -
               * The default implementation will keep all TracedGlobal references as roots.
         | 
| 8021 | 
            -
               *
         | 
| 8022 | 
            -
               * If this returns false, then V8 may decide that the object referred to by
         | 
| 8023 | 
            -
               * such a handle is reclaimed. In that case:
         | 
| 8024 | 
            -
               * - No action is required if handles are used with destructors, i.e., by just
         | 
| 8025 | 
            -
               * using |TracedGlobal|.
         | 
| 8026 | 
            -
               * - When run without destructors, i.e., by using
         | 
| 8027 | 
            -
               * |TracedReference|, V8 calls |ResetHandleInNonTracingGC|.
         | 
| 8028 | 
            -
               *
         | 
| 8029 | 
            -
               * Note that the |handle| is different from the handle that the embedder holds
         | 
| 8030 | 
            -
               * for retaining the object. The embedder may use |WrapperClassId()| to
         | 
| 8031 | 
            -
               * distinguish cases where it wants handles to be treated as roots from not
         | 
| 8032 | 
            -
               * being treated as roots.
         | 
| 8413 | 
            +
               * See documentation on EmbedderRootsHandler.
         | 
| 8033 8414 | 
             
               */
         | 
| 8034 8415 | 
             
              virtual bool IsRootForNonTracingGC(
         | 
| 8035 8416 | 
             
                  const v8::TracedReference<v8::Value>& handle);
         | 
| 8036 8417 | 
             
              virtual bool IsRootForNonTracingGC(const v8::TracedGlobal<v8::Value>& handle);
         | 
| 8037 8418 |  | 
| 8038 8419 | 
             
              /**
         | 
| 8039 | 
            -
               *  | 
| 8040 | 
            -
               * object that is backed by a handle is reclaimed by a non-tracing garbage
         | 
| 8041 | 
            -
               * collection. It is up to the embedder to reset the original handle.
         | 
| 8042 | 
            -
               *
         | 
| 8043 | 
            -
               * Note that the |handle| is different from the handle that the embedder holds
         | 
| 8044 | 
            -
               * for retaining the object. It is up to the embedder to find the original
         | 
| 8045 | 
            -
               * handle via the object or class id.
         | 
| 8420 | 
            +
               * See documentation on EmbedderRootsHandler.
         | 
| 8046 8421 | 
             
               */
         | 
| 8047 8422 | 
             
              virtual void ResetHandleInNonTracingGC(
         | 
| 8048 8423 | 
             
                  const v8::TracedReference<v8::Value>& handle);
         | 
| @@ -8084,8 +8459,8 @@ class V8_EXPORT EmbedderHeapTracer { | |
| 8084 8459 | 
             
             * serialized verbatim.
         | 
| 8085 8460 | 
             
             */
         | 
| 8086 8461 | 
             
            struct SerializeInternalFieldsCallback {
         | 
| 8087 | 
            -
               | 
| 8088 | 
            -
             | 
| 8462 | 
            +
              using CallbackFunction = StartupData (*)(Local<Object> holder, int index,
         | 
| 8463 | 
            +
                                                       void* data);
         | 
| 8089 8464 | 
             
              SerializeInternalFieldsCallback(CallbackFunction function = nullptr,
         | 
| 8090 8465 | 
             
                                              void* data_arg = nullptr)
         | 
| 8091 8466 | 
             
                  : callback(function), data(data_arg) {}
         | 
| @@ -8094,15 +8469,15 @@ struct SerializeInternalFieldsCallback { | |
| 8094 8469 | 
             
            };
         | 
| 8095 8470 | 
             
            // Note that these fields are called "internal fields" in the API and called
         | 
| 8096 8471 | 
             
            // "embedder fields" within V8.
         | 
| 8097 | 
            -
             | 
| 8472 | 
            +
            using SerializeEmbedderFieldsCallback = SerializeInternalFieldsCallback;
         | 
| 8098 8473 |  | 
| 8099 8474 | 
             
            /**
         | 
| 8100 8475 | 
             
             * Callback and supporting data used to implement embedder logic to deserialize
         | 
| 8101 8476 | 
             
             * internal fields.
         | 
| 8102 8477 | 
             
             */
         | 
| 8103 8478 | 
             
            struct DeserializeInternalFieldsCallback {
         | 
| 8104 | 
            -
               | 
| 8105 | 
            -
             | 
| 8479 | 
            +
              using CallbackFunction = void (*)(Local<Object> holder, int index,
         | 
| 8480 | 
            +
                                                StartupData payload, void* data);
         | 
| 8106 8481 | 
             
              DeserializeInternalFieldsCallback(CallbackFunction function = nullptr,
         | 
| 8107 8482 | 
             
                                                void* data_arg = nullptr)
         | 
| 8108 8483 | 
             
                  : callback(function), data(data_arg) {}
         | 
| @@ -8110,7 +8485,7 @@ struct DeserializeInternalFieldsCallback { | |
| 8110 8485 | 
             
                               void* data);
         | 
| 8111 8486 | 
             
              void* data;
         | 
| 8112 8487 | 
             
            };
         | 
| 8113 | 
            -
             | 
| 8488 | 
            +
            using DeserializeEmbedderFieldsCallback = DeserializeInternalFieldsCallback;
         | 
| 8114 8489 |  | 
| 8115 8490 | 
             
            /**
         | 
| 8116 8491 | 
             
             * Controls how the default MeasureMemoryDelegate reports the result of
         | 
| @@ -8186,26 +8561,15 @@ class V8_EXPORT Isolate { | |
| 8186 8561 | 
             
              /**
         | 
| 8187 8562 | 
             
               * Initial configuration parameters for a new Isolate.
         | 
| 8188 8563 | 
             
               */
         | 
| 8189 | 
            -
              struct CreateParams {
         | 
| 8190 | 
            -
                CreateParams()
         | 
| 8191 | 
            -
             | 
| 8192 | 
            -
                      snapshot_blob(nullptr),
         | 
| 8193 | 
            -
                      counter_lookup_callback(nullptr),
         | 
| 8194 | 
            -
                      create_histogram_callback(nullptr),
         | 
| 8195 | 
            -
                      add_histogram_sample_callback(nullptr),
         | 
| 8196 | 
            -
                      array_buffer_allocator(nullptr),
         | 
| 8197 | 
            -
                      array_buffer_allocator_shared(),
         | 
| 8198 | 
            -
                      external_references(nullptr),
         | 
| 8199 | 
            -
                      allow_atomics_wait(true),
         | 
| 8200 | 
            -
                      only_terminate_in_safe_scope(false),
         | 
| 8201 | 
            -
                      embedder_wrapper_type_index(-1),
         | 
| 8202 | 
            -
                      embedder_wrapper_object_index(-1) {}
         | 
| 8564 | 
            +
              struct V8_EXPORT CreateParams {
         | 
| 8565 | 
            +
                CreateParams();
         | 
| 8566 | 
            +
                ~CreateParams();
         | 
| 8203 8567 |  | 
| 8204 8568 | 
             
                /**
         | 
| 8205 8569 | 
             
                 * Allows the host application to provide the address of a function that is
         | 
| 8206 8570 | 
             
                 * notified each time code is added, moved or removed.
         | 
| 8207 8571 | 
             
                 */
         | 
| 8208 | 
            -
                JitCodeEventHandler code_event_handler;
         | 
| 8572 | 
            +
                JitCodeEventHandler code_event_handler = nullptr;
         | 
| 8209 8573 |  | 
| 8210 8574 | 
             
                /**
         | 
| 8211 8575 | 
             
                 * ResourceConstraints to use for the new Isolate.
         | 
| @@ -8215,14 +8579,13 @@ class V8_EXPORT Isolate { | |
| 8215 8579 | 
             
                /**
         | 
| 8216 8580 | 
             
                 * Explicitly specify a startup snapshot blob. The embedder owns the blob.
         | 
| 8217 8581 | 
             
                 */
         | 
| 8218 | 
            -
                StartupData* snapshot_blob;
         | 
| 8219 | 
            -
             | 
| 8582 | 
            +
                StartupData* snapshot_blob = nullptr;
         | 
| 8220 8583 |  | 
| 8221 8584 | 
             
                /**
         | 
| 8222 8585 | 
             
                 * Enables the host application to provide a mechanism for recording
         | 
| 8223 8586 | 
             
                 * statistics counters.
         | 
| 8224 8587 | 
             
                 */
         | 
| 8225 | 
            -
                CounterLookupCallback counter_lookup_callback;
         | 
| 8588 | 
            +
                CounterLookupCallback counter_lookup_callback = nullptr;
         | 
| 8226 8589 |  | 
| 8227 8590 | 
             
                /**
         | 
| 8228 8591 | 
             
                 * Enables the host application to provide a mechanism for recording
         | 
| @@ -8230,8 +8593,8 @@ class V8_EXPORT Isolate { | |
| 8230 8593 | 
             
                 * histogram which will later be passed to the AddHistogramSample
         | 
| 8231 8594 | 
             
                 * function.
         | 
| 8232 8595 | 
             
                 */
         | 
| 8233 | 
            -
                CreateHistogramCallback create_histogram_callback;
         | 
| 8234 | 
            -
                AddHistogramSampleCallback add_histogram_sample_callback;
         | 
| 8596 | 
            +
                CreateHistogramCallback create_histogram_callback = nullptr;
         | 
| 8597 | 
            +
                AddHistogramSampleCallback add_histogram_sample_callback = nullptr;
         | 
| 8235 8598 |  | 
| 8236 8599 | 
             
                /**
         | 
| 8237 8600 | 
             
                 * The ArrayBuffer::Allocator to use for allocating and freeing the backing
         | 
| @@ -8242,7 +8605,7 @@ class V8_EXPORT Isolate { | |
| 8242 8605 | 
             
                 * to the allocator, in order to facilitate lifetime
         | 
| 8243 8606 | 
             
                 * management for the allocator instance.
         | 
| 8244 8607 | 
             
                 */
         | 
| 8245 | 
            -
                ArrayBuffer::Allocator* array_buffer_allocator;
         | 
| 8608 | 
            +
                ArrayBuffer::Allocator* array_buffer_allocator = nullptr;
         | 
| 8246 8609 | 
             
                std::shared_ptr<ArrayBuffer::Allocator> array_buffer_allocator_shared;
         | 
| 8247 8610 |  | 
| 8248 8611 | 
             
                /**
         | 
| @@ -8251,34 +8614,38 @@ class V8_EXPORT Isolate { | |
| 8251 8614 | 
             
                 * deserialization. This array and its content must stay valid for the
         | 
| 8252 8615 | 
             
                 * entire lifetime of the isolate.
         | 
| 8253 8616 | 
             
                 */
         | 
| 8254 | 
            -
                const intptr_t* external_references;
         | 
| 8617 | 
            +
                const intptr_t* external_references = nullptr;
         | 
| 8255 8618 |  | 
| 8256 8619 | 
             
                /**
         | 
| 8257 8620 | 
             
                 * Whether calling Atomics.wait (a function that may block) is allowed in
         | 
| 8258 8621 | 
             
                 * this isolate. This can also be configured via SetAllowAtomicsWait.
         | 
| 8259 8622 | 
             
                 */
         | 
| 8260 | 
            -
                bool allow_atomics_wait;
         | 
| 8623 | 
            +
                bool allow_atomics_wait = true;
         | 
| 8261 8624 |  | 
| 8262 8625 | 
             
                /**
         | 
| 8263 8626 | 
             
                 * Termination is postponed when there is no active SafeForTerminationScope.
         | 
| 8264 8627 | 
             
                 */
         | 
| 8265 | 
            -
                bool only_terminate_in_safe_scope;
         | 
| 8628 | 
            +
                bool only_terminate_in_safe_scope = false;
         | 
| 8266 8629 |  | 
| 8267 8630 | 
             
                /**
         | 
| 8268 8631 | 
             
                 * The following parameters describe the offsets for addressing type info
         | 
| 8269 8632 | 
             
                 * for wrapped API objects and are used by the fast C API
         | 
| 8270 8633 | 
             
                 * (for details see v8-fast-api-calls.h).
         | 
| 8271 8634 | 
             
                 */
         | 
| 8272 | 
            -
                int embedder_wrapper_type_index;
         | 
| 8273 | 
            -
                int embedder_wrapper_object_index;
         | 
| 8274 | 
            -
              };
         | 
| 8635 | 
            +
                int embedder_wrapper_type_index = -1;
         | 
| 8636 | 
            +
                int embedder_wrapper_object_index = -1;
         | 
| 8275 8637 |  | 
| 8638 | 
            +
                V8_DEPRECATED(
         | 
| 8639 | 
            +
                    "Setting this has no effect. Embedders should ignore import assertions "
         | 
| 8640 | 
            +
                    "that they do not use.")
         | 
| 8641 | 
            +
                std::vector<std::string> supported_import_assertions;
         | 
| 8642 | 
            +
              };
         | 
| 8276 8643 |  | 
| 8277 8644 | 
             
              /**
         | 
| 8278 8645 | 
             
               * Stack-allocated class which sets the isolate for all operations
         | 
| 8279 8646 | 
             
               * executed within a local scope.
         | 
| 8280 8647 | 
             
               */
         | 
| 8281 | 
            -
              class V8_EXPORT Scope {
         | 
| 8648 | 
            +
              class V8_EXPORT V8_NODISCARD Scope {
         | 
| 8282 8649 | 
             
               public:
         | 
| 8283 8650 | 
             
                explicit Scope(Isolate* isolate) : isolate_(isolate) {
         | 
| 8284 8651 | 
             
                  isolate->Enter();
         | 
| @@ -8294,11 +8661,10 @@ class V8_EXPORT Isolate { | |
| 8294 8661 | 
             
                Isolate* const isolate_;
         | 
| 8295 8662 | 
             
              };
         | 
| 8296 8663 |  | 
| 8297 | 
            -
             | 
| 8298 8664 | 
             
              /**
         | 
| 8299 8665 | 
             
               * Assert that no Javascript code is invoked.
         | 
| 8300 8666 | 
             
               */
         | 
| 8301 | 
            -
              class V8_EXPORT DisallowJavascriptExecutionScope {
         | 
| 8667 | 
            +
              class V8_EXPORT V8_NODISCARD DisallowJavascriptExecutionScope {
         | 
| 8302 8668 | 
             
               public:
         | 
| 8303 8669 | 
             
                enum OnFailure { CRASH_ON_FAILURE, THROW_ON_FAILURE, DUMP_ON_FAILURE };
         | 
| 8304 8670 |  | 
| @@ -8313,14 +8679,17 @@ class V8_EXPORT Isolate { | |
| 8313 8679 |  | 
| 8314 8680 | 
             
               private:
         | 
| 8315 8681 | 
             
                OnFailure on_failure_;
         | 
| 8316 | 
            -
                 | 
| 8317 | 
            -
              };
         | 
| 8682 | 
            +
                Isolate* isolate_;
         | 
| 8318 8683 |  | 
| 8684 | 
            +
                bool was_execution_allowed_assert_;
         | 
| 8685 | 
            +
                bool was_execution_allowed_throws_;
         | 
| 8686 | 
            +
                bool was_execution_allowed_dump_;
         | 
| 8687 | 
            +
              };
         | 
| 8319 8688 |  | 
| 8320 8689 | 
             
              /**
         | 
| 8321 8690 | 
             
               * Introduce exception to DisallowJavascriptExecutionScope.
         | 
| 8322 8691 | 
             
               */
         | 
| 8323 | 
            -
              class V8_EXPORT AllowJavascriptExecutionScope {
         | 
| 8692 | 
            +
              class V8_EXPORT V8_NODISCARD AllowJavascriptExecutionScope {
         | 
| 8324 8693 | 
             
               public:
         | 
| 8325 8694 | 
             
                explicit AllowJavascriptExecutionScope(Isolate* isolate);
         | 
| 8326 8695 | 
             
                ~AllowJavascriptExecutionScope();
         | 
| @@ -8332,16 +8701,17 @@ class V8_EXPORT Isolate { | |
| 8332 8701 | 
             
                    const AllowJavascriptExecutionScope&) = delete;
         | 
| 8333 8702 |  | 
| 8334 8703 | 
             
               private:
         | 
| 8335 | 
            -
                 | 
| 8336 | 
            -
                 | 
| 8337 | 
            -
                 | 
| 8704 | 
            +
                Isolate* isolate_;
         | 
| 8705 | 
            +
                bool was_execution_allowed_assert_;
         | 
| 8706 | 
            +
                bool was_execution_allowed_throws_;
         | 
| 8707 | 
            +
                bool was_execution_allowed_dump_;
         | 
| 8338 8708 | 
             
              };
         | 
| 8339 8709 |  | 
| 8340 8710 | 
             
              /**
         | 
| 8341 8711 | 
             
               * Do not run microtasks while this scope is active, even if microtasks are
         | 
| 8342 8712 | 
             
               * automatically executed otherwise.
         | 
| 8343 8713 | 
             
               */
         | 
| 8344 | 
            -
              class V8_EXPORT SuppressMicrotaskExecutionScope {
         | 
| 8714 | 
            +
              class V8_EXPORT V8_NODISCARD SuppressMicrotaskExecutionScope {
         | 
| 8345 8715 | 
             
               public:
         | 
| 8346 8716 | 
             
                explicit SuppressMicrotaskExecutionScope(
         | 
| 8347 8717 | 
             
                    Isolate* isolate, MicrotaskQueue* microtask_queue = nullptr);
         | 
| @@ -8365,7 +8735,7 @@ class V8_EXPORT Isolate { | |
| 8365 8735 | 
             
               * This scope allows terminations inside direct V8 API calls and forbid them
         | 
| 8366 8736 | 
             
               * inside any recursive API calls without explicit SafeForTerminationScope.
         | 
| 8367 8737 | 
             
               */
         | 
| 8368 | 
            -
              class V8_EXPORT SafeForTerminationScope {
         | 
| 8738 | 
            +
              class V8_EXPORT V8_NODISCARD SafeForTerminationScope {
         | 
| 8369 8739 | 
             
               public:
         | 
| 8370 8740 | 
             
                explicit SafeForTerminationScope(v8::Isolate* isolate);
         | 
| 8371 8741 | 
             
                ~SafeForTerminationScope();
         | 
| @@ -8424,8 +8794,8 @@ class V8_EXPORT Isolate { | |
| 8424 8794 | 
             
                kArrayInstanceProtoModified = 27,
         | 
| 8425 8795 | 
             
                kArrayInstanceConstructorModified = 28,
         | 
| 8426 8796 | 
             
                kLegacyFunctionDeclaration = 29,
         | 
| 8427 | 
            -
                kRegExpPrototypeSourceGetter = 30,
         | 
| 8428 | 
            -
                kRegExpPrototypeOldFlagGetter = 31,
         | 
| 8797 | 
            +
                kRegExpPrototypeSourceGetter = 30,   // Unused.
         | 
| 8798 | 
            +
                kRegExpPrototypeOldFlagGetter = 31,  // Unused.
         | 
| 8429 8799 | 
             
                kDecimalWithLeadingZeroInStrictMode = 32,
         | 
| 8430 8800 | 
             
                kLegacyDateParser = 33,
         | 
| 8431 8801 | 
             
                kDefineGetterOrSetterWouldThrow = 34,
         | 
| @@ -8465,7 +8835,7 @@ class V8_EXPORT Isolate { | |
| 8465 8835 | 
             
                kDateToLocaleTimeString = 68,
         | 
| 8466 8836 | 
             
                kAttemptOverrideReadOnlyOnPrototypeSloppy = 69,
         | 
| 8467 8837 | 
             
                kAttemptOverrideReadOnlyOnPrototypeStrict = 70,
         | 
| 8468 | 
            -
                kOptimizedFunctionWithOneShotBytecode = 71,
         | 
| 8838 | 
            +
                kOptimizedFunctionWithOneShotBytecode = 71,  // Unused.
         | 
| 8469 8839 | 
             
                kRegExpMatchIsTrueishOnNonJSRegExp = 72,
         | 
| 8470 8840 | 
             
                kRegExpMatchIsFalseishOnJSRegExp = 73,
         | 
| 8471 8841 | 
             
                kDateGetTimezoneOffset = 74,  // Unused.
         | 
| @@ -8503,8 +8873,10 @@ class V8_EXPORT Isolate { | |
| 8503 8873 | 
             
                kWasmSimdOpcodes = 106,
         | 
| 8504 8874 | 
             
                kVarRedeclaredCatchBinding = 107,
         | 
| 8505 8875 | 
             
                kWasmRefTypes = 108,
         | 
| 8506 | 
            -
                kWasmBulkMemory = 109,
         | 
| 8876 | 
            +
                kWasmBulkMemory = 109,  // Unused.
         | 
| 8507 8877 | 
             
                kWasmMultiValue = 110,
         | 
| 8878 | 
            +
                kWasmExceptionHandling = 111,
         | 
| 8879 | 
            +
                kInvalidatedMegaDOMProtector = 112,
         | 
| 8508 8880 |  | 
| 8509 8881 | 
             
                // If you add new values here, you'll also need to update Chromium's:
         | 
| 8510 8882 | 
             
                // web_feature.mojom, use_counter_callback.cc, and enums.xml. V8 changes to
         | 
| @@ -8522,8 +8894,8 @@ class V8_EXPORT Isolate { | |
| 8522 8894 | 
             
                              kMessageWarning,
         | 
| 8523 8895 | 
             
              };
         | 
| 8524 8896 |  | 
| 8525 | 
            -
               | 
| 8526 | 
            -
             | 
| 8897 | 
            +
              using UseCounterCallback = void (*)(Isolate* isolate,
         | 
| 8898 | 
            +
                                                  UseCounterFeature feature);
         | 
| 8527 8899 |  | 
| 8528 8900 | 
             
              /**
         | 
| 8529 8901 | 
             
               * Allocates a new isolate but does not initialize it. Does not change the
         | 
| @@ -8565,6 +8937,14 @@ class V8_EXPORT Isolate { | |
| 8565 8937 | 
             
               */
         | 
| 8566 8938 | 
             
              static Isolate* GetCurrent();
         | 
| 8567 8939 |  | 
| 8940 | 
            +
              /**
         | 
| 8941 | 
            +
               * Returns the entered isolate for the current thread or NULL in
         | 
| 8942 | 
            +
               * case there is no current isolate.
         | 
| 8943 | 
            +
               *
         | 
| 8944 | 
            +
               * No checks are performed by this method.
         | 
| 8945 | 
            +
               */
         | 
| 8946 | 
            +
              static Isolate* TryGetCurrent();
         | 
| 8947 | 
            +
             | 
| 8568 8948 | 
             
              /**
         | 
| 8569 8949 | 
             
               * Clears the set of objects held strongly by the heap. This set of
         | 
| 8570 8950 | 
             
               * objects are originally built when a WeakRef is created or
         | 
| @@ -8589,7 +8969,7 @@ class V8_EXPORT Isolate { | |
| 8589 8969 | 
             
               * - the custom callback set returns true.
         | 
| 8590 8970 | 
             
               * Otherwise, the custom callback will not be called and V8 will not abort.
         | 
| 8591 8971 | 
             
               */
         | 
| 8592 | 
            -
               | 
| 8972 | 
            +
              using AbortOnUncaughtExceptionCallback = bool (*)(Isolate*);
         | 
| 8593 8973 | 
             
              void SetAbortOnUncaughtExceptionCallback(
         | 
| 8594 8974 | 
             
                  AbortOnUncaughtExceptionCallback callback);
         | 
| 8595 8975 |  | 
| @@ -8597,9 +8977,19 @@ class V8_EXPORT Isolate { | |
| 8597 8977 | 
             
               * This specifies the callback called by the upcoming dynamic
         | 
| 8598 8978 | 
             
               * import() language feature to load modules.
         | 
| 8599 8979 | 
             
               */
         | 
| 8980 | 
            +
              V8_DEPRECATED(
         | 
| 8981 | 
            +
                  "Use the version of SetHostImportModuleDynamicallyCallback that takes a "
         | 
| 8982 | 
            +
                  "HostImportModuleDynamicallyWithImportAssertionsCallback instead")
         | 
| 8600 8983 | 
             
              void SetHostImportModuleDynamicallyCallback(
         | 
| 8601 8984 | 
             
                  HostImportModuleDynamicallyCallback callback);
         | 
| 8602 8985 |  | 
| 8986 | 
            +
              /**
         | 
| 8987 | 
            +
               * This specifies the callback called by the upcoming dynamic
         | 
| 8988 | 
            +
               * import() language feature to load modules.
         | 
| 8989 | 
            +
               */
         | 
| 8990 | 
            +
              void SetHostImportModuleDynamicallyCallback(
         | 
| 8991 | 
            +
                  HostImportModuleDynamicallyWithImportAssertionsCallback callback);
         | 
| 8992 | 
            +
             | 
| 8603 8993 | 
             
              /**
         | 
| 8604 8994 | 
             
               * This specifies the callback called by the upcoming import.meta
         | 
| 8605 8995 | 
             
               * language feature to retrieve host-defined meta data for a module.
         | 
| @@ -8621,6 +9011,13 @@ class V8_EXPORT Isolate { | |
| 8621 9011 | 
             
               */
         | 
| 8622 9012 | 
             
              void MemoryPressureNotification(MemoryPressureLevel level);
         | 
| 8623 9013 |  | 
| 9014 | 
            +
              /**
         | 
| 9015 | 
            +
               * Drop non-essential caches. Should only be called from testing code.
         | 
| 9016 | 
            +
               * The method can potentially block for a long time and does not necessarily
         | 
| 9017 | 
            +
               * trigger GC.
         | 
| 9018 | 
            +
               */
         | 
| 9019 | 
            +
              void ClearCachesForTesting();
         | 
| 9020 | 
            +
             | 
| 8624 9021 | 
             
              /**
         | 
| 8625 9022 | 
             
               * Methods below this point require holding a lock (using Locker) in
         | 
| 8626 9023 | 
             
               * a multi-threaded environment.
         | 
| @@ -8753,7 +9150,7 @@ class V8_EXPORT Isolate { | |
| 8753 9150 | 
             
                  std::unique_ptr<MeasureMemoryDelegate> delegate,
         | 
| 8754 9151 | 
             
                  MeasureMemoryExecution execution = MeasureMemoryExecution::kDefault);
         | 
| 8755 9152 |  | 
| 8756 | 
            -
               | 
| 9153 | 
            +
              V8_DEPRECATED("Use the version with a delegate")
         | 
| 8757 9154 | 
             
              MaybeLocal<Promise> MeasureMemory(Local<Context> context,
         | 
| 8758 9155 | 
             
                                                MeasureMemoryMode mode);
         | 
| 8759 9156 |  | 
| @@ -8816,10 +9213,6 @@ class V8_EXPORT Isolate { | |
| 8816 9213 | 
             
               */
         | 
| 8817 9214 | 
             
              Local<Context> GetCurrentContext();
         | 
| 8818 9215 |  | 
| 8819 | 
            -
              /** Returns the last context entered through V8's C++ API. */
         | 
| 8820 | 
            -
              V8_DEPRECATED("Use GetEnteredOrMicrotaskContext().")
         | 
| 8821 | 
            -
              Local<Context> GetEnteredContext();
         | 
| 8822 | 
            -
             | 
| 8823 9216 | 
             
              /**
         | 
| 8824 9217 | 
             
               * Returns either the last context entered through V8's C++ API, or the
         | 
| 8825 9218 | 
             
               * context of the currently running microtask while processing microtasks.
         | 
| @@ -8834,6 +9227,17 @@ class V8_EXPORT Isolate { | |
| 8834 9227 | 
             
               */
         | 
| 8835 9228 | 
             
              Local<Context> GetIncumbentContext();
         | 
| 8836 9229 |  | 
| 9230 | 
            +
              /**
         | 
| 9231 | 
            +
               * Schedules a v8::Exception::Error with the given message.
         | 
| 9232 | 
            +
               * See ThrowException for more details. Templatized to provide compile-time
         | 
| 9233 | 
            +
               * errors in case of too long strings (see v8::String::NewFromUtf8Literal).
         | 
| 9234 | 
            +
               */
         | 
| 9235 | 
            +
              template <int N>
         | 
| 9236 | 
            +
              Local<Value> ThrowError(const char (&message)[N]) {
         | 
| 9237 | 
            +
                return ThrowError(String::NewFromUtf8Literal(this, message));
         | 
| 9238 | 
            +
              }
         | 
| 9239 | 
            +
              Local<Value> ThrowError(Local<String> message);
         | 
| 9240 | 
            +
             | 
| 8837 9241 | 
             
              /**
         | 
| 8838 9242 | 
             
               * Schedules an exception to be thrown when returning to JavaScript.  When an
         | 
| 8839 9243 | 
             
               * exception has been scheduled it is illegal to invoke any JavaScript
         | 
| @@ -8842,10 +9246,10 @@ class V8_EXPORT Isolate { | |
| 8842 9246 | 
             
               */
         | 
| 8843 9247 | 
             
              Local<Value> ThrowException(Local<Value> exception);
         | 
| 8844 9248 |  | 
| 8845 | 
            -
               | 
| 8846 | 
            -
             | 
| 8847 | 
            -
               | 
| 8848 | 
            -
             | 
| 9249 | 
            +
              using GCCallback = void (*)(Isolate* isolate, GCType type,
         | 
| 9250 | 
            +
                                          GCCallbackFlags flags);
         | 
| 9251 | 
            +
              using GCCallbackWithData = void (*)(Isolate* isolate, GCType type,
         | 
| 9252 | 
            +
                                                  GCCallbackFlags flags, void* data);
         | 
| 8849 9253 |  | 
| 8850 9254 | 
             
              /**
         | 
| 8851 9255 | 
             
               * Enables the host application to receive a notification before a
         | 
| @@ -8878,6 +9282,42 @@ class V8_EXPORT Isolate { | |
| 8878 9282 | 
             
               */
         | 
| 8879 9283 | 
             
              EmbedderHeapTracer* GetEmbedderHeapTracer();
         | 
| 8880 9284 |  | 
| 9285 | 
            +
              /**
         | 
| 9286 | 
            +
               * Sets an embedder roots handle that V8 should consider when performing
         | 
| 9287 | 
            +
               * non-unified heap garbage collections.
         | 
| 9288 | 
            +
               *
         | 
| 9289 | 
            +
               * Using only EmbedderHeapTracer automatically sets up a default handler.
         | 
| 9290 | 
            +
               * The intended use case is for setting a custom handler after invoking
         | 
| 9291 | 
            +
               * `AttachCppHeap()`.
         | 
| 9292 | 
            +
               *
         | 
| 9293 | 
            +
               * V8 does not take ownership of the handler.
         | 
| 9294 | 
            +
               */
         | 
| 9295 | 
            +
              void SetEmbedderRootsHandler(EmbedderRootsHandler* handler);
         | 
| 9296 | 
            +
             | 
| 9297 | 
            +
              /**
         | 
| 9298 | 
            +
               * Attaches a managed C++ heap as an extension to the JavaScript heap. The
         | 
| 9299 | 
            +
               * embedder maintains ownership of the CppHeap. At most one C++ heap can be
         | 
| 9300 | 
            +
               * attached to V8.
         | 
| 9301 | 
            +
               *
         | 
| 9302 | 
            +
               * This is an experimental feature and may still change significantly.
         | 
| 9303 | 
            +
               */
         | 
| 9304 | 
            +
              void AttachCppHeap(CppHeap*);
         | 
| 9305 | 
            +
             | 
| 9306 | 
            +
              /**
         | 
| 9307 | 
            +
               * Detaches a managed C++ heap if one was attached using `AttachCppHeap()`.
         | 
| 9308 | 
            +
               *
         | 
| 9309 | 
            +
               * This is an experimental feature and may still change significantly.
         | 
| 9310 | 
            +
               */
         | 
| 9311 | 
            +
              void DetachCppHeap();
         | 
| 9312 | 
            +
             | 
| 9313 | 
            +
              /**
         | 
| 9314 | 
            +
               * This is an experimental feature and may still change significantly.
         | 
| 9315 | 
            +
             | 
| 9316 | 
            +
               * \returns the C++ heap managed by V8. Only available if such a heap has been
         | 
| 9317 | 
            +
               *   attached using `AttachCppHeap()`.
         | 
| 9318 | 
            +
               */
         | 
| 9319 | 
            +
              CppHeap* GetCppHeap() const;
         | 
| 9320 | 
            +
             | 
| 8881 9321 | 
             
              /**
         | 
| 8882 9322 | 
             
               * Use for |AtomicsWaitCallback| to indicate the type of event it receives.
         | 
| 8883 9323 | 
             
               */
         | 
| @@ -8942,12 +9382,12 @@ class V8_EXPORT Isolate { | |
| 8942 9382 | 
             
               * This callback may schedule exceptions, *unless* |event| is equal to
         | 
| 8943 9383 | 
             
               * |kTerminatedExecution|.
         | 
| 8944 9384 | 
             
               */
         | 
| 8945 | 
            -
               | 
| 8946 | 
            -
             | 
| 8947 | 
            -
             | 
| 8948 | 
            -
             | 
| 8949 | 
            -
             | 
| 8950 | 
            -
             | 
| 9385 | 
            +
              using AtomicsWaitCallback = void (*)(AtomicsWaitEvent event,
         | 
| 9386 | 
            +
                                                   Local<SharedArrayBuffer> array_buffer,
         | 
| 9387 | 
            +
                                                   size_t offset_in_bytes, int64_t value,
         | 
| 9388 | 
            +
                                                   double timeout_in_ms,
         | 
| 9389 | 
            +
                                                   AtomicsWaitWakeHandle* stop_handle,
         | 
| 9390 | 
            +
                                                   void* data);
         | 
| 8951 9391 |  | 
| 8952 9392 | 
             
              /**
         | 
| 8953 9393 | 
             
               * Set a new |AtomicsWaitCallback|. This overrides an earlier
         | 
| @@ -8979,7 +9419,7 @@ class V8_EXPORT Isolate { | |
| 8979 9419 | 
             
                                            void* data = nullptr);
         | 
| 8980 9420 | 
             
              void RemoveGCEpilogueCallback(GCCallback callback);
         | 
| 8981 9421 |  | 
| 8982 | 
            -
               | 
| 9422 | 
            +
              using GetExternallyAllocatedMemoryInBytesCallback = size_t (*)();
         | 
| 8983 9423 |  | 
| 8984 9424 | 
             
              /**
         | 
| 8985 9425 | 
             
               * Set the callback that tells V8 how much memory is currently allocated
         | 
| @@ -9098,12 +9538,6 @@ class V8_EXPORT Isolate { | |
| 9098 9538 | 
             
               */
         | 
| 9099 9539 | 
             
              void SetPromiseRejectCallback(PromiseRejectCallback callback);
         | 
| 9100 9540 |  | 
| 9101 | 
            -
              /**
         | 
| 9102 | 
            -
               * An alias for PerformMicrotaskCheckpoint.
         | 
| 9103 | 
            -
               */
         | 
| 9104 | 
            -
              V8_DEPRECATE_SOON("Use PerformMicrotaskCheckpoint.")
         | 
| 9105 | 
            -
              void RunMicrotasks() { PerformMicrotaskCheckpoint(); }
         | 
| 9106 | 
            -
             | 
| 9107 9541 | 
             
              /**
         | 
| 9108 9542 | 
             
               * Runs the default MicrotaskQueue until it gets empty and perform other
         | 
| 9109 9543 | 
             
               * microtask checkpoint steps, such as calling ClearKeptObjects. Asserts that
         | 
| @@ -9145,16 +9579,12 @@ class V8_EXPORT Isolate { | |
| 9145 9579 | 
             
               * Executing scripts inside the callback will not re-trigger microtasks and
         | 
| 9146 9580 | 
             
               * the callback.
         | 
| 9147 9581 | 
             
               */
         | 
| 9148 | 
            -
              V8_DEPRECATE_SOON("Use *WithData version.")
         | 
| 9149 | 
            -
              void AddMicrotasksCompletedCallback(MicrotasksCompletedCallback callback);
         | 
| 9150 9582 | 
             
              void AddMicrotasksCompletedCallback(
         | 
| 9151 9583 | 
             
                  MicrotasksCompletedCallbackWithData callback, void* data = nullptr);
         | 
| 9152 9584 |  | 
| 9153 9585 | 
             
              /**
         | 
| 9154 9586 | 
             
               * Removes callback that was installed by AddMicrotasksCompletedCallback.
         | 
| 9155 9587 | 
             
               */
         | 
| 9156 | 
            -
              V8_DEPRECATE_SOON("Use *WithData version.")
         | 
| 9157 | 
            -
              void RemoveMicrotasksCompletedCallback(MicrotasksCompletedCallback callback);
         | 
| 9158 9588 | 
             
              void RemoveMicrotasksCompletedCallback(
         | 
| 9159 9589 | 
             
                  MicrotasksCompletedCallbackWithData callback, void* data = nullptr);
         | 
| 9160 9590 |  | 
| @@ -9263,6 +9693,11 @@ class V8_EXPORT Isolate { | |
| 9263 9693 | 
             
               */
         | 
| 9264 9694 | 
             
              void SetRAILMode(RAILMode rail_mode);
         | 
| 9265 9695 |  | 
| 9696 | 
            +
              /**
         | 
| 9697 | 
            +
               * Update load start time of the RAIL mode
         | 
| 9698 | 
            +
               */
         | 
| 9699 | 
            +
              void UpdateLoadStartTime();
         | 
| 9700 | 
            +
             | 
| 9266 9701 | 
             
              /**
         | 
| 9267 9702 | 
             
               * Optional notification to tell V8 the current isolate is used for debugging
         | 
| 9268 9703 | 
             
               * and requires higher heap limit.
         | 
| @@ -9334,11 +9769,10 @@ class V8_EXPORT Isolate { | |
| 9334 9769 | 
             
              void GetCodeRange(void** start, size_t* length_in_bytes);
         | 
| 9335 9770 |  | 
| 9336 9771 | 
             
              /**
         | 
| 9337 | 
            -
               *  | 
| 9772 | 
            +
               * As GetCodeRange, but for embedded builtins (these live in a distinct
         | 
| 9773 | 
            +
               * memory region from other V8 Code objects).
         | 
| 9338 9774 | 
             
               */
         | 
| 9339 | 
            -
               | 
| 9340 | 
            -
              V8_DEPRECATED("Use entry_stubs + code_pages version.")
         | 
| 9341 | 
            -
              UnwindState GetUnwindState();
         | 
| 9775 | 
            +
              void GetEmbeddedCodeRange(const void** start, size_t* length_in_bytes);
         | 
| 9342 9776 |  | 
| 9343 9777 | 
             
              /**
         | 
| 9344 9778 | 
             
               * Returns the JSEntryStubs necessary for use with the Unwinder API.
         | 
| @@ -9398,12 +9832,14 @@ class V8_EXPORT Isolate { | |
| 9398 9832 | 
             
               * strings should be allowed.
         | 
| 9399 9833 | 
             
               */
         | 
| 9400 9834 | 
             
              V8_DEPRECATED(
         | 
| 9401 | 
            -
                  "Use Isolate::SetModifyCodeGenerationFromStringsCallback  | 
| 9402 | 
            -
                  "See  | 
| 9403 | 
            -
             | 
| 9404 | 
            -
                   | 
| 9835 | 
            +
                  "Use Isolate::SetModifyCodeGenerationFromStringsCallback with "
         | 
| 9836 | 
            +
                  "ModifyCodeGenerationFromStringsCallback2 instead. See "
         | 
| 9837 | 
            +
                  "http://crbug.com/1096017 and TC39 Dynamic Code Brand Checks proposal "
         | 
| 9838 | 
            +
                  "at https://github.com/tc39/proposal-dynamic-code-brand-checks.")
         | 
| 9405 9839 | 
             
              void SetModifyCodeGenerationFromStringsCallback(
         | 
| 9406 9840 | 
             
                  ModifyCodeGenerationFromStringsCallback callback);
         | 
| 9841 | 
            +
              void SetModifyCodeGenerationFromStringsCallback(
         | 
| 9842 | 
            +
                  ModifyCodeGenerationFromStringsCallback2 callback);
         | 
| 9407 9843 |  | 
| 9408 9844 | 
             
              /**
         | 
| 9409 9845 | 
             
               * Set the callback to invoke to check if wasm code generation should
         | 
| @@ -9421,12 +9857,22 @@ class V8_EXPORT Isolate { | |
| 9421 9857 |  | 
| 9422 9858 | 
             
              void SetWasmStreamingCallback(WasmStreamingCallback callback);
         | 
| 9423 9859 |  | 
| 9424 | 
            -
              void SetWasmThreadsEnabledCallback(WasmThreadsEnabledCallback callback);
         | 
| 9425 | 
            -
             | 
| 9426 9860 | 
             
              void SetWasmLoadSourceMapCallback(WasmLoadSourceMapCallback callback);
         | 
| 9427 9861 |  | 
| 9428 9862 | 
             
              void SetWasmSimdEnabledCallback(WasmSimdEnabledCallback callback);
         | 
| 9429 9863 |  | 
| 9864 | 
            +
              void SetWasmExceptionsEnabledCallback(WasmExceptionsEnabledCallback callback);
         | 
| 9865 | 
            +
             | 
| 9866 | 
            +
              void SetSharedArrayBufferConstructorEnabledCallback(
         | 
| 9867 | 
            +
                  SharedArrayBufferConstructorEnabledCallback callback);
         | 
| 9868 | 
            +
             | 
| 9869 | 
            +
              /**
         | 
| 9870 | 
            +
               * This function can be called by the embedder to signal V8 that the dynamic
         | 
| 9871 | 
            +
               * enabling of features has finished. V8 can now set up dynamically added
         | 
| 9872 | 
            +
               * features.
         | 
| 9873 | 
            +
               */
         | 
| 9874 | 
            +
              void InstallConditionalFeatures(Local<Context> context);
         | 
| 9875 | 
            +
             | 
| 9430 9876 | 
             
              /**
         | 
| 9431 9877 | 
             
              * Check if V8 is dead and therefore unusable.  This is the case after
         | 
| 9432 9878 | 
             
              * fatal errors such as out-of-memory situations.
         | 
| @@ -9589,7 +10035,7 @@ class V8_EXPORT StartupData { | |
| 9589 10035 | 
             
             * EntropySource is used as a callback function when v8 needs a source
         | 
| 9590 10036 | 
             
             * of entropy.
         | 
| 9591 10037 | 
             
             */
         | 
| 9592 | 
            -
             | 
| 10038 | 
            +
            using EntropySource = bool (*)(unsigned char* buffer, size_t length);
         | 
| 9593 10039 |  | 
| 9594 10040 | 
             
            /**
         | 
| 9595 10041 | 
             
             * ReturnAddressLocationResolver is used as a callback function when v8 is
         | 
| @@ -9604,9 +10050,8 @@ typedef bool (*EntropySource)(unsigned char* buffer, size_t length); | |
| 9604 10050 | 
             
             *
         | 
| 9605 10051 | 
             
             * \note The resolver function must not cause garbage collection.
         | 
| 9606 10052 | 
             
             */
         | 
| 9607 | 
            -
             | 
| 9608 | 
            -
                uintptr_t return_addr_location);
         | 
| 9609 | 
            -
             | 
| 10053 | 
            +
            using ReturnAddressLocationResolver =
         | 
| 10054 | 
            +
                uintptr_t (*)(uintptr_t return_addr_location);
         | 
| 9610 10055 |  | 
| 9611 10056 | 
             
            /**
         | 
| 9612 10057 | 
             
             * Container class for static utility functions.
         | 
| @@ -9760,7 +10205,7 @@ class V8_EXPORT V8 { | |
| 9760 10205 | 
             
               * \param context The third argument passed to the Linux signal handler, which
         | 
| 9761 10206 | 
             
               * points to a ucontext_t structure.
         | 
| 9762 10207 | 
             
               */
         | 
| 9763 | 
            -
               | 
| 10208 | 
            +
              V8_DEPRECATED("Use TryHandleWebAssemblyTrapPosix")
         | 
| 9764 10209 | 
             
              static bool TryHandleSignal(int signal_number, void* info, void* context);
         | 
| 9765 10210 | 
             
            #endif  // V8_OS_POSIX
         | 
| 9766 10211 |  | 
| @@ -9791,6 +10236,15 @@ class V8_EXPORT V8 { | |
| 9791 10236 | 
             
               */
         | 
| 9792 10237 | 
             
              static void GetSharedMemoryStatistics(SharedMemoryStatistics* statistics);
         | 
| 9793 10238 |  | 
| 10239 | 
            +
              /**
         | 
| 10240 | 
            +
               * Notifies V8 that the process is cross-origin-isolated, which enables
         | 
| 10241 | 
            +
               * defining the SharedArrayBuffer function on the global object of Contexts.
         | 
| 10242 | 
            +
               */
         | 
| 10243 | 
            +
              V8_DEPRECATED(
         | 
| 10244 | 
            +
                  "Use the command line argument --enable-sharedarraybuffer-per-context "
         | 
| 10245 | 
            +
                  "together with SetSharedArrayBufferConstructorEnabledCallback")
         | 
| 10246 | 
            +
              static void SetIsCrossOriginIsolated();
         | 
| 10247 | 
            +
             | 
| 9794 10248 | 
             
             private:
         | 
| 9795 10249 | 
             
              V8();
         | 
| 9796 10250 |  | 
| @@ -9840,6 +10294,8 @@ class V8_EXPORT V8 { | |
| 9840 10294 | 
             
              static void ToLocalEmpty();
         | 
| 9841 10295 | 
             
              static void InternalFieldOutOfBounds(int index);
         | 
| 9842 10296 | 
             
              template <class T>
         | 
| 10297 | 
            +
              friend class BasicTracedReference;
         | 
| 10298 | 
            +
              template <class T>
         | 
| 9843 10299 | 
             
              friend class Global;
         | 
| 9844 10300 | 
             
              template <class T> friend class Local;
         | 
| 9845 10301 | 
             
              template <class T>
         | 
| @@ -9847,9 +10303,8 @@ class V8_EXPORT V8 { | |
| 9847 10303 | 
             
              template <class T>
         | 
| 9848 10304 | 
             
              friend class Maybe;
         | 
| 9849 10305 | 
             
              template <class T>
         | 
| 9850 | 
            -
              friend class TracedReferenceBase;
         | 
| 9851 | 
            -
              template <class T>
         | 
| 9852 10306 | 
             
              friend class TracedGlobal;
         | 
| 10307 | 
            +
              friend class TracedReferenceBase;
         | 
| 9853 10308 | 
             
              template <class T>
         | 
| 9854 10309 | 
             
              friend class TracedReference;
         | 
| 9855 10310 | 
             
              template <class T>
         | 
| @@ -10269,7 +10724,7 @@ class V8_EXPORT ExtensionConfiguration { | |
| 10269 10724 | 
             
             * A sandboxed execution context with its own set of built-in objects
         | 
| 10270 10725 | 
             
             * and functions.
         | 
| 10271 10726 | 
             
             */
         | 
| 10272 | 
            -
            class V8_EXPORT Context {
         | 
| 10727 | 
            +
            class V8_EXPORT Context : public Data {
         | 
| 10273 10728 | 
             
             public:
         | 
| 10274 10729 | 
             
              /**
         | 
| 10275 10730 | 
             
               * Returns the global proxy object.
         | 
| @@ -10484,8 +10939,8 @@ class V8_EXPORT Context { | |
| 10484 10939 | 
             
               * context, call the specified callback, and throw an exception.
         | 
| 10485 10940 | 
             
               * To unset abort, pass nullptr as callback.
         | 
| 10486 10941 | 
             
               */
         | 
| 10487 | 
            -
               | 
| 10488 | 
            -
             | 
| 10942 | 
            +
              using AbortScriptExecutionCallback = void (*)(Isolate* isolate,
         | 
| 10943 | 
            +
                                                            Local<Context> context);
         | 
| 10489 10944 | 
             
              void SetAbortScriptExecution(AbortScriptExecutionCallback callback);
         | 
| 10490 10945 |  | 
| 10491 10946 | 
             
              /**
         | 
| @@ -10500,11 +10955,23 @@ class V8_EXPORT Context { | |
| 10500 10955 | 
             
               */
         | 
| 10501 10956 | 
             
              void SetContinuationPreservedEmbedderData(Local<Value> context);
         | 
| 10502 10957 |  | 
| 10958 | 
            +
              /**
         | 
| 10959 | 
            +
               * Set or clear hooks to be invoked for promise lifecycle operations.
         | 
| 10960 | 
            +
               * To clear a hook, set it to an empty v8::Function. Each function will
         | 
| 10961 | 
            +
               * receive the observed promise as the first argument. If a chaining
         | 
| 10962 | 
            +
               * operation is used on a promise, the init will additionally receive
         | 
| 10963 | 
            +
               * the parent promise as the second argument.
         | 
| 10964 | 
            +
               */
         | 
| 10965 | 
            +
              void SetPromiseHooks(Local<Function> init_hook,
         | 
| 10966 | 
            +
                                   Local<Function> before_hook,
         | 
| 10967 | 
            +
                                   Local<Function> after_hook,
         | 
| 10968 | 
            +
                                   Local<Function> resolve_hook);
         | 
| 10969 | 
            +
             | 
| 10503 10970 | 
             
              /**
         | 
| 10504 10971 | 
             
               * Stack-allocated class which sets the execution context for all
         | 
| 10505 10972 | 
             
               * operations executed within a local scope.
         | 
| 10506 10973 | 
             
               */
         | 
| 10507 | 
            -
              class Scope {
         | 
| 10974 | 
            +
              class V8_NODISCARD Scope {
         | 
| 10508 10975 | 
             
               public:
         | 
| 10509 10976 | 
             
                explicit V8_INLINE Scope(Local<Context> context) : context_(context) {
         | 
| 10510 10977 | 
             
                  context_->Enter();
         | 
| @@ -10520,7 +10987,7 @@ class V8_EXPORT Context { | |
| 10520 10987 | 
             
               * stack.
         | 
| 10521 10988 | 
             
               * https://html.spec.whatwg.org/multipage/webappapis.html#backup-incumbent-settings-object-stack
         | 
| 10522 10989 | 
             
               */
         | 
| 10523 | 
            -
              class V8_EXPORT BackupIncumbentScope final {
         | 
| 10990 | 
            +
              class V8_EXPORT V8_NODISCARD BackupIncumbentScope final {
         | 
| 10524 10991 | 
             
               public:
         | 
| 10525 10992 | 
             
                /**
         | 
| 10526 10993 | 
             
                 * |backup_incumbent_context| is pushed onto the backup incumbent settings
         | 
| @@ -10546,18 +11013,21 @@ class V8_EXPORT Context { | |
| 10546 11013 | 
             
                const BackupIncumbentScope* prev_ = nullptr;
         | 
| 10547 11014 | 
             
              };
         | 
| 10548 11015 |  | 
| 11016 | 
            +
              V8_INLINE static Context* Cast(Data* data);
         | 
| 11017 | 
            +
             | 
| 10549 11018 | 
             
             private:
         | 
| 10550 11019 | 
             
              friend class Value;
         | 
| 10551 11020 | 
             
              friend class Script;
         | 
| 10552 11021 | 
             
              friend class Object;
         | 
| 10553 11022 | 
             
              friend class Function;
         | 
| 10554 11023 |  | 
| 11024 | 
            +
              static void CheckCast(Data* obj);
         | 
| 11025 | 
            +
             | 
| 10555 11026 | 
             
              internal::Address* GetDataFromSnapshotOnce(size_t index);
         | 
| 10556 11027 | 
             
              Local<Value> SlowGetEmbedderData(int index);
         | 
| 10557 11028 | 
             
              void* SlowGetAlignedPointerFromEmbedderData(int index);
         | 
| 10558 11029 | 
             
            };
         | 
| 10559 11030 |  | 
| 10560 | 
            -
             | 
| 10561 11031 | 
             
            /**
         | 
| 10562 11032 | 
             
             * Multiple threads in V8 are allowed, but only one thread at a time is allowed
         | 
| 10563 11033 | 
             
             * to use any given V8 isolate, see the comments in the Isolate class. The
         | 
| @@ -10700,12 +11170,14 @@ class V8_EXPORT Unwinder { | |
| 10700 11170 | 
             
               *
         | 
| 10701 11171 | 
             
               * The unwinder also needs the virtual memory range of all possible V8 code
         | 
| 10702 11172 | 
             
               * objects. There are two ranges required - the heap code range and the range
         | 
| 10703 | 
            -
               * for code embedded in the binary. | 
| 10704 | 
            -
               * | 
| 10705 | 
            -
               *  | 
| 10706 | 
            -
               * |unwind_state| can be used for multiple calls.
         | 
| 11173 | 
            +
               * for code embedded in the binary.
         | 
| 11174 | 
            +
               *
         | 
| 11175 | 
            +
               * Available on x64, ARM64 and ARM32.
         | 
| 10707 11176 | 
             
               *
         | 
| 10708 | 
            -
               * \param  | 
| 11177 | 
            +
               * \param code_pages A list of all of the ranges in which V8 has allocated
         | 
| 11178 | 
            +
               * executable code. The caller should obtain this list by calling
         | 
| 11179 | 
            +
               * Isolate::CopyCodePages() during the same interrupt/thread suspension that
         | 
| 11180 | 
            +
               * captures the stack.
         | 
| 10709 11181 | 
             
               * \param register_state The current registers. This is an in-out param that
         | 
| 10710 11182 | 
             
               * will be overwritten with the register values after unwinding, on success.
         | 
| 10711 11183 | 
             
               * \param stack_base The resulting stack pointer and frame pointer values are
         | 
| @@ -10716,20 +11188,6 @@ class V8_EXPORT Unwinder { | |
| 10716 11188 | 
             
               *
         | 
| 10717 11189 | 
             
               * \return True on success.
         | 
| 10718 11190 | 
             
               */
         | 
| 10719 | 
            -
              // TODO(petermarshall): Remove this API
         | 
| 10720 | 
            -
              V8_DEPRECATED("Use entry_stubs + code_pages version.")
         | 
| 10721 | 
            -
              static bool TryUnwindV8Frames(const UnwindState& unwind_state,
         | 
| 10722 | 
            -
                                            RegisterState* register_state,
         | 
| 10723 | 
            -
                                            const void* stack_base);
         | 
| 10724 | 
            -
             | 
| 10725 | 
            -
              /**
         | 
| 10726 | 
            -
               * The same as above, but is available on x64, ARM64 and ARM32.
         | 
| 10727 | 
            -
               *
         | 
| 10728 | 
            -
               * \param code_pages A list of all of the ranges in which V8 has allocated
         | 
| 10729 | 
            -
               * executable code. The caller should obtain this list by calling
         | 
| 10730 | 
            -
               * Isolate::CopyCodePages() during the same interrupt/thread suspension that
         | 
| 10731 | 
            -
               * captures the stack.
         | 
| 10732 | 
            -
               */
         | 
| 10733 11191 | 
             
              static bool TryUnwindV8Frames(const JSEntryStubs& entry_stubs,
         | 
| 10734 11192 | 
             
                                            size_t code_pages_length,
         | 
| 10735 11193 | 
             
                                            const MemoryRange* code_pages,
         | 
| @@ -10737,20 +11195,13 @@ class V8_EXPORT Unwinder { | |
| 10737 11195 | 
             
                                            const void* stack_base);
         | 
| 10738 11196 |  | 
| 10739 11197 | 
             
              /**
         | 
| 10740 | 
            -
               * Whether the PC is within the V8 code range represented by  | 
| 10741 | 
            -
               * embedded_code_range in |unwind_state|.
         | 
| 11198 | 
            +
               * Whether the PC is within the V8 code range represented by code_pages.
         | 
| 10742 11199 | 
             
               *
         | 
| 10743 11200 | 
             
               * If this returns false, then calling UnwindV8Frames() with the same PC
         | 
| 10744 11201 | 
             
               * and unwind_state will always fail. If it returns true, then unwinding may
         | 
| 10745 11202 | 
             
               * (but not necessarily) be successful.
         | 
| 10746 | 
            -
                | 
| 10747 | 
            -
             | 
| 10748 | 
            -
              V8_DEPRECATED("Use code_pages version.")
         | 
| 10749 | 
            -
              static bool PCIsInV8(const UnwindState& unwind_state, void* pc);
         | 
| 10750 | 
            -
             | 
| 10751 | 
            -
              /**
         | 
| 10752 | 
            -
               * The same as above, but is available on x64, ARM64 and ARM32. See the
         | 
| 10753 | 
            -
               * comment on TryUnwindV8Frames.
         | 
| 11203 | 
            +
               *
         | 
| 11204 | 
            +
               * Available on x64, ARM64 and ARM32
         | 
| 10754 11205 | 
             
               */
         | 
| 10755 11206 | 
             
              static bool PCIsInV8(size_t code_pages_length, const MemoryRange* code_pages,
         | 
| 10756 11207 | 
             
                                   void* pc);
         | 
| @@ -10769,8 +11220,8 @@ Local<T> Local<T>::New(Isolate* isolate, const PersistentBase<T>& that) { | |
| 10769 11220 | 
             
            }
         | 
| 10770 11221 |  | 
| 10771 11222 | 
             
            template <class T>
         | 
| 10772 | 
            -
            Local<T> Local<T>::New(Isolate* isolate, const  | 
| 10773 | 
            -
              return New(isolate, that | 
| 11223 | 
            +
            Local<T> Local<T>::New(Isolate* isolate, const BasicTracedReference<T>& that) {
         | 
| 11224 | 
            +
              return New(isolate, *that);
         | 
| 10774 11225 | 
             
            }
         | 
| 10775 11226 |  | 
| 10776 11227 | 
             
            template <class T>
         | 
| @@ -10840,7 +11291,7 @@ void Persistent<T, M>::Copy(const Persistent<S, M2>& that) { | |
| 10840 11291 |  | 
| 10841 11292 | 
             
            template <class T>
         | 
| 10842 11293 | 
             
            bool PersistentBase<T>::IsWeak() const {
         | 
| 10843 | 
            -
               | 
| 11294 | 
            +
              using I = internal::Internals;
         | 
| 10844 11295 | 
             
              if (this->IsEmpty()) return false;
         | 
| 10845 11296 | 
             
              return I::GetNodeState(reinterpret_cast<internal::Address*>(this->val_)) ==
         | 
| 10846 11297 | 
             
                     I::kNodeStateIsWeakValue;
         | 
| @@ -10881,7 +11332,7 @@ template <typename P> | |
| 10881 11332 | 
             
            V8_INLINE void PersistentBase<T>::SetWeak(
         | 
| 10882 11333 | 
             
                P* parameter, typename WeakCallbackInfo<P>::Callback callback,
         | 
| 10883 11334 | 
             
                WeakCallbackType type) {
         | 
| 10884 | 
            -
               | 
| 11335 | 
            +
              using Callback = WeakCallbackInfo<void>::Callback;
         | 
| 10885 11336 | 
             
            #if (__GNUC__ >= 8) && !defined(__clang__)
         | 
| 10886 11337 | 
             
            #pragma GCC diagnostic push
         | 
| 10887 11338 | 
             
            #pragma GCC diagnostic ignored "-Wcast-function-type"
         | 
| @@ -10913,7 +11364,7 @@ void PersistentBase<T>::AnnotateStrongRetainer(const char* label) { | |
| 10913 11364 |  | 
| 10914 11365 | 
             
            template <class T>
         | 
| 10915 11366 | 
             
            void PersistentBase<T>::SetWrapperClassId(uint16_t class_id) {
         | 
| 10916 | 
            -
               | 
| 11367 | 
            +
              using I = internal::Internals;
         | 
| 10917 11368 | 
             
              if (this->IsEmpty()) return;
         | 
| 10918 11369 | 
             
              internal::Address* obj = reinterpret_cast<internal::Address*>(this->val_);
         | 
| 10919 11370 | 
             
              uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset;
         | 
| @@ -10923,7 +11374,7 @@ void PersistentBase<T>::SetWrapperClassId(uint16_t class_id) { | |
| 10923 11374 |  | 
| 10924 11375 | 
             
            template <class T>
         | 
| 10925 11376 | 
             
            uint16_t PersistentBase<T>::WrapperClassId() const {
         | 
| 10926 | 
            -
               | 
| 11377 | 
            +
              using I = internal::Internals;
         | 
| 10927 11378 | 
             
              if (this->IsEmpty()) return 0;
         | 
| 10928 11379 | 
             
              internal::Address* obj = reinterpret_cast<internal::Address*>(this->val_);
         | 
| 10929 11380 | 
             
              uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset;
         | 
| @@ -10957,23 +11408,69 @@ Global<T>& Global<T>::operator=(Global<S>&& rhs) { | |
| 10957 11408 | 
             
            }
         | 
| 10958 11409 |  | 
| 10959 11410 | 
             
            template <class T>
         | 
| 10960 | 
            -
             | 
| 10961 | 
            -
             | 
| 11411 | 
            +
            internal::Address* BasicTracedReference<T>::New(
         | 
| 11412 | 
            +
                Isolate* isolate, T* that, void* slot, DestructionMode destruction_mode) {
         | 
| 10962 11413 | 
             
              if (that == nullptr) return nullptr;
         | 
| 10963 11414 | 
             
              internal::Address* p = reinterpret_cast<internal::Address*>(that);
         | 
| 10964 | 
            -
              return  | 
| 11415 | 
            +
              return V8::GlobalizeTracedReference(
         | 
| 10965 11416 | 
             
                  reinterpret_cast<internal::Isolate*>(isolate), p,
         | 
| 10966 11417 | 
             
                  reinterpret_cast<internal::Address*>(slot),
         | 
| 10967 | 
            -
                  destruction_mode == kWithDestructor) | 
| 11418 | 
            +
                  destruction_mode == kWithDestructor);
         | 
| 10968 11419 | 
             
            }
         | 
| 10969 11420 |  | 
| 10970 | 
            -
             | 
| 10971 | 
            -
            void TracedReferenceBase<T>::Reset() {
         | 
| 11421 | 
            +
            void TracedReferenceBase::Reset() {
         | 
| 10972 11422 | 
             
              if (IsEmpty()) return;
         | 
| 10973 11423 | 
             
              V8::DisposeTracedGlobal(reinterpret_cast<internal::Address*>(val_));
         | 
| 10974 11424 | 
             
              SetSlotThreadSafe(nullptr);
         | 
| 10975 11425 | 
             
            }
         | 
| 10976 11426 |  | 
| 11427 | 
            +
            v8::Local<v8::Value> TracedReferenceBase::Get(v8::Isolate* isolate) const {
         | 
| 11428 | 
            +
              if (IsEmpty()) return Local<Value>();
         | 
| 11429 | 
            +
              return Local<Value>::New(isolate, reinterpret_cast<Value*>(val_));
         | 
| 11430 | 
            +
            }
         | 
| 11431 | 
            +
             | 
| 11432 | 
            +
            V8_INLINE bool operator==(const TracedReferenceBase& lhs,
         | 
| 11433 | 
            +
                                      const TracedReferenceBase& rhs) {
         | 
| 11434 | 
            +
              v8::internal::Address* a = reinterpret_cast<v8::internal::Address*>(lhs.val_);
         | 
| 11435 | 
            +
              v8::internal::Address* b = reinterpret_cast<v8::internal::Address*>(rhs.val_);
         | 
| 11436 | 
            +
              if (a == nullptr) return b == nullptr;
         | 
| 11437 | 
            +
              if (b == nullptr) return false;
         | 
| 11438 | 
            +
              return *a == *b;
         | 
| 11439 | 
            +
            }
         | 
| 11440 | 
            +
             | 
| 11441 | 
            +
            template <typename U>
         | 
| 11442 | 
            +
            V8_INLINE bool operator==(const TracedReferenceBase& lhs,
         | 
| 11443 | 
            +
                                      const v8::Local<U>& rhs) {
         | 
| 11444 | 
            +
              v8::internal::Address* a = reinterpret_cast<v8::internal::Address*>(lhs.val_);
         | 
| 11445 | 
            +
              v8::internal::Address* b = reinterpret_cast<v8::internal::Address*>(*rhs);
         | 
| 11446 | 
            +
              if (a == nullptr) return b == nullptr;
         | 
| 11447 | 
            +
              if (b == nullptr) return false;
         | 
| 11448 | 
            +
              return *a == *b;
         | 
| 11449 | 
            +
            }
         | 
| 11450 | 
            +
             | 
| 11451 | 
            +
            template <typename U>
         | 
| 11452 | 
            +
            V8_INLINE bool operator==(const v8::Local<U>& lhs,
         | 
| 11453 | 
            +
                                      const TracedReferenceBase& rhs) {
         | 
| 11454 | 
            +
              return rhs == lhs;
         | 
| 11455 | 
            +
            }
         | 
| 11456 | 
            +
             | 
| 11457 | 
            +
            V8_INLINE bool operator!=(const TracedReferenceBase& lhs,
         | 
| 11458 | 
            +
                                      const TracedReferenceBase& rhs) {
         | 
| 11459 | 
            +
              return !(lhs == rhs);
         | 
| 11460 | 
            +
            }
         | 
| 11461 | 
            +
             | 
| 11462 | 
            +
            template <typename U>
         | 
| 11463 | 
            +
            V8_INLINE bool operator!=(const TracedReferenceBase& lhs,
         | 
| 11464 | 
            +
                                      const v8::Local<U>& rhs) {
         | 
| 11465 | 
            +
              return !(lhs == rhs);
         | 
| 11466 | 
            +
            }
         | 
| 11467 | 
            +
             | 
| 11468 | 
            +
            template <typename U>
         | 
| 11469 | 
            +
            V8_INLINE bool operator!=(const v8::Local<U>& lhs,
         | 
| 11470 | 
            +
                                      const TracedReferenceBase& rhs) {
         | 
| 11471 | 
            +
              return !(rhs == lhs);
         | 
| 11472 | 
            +
            }
         | 
| 11473 | 
            +
             | 
| 10977 11474 | 
             
            template <class T>
         | 
| 10978 11475 | 
             
            template <class S>
         | 
| 10979 11476 | 
             
            void TracedGlobal<T>::Reset(Isolate* isolate, const Local<S>& other) {
         | 
| @@ -10981,7 +11478,7 @@ void TracedGlobal<T>::Reset(Isolate* isolate, const Local<S>& other) { | |
| 10981 11478 | 
             
              Reset();
         | 
| 10982 11479 | 
             
              if (other.IsEmpty()) return;
         | 
| 10983 11480 | 
             
              this->val_ = this->New(isolate, other.val_, &this->val_,
         | 
| 10984 | 
            -
                                      | 
| 11481 | 
            +
                                     BasicTracedReference<T>::kWithDestructor);
         | 
| 10985 11482 | 
             
            }
         | 
| 10986 11483 |  | 
| 10987 11484 | 
             
            template <class T>
         | 
| @@ -11031,7 +11528,7 @@ void TracedReference<T>::Reset(Isolate* isolate, const Local<S>& other) { | |
| 11031 11528 | 
             
              if (other.IsEmpty()) return;
         | 
| 11032 11529 | 
             
              this->SetSlotThreadSafe(
         | 
| 11033 11530 | 
             
                  this->New(isolate, other.val_, &this->val_,
         | 
| 11034 | 
            -
                             | 
| 11531 | 
            +
                            BasicTracedReference<T>::kWithoutDestructor));
         | 
| 11035 11532 | 
             
            }
         | 
| 11036 11533 |  | 
| 11037 11534 | 
             
            template <class T>
         | 
| @@ -11074,18 +11571,16 @@ TracedReference<T>& TracedReference<T>::operator=(const TracedReference& rhs) { | |
| 11074 11571 | 
             
              return *this;
         | 
| 11075 11572 | 
             
            }
         | 
| 11076 11573 |  | 
| 11077 | 
            -
             | 
| 11078 | 
            -
             | 
| 11079 | 
            -
              typedef internal::Internals I;
         | 
| 11574 | 
            +
            void TracedReferenceBase::SetWrapperClassId(uint16_t class_id) {
         | 
| 11575 | 
            +
              using I = internal::Internals;
         | 
| 11080 11576 | 
             
              if (IsEmpty()) return;
         | 
| 11081 11577 | 
             
              internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
         | 
| 11082 11578 | 
             
              uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset;
         | 
| 11083 11579 | 
             
              *reinterpret_cast<uint16_t*>(addr) = class_id;
         | 
| 11084 11580 | 
             
            }
         | 
| 11085 11581 |  | 
| 11086 | 
            -
             | 
| 11087 | 
            -
             | 
| 11088 | 
            -
              typedef internal::Internals I;
         | 
| 11582 | 
            +
            uint16_t TracedReferenceBase::WrapperClassId() const {
         | 
| 11583 | 
            +
              using I = internal::Internals;
         | 
| 11089 11584 | 
             
              if (IsEmpty()) return 0;
         | 
| 11090 11585 | 
             
              internal::Address* obj = reinterpret_cast<internal::Address*>(val_);
         | 
| 11091 11586 | 
             
              uint8_t* addr = reinterpret_cast<uint8_t*>(obj) + I::kNodeClassIdOffset;
         | 
| @@ -11115,7 +11610,7 @@ void ReturnValue<T>::Set(const Global<S>& handle) { | |
| 11115 11610 |  | 
| 11116 11611 | 
             
            template <typename T>
         | 
| 11117 11612 | 
             
            template <typename S>
         | 
| 11118 | 
            -
            void ReturnValue<T>::Set(const  | 
| 11613 | 
            +
            void ReturnValue<T>::Set(const BasicTracedReference<S>& handle) {
         | 
| 11119 11614 | 
             
              static_assert(std::is_base_of<T, S>::value, "type check");
         | 
| 11120 11615 | 
             
              if (V8_UNLIKELY(handle.IsEmpty())) {
         | 
| 11121 11616 | 
             
                *value_ = GetDefaultValue();
         | 
| @@ -11145,7 +11640,7 @@ void ReturnValue<T>::Set(double i) { | |
| 11145 11640 | 
             
            template<typename T>
         | 
| 11146 11641 | 
             
            void ReturnValue<T>::Set(int32_t i) {
         | 
| 11147 11642 | 
             
              static_assert(std::is_base_of<T, Integer>::value, "type check");
         | 
| 11148 | 
            -
               | 
| 11643 | 
            +
              using I = internal::Internals;
         | 
| 11149 11644 | 
             
              if (V8_LIKELY(I::IsValidSmi(i))) {
         | 
| 11150 11645 | 
             
                *value_ = I::IntToSmi(i);
         | 
| 11151 11646 | 
             
                return;
         | 
| @@ -11168,7 +11663,7 @@ void ReturnValue<T>::Set(uint32_t i) { | |
| 11168 11663 | 
             
            template<typename T>
         | 
| 11169 11664 | 
             
            void ReturnValue<T>::Set(bool value) {
         | 
| 11170 11665 | 
             
              static_assert(std::is_base_of<T, Boolean>::value, "type check");
         | 
| 11171 | 
            -
               | 
| 11666 | 
            +
              using I = internal::Internals;
         | 
| 11172 11667 | 
             
              int root_index;
         | 
| 11173 11668 | 
             
              if (value) {
         | 
| 11174 11669 | 
             
                root_index = I::kTrueValueRootIndex;
         | 
| @@ -11181,21 +11676,21 @@ void ReturnValue<T>::Set(bool value) { | |
| 11181 11676 | 
             
            template<typename T>
         | 
| 11182 11677 | 
             
            void ReturnValue<T>::SetNull() {
         | 
| 11183 11678 | 
             
              static_assert(std::is_base_of<T, Primitive>::value, "type check");
         | 
| 11184 | 
            -
               | 
| 11679 | 
            +
              using I = internal::Internals;
         | 
| 11185 11680 | 
             
              *value_ = *I::GetRoot(GetIsolate(), I::kNullValueRootIndex);
         | 
| 11186 11681 | 
             
            }
         | 
| 11187 11682 |  | 
| 11188 11683 | 
             
            template<typename T>
         | 
| 11189 11684 | 
             
            void ReturnValue<T>::SetUndefined() {
         | 
| 11190 11685 | 
             
              static_assert(std::is_base_of<T, Primitive>::value, "type check");
         | 
| 11191 | 
            -
               | 
| 11686 | 
            +
              using I = internal::Internals;
         | 
| 11192 11687 | 
             
              *value_ = *I::GetRoot(GetIsolate(), I::kUndefinedValueRootIndex);
         | 
| 11193 11688 | 
             
            }
         | 
| 11194 11689 |  | 
| 11195 11690 | 
             
            template<typename T>
         | 
| 11196 11691 | 
             
            void ReturnValue<T>::SetEmptyString() {
         | 
| 11197 11692 | 
             
              static_assert(std::is_base_of<T, String>::value, "type check");
         | 
| 11198 | 
            -
               | 
| 11693 | 
            +
              using I = internal::Internals;
         | 
| 11199 11694 | 
             
              *value_ = *I::GetRoot(GetIsolate(), I::kEmptyStringRootIndex);
         | 
| 11200 11695 | 
             
            }
         | 
| 11201 11696 |  | 
| @@ -11207,7 +11702,7 @@ Isolate* ReturnValue<T>::GetIsolate() const { | |
| 11207 11702 |  | 
| 11208 11703 | 
             
            template <typename T>
         | 
| 11209 11704 | 
             
            Local<Value> ReturnValue<T>::Get() const {
         | 
| 11210 | 
            -
               | 
| 11705 | 
            +
              using I = internal::Internals;
         | 
| 11211 11706 | 
             
              if (*value_ == *I::GetRoot(GetIsolate(), I::kTheHoleValueRootIndex))
         | 
| 11212 11707 | 
             
                return Local<Value>(*Undefined(GetIsolate()));
         | 
| 11213 11708 | 
             
              return Local<Value>::New(GetIsolate(), reinterpret_cast<Value*>(value_));
         | 
| @@ -11235,22 +11730,14 @@ template<typename T> | |
| 11235 11730 | 
             
            Local<Value> FunctionCallbackInfo<T>::operator[](int i) const {
         | 
| 11236 11731 | 
             
              // values_ points to the first argument (not the receiver).
         | 
| 11237 11732 | 
             
              if (i < 0 || length_ <= i) return Local<Value>(*Undefined(GetIsolate()));
         | 
| 11238 | 
            -
            #ifdef V8_REVERSE_JSARGS
         | 
| 11239 11733 | 
             
              return Local<Value>(reinterpret_cast<Value*>(values_ + i));
         | 
| 11240 | 
            -
            #else
         | 
| 11241 | 
            -
              return Local<Value>(reinterpret_cast<Value*>(values_ - i));
         | 
| 11242 | 
            -
            #endif
         | 
| 11243 11734 | 
             
            }
         | 
| 11244 11735 |  | 
| 11245 11736 |  | 
| 11246 11737 | 
             
            template<typename T>
         | 
| 11247 11738 | 
             
            Local<Object> FunctionCallbackInfo<T>::This() const {
         | 
| 11248 11739 | 
             
              // values_ points to the first argument (not the receiver).
         | 
| 11249 | 
            -
            #ifdef V8_REVERSE_JSARGS
         | 
| 11250 11740 | 
             
              return Local<Object>(reinterpret_cast<Object*>(values_ - 1));
         | 
| 11251 | 
            -
            #else
         | 
| 11252 | 
            -
              return Local<Object>(reinterpret_cast<Object*>(values_ + 1));
         | 
| 11253 | 
            -
            #endif
         | 
| 11254 11741 | 
             
            }
         | 
| 11255 11742 |  | 
| 11256 11743 |  | 
| @@ -11295,23 +11782,48 @@ int FunctionCallbackInfo<T>::Length() const { | |
| 11295 11782 | 
             
              return length_;
         | 
| 11296 11783 | 
             
            }
         | 
| 11297 11784 |  | 
| 11298 | 
            -
            ScriptOrigin::ScriptOrigin( | 
| 11299 | 
            -
             | 
| 11300 | 
            -
             | 
| 11301 | 
            -
             | 
| 11302 | 
            -
             | 
| 11303 | 
            -
             | 
| 11304 | 
            -
             | 
| 11305 | 
            -
             | 
| 11785 | 
            +
            ScriptOrigin::ScriptOrigin(
         | 
| 11786 | 
            +
                Local<Value> resource_name, Local<Integer> line_offset,
         | 
| 11787 | 
            +
                Local<Integer> column_offset, Local<Boolean> is_shared_cross_origin,
         | 
| 11788 | 
            +
                Local<Integer> script_id, Local<Value> source_map_url,
         | 
| 11789 | 
            +
                Local<Boolean> is_opaque, Local<Boolean> is_wasm, Local<Boolean> is_module,
         | 
| 11790 | 
            +
                Local<PrimitiveArray> host_defined_options)
         | 
| 11791 | 
            +
                : ScriptOrigin(
         | 
| 11792 | 
            +
                      Isolate::GetCurrent(), resource_name,
         | 
| 11793 | 
            +
                      line_offset.IsEmpty() ? 0 : static_cast<int>(line_offset->Value()),
         | 
| 11794 | 
            +
                      column_offset.IsEmpty() ? 0
         | 
| 11795 | 
            +
                                              : static_cast<int>(column_offset->Value()),
         | 
| 11796 | 
            +
                      !is_shared_cross_origin.IsEmpty() && is_shared_cross_origin->IsTrue(),
         | 
| 11797 | 
            +
                      static_cast<int>(script_id.IsEmpty() ? -1 : script_id->Value()),
         | 
| 11798 | 
            +
                      source_map_url, !is_opaque.IsEmpty() && is_opaque->IsTrue(),
         | 
| 11799 | 
            +
                      !is_wasm.IsEmpty() && is_wasm->IsTrue(),
         | 
| 11800 | 
            +
                      !is_module.IsEmpty() && is_module->IsTrue(), host_defined_options) {}
         | 
| 11801 | 
            +
             | 
| 11802 | 
            +
            ScriptOrigin::ScriptOrigin(Local<Value> resource_name, int line_offset,
         | 
| 11803 | 
            +
                                       int column_offset, bool is_shared_cross_origin,
         | 
| 11804 | 
            +
                                       int script_id, Local<Value> source_map_url,
         | 
| 11805 | 
            +
                                       bool is_opaque, bool is_wasm, bool is_module,
         | 
| 11806 | 
            +
                                       Local<PrimitiveArray> host_defined_options)
         | 
| 11807 | 
            +
                : isolate_(Isolate::GetCurrent()),
         | 
| 11808 | 
            +
                  resource_name_(resource_name),
         | 
| 11809 | 
            +
                  resource_line_offset_(line_offset),
         | 
| 11810 | 
            +
                  resource_column_offset_(column_offset),
         | 
| 11811 | 
            +
                  options_(is_shared_cross_origin, is_opaque, is_wasm, is_module),
         | 
| 11812 | 
            +
                  script_id_(script_id),
         | 
| 11813 | 
            +
                  source_map_url_(source_map_url),
         | 
| 11814 | 
            +
                  host_defined_options_(host_defined_options) {}
         | 
| 11815 | 
            +
             | 
| 11816 | 
            +
            ScriptOrigin::ScriptOrigin(Isolate* isolate, Local<Value> resource_name,
         | 
| 11817 | 
            +
                                       int line_offset, int column_offset,
         | 
| 11818 | 
            +
                                       bool is_shared_cross_origin, int script_id,
         | 
| 11819 | 
            +
                                       Local<Value> source_map_url, bool is_opaque,
         | 
| 11820 | 
            +
                                       bool is_wasm, bool is_module,
         | 
| 11306 11821 | 
             
                                       Local<PrimitiveArray> host_defined_options)
         | 
| 11307 | 
            -
                :  | 
| 11308 | 
            -
                   | 
| 11309 | 
            -
                   | 
| 11310 | 
            -
                   | 
| 11311 | 
            -
             | 
| 11312 | 
            -
                           !resource_is_opaque.IsEmpty() && resource_is_opaque->IsTrue(),
         | 
| 11313 | 
            -
                           !is_wasm.IsEmpty() && is_wasm->IsTrue(),
         | 
| 11314 | 
            -
                           !is_module.IsEmpty() && is_module->IsTrue()),
         | 
| 11822 | 
            +
                : isolate_(isolate),
         | 
| 11823 | 
            +
                  resource_name_(resource_name),
         | 
| 11824 | 
            +
                  resource_line_offset_(line_offset),
         | 
| 11825 | 
            +
                  resource_column_offset_(column_offset),
         | 
| 11826 | 
            +
                  options_(is_shared_cross_origin, is_opaque, is_wasm, is_module),
         | 
| 11315 11827 | 
             
                  script_id_(script_id),
         | 
| 11316 11828 | 
             
                  source_map_url_(source_map_url),
         | 
| 11317 11829 | 
             
                  host_defined_options_(host_defined_options) {}
         | 
| @@ -11323,17 +11835,22 @@ Local<PrimitiveArray> ScriptOrigin::HostDefinedOptions() const { | |
| 11323 11835 | 
             
            }
         | 
| 11324 11836 |  | 
| 11325 11837 | 
             
            Local<Integer> ScriptOrigin::ResourceLineOffset() const {
         | 
| 11326 | 
            -
              return resource_line_offset_;
         | 
| 11838 | 
            +
              return v8::Integer::New(isolate_, resource_line_offset_);
         | 
| 11327 11839 | 
             
            }
         | 
| 11328 11840 |  | 
| 11329 | 
            -
             | 
| 11330 11841 | 
             
            Local<Integer> ScriptOrigin::ResourceColumnOffset() const {
         | 
| 11331 | 
            -
              return resource_column_offset_;
         | 
| 11842 | 
            +
              return v8::Integer::New(isolate_, resource_column_offset_);
         | 
| 11332 11843 | 
             
            }
         | 
| 11333 11844 |  | 
| 11845 | 
            +
            Local<Integer> ScriptOrigin::ScriptID() const {
         | 
| 11846 | 
            +
              return v8::Integer::New(isolate_, script_id_);
         | 
| 11847 | 
            +
            }
         | 
| 11848 | 
            +
             | 
| 11849 | 
            +
            int ScriptOrigin::LineOffset() const { return resource_line_offset_; }
         | 
| 11334 11850 |  | 
| 11335 | 
            -
             | 
| 11851 | 
            +
            int ScriptOrigin::ColumnOffset() const { return resource_column_offset_; }
         | 
| 11336 11852 |  | 
| 11853 | 
            +
            int ScriptOrigin::ScriptId() const { return script_id_; }
         | 
| 11337 11854 |  | 
| 11338 11855 | 
             
            Local<Value> ScriptOrigin::SourceMapUrl() const { return source_map_url_; }
         | 
| 11339 11856 |  | 
| @@ -11341,8 +11858,8 @@ ScriptCompiler::Source::Source(Local<String> string, const ScriptOrigin& origin, | |
| 11341 11858 | 
             
                                           CachedData* data)
         | 
| 11342 11859 | 
             
                : source_string(string),
         | 
| 11343 11860 | 
             
                  resource_name(origin.ResourceName()),
         | 
| 11344 | 
            -
                  resource_line_offset(origin. | 
| 11345 | 
            -
                  resource_column_offset(origin. | 
| 11861 | 
            +
                  resource_line_offset(origin.LineOffset()),
         | 
| 11862 | 
            +
                  resource_column_offset(origin.ColumnOffset()),
         | 
| 11346 11863 | 
             
                  resource_options(origin.Options()),
         | 
| 11347 11864 | 
             
                  source_map_url(origin.SourceMapUrl()),
         | 
| 11348 11865 | 
             
                  host_defined_options(origin.HostDefinedOptions()),
         | 
| @@ -11407,8 +11924,8 @@ AccessorSignature* AccessorSignature::Cast(Data* data) { | |
| 11407 11924 |  | 
| 11408 11925 | 
             
            Local<Value> Object::GetInternalField(int index) {
         | 
| 11409 11926 | 
             
            #ifndef V8_ENABLE_CHECKS
         | 
| 11410 | 
            -
               | 
| 11411 | 
            -
               | 
| 11927 | 
            +
              using A = internal::Address;
         | 
| 11928 | 
            +
              using I = internal::Internals;
         | 
| 11412 11929 | 
             
              A obj = *reinterpret_cast<A*>(this);
         | 
| 11413 11930 | 
             
              // Fast path: If the object is a plain JSObject, which is the common case, we
         | 
| 11414 11931 | 
             
              // know where to find the internal fields and can return the value directly.
         | 
| @@ -11435,8 +11952,8 @@ Local<Value> Object::GetInternalField(int index) { | |
| 11435 11952 |  | 
| 11436 11953 | 
             
            void* Object::GetAlignedPointerFromInternalField(int index) {
         | 
| 11437 11954 | 
             
            #ifndef V8_ENABLE_CHECKS
         | 
| 11438 | 
            -
               | 
| 11439 | 
            -
               | 
| 11955 | 
            +
              using A = internal::Address;
         | 
| 11956 | 
            +
              using I = internal::Internals;
         | 
| 11440 11957 | 
             
              A obj = *reinterpret_cast<A*>(this);
         | 
| 11441 11958 | 
             
              // Fast path: If the object is a plain JSObject, which is the common case, we
         | 
| 11442 11959 | 
             
              // know where to find the internal fields and can return the value directly.
         | 
| @@ -11445,25 +11962,28 @@ void* Object::GetAlignedPointerFromInternalField(int index) { | |
| 11445 11962 | 
             
                            instance_type == I::kJSApiObjectType ||
         | 
| 11446 11963 | 
             
                            instance_type == I::kJSSpecialApiObjectType)) {
         | 
| 11447 11964 | 
             
                int offset = I::kJSObjectHeaderSize + (I::kEmbedderDataSlotSize * index);
         | 
| 11965 | 
            +
            #ifdef V8_HEAP_SANDBOX
         | 
| 11966 | 
            +
                offset += I::kEmbedderDataSlotRawPayloadOffset;
         | 
| 11967 | 
            +
            #endif
         | 
| 11448 11968 | 
             
                internal::Isolate* isolate = I::GetIsolateForHeapSandbox(obj);
         | 
| 11449 | 
            -
                A value = I::ReadExternalPointerField( | 
| 11969 | 
            +
                A value = I::ReadExternalPointerField(
         | 
| 11970 | 
            +
                    isolate, obj, offset, internal::kEmbedderDataSlotPayloadTag);
         | 
| 11450 11971 | 
             
                return reinterpret_cast<void*>(value);
         | 
| 11451 11972 | 
             
              }
         | 
| 11452 11973 | 
             
            #endif
         | 
| 11453 11974 | 
             
              return SlowGetAlignedPointerFromInternalField(index);
         | 
| 11454 11975 | 
             
            }
         | 
| 11455 11976 |  | 
| 11456 | 
            -
            String* String::Cast(v8:: | 
| 11977 | 
            +
            String* String::Cast(v8::Data* data) {
         | 
| 11457 11978 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11458 | 
            -
              CheckCast( | 
| 11979 | 
            +
              CheckCast(data);
         | 
| 11459 11980 | 
             
            #endif
         | 
| 11460 | 
            -
              return static_cast<String*>( | 
| 11981 | 
            +
              return static_cast<String*>(data);
         | 
| 11461 11982 | 
             
            }
         | 
| 11462 11983 |  | 
| 11463 | 
            -
             | 
| 11464 11984 | 
             
            Local<String> String::Empty(Isolate* isolate) {
         | 
| 11465 | 
            -
               | 
| 11466 | 
            -
               | 
| 11985 | 
            +
              using S = internal::Address;
         | 
| 11986 | 
            +
              using I = internal::Internals;
         | 
| 11467 11987 | 
             
              I::CheckInitialized(isolate);
         | 
| 11468 11988 | 
             
              S* slot = I::GetRoot(isolate, I::kEmptyStringRootIndex);
         | 
| 11469 11989 | 
             
              return Local<String>(reinterpret_cast<String*>(slot));
         | 
| @@ -11471,15 +11991,16 @@ Local<String> String::Empty(Isolate* isolate) { | |
| 11471 11991 |  | 
| 11472 11992 |  | 
| 11473 11993 | 
             
            String::ExternalStringResource* String::GetExternalStringResource() const {
         | 
| 11474 | 
            -
               | 
| 11475 | 
            -
               | 
| 11994 | 
            +
              using A = internal::Address;
         | 
| 11995 | 
            +
              using I = internal::Internals;
         | 
| 11476 11996 | 
             
              A obj = *reinterpret_cast<const A*>(this);
         | 
| 11477 11997 |  | 
| 11478 11998 | 
             
              ExternalStringResource* result;
         | 
| 11479 11999 | 
             
              if (I::IsExternalTwoByteString(I::GetInstanceType(obj))) {
         | 
| 11480 12000 | 
             
                internal::Isolate* isolate = I::GetIsolateForHeapSandbox(obj);
         | 
| 11481 12001 | 
             
                A value =
         | 
| 11482 | 
            -
                    I::ReadExternalPointerField(isolate, obj, I::kStringResourceOffset | 
| 12002 | 
            +
                    I::ReadExternalPointerField(isolate, obj, I::kStringResourceOffset,
         | 
| 12003 | 
            +
                                                internal::kExternalStringResourceTag);
         | 
| 11483 12004 | 
             
                result = reinterpret_cast<String::ExternalStringResource*>(value);
         | 
| 11484 12005 | 
             
              } else {
         | 
| 11485 12006 | 
             
                result = GetExternalStringResourceSlow();
         | 
| @@ -11493,8 +12014,8 @@ String::ExternalStringResource* String::GetExternalStringResource() const { | |
| 11493 12014 |  | 
| 11494 12015 | 
             
            String::ExternalStringResourceBase* String::GetExternalStringResourceBase(
         | 
| 11495 12016 | 
             
                String::Encoding* encoding_out) const {
         | 
| 11496 | 
            -
               | 
| 11497 | 
            -
               | 
| 12017 | 
            +
              using A = internal::Address;
         | 
| 12018 | 
            +
              using I = internal::Internals;
         | 
| 11498 12019 | 
             
              A obj = *reinterpret_cast<const A*>(this);
         | 
| 11499 12020 | 
             
              int type = I::GetInstanceType(obj) & I::kFullStringRepresentationMask;
         | 
| 11500 12021 | 
             
              *encoding_out = static_cast<Encoding>(type & I::kStringEncodingMask);
         | 
| @@ -11503,7 +12024,8 @@ String::ExternalStringResourceBase* String::GetExternalStringResourceBase( | |
| 11503 12024 | 
             
                  type == I::kExternalTwoByteRepresentationTag) {
         | 
| 11504 12025 | 
             
                internal::Isolate* isolate = I::GetIsolateForHeapSandbox(obj);
         | 
| 11505 12026 | 
             
                A value =
         | 
| 11506 | 
            -
                    I::ReadExternalPointerField(isolate, obj, I::kStringResourceOffset | 
| 12027 | 
            +
                    I::ReadExternalPointerField(isolate, obj, I::kStringResourceOffset,
         | 
| 12028 | 
            +
                                                internal::kExternalStringResourceTag);
         | 
| 11507 12029 | 
             
                resource = reinterpret_cast<ExternalStringResourceBase*>(value);
         | 
| 11508 12030 | 
             
              } else {
         | 
| 11509 12031 | 
             
                resource = GetExternalStringResourceBaseSlow(encoding_out);
         | 
| @@ -11524,8 +12046,8 @@ bool Value::IsUndefined() const { | |
| 11524 12046 | 
             
            }
         | 
| 11525 12047 |  | 
| 11526 12048 | 
             
            bool Value::QuickIsUndefined() const {
         | 
| 11527 | 
            -
               | 
| 11528 | 
            -
               | 
| 12049 | 
            +
              using A = internal::Address;
         | 
| 12050 | 
            +
              using I = internal::Internals;
         | 
| 11529 12051 | 
             
              A obj = *reinterpret_cast<const A*>(this);
         | 
| 11530 12052 | 
             
              if (!I::HasHeapObjectTag(obj)) return false;
         | 
| 11531 12053 | 
             
              if (I::GetInstanceType(obj) != I::kOddballType) return false;
         | 
| @@ -11542,8 +12064,8 @@ bool Value::IsNull() const { | |
| 11542 12064 | 
             
            }
         | 
| 11543 12065 |  | 
| 11544 12066 | 
             
            bool Value::QuickIsNull() const {
         | 
| 11545 | 
            -
               | 
| 11546 | 
            -
               | 
| 12067 | 
            +
              using A = internal::Address;
         | 
| 12068 | 
            +
              using I = internal::Internals;
         | 
| 11547 12069 | 
             
              A obj = *reinterpret_cast<const A*>(this);
         | 
| 11548 12070 | 
             
              if (!I::HasHeapObjectTag(obj)) return false;
         | 
| 11549 12071 | 
             
              if (I::GetInstanceType(obj) != I::kOddballType) return false;
         | 
| @@ -11559,8 +12081,8 @@ bool Value::IsNullOrUndefined() const { | |
| 11559 12081 | 
             
            }
         | 
| 11560 12082 |  | 
| 11561 12083 | 
             
            bool Value::QuickIsNullOrUndefined() const {
         | 
| 11562 | 
            -
               | 
| 11563 | 
            -
               | 
| 12084 | 
            +
              using A = internal::Address;
         | 
| 12085 | 
            +
              using I = internal::Internals;
         | 
| 11564 12086 | 
             
              A obj = *reinterpret_cast<const A*>(this);
         | 
| 11565 12087 | 
             
              if (!I::HasHeapObjectTag(obj)) return false;
         | 
| 11566 12088 | 
             
              if (I::GetInstanceType(obj) != I::kOddballType) return false;
         | 
| @@ -11577,8 +12099,8 @@ bool Value::IsString() const { | |
| 11577 12099 | 
             
            }
         | 
| 11578 12100 |  | 
| 11579 12101 | 
             
            bool Value::QuickIsString() const {
         | 
| 11580 | 
            -
               | 
| 11581 | 
            -
               | 
| 12102 | 
            +
              using A = internal::Address;
         | 
| 12103 | 
            +
              using I = internal::Internals;
         | 
| 11582 12104 | 
             
              A obj = *reinterpret_cast<const A*>(this);
         | 
| 11583 12105 | 
             
              if (!I::HasHeapObjectTag(obj)) return false;
         | 
| 11584 12106 | 
             
              return (I::GetInstanceType(obj) < I::kFirstNonstringType);
         | 
| @@ -11589,30 +12111,34 @@ template <class T> Value* Value::Cast(T* value) { | |
| 11589 12111 | 
             
              return static_cast<Value*>(value);
         | 
| 11590 12112 | 
             
            }
         | 
| 11591 12113 |  | 
| 11592 | 
            -
             | 
| 11593 | 
            -
             | 
| 12114 | 
            +
            template <>
         | 
| 12115 | 
            +
            V8_INLINE Value* Value::Cast(Data* value) {
         | 
| 11594 12116 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11595 12117 | 
             
              CheckCast(value);
         | 
| 11596 12118 | 
             
            #endif
         | 
| 11597 | 
            -
              return static_cast< | 
| 12119 | 
            +
              return static_cast<Value*>(value);
         | 
| 11598 12120 | 
             
            }
         | 
| 11599 12121 |  | 
| 11600 | 
            -
             | 
| 11601 | 
            -
            Name* Name::Cast(v8::Value* value) {
         | 
| 12122 | 
            +
            Boolean* Boolean::Cast(v8::Data* data) {
         | 
| 11602 12123 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11603 | 
            -
              CheckCast( | 
| 12124 | 
            +
              CheckCast(data);
         | 
| 11604 12125 | 
             
            #endif
         | 
| 11605 | 
            -
              return static_cast< | 
| 12126 | 
            +
              return static_cast<Boolean*>(data);
         | 
| 11606 12127 | 
             
            }
         | 
| 11607 12128 |  | 
| 11608 | 
            -
             | 
| 11609 | 
            -
            Symbol* Symbol::Cast(v8::Value* value) {
         | 
| 12129 | 
            +
            Name* Name::Cast(v8::Data* data) {
         | 
| 11610 12130 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11611 | 
            -
              CheckCast( | 
| 12131 | 
            +
              CheckCast(data);
         | 
| 11612 12132 | 
             
            #endif
         | 
| 11613 | 
            -
              return static_cast< | 
| 12133 | 
            +
              return static_cast<Name*>(data);
         | 
| 11614 12134 | 
             
            }
         | 
| 11615 12135 |  | 
| 12136 | 
            +
            Symbol* Symbol::Cast(v8::Data* data) {
         | 
| 12137 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 12138 | 
            +
              CheckCast(data);
         | 
| 12139 | 
            +
            #endif
         | 
| 12140 | 
            +
              return static_cast<Symbol*>(data);
         | 
| 12141 | 
            +
            }
         | 
| 11616 12142 |  | 
| 11617 12143 | 
             
            Private* Private::Cast(Data* data) {
         | 
| 11618 12144 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| @@ -11621,43 +12147,60 @@ Private* Private::Cast(Data* data) { | |
| 11621 12147 | 
             
              return reinterpret_cast<Private*>(data);
         | 
| 11622 12148 | 
             
            }
         | 
| 11623 12149 |  | 
| 11624 | 
            -
             | 
| 11625 | 
            -
            Number* Number::Cast(v8::Value* value) {
         | 
| 12150 | 
            +
            ModuleRequest* ModuleRequest::Cast(Data* data) {
         | 
| 11626 12151 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11627 | 
            -
              CheckCast( | 
| 12152 | 
            +
              CheckCast(data);
         | 
| 11628 12153 | 
             
            #endif
         | 
| 11629 | 
            -
              return  | 
| 12154 | 
            +
              return reinterpret_cast<ModuleRequest*>(data);
         | 
| 11630 12155 | 
             
            }
         | 
| 11631 12156 |  | 
| 12157 | 
            +
            Module* Module::Cast(Data* data) {
         | 
| 12158 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 12159 | 
            +
              CheckCast(data);
         | 
| 12160 | 
            +
            #endif
         | 
| 12161 | 
            +
              return reinterpret_cast<Module*>(data);
         | 
| 12162 | 
            +
            }
         | 
| 11632 12163 |  | 
| 11633 | 
            -
             | 
| 12164 | 
            +
            Number* Number::Cast(v8::Data* data) {
         | 
| 11634 12165 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11635 | 
            -
              CheckCast( | 
| 12166 | 
            +
              CheckCast(data);
         | 
| 11636 12167 | 
             
            #endif
         | 
| 11637 | 
            -
              return static_cast< | 
| 12168 | 
            +
              return static_cast<Number*>(data);
         | 
| 11638 12169 | 
             
            }
         | 
| 11639 12170 |  | 
| 12171 | 
            +
            Integer* Integer::Cast(v8::Data* data) {
         | 
| 12172 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 12173 | 
            +
              CheckCast(data);
         | 
| 12174 | 
            +
            #endif
         | 
| 12175 | 
            +
              return static_cast<Integer*>(data);
         | 
| 12176 | 
            +
            }
         | 
| 11640 12177 |  | 
| 11641 | 
            -
            Int32* Int32::Cast(v8:: | 
| 12178 | 
            +
            Int32* Int32::Cast(v8::Data* data) {
         | 
| 11642 12179 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11643 | 
            -
              CheckCast( | 
| 12180 | 
            +
              CheckCast(data);
         | 
| 11644 12181 | 
             
            #endif
         | 
| 11645 | 
            -
              return static_cast<Int32*>( | 
| 12182 | 
            +
              return static_cast<Int32*>(data);
         | 
| 11646 12183 | 
             
            }
         | 
| 11647 12184 |  | 
| 12185 | 
            +
            Uint32* Uint32::Cast(v8::Data* data) {
         | 
| 12186 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 12187 | 
            +
              CheckCast(data);
         | 
| 12188 | 
            +
            #endif
         | 
| 12189 | 
            +
              return static_cast<Uint32*>(data);
         | 
| 12190 | 
            +
            }
         | 
| 11648 12191 |  | 
| 11649 | 
            -
             | 
| 12192 | 
            +
            BigInt* BigInt::Cast(v8::Data* data) {
         | 
| 11650 12193 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11651 | 
            -
              CheckCast( | 
| 12194 | 
            +
              CheckCast(data);
         | 
| 11652 12195 | 
             
            #endif
         | 
| 11653 | 
            -
              return static_cast< | 
| 12196 | 
            +
              return static_cast<BigInt*>(data);
         | 
| 11654 12197 | 
             
            }
         | 
| 11655 12198 |  | 
| 11656 | 
            -
             | 
| 12199 | 
            +
            Context* Context::Cast(v8::Data* data) {
         | 
| 11657 12200 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11658 | 
            -
              CheckCast( | 
| 12201 | 
            +
              CheckCast(data);
         | 
| 11659 12202 | 
             
            #endif
         | 
| 11660 | 
            -
              return static_cast< | 
| 12203 | 
            +
              return static_cast<Context*>(data);
         | 
| 11661 12204 | 
             
            }
         | 
| 11662 12205 |  | 
| 11663 12206 | 
             
            Date* Date::Cast(v8::Value* value) {
         | 
| @@ -11761,6 +12304,13 @@ Proxy* Proxy::Cast(v8::Value* value) { | |
| 11761 12304 | 
             
              return static_cast<Proxy*>(value);
         | 
| 11762 12305 | 
             
            }
         | 
| 11763 12306 |  | 
| 12307 | 
            +
            WasmMemoryObject* WasmMemoryObject::Cast(v8::Value* value) {
         | 
| 12308 | 
            +
            #ifdef V8_ENABLE_CHECKS
         | 
| 12309 | 
            +
              CheckCast(value);
         | 
| 12310 | 
            +
            #endif
         | 
| 12311 | 
            +
              return static_cast<WasmMemoryObject*>(value);
         | 
| 12312 | 
            +
            }
         | 
| 12313 | 
            +
             | 
| 11764 12314 | 
             
            WasmModuleObject* WasmModuleObject::Cast(v8::Value* value) {
         | 
| 11765 12315 | 
             
            #ifdef V8_ENABLE_CHECKS
         | 
| 11766 12316 | 
             
              CheckCast(value);
         | 
| @@ -11948,7 +12498,7 @@ ReturnValue<T> PropertyCallbackInfo<T>::GetReturnValue() const { | |
| 11948 12498 |  | 
| 11949 12499 | 
             
            template <typename T>
         | 
| 11950 12500 | 
             
            bool PropertyCallbackInfo<T>::ShouldThrowOnError() const {
         | 
| 11951 | 
            -
               | 
| 12501 | 
            +
              using I = internal::Internals;
         | 
| 11952 12502 | 
             
              if (args_[kShouldThrowOnErrorIndex] !=
         | 
| 11953 12503 | 
             
                  I::IntToSmi(I::kInferShouldThrowMode)) {
         | 
| 11954 12504 | 
             
                return args_[kShouldThrowOnErrorIndex] != I::IntToSmi(I::kDontThrow);
         | 
| @@ -11958,8 +12508,8 @@ bool PropertyCallbackInfo<T>::ShouldThrowOnError() const { | |
| 11958 12508 | 
             
            }
         | 
| 11959 12509 |  | 
| 11960 12510 | 
             
            Local<Primitive> Undefined(Isolate* isolate) {
         | 
| 11961 | 
            -
               | 
| 11962 | 
            -
               | 
| 12511 | 
            +
              using S = internal::Address;
         | 
| 12512 | 
            +
              using I = internal::Internals;
         | 
| 11963 12513 | 
             
              I::CheckInitialized(isolate);
         | 
| 11964 12514 | 
             
              S* slot = I::GetRoot(isolate, I::kUndefinedValueRootIndex);
         | 
| 11965 12515 | 
             
              return Local<Primitive>(reinterpret_cast<Primitive*>(slot));
         | 
| @@ -11967,8 +12517,8 @@ Local<Primitive> Undefined(Isolate* isolate) { | |
| 11967 12517 |  | 
| 11968 12518 |  | 
| 11969 12519 | 
             
            Local<Primitive> Null(Isolate* isolate) {
         | 
| 11970 | 
            -
               | 
| 11971 | 
            -
               | 
| 12520 | 
            +
              using S = internal::Address;
         | 
| 12521 | 
            +
              using I = internal::Internals;
         | 
| 11972 12522 | 
             
              I::CheckInitialized(isolate);
         | 
| 11973 12523 | 
             
              S* slot = I::GetRoot(isolate, I::kNullValueRootIndex);
         | 
| 11974 12524 | 
             
              return Local<Primitive>(reinterpret_cast<Primitive*>(slot));
         | 
| @@ -11976,8 +12526,8 @@ Local<Primitive> Null(Isolate* isolate) { | |
| 11976 12526 |  | 
| 11977 12527 |  | 
| 11978 12528 | 
             
            Local<Boolean> True(Isolate* isolate) {
         | 
| 11979 | 
            -
               | 
| 11980 | 
            -
               | 
| 12529 | 
            +
              using S = internal::Address;
         | 
| 12530 | 
            +
              using I = internal::Internals;
         | 
| 11981 12531 | 
             
              I::CheckInitialized(isolate);
         | 
| 11982 12532 | 
             
              S* slot = I::GetRoot(isolate, I::kTrueValueRootIndex);
         | 
| 11983 12533 | 
             
              return Local<Boolean>(reinterpret_cast<Boolean*>(slot));
         | 
| @@ -11985,8 +12535,8 @@ Local<Boolean> True(Isolate* isolate) { | |
| 11985 12535 |  | 
| 11986 12536 |  | 
| 11987 12537 | 
             
            Local<Boolean> False(Isolate* isolate) {
         | 
| 11988 | 
            -
               | 
| 11989 | 
            -
               | 
| 12538 | 
            +
              using S = internal::Address;
         | 
| 12539 | 
            +
              using I = internal::Internals;
         | 
| 11990 12540 | 
             
              I::CheckInitialized(isolate);
         | 
| 11991 12541 | 
             
              S* slot = I::GetRoot(isolate, I::kFalseValueRootIndex);
         | 
| 11992 12542 | 
             
              return Local<Boolean>(reinterpret_cast<Boolean*>(slot));
         | 
| @@ -11994,19 +12544,19 @@ Local<Boolean> False(Isolate* isolate) { | |
| 11994 12544 |  | 
| 11995 12545 |  | 
| 11996 12546 | 
             
            void Isolate::SetData(uint32_t slot, void* data) {
         | 
| 11997 | 
            -
               | 
| 12547 | 
            +
              using I = internal::Internals;
         | 
| 11998 12548 | 
             
              I::SetEmbedderData(this, slot, data);
         | 
| 11999 12549 | 
             
            }
         | 
| 12000 12550 |  | 
| 12001 12551 |  | 
| 12002 12552 | 
             
            void* Isolate::GetData(uint32_t slot) {
         | 
| 12003 | 
            -
               | 
| 12553 | 
            +
              using I = internal::Internals;
         | 
| 12004 12554 | 
             
              return I::GetEmbedderData(this, slot);
         | 
| 12005 12555 | 
             
            }
         | 
| 12006 12556 |  | 
| 12007 12557 |  | 
| 12008 12558 | 
             
            uint32_t Isolate::GetNumberOfDataSlots() {
         | 
| 12009 | 
            -
               | 
| 12559 | 
            +
              using I = internal::Internals;
         | 
| 12010 12560 | 
             
              return I::kNumIsolateDataSlots;
         | 
| 12011 12561 | 
             
            }
         | 
| 12012 12562 |  | 
| @@ -12019,8 +12569,8 @@ MaybeLocal<T> Isolate::GetDataFromSnapshotOnce(size_t index) { | |
| 12019 12569 |  | 
| 12020 12570 | 
             
            Local<Value> Context::GetEmbedderData(int index) {
         | 
| 12021 12571 | 
             
            #ifndef V8_ENABLE_CHECKS
         | 
| 12022 | 
            -
               | 
| 12023 | 
            -
               | 
| 12572 | 
            +
              using A = internal::Address;
         | 
| 12573 | 
            +
              using I = internal::Internals;
         | 
| 12024 12574 | 
             
              A ctx = *reinterpret_cast<const A*>(this);
         | 
| 12025 12575 | 
             
              A embedder_data =
         | 
| 12026 12576 | 
             
                  I::ReadTaggedPointerField(ctx, I::kNativeContextEmbedderDataOffset);
         | 
| @@ -12045,16 +12595,20 @@ Local<Value> Context::GetEmbedderData(int index) { | |
| 12045 12595 |  | 
| 12046 12596 | 
             
            void* Context::GetAlignedPointerFromEmbedderData(int index) {
         | 
| 12047 12597 | 
             
            #ifndef V8_ENABLE_CHECKS
         | 
| 12048 | 
            -
               | 
| 12049 | 
            -
               | 
| 12598 | 
            +
              using A = internal::Address;
         | 
| 12599 | 
            +
              using I = internal::Internals;
         | 
| 12050 12600 | 
             
              A ctx = *reinterpret_cast<const A*>(this);
         | 
| 12051 12601 | 
             
              A embedder_data =
         | 
| 12052 12602 | 
             
                  I::ReadTaggedPointerField(ctx, I::kNativeContextEmbedderDataOffset);
         | 
| 12053 12603 | 
             
              int value_offset =
         | 
| 12054 12604 | 
             
                  I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index);
         | 
| 12605 | 
            +
            #ifdef V8_HEAP_SANDBOX
         | 
| 12606 | 
            +
              value_offset += I::kEmbedderDataSlotRawPayloadOffset;
         | 
| 12607 | 
            +
            #endif
         | 
| 12055 12608 | 
             
              internal::Isolate* isolate = I::GetIsolateForHeapSandbox(ctx);
         | 
| 12056 12609 | 
             
              return reinterpret_cast<void*>(
         | 
| 12057 | 
            -
                  I::ReadExternalPointerField(isolate, embedder_data, value_offset | 
| 12610 | 
            +
                  I::ReadExternalPointerField(isolate, embedder_data, value_offset,
         | 
| 12611 | 
            +
                                              internal::kEmbedderDataSlotPayloadTag));
         | 
| 12058 12612 | 
             
            #else
         | 
| 12059 12613 | 
             
              return SlowGetAlignedPointerFromEmbedderData(index);
         | 
| 12060 12614 | 
             
            #endif
         |