libv8-node 21.7.2.0-x86_64-linux → 22.5.1.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/lib/libv8/node/version.rb +3 -3
- data/vendor/v8/include/cppgc/internal/api-constants.h +1 -1
- data/vendor/v8/include/cppgc/type-traits.h +25 -4
- data/vendor/v8/include/v8-array-buffer.h +6 -0
- data/vendor/v8/include/v8-callbacks.h +6 -12
- data/vendor/v8/include/v8-container.h +54 -0
- data/vendor/v8/include/v8-context.h +51 -22
- data/vendor/v8/include/v8-embedder-heap.h +19 -3
- data/vendor/v8/include/v8-embedder-state-scope.h +2 -1
- data/vendor/v8/include/v8-exception.h +15 -9
- data/vendor/v8/include/v8-fast-api-calls.h +35 -26
- data/vendor/v8/include/v8-forward.h +1 -0
- data/vendor/v8/include/v8-function-callback.h +129 -20
- data/vendor/v8/include/v8-handle-base.h +32 -80
- data/vendor/v8/include/v8-inspector.h +16 -24
- data/vendor/v8/include/v8-internal.h +472 -65
- data/vendor/v8/include/v8-isolate.h +86 -51
- data/vendor/v8/include/v8-local-handle.h +257 -31
- data/vendor/v8/include/v8-memory-span.h +157 -2
- data/vendor/v8/include/v8-message.h +22 -3
- data/vendor/v8/include/v8-metrics.h +1 -0
- data/vendor/v8/include/v8-object.h +29 -10
- data/vendor/v8/include/v8-persistent-handle.h +5 -3
- data/vendor/v8/include/v8-platform.h +81 -44
- data/vendor/v8/include/v8-script.h +61 -11
- data/vendor/v8/include/v8-snapshot.h +94 -23
- data/vendor/v8/include/v8-statistics.h +10 -24
- data/vendor/v8/include/v8-template.h +410 -131
- data/vendor/v8/include/v8-traced-handle.h +81 -46
- data/vendor/v8/include/v8-typed-array.h +115 -7
- data/vendor/v8/include/v8-util.h +13 -12
- data/vendor/v8/include/v8-value.h +92 -4
- data/vendor/v8/include/v8-version.h +4 -4
- data/vendor/v8/include/v8config.h +35 -10
- data/vendor/v8/x86_64-linux/libv8/obj/libv8_monolith.a +0 -0
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: bbc059a2c00ff798a2656b9057f89f53be12eab9294227f9c034468e2127e2e0
         | 
| 4 | 
            +
              data.tar.gz: 6cc9a81c9edfb35baf2e6434f0d2064b2fca9a58183188d8d444372d22ec5d05
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 89489068485db56c9056f009b62d6659af259fa585fe459ae7f8a08aa2c2dbedcb2b2b87a8afc89dc8f5af9eeacc3936a9d43255131838a84820d07bed8599cb
         | 
| 7 | 
            +
              data.tar.gz: 44602aee4e65ddb8738b75b6e640e72c78b2baae00a883006b5062f60b28d37fdd2f4775fff747a7468c28ce8153cc56e5af7c4812689b237cf4b587f26ca470
         | 
    
        data/lib/libv8/node/version.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            module Libv8; end
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Libv8::Node
         | 
| 4 | 
            -
              VERSION = ' | 
| 5 | 
            -
              NODE_VERSION = ' | 
| 6 | 
            -
              LIBV8_VERSION = ' | 
| 4 | 
            +
              VERSION = '22.5.1.0'.freeze
         | 
| 5 | 
            +
              NODE_VERSION = '22.5.1'.freeze
         | 
| 6 | 
            +
              LIBV8_VERSION = '12.4.254.21'.freeze # from v8/include/v8-version.h
         | 
| 7 7 | 
             
            end
         | 
| @@ -32,7 +32,7 @@ static constexpr uint16_t kFullyConstructedBitMask = uint16_t{1}; | |
| 32 32 |  | 
| 33 33 | 
             
            static constexpr size_t kPageSize = size_t{1} << 17;
         | 
| 34 34 |  | 
| 35 | 
            -
            #if defined( | 
| 35 | 
            +
            #if defined(V8_HOST_ARCH_ARM64) && defined(V8_OS_DARWIN)
         | 
| 36 36 | 
             
            constexpr size_t kGuardPageSize = 0;
         | 
| 37 37 | 
             
            #else
         | 
| 38 38 | 
             
            constexpr size_t kGuardPageSize = 4096;
         | 
| @@ -128,13 +128,13 @@ struct IsSubclassOfBasicMemberTemplate { | |
| 128 128 | 
             
             private:
         | 
| 129 129 | 
             
              template <typename T, typename CheckingPolicy, typename StorageType>
         | 
| 130 130 | 
             
              static std::true_type SubclassCheck(
         | 
| 131 | 
            -
                  BasicMember<T, WeaknessTag, WriteBarrierPolicy, CheckingPolicy,
         | 
| 132 | 
            -
             | 
| 131 | 
            +
                  const BasicMember<T, WeaknessTag, WriteBarrierPolicy, CheckingPolicy,
         | 
| 132 | 
            +
                                    StorageType>*);
         | 
| 133 133 | 
             
              static std::false_type SubclassCheck(...);
         | 
| 134 134 |  | 
| 135 135 | 
             
             public:
         | 
| 136 | 
            -
              static constexpr bool value =
         | 
| 137 | 
            -
                   | 
| 136 | 
            +
              static constexpr bool value = decltype(SubclassCheck(
         | 
| 137 | 
            +
                  std::declval<std::decay_t<BasicMemberCandidate>*>()))::value;
         | 
| 138 138 | 
             
            };
         | 
| 139 139 |  | 
| 140 140 | 
             
            template <typename T,
         | 
| @@ -180,6 +180,14 @@ constexpr bool IsStrictlyBaseOfV = | |
| 180 180 | 
             
                std::is_base_of_v<std::decay_t<B>, std::decay_t<D>> &&
         | 
| 181 181 | 
             
                !IsDecayedSameV<B, D>;
         | 
| 182 182 |  | 
| 183 | 
            +
            template <typename T>
         | 
| 184 | 
            +
            constexpr bool IsAnyMemberTypeV = false;
         | 
| 185 | 
            +
             | 
| 186 | 
            +
            template <typename T, typename WeaknessTag, typename WriteBarrierPolicy,
         | 
| 187 | 
            +
                      typename CheckingPolicy, typename StorageType>
         | 
| 188 | 
            +
            constexpr bool IsAnyMemberTypeV<internal::BasicMember<
         | 
| 189 | 
            +
                T, WeaknessTag, WriteBarrierPolicy, CheckingPolicy, StorageType>> = true;
         | 
| 190 | 
            +
             | 
| 183 191 | 
             
            }  // namespace internal
         | 
| 184 192 |  | 
| 185 193 | 
             
            /**
         | 
| @@ -245,6 +253,19 @@ constexpr bool IsWeakV = internal::IsWeak<T>::value; | |
| 245 253 | 
             
            template <typename T>
         | 
| 246 254 | 
             
            constexpr bool IsCompleteV = internal::IsComplete<T>::value;
         | 
| 247 255 |  | 
| 256 | 
            +
            /**
         | 
| 257 | 
            +
             * Value is true for member types `Member<T>` and `WeakMember<T>`.
         | 
| 258 | 
            +
             */
         | 
| 259 | 
            +
            template <typename T>
         | 
| 260 | 
            +
            constexpr bool IsMemberOrWeakMemberTypeV =
         | 
| 261 | 
            +
                IsMemberTypeV<T> || IsWeakMemberTypeV<T>;
         | 
| 262 | 
            +
             | 
| 263 | 
            +
            /**
         | 
| 264 | 
            +
             * Value is true for any member type.
         | 
| 265 | 
            +
             */
         | 
| 266 | 
            +
            template <typename T>
         | 
| 267 | 
            +
            constexpr bool IsAnyMemberTypeV = internal::IsAnyMemberTypeV<std::decay_t<T>>;
         | 
| 268 | 
            +
             | 
| 248 269 | 
             
            }  // namespace cppgc
         | 
| 249 270 |  | 
| 250 271 | 
             
            #endif  // INCLUDE_CPPGC_TYPE_TRAITS_H_
         | 
| @@ -318,6 +318,12 @@ class V8_EXPORT ArrayBuffer : public Object { | |
| 318 318 | 
             
               */
         | 
| 319 319 | 
             
              std::shared_ptr<BackingStore> GetBackingStore();
         | 
| 320 320 |  | 
| 321 | 
            +
              /**
         | 
| 322 | 
            +
               * More efficient shortcut for
         | 
| 323 | 
            +
               * GetBackingStore()->IsResizableByUserJavaScript().
         | 
| 324 | 
            +
               */
         | 
| 325 | 
            +
              bool IsResizableByUserJavaScript() const;
         | 
| 326 | 
            +
             | 
| 321 327 | 
             
              /**
         | 
| 322 328 | 
             
               * More efficient shortcut for GetBackingStore()->Data(). The returned pointer
         | 
| 323 329 | 
             
               * is valid as long as the ArrayBuffer is alive.
         | 
| @@ -327,10 +327,6 @@ using WasmAsyncResolvePromiseCallback = void (*)( | |
| 327 327 | 
             
            using WasmLoadSourceMapCallback = Local<String> (*)(Isolate* isolate,
         | 
| 328 328 | 
             
                                                                const char* name);
         | 
| 329 329 |  | 
| 330 | 
            -
            // --- Callback for checking if WebAssembly GC is enabled ---
         | 
| 331 | 
            -
            // If the callback returns true, it will also enable Wasm stringrefs.
         | 
| 332 | 
            -
            using WasmGCEnabledCallback = bool (*)(Local<Context> context);
         | 
| 333 | 
            -
             | 
| 334 330 | 
             
            // --- Callback for checking if WebAssembly imported strings are enabled ---
         | 
| 335 331 | 
             
            using WasmImportedStringsEnabledCallback = bool (*)(Local<Context> context);
         | 
| 336 332 |  | 
| @@ -342,6 +338,9 @@ using SharedArrayBufferConstructorEnabledCallback = | |
| 342 338 | 
             
            using JavaScriptCompileHintsMagicEnabledCallback =
         | 
| 343 339 | 
             
                bool (*)(Local<Context> context);
         | 
| 344 340 |  | 
| 341 | 
            +
            // --- Callback for checking if WebAssembly JSPI is enabled ---
         | 
| 342 | 
            +
            using WasmJSPIEnabledCallback = bool (*)(Local<Context> context);
         | 
| 343 | 
            +
             | 
| 345 344 | 
             
            /**
         | 
| 346 345 | 
             
             * HostImportModuleDynamicallyCallback is called when we
         | 
| 347 346 | 
             
             * require the embedder to load a module. This is used as part of the dynamic
         | 
| @@ -352,11 +351,11 @@ using JavaScriptCompileHintsMagicEnabledCallback = | |
| 352 351 | 
             
             *
         | 
| 353 352 | 
             
             * The specifier is the name of the module that should be imported.
         | 
| 354 353 | 
             
             *
         | 
| 355 | 
            -
             * The  | 
| 354 | 
            +
             * The import_attributes are import attributes for this request in the form:
         | 
| 356 355 | 
             
             * [key1, value1, key2, value2, ...] where the keys and values are of type
         | 
| 357 356 | 
             
             * v8::String. Note, unlike the FixedArray passed to ResolveModuleCallback and
         | 
| 358 357 | 
             
             * returned from ModuleRequest::GetImportAssertions(), this array does not
         | 
| 359 | 
            -
             * contain the source Locations of the  | 
| 358 | 
            +
             * contain the source Locations of the attributes.
         | 
| 360 359 | 
             
             *
         | 
| 361 360 | 
             
             * The embedder must compile, instantiate, evaluate the Module, and
         | 
| 362 361 | 
             
             * obtain its namespace object.
         | 
| @@ -368,15 +367,10 @@ using JavaScriptCompileHintsMagicEnabledCallback = | |
| 368 367 | 
             
             * fails (e.g. due to stack overflow), the embedder must propagate
         | 
| 369 368 | 
             
             * that exception by returning an empty MaybeLocal.
         | 
| 370 369 | 
             
             */
         | 
| 371 | 
            -
            using HostImportModuleDynamicallyWithImportAssertionsCallback =
         | 
| 372 | 
            -
                MaybeLocal<Promise> (*)(Local<Context> context,
         | 
| 373 | 
            -
                                        Local<ScriptOrModule> referrer,
         | 
| 374 | 
            -
                                        Local<String> specifier,
         | 
| 375 | 
            -
                                        Local<FixedArray> import_assertions);
         | 
| 376 370 | 
             
            using HostImportModuleDynamicallyCallback = MaybeLocal<Promise> (*)(
         | 
| 377 371 | 
             
                Local<Context> context, Local<Data> host_defined_options,
         | 
| 378 372 | 
             
                Local<Value> resource_name, Local<String> specifier,
         | 
| 379 | 
            -
                Local<FixedArray>  | 
| 373 | 
            +
                Local<FixedArray> import_attributes);
         | 
| 380 374 |  | 
| 381 375 | 
             
            /**
         | 
| 382 376 | 
             
             * Callback for requesting a compile hint for a function from the embedder. The
         | 
| @@ -8,6 +8,8 @@ | |
| 8 8 | 
             
            #include <stddef.h>
         | 
| 9 9 | 
             
            #include <stdint.h>
         | 
| 10 10 |  | 
| 11 | 
            +
            #include <functional>
         | 
| 12 | 
            +
             | 
| 11 13 | 
             
            #include "v8-local-handle.h"  // NOLINT(build/include_directory)
         | 
| 12 14 | 
             
            #include "v8-object.h"        // NOLINT(build/include_directory)
         | 
| 13 15 | 
             
            #include "v8config.h"         // NOLINT(build/include_directory)
         | 
| @@ -43,6 +45,58 @@ class V8_EXPORT Array : public Object { | |
| 43 45 | 
             
                return static_cast<Array*>(value);
         | 
| 44 46 | 
             
              }
         | 
| 45 47 |  | 
| 48 | 
            +
              /**
         | 
| 49 | 
            +
               * Creates a JavaScript array from a provided callback.
         | 
| 50 | 
            +
               *
         | 
| 51 | 
            +
               * \param context The v8::Context to create the array in.
         | 
| 52 | 
            +
               * \param length The length of the array to be created.
         | 
| 53 | 
            +
               * \param next_value_callback The callback that is invoked to retrieve
         | 
| 54 | 
            +
               *     elements for the array. The embedder can signal that the array
         | 
| 55 | 
            +
               *     initialization should be aborted by throwing an exception and returning
         | 
| 56 | 
            +
               *     an empty MaybeLocal.
         | 
| 57 | 
            +
               * \returns The v8::Array if all elements were constructed successfully and an
         | 
| 58 | 
            +
               *     empty MaybeLocal otherwise.
         | 
| 59 | 
            +
               */
         | 
| 60 | 
            +
              static MaybeLocal<Array> New(
         | 
| 61 | 
            +
                  Local<Context> context, size_t length,
         | 
| 62 | 
            +
                  std::function<MaybeLocal<v8::Value>()> next_value_callback);
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              enum class CallbackResult {
         | 
| 65 | 
            +
                kException,
         | 
| 66 | 
            +
                kBreak,
         | 
| 67 | 
            +
                kContinue,
         | 
| 68 | 
            +
              };
         | 
| 69 | 
            +
              using IterationCallback = CallbackResult (*)(uint32_t index,
         | 
| 70 | 
            +
                                                           Local<Value> element,
         | 
| 71 | 
            +
                                                           void* data);
         | 
| 72 | 
            +
             | 
| 73 | 
            +
              /**
         | 
| 74 | 
            +
               * Calls {callback} for every element of this array, passing {callback_data}
         | 
| 75 | 
            +
               * as its {data} parameter.
         | 
| 76 | 
            +
               * This function will typically be faster than calling {Get()} repeatedly.
         | 
| 77 | 
            +
               * As a consequence of being optimized for low overhead, the provided
         | 
| 78 | 
            +
               * callback must adhere to the following restrictions:
         | 
| 79 | 
            +
               *  - It must not allocate any V8 objects and continue iterating; it may
         | 
| 80 | 
            +
               *    allocate (e.g. an error message/object) and then immediately terminate
         | 
| 81 | 
            +
               *    the iteration.
         | 
| 82 | 
            +
               *  - It must not modify the array being iterated.
         | 
| 83 | 
            +
               *  - It must not call back into V8 (unless it can guarantee that such a
         | 
| 84 | 
            +
               *    call does not violate the above restrictions, which is difficult).
         | 
| 85 | 
            +
               *  - The {Local<Value> element} must not "escape", i.e. must not be assigned
         | 
| 86 | 
            +
               *    to any other {Local}. Creating a {Global} from it, or updating a
         | 
| 87 | 
            +
               *    v8::TypecheckWitness with it, is safe.
         | 
| 88 | 
            +
               * These restrictions may be lifted in the future if use cases arise that
         | 
| 89 | 
            +
               * justify a slower but more robust implementation.
         | 
| 90 | 
            +
               *
         | 
| 91 | 
            +
               * Returns {Nothing} on exception; use a {TryCatch} to catch and handle this
         | 
| 92 | 
            +
               * exception.
         | 
| 93 | 
            +
               * When the {callback} returns {kException}, iteration is terminated
         | 
| 94 | 
            +
               * immediately, returning {Nothing}. By returning {kBreak}, the callback
         | 
| 95 | 
            +
               * can request non-exceptional early termination of the iteration.
         | 
| 96 | 
            +
               */
         | 
| 97 | 
            +
              Maybe<void> Iterate(Local<Context> context, IterationCallback callback,
         | 
| 98 | 
            +
                                  void* callback_data);
         | 
| 99 | 
            +
             | 
| 46 100 | 
             
             private:
         | 
| 47 101 | 
             
              Array();
         | 
| 48 102 | 
             
              static void CheckCast(Value* obj);
         | 
| @@ -84,6 +84,29 @@ class V8_EXPORT Context : public Data { | |
| 84 84 | 
             
               * created by a previous call to Context::New with the same global
         | 
| 85 85 | 
             
               * template. The state of the global object will be completely reset
         | 
| 86 86 | 
             
               * and only object identify will remain.
         | 
| 87 | 
            +
               *
         | 
| 88 | 
            +
               * \param internal_fields_deserializer An optional callback used
         | 
| 89 | 
            +
               * to deserialize fields set by
         | 
| 90 | 
            +
               * v8::Object::SetAlignedPointerInInternalField() in wrapper objects
         | 
| 91 | 
            +
               * from the default context snapshot. It should match the
         | 
| 92 | 
            +
               * SerializeInternalFieldsCallback() used by
         | 
| 93 | 
            +
               * v8::SnapshotCreator::SetDefaultContext() when the default context
         | 
| 94 | 
            +
               * snapshot is created. It does not need to be configured if the default
         | 
| 95 | 
            +
               * context snapshot contains no wrapper objects with pointer internal
         | 
| 96 | 
            +
               * fields, or if no custom startup snapshot is configured
         | 
| 97 | 
            +
               * in the v8::CreateParams used to create the isolate.
         | 
| 98 | 
            +
               *
         | 
| 99 | 
            +
               * \param microtask_queue An optional microtask queue used to manage
         | 
| 100 | 
            +
               * the microtasks created in this context. If not set the per-isolate
         | 
| 101 | 
            +
               * default microtask queue would be used.
         | 
| 102 | 
            +
               *
         | 
| 103 | 
            +
               * \param context_data_deserializer An optional callback used
         | 
| 104 | 
            +
               * to deserialize embedder data set by
         | 
| 105 | 
            +
               * v8::Context::SetAlignedPointerInEmbedderData() in the default
         | 
| 106 | 
            +
               * context from the default context snapshot. It does not need to be
         | 
| 107 | 
            +
               * configured if the default context snapshot contains no pointer embedder
         | 
| 108 | 
            +
               * data, or if no custom startup snapshot is configured in the
         | 
| 109 | 
            +
               * v8::CreateParams used to create the isolate.
         | 
| 87 110 | 
             
               */
         | 
| 88 111 | 
             
              static Local<Context> New(
         | 
| 89 112 | 
             
                  Isolate* isolate, ExtensionConfiguration* extensions = nullptr,
         | 
| @@ -91,7 +114,9 @@ class V8_EXPORT Context : public Data { | |
| 91 114 | 
             
                  MaybeLocal<Value> global_object = MaybeLocal<Value>(),
         | 
| 92 115 | 
             
                  DeserializeInternalFieldsCallback internal_fields_deserializer =
         | 
| 93 116 | 
             
                      DeserializeInternalFieldsCallback(),
         | 
| 94 | 
            -
                  MicrotaskQueue* microtask_queue = nullptr | 
| 117 | 
            +
                  MicrotaskQueue* microtask_queue = nullptr,
         | 
| 118 | 
            +
                  DeserializeContextDataCallback context_data_deserializer =
         | 
| 119 | 
            +
                      DeserializeContextDataCallback());
         | 
| 95 120 |  | 
| 96 121 | 
             
              /**
         | 
| 97 122 | 
             
               * Create a new context from a (non-default) context snapshot. There
         | 
| @@ -103,21 +128,37 @@ class V8_EXPORT Context : public Data { | |
| 103 128 | 
             
               * \param context_snapshot_index The index of the context snapshot to
         | 
| 104 129 | 
             
               * deserialize from. Use v8::Context::New for the default snapshot.
         | 
| 105 130 | 
             
               *
         | 
| 106 | 
            -
               * \param  | 
| 107 | 
            -
               *  | 
| 108 | 
            -
               *  | 
| 131 | 
            +
               * \param internal_fields_deserializer An optional callback used
         | 
| 132 | 
            +
               * to deserialize fields set by
         | 
| 133 | 
            +
               * v8::Object::SetAlignedPointerInInternalField() in wrapper objects
         | 
| 134 | 
            +
               * from the default context snapshot. It does not need to be
         | 
| 135 | 
            +
               * configured if there are no wrapper objects with no internal
         | 
| 136 | 
            +
               * pointer fields in the default context snapshot or if no startup
         | 
| 137 | 
            +
               * snapshot is configured when the isolate is created.
         | 
| 109 138 | 
             
               *
         | 
| 110 139 | 
             
               * \param extensions See v8::Context::New.
         | 
| 111 140 | 
             
               *
         | 
| 112 141 | 
             
               * \param global_object See v8::Context::New.
         | 
| 142 | 
            +
               *
         | 
| 143 | 
            +
               * \param internal_fields_deserializer Similar to
         | 
| 144 | 
            +
               * internal_fields_deserializer in v8::Context::New but applies to
         | 
| 145 | 
            +
               * the context specified by the context_snapshot_index.
         | 
| 146 | 
            +
               *
         | 
| 147 | 
            +
               * \param microtask_queue  See v8::Context::New.
         | 
| 148 | 
            +
               *
         | 
| 149 | 
            +
               * \param context_data_deserializer  Similar to
         | 
| 150 | 
            +
               * context_data_deserializer in v8::Context::New but applies to
         | 
| 151 | 
            +
               * the context specified by the context_snapshot_index.
         | 
| 113 152 | 
             
               */
         | 
| 114 153 | 
             
              static MaybeLocal<Context> FromSnapshot(
         | 
| 115 154 | 
             
                  Isolate* isolate, size_t context_snapshot_index,
         | 
| 116 | 
            -
                  DeserializeInternalFieldsCallback  | 
| 155 | 
            +
                  DeserializeInternalFieldsCallback internal_fields_deserializer =
         | 
| 117 156 | 
             
                      DeserializeInternalFieldsCallback(),
         | 
| 118 157 | 
             
                  ExtensionConfiguration* extensions = nullptr,
         | 
| 119 158 | 
             
                  MaybeLocal<Value> global_object = MaybeLocal<Value>(),
         | 
| 120 | 
            -
                  MicrotaskQueue* microtask_queue = nullptr | 
| 159 | 
            +
                  MicrotaskQueue* microtask_queue = nullptr,
         | 
| 160 | 
            +
                  DeserializeContextDataCallback context_data_deserializer =
         | 
| 161 | 
            +
                      DeserializeContextDataCallback());
         | 
| 121 162 |  | 
| 122 163 | 
             
              /**
         | 
| 123 164 | 
             
               * Returns an global object that isn't backed by an actual context.
         | 
| @@ -182,7 +223,7 @@ class V8_EXPORT Context : public Data { | |
| 182 223 | 
             
                 * parameter. Returns true if the operation completed successfully.
         | 
| 183 224 | 
             
                 */
         | 
| 184 225 | 
             
                virtual bool FreezeEmbedderObjectAndGetChildren(
         | 
| 185 | 
            -
                    Local<Object> obj,  | 
| 226 | 
            +
                    Local<Object> obj, LocalVector<Object>& children_out) = 0;
         | 
| 186 227 | 
             
              };
         | 
| 187 228 |  | 
| 188 229 | 
             
              /**
         | 
| @@ -309,18 +350,6 @@ class V8_EXPORT Context : public Data { | |
| 309 350 | 
             
                                                            Local<Context> context);
         | 
| 310 351 | 
             
              void SetAbortScriptExecution(AbortScriptExecutionCallback callback);
         | 
| 311 352 |  | 
| 312 | 
            -
              /**
         | 
| 313 | 
            -
               * Returns the value that was set or restored by
         | 
| 314 | 
            -
               * SetContinuationPreservedEmbedderData(), if any.
         | 
| 315 | 
            -
               */
         | 
| 316 | 
            -
              Local<Value> GetContinuationPreservedEmbedderData() const;
         | 
| 317 | 
            -
             | 
| 318 | 
            -
              /**
         | 
| 319 | 
            -
               * Sets a value that will be stored on continuations and reset while the
         | 
| 320 | 
            -
               * continuation runs.
         | 
| 321 | 
            -
               */
         | 
| 322 | 
            -
              void SetContinuationPreservedEmbedderData(Local<Value> context);
         | 
| 323 | 
            -
             | 
| 324 353 | 
             
              /**
         | 
| 325 354 | 
             
               * Set or clear hooks to be invoked for promise lifecycle operations.
         | 
| 326 355 | 
             
               * To clear a hook, set it to an empty v8::Function. Each function will
         | 
| @@ -436,12 +465,12 @@ void* Context::GetAlignedPointerFromEmbedderData(int index) { | |
| 436 465 |  | 
| 437 466 | 
             
            template <class T>
         | 
| 438 467 | 
             
            MaybeLocal<T> Context::GetDataFromSnapshotOnce(size_t index) {
         | 
| 439 | 
            -
              auto slot = GetDataFromSnapshotOnce(index);
         | 
| 440 | 
            -
              if (slot) {
         | 
| 468 | 
            +
              if (auto slot = GetDataFromSnapshotOnce(index); slot) {
         | 
| 441 469 | 
             
                internal::PerformCastCheck(
         | 
| 442 470 | 
             
                    internal::ValueHelper::SlotAsValue<T, false>(slot));
         | 
| 471 | 
            +
                return Local<T>::FromSlot(slot);
         | 
| 443 472 | 
             
              }
         | 
| 444 | 
            -
              return  | 
| 473 | 
            +
              return {};
         | 
| 445 474 | 
             
            }
         | 
| 446 475 |  | 
| 447 476 | 
             
            Context* Context::Cast(v8::Data* data) {
         | 
| @@ -9,6 +9,9 @@ | |
| 9 9 | 
             
            #include "v8config.h"          // NOLINT(build/include_directory)
         | 
| 10 10 |  | 
| 11 11 | 
             
            namespace v8 {
         | 
| 12 | 
            +
            namespace internal {
         | 
| 13 | 
            +
            class TracedHandles;
         | 
| 14 | 
            +
            }  // namespace internal
         | 
| 12 15 |  | 
| 13 16 | 
             
            class Isolate;
         | 
| 14 17 | 
             
            class Value;
         | 
| @@ -18,8 +21,17 @@ class Value; | |
| 18 21 | 
             
             */
         | 
| 19 22 | 
             
            class V8_EXPORT EmbedderRootsHandler {
         | 
| 20 23 | 
             
             public:
         | 
| 24 | 
            +
              enum class RootHandling {
         | 
| 25 | 
            +
                kQueryEmbedderForNonDroppableReferences,
         | 
| 26 | 
            +
                kDontQueryEmbedderForAnyReference,
         | 
| 27 | 
            +
              };
         | 
| 28 | 
            +
             | 
| 21 29 | 
             
              virtual ~EmbedderRootsHandler() = default;
         | 
| 22 30 |  | 
| 31 | 
            +
              EmbedderRootsHandler() = default;
         | 
| 32 | 
            +
              explicit EmbedderRootsHandler(RootHandling default_traced_reference_handling)
         | 
| 33 | 
            +
                  : default_traced_reference_handling_(default_traced_reference_handling) {}
         | 
| 34 | 
            +
             | 
| 23 35 | 
             
              /**
         | 
| 24 36 | 
             
               * Returns true if the |TracedReference| handle should be considered as root
         | 
| 25 37 | 
             
               * for the currently running non-tracing garbage collection and false
         | 
| @@ -31,9 +43,7 @@ class V8_EXPORT EmbedderRootsHandler { | |
| 31 43 | 
             
               * |TracedReference|.
         | 
| 32 44 | 
             
               *
         | 
| 33 45 | 
             
               * Note that the `handle` is different from the handle that the embedder holds
         | 
| 34 | 
            -
               * for retaining the object. | 
| 35 | 
            -
               * distinguish cases where it wants handles to be treated as roots from not
         | 
| 36 | 
            -
               * being treated as roots.
         | 
| 46 | 
            +
               * for retaining the object.
         | 
| 37 47 | 
             
               *
         | 
| 38 48 | 
             
               * The concrete implementations must be thread-safe.
         | 
| 39 49 | 
             
               */
         | 
| @@ -59,6 +69,12 @@ class V8_EXPORT EmbedderRootsHandler { | |
| 59 69 | 
             
                ResetRoot(handle);
         | 
| 60 70 | 
             
                return true;
         | 
| 61 71 | 
             
              }
         | 
| 72 | 
            +
             | 
| 73 | 
            +
             private:
         | 
| 74 | 
            +
              const RootHandling default_traced_reference_handling_ =
         | 
| 75 | 
            +
                  RootHandling::kQueryEmbedderForNonDroppableReferences;
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              friend class internal::TracedHandles;
         | 
| 62 78 | 
             
            };
         | 
| 63 79 |  | 
| 64 80 | 
             
            }  // namespace v8
         | 
| @@ -7,12 +7,13 @@ | |
| 7 7 |  | 
| 8 8 | 
             
            #include <memory>
         | 
| 9 9 |  | 
| 10 | 
            -
            #include "v8-context.h"       // NOLINT(build/include_directory)
         | 
| 11 10 | 
             
            #include "v8-internal.h"      // NOLINT(build/include_directory)
         | 
| 12 11 | 
             
            #include "v8-local-handle.h"  // NOLINT(build/include_directory)
         | 
| 13 12 |  | 
| 14 13 | 
             
            namespace v8 {
         | 
| 15 14 |  | 
| 15 | 
            +
            class Context;
         | 
| 16 | 
            +
             | 
| 16 17 | 
             
            namespace internal {
         | 
| 17 18 | 
             
            class EmbedderState;
         | 
| 18 19 | 
             
            }  // namespace internal
         | 
| @@ -30,14 +30,21 @@ class ThreadLocalTop; | |
| 30 30 | 
             
             */
         | 
| 31 31 | 
             
            class V8_EXPORT Exception {
         | 
| 32 32 | 
             
             public:
         | 
| 33 | 
            -
              static Local<Value> RangeError(Local<String> message | 
| 34 | 
            -
             | 
| 35 | 
            -
              static Local<Value>  | 
| 36 | 
            -
             | 
| 37 | 
            -
              static Local<Value>  | 
| 38 | 
            -
             | 
| 39 | 
            -
              static Local<Value>  | 
| 40 | 
            -
             | 
| 33 | 
            +
              static Local<Value> RangeError(Local<String> message,
         | 
| 34 | 
            +
                                             Local<Value> options = {});
         | 
| 35 | 
            +
              static Local<Value> ReferenceError(Local<String> message,
         | 
| 36 | 
            +
                                                 Local<Value> options = {});
         | 
| 37 | 
            +
              static Local<Value> SyntaxError(Local<String> message,
         | 
| 38 | 
            +
                                              Local<Value> options = {});
         | 
| 39 | 
            +
              static Local<Value> TypeError(Local<String> message,
         | 
| 40 | 
            +
                                            Local<Value> options = {});
         | 
| 41 | 
            +
              static Local<Value> WasmCompileError(Local<String> message,
         | 
| 42 | 
            +
                                                   Local<Value> options = {});
         | 
| 43 | 
            +
              static Local<Value> WasmLinkError(Local<String> message,
         | 
| 44 | 
            +
                                                Local<Value> options = {});
         | 
| 45 | 
            +
              static Local<Value> WasmRuntimeError(Local<String> message,
         | 
| 46 | 
            +
                                                   Local<Value> options = {});
         | 
| 47 | 
            +
              static Local<Value> Error(Local<String> message, Local<Value> options = {});
         | 
| 41 48 |  | 
| 42 49 | 
             
              /**
         | 
| 43 50 | 
             
               * Creates an error message for the given exception.
         | 
| @@ -206,7 +213,6 @@ class V8_EXPORT TryCatch { | |
| 206 213 | 
             
              bool can_continue_ : 1;
         | 
| 207 214 | 
             
              bool capture_message_ : 1;
         | 
| 208 215 | 
             
              bool rethrow_ : 1;
         | 
| 209 | 
            -
              bool has_terminated_ : 1;
         | 
| 210 216 |  | 
| 211 217 | 
             
              friend class internal::Isolate;
         | 
| 212 218 | 
             
              friend class internal::ThreadLocalTop;
         | 
| @@ -254,8 +254,8 @@ class CTypeInfo { | |
| 254 254 | 
             
                             // migrated from v8::ApiObject to v8::Local<v8::Value>.
         | 
| 255 255 | 
             
                kAny,        // This is added to enable untyped representation of fast
         | 
| 256 256 | 
             
                             // call arguments for test purposes. It can represent any of
         | 
| 257 | 
            -
                             // the other types stored in the same memory as a union | 
| 258 | 
            -
                             //  | 
| 257 | 
            +
                             // the other types stored in the same memory as a union
         | 
| 258 | 
            +
                             // (see AnyCType declared below). This allows for
         | 
| 259 259 | 
             
                             // uniform passing of arguments w.r.t. their location
         | 
| 260 260 | 
             
                             // (in a register or on the stack), independent of their
         | 
| 261 261 | 
             
                             // actual type. It's currently used by the arm64 simulator
         | 
| @@ -344,7 +344,8 @@ struct FastApiTypedArray : public FastApiTypedArrayBase { | |
| 344 344 | 
             
                ValidateIndex(index);
         | 
| 345 345 | 
             
            #endif  // DEBUG
         | 
| 346 346 | 
             
                T tmp;
         | 
| 347 | 
            -
                memcpy(&tmp, reinterpret_cast<T*>(data_) + index, | 
| 347 | 
            +
                memcpy(&tmp, static_cast<void*>(reinterpret_cast<T*>(data_) + index),
         | 
| 348 | 
            +
                       sizeof(T));
         | 
| 348 349 | 
             
                return tmp;
         | 
| 349 350 | 
             
              }
         | 
| 350 351 |  | 
| @@ -434,35 +435,43 @@ class V8_EXPORT CFunctionInfo { | |
| 434 435 | 
             
            struct FastApiCallbackOptions;
         | 
| 435 436 |  | 
| 436 437 | 
             
            // Provided for testing.
         | 
| 437 | 
            -
             | 
| 438 | 
            +
            union V8_TRIVIAL_ABI AnyCType {
         | 
| 438 439 | 
             
              AnyCType() : int64_value(0) {}
         | 
| 439 440 |  | 
| 440 | 
            -
             | 
| 441 | 
            -
             | 
| 442 | 
            -
             | 
| 443 | 
            -
             | 
| 444 | 
            -
             | 
| 445 | 
            -
                 | 
| 446 | 
            -
                 | 
| 447 | 
            -
             | 
| 448 | 
            -
             | 
| 449 | 
            -
             | 
| 450 | 
            -
             | 
| 451 | 
            -
             | 
| 452 | 
            -
             | 
| 453 | 
            -
             | 
| 454 | 
            -
             | 
| 455 | 
            -
             | 
| 456 | 
            -
             | 
| 457 | 
            -
             | 
| 458 | 
            -
             | 
| 459 | 
            -
             | 
| 460 | 
            -
               | 
| 441 | 
            +
            #if defined(V8_ENABLE_LOCAL_OFF_STACK_CHECK) && V8_HAS_ATTRIBUTE_TRIVIAL_ABI
         | 
| 442 | 
            +
              // In this case, Local<T> is not trivially copyable and the implicit
         | 
| 443 | 
            +
              // copy constructor and copy assignment for the union are deleted.
         | 
| 444 | 
            +
              AnyCType(const AnyCType& other) : int64_value(other.int64_value) {}
         | 
| 445 | 
            +
              AnyCType& operator=(const AnyCType& other) {
         | 
| 446 | 
            +
                int64_value = other.int64_value;
         | 
| 447 | 
            +
                return *this;
         | 
| 448 | 
            +
              }
         | 
| 449 | 
            +
            #endif
         | 
| 450 | 
            +
             | 
| 451 | 
            +
              bool bool_value;
         | 
| 452 | 
            +
              int32_t int32_value;
         | 
| 453 | 
            +
              uint32_t uint32_value;
         | 
| 454 | 
            +
              int64_t int64_value;
         | 
| 455 | 
            +
              uint64_t uint64_value;
         | 
| 456 | 
            +
              float float_value;
         | 
| 457 | 
            +
              double double_value;
         | 
| 458 | 
            +
              void* pointer_value;
         | 
| 459 | 
            +
              Local<Object> object_value;
         | 
| 460 | 
            +
              Local<Array> sequence_value;
         | 
| 461 | 
            +
              const FastApiTypedArray<uint8_t>* uint8_ta_value;
         | 
| 462 | 
            +
              const FastApiTypedArray<int32_t>* int32_ta_value;
         | 
| 463 | 
            +
              const FastApiTypedArray<uint32_t>* uint32_ta_value;
         | 
| 464 | 
            +
              const FastApiTypedArray<int64_t>* int64_ta_value;
         | 
| 465 | 
            +
              const FastApiTypedArray<uint64_t>* uint64_ta_value;
         | 
| 466 | 
            +
              const FastApiTypedArray<float>* float_ta_value;
         | 
| 467 | 
            +
              const FastApiTypedArray<double>* double_ta_value;
         | 
| 468 | 
            +
              const FastOneByteString* string_value;
         | 
| 469 | 
            +
              FastApiCallbackOptions* options_value;
         | 
| 461 470 | 
             
            };
         | 
| 462 471 |  | 
| 463 472 | 
             
            static_assert(
         | 
| 464 473 | 
             
                sizeof(AnyCType) == 8,
         | 
| 465 | 
            -
                "The AnyCType  | 
| 474 | 
            +
                "The union AnyCType should have size == 64 bits, as this is assumed "
         | 
| 466 475 | 
             
                "by EffectControlLinearizer.");
         | 
| 467 476 |  | 
| 468 477 | 
             
            class V8_EXPORT CFunction {
         |