From f915de75e05e5e3fd7fc150766d704299d57acc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Tue, 15 Apr 2025 07:41:15 +0200 Subject: [PATCH 01/45] deps: update V8 to 13.6.233.6 --- deps/v8/.bazelrc | 7 +- deps/v8/.clang-tidy | 2 + deps/v8/.gitignore | 13 +- deps/v8/.gn | 3 +- deps/v8/AUTHORS | 11 +- deps/v8/BUILD.bazel | 277 +- deps/v8/BUILD.gn | 1074 +- deps/v8/COMMON_OWNERS | 1 - deps/v8/DEPS | 339 +- deps/v8/DIR_METADATA | 5 +- deps/v8/ENG_REVIEW_OWNERS | 3 +- deps/v8/LICENSE | 4 +- deps/v8/MODULE.bazel | 19 + deps/v8/OWNERS | 2 +- deps/v8/PRESUBMIT.py | 74 +- deps/v8/WATCHLISTS | 6 +- deps/v8/WORKSPACE | 85 - deps/v8/bazel/defs.bzl | 18 +- deps/v8/build_overrides/partition_alloc.gni | 47 + deps/v8/gni/release_branch_toggle.gni | 5 +- deps/v8/gni/v8.gni | 45 +- deps/v8/include/DEPS | 2 + deps/v8/include/DIR_METADATA | 5 +- deps/v8/include/OWNERS | 2 + deps/v8/include/cppgc/allocation.h | 3 +- deps/v8/include/cppgc/ephemeron-pair.h | 30 - .../v8/include/cppgc/internal/api-constants.h | 17 - .../include/cppgc/internal/base-page-handle.h | 6 +- .../cppgc/internal/caged-heap-local-data.h | 4 - deps/v8/include/cppgc/internal/caged-heap.h | 4 - .../internal/conditional-stack-allocated.h | 41 + deps/v8/include/cppgc/internal/logging.h | 6 +- .../include/cppgc/internal/member-storage.h | 83 +- .../include/cppgc/internal/persistent-node.h | 11 +- .../include/cppgc/internal/pointer-policies.h | 59 +- deps/v8/include/cppgc/macros.h | 21 + deps/v8/include/cppgc/member.h | 106 +- deps/v8/include/cppgc/name-provider.h | 3 + deps/v8/include/cppgc/platform.h | 2 + deps/v8/include/cppgc/type-traits.h | 1 + deps/v8/include/cppgc/visitor.h | 26 +- deps/v8/include/js_protocol.pdl | 41 +- .../include/libplatform/libplatform-export.h | 4 +- deps/v8/include/libplatform/v8-tracing.h | 1 - deps/v8/include/v8-array-buffer.h | 145 +- deps/v8/include/v8-callbacks.h | 72 +- deps/v8/include/v8-context.h | 11 +- deps/v8/include/v8-cppgc.h | 3 +- deps/v8/include/v8-data.h | 5 + deps/v8/include/v8-debug.h | 11 + deps/v8/include/v8-embedder-heap.h | 33 +- deps/v8/include/v8-exception.h | 2 + .../v8/include/v8-external-memory-accounter.h | 60 + deps/v8/include/v8-fast-api-calls.h | 192 +- deps/v8/include/v8-function-callback.h | 37 +- deps/v8/include/v8-function.h | 7 + deps/v8/include/v8-handle-base.h | 18 + deps/v8/include/v8-initialization.h | 10 +- deps/v8/include/v8-inspector.h | 12 +- deps/v8/include/v8-internal.h | 631 +- deps/v8/include/v8-isolate.h | 349 +- deps/v8/include/v8-local-handle.h | 84 +- deps/v8/include/v8-maybe.h | 3 +- deps/v8/include/v8-memory-span.h | 5 +- deps/v8/include/v8-message.h | 10 +- deps/v8/include/v8-metrics.h | 10 + deps/v8/include/v8-object.h | 9 +- deps/v8/include/v8-persistent-handle.h | 34 +- deps/v8/include/v8-platform.h | 31 +- deps/v8/include/v8-primitive.h | 137 +- deps/v8/include/v8-profiler.h | 14 +- deps/v8/include/v8-proxy.h | 1 - deps/v8/include/v8-regexp.h | 1 - deps/v8/include/v8-sandbox.h | 6 +- deps/v8/include/v8-script.h | 13 +- deps/v8/include/v8-source-location.h | 7 +- deps/v8/include/v8-template.h | 8 + deps/v8/include/v8-trace-categories.h | 23 + deps/v8/include/v8-typed-array.h | 16 +- deps/v8/include/v8-unwinder-state.h | 2 +- deps/v8/include/v8-value-serializer-version.h | 6 +- deps/v8/include/v8-value.h | 18 + deps/v8/include/v8-version.h | 6 +- deps/v8/include/v8-wasm.h | 24 + deps/v8/include/v8-weak-callback-info.h | 32 +- deps/v8/include/v8.h | 6 +- deps/v8/include/v8config.h | 52 +- deps/v8/infra/mb/mb_config.pyl | 60 +- deps/v8/infra/testing/builders.pyl | 378 +- deps/v8/pyrightconfig.json | 4 + deps/v8/src/DEPS | 18 +- deps/v8/src/api/DIR_METADATA | 5 +- deps/v8/src/api/api-arguments-inl.h | 89 +- deps/v8/src/api/api-arguments.cc | 6 +- deps/v8/src/api/api-arguments.h | 68 +- deps/v8/src/api/api-inl.h | 35 +- deps/v8/src/api/api-natives.cc | 282 +- deps/v8/src/api/api-natives.h | 49 +- deps/v8/src/api/api.cc | 2407 +- deps/v8/src/api/api.h | 246 +- deps/v8/src/asmjs/DIR_METADATA | 5 +- deps/v8/src/asmjs/asm-js.cc | 103 +- deps/v8/src/asmjs/asm-js.h | 6 +- deps/v8/src/asmjs/asm-names.h | 10 +- deps/v8/src/asmjs/asm-parser.cc | 50 +- deps/v8/src/ast/DIR_METADATA | 5 +- deps/v8/src/ast/ast-value-factory.cc | 46 +- deps/v8/src/ast/ast-value-factory.h | 155 +- deps/v8/src/ast/ast.cc | 49 +- deps/v8/src/ast/ast.h | 99 +- deps/v8/src/ast/modules.cc | 37 +- deps/v8/src/ast/modules.h | 12 +- deps/v8/src/ast/prettyprinter.cc | 51 +- deps/v8/src/ast/prettyprinter.h | 4 +- deps/v8/src/ast/scopes.cc | 268 +- deps/v8/src/ast/scopes.h | 46 +- deps/v8/src/ast/variables.cc | 9 +- deps/v8/src/base/abort-mode.h | 6 +- deps/v8/src/base/atomic-utils.h | 43 +- deps/v8/src/base/atomicops.h | 6 +- deps/v8/src/base/base-export.h | 4 +- deps/v8/src/base/bits.h | 43 +- deps/v8/src/base/bounded-page-allocator.cc | 75 +- deps/v8/src/base/bounds.h | 15 +- deps/v8/src/base/compiler-specific.h | 18 +- deps/v8/src/base/container-utils.h | 2 + deps/v8/src/base/cpu.cc | 14 +- deps/v8/src/base/cpu.h | 12 +- deps/v8/src/base/debug/stack_trace_posix.cc | 15 + deps/v8/src/base/division-by-constant.cc | 3 +- deps/v8/src/base/division-by-constant.h | 9 +- deps/v8/src/base/doubly-threaded-list.h | 6 + deps/v8/src/base/fpu.cc | 101 + deps/v8/src/base/fpu.h | 29 + deps/v8/src/base/{functional.h => hashing.h} | 41 +- deps/v8/src/base/hashmap.h | 6 +- deps/v8/src/base/ieee754.cc | 5 +- deps/v8/src/base/ieee754.h | 7 + deps/v8/src/base/immediate-crash.h | 2 +- deps/v8/src/base/lazy-instance.h | 23 +- deps/v8/src/base/logging.h | 229 +- deps/v8/src/base/macros.h | 71 +- deps/v8/src/base/numbers/diy-fp.h | 12 +- deps/v8/src/base/numbers/double.h | 38 +- deps/v8/src/base/once.h | 14 +- .../src/base/platform/condition-variable.cc | 178 +- .../v8/src/base/platform/condition-variable.h | 19 +- deps/v8/src/base/platform/memory.h | 3 + deps/v8/src/base/platform/mutex.cc | 483 +- deps/v8/src/base/platform/mutex.h | 235 +- deps/v8/src/base/platform/platform-fuchsia.cc | 37 +- deps/v8/src/base/platform/platform-posix.cc | 12 +- .../src/base/platform/platform-starboard.cc | 4 +- deps/v8/src/base/platform/platform-win32.cc | 13 +- deps/v8/src/base/platform/platform.cc | 10 +- deps/v8/src/base/platform/platform.h | 11 +- deps/v8/src/base/platform/time.cc | 1 + deps/v8/src/base/region-allocator.cc | 8 + deps/v8/src/base/safe_conversions.h | 197 +- deps/v8/src/base/safe_conversions_arm_impl.h | 22 +- deps/v8/src/base/safe_conversions_impl.h | 199 +- deps/v8/src/base/sanitizer/asan.h | 4 +- .../src/base/sanitizer/lsan-page-allocator.cc | 5 +- deps/v8/src/base/sanitizer/lsan.h | 4 +- deps/v8/src/base/sanitizer/msan.h | 20 +- deps/v8/src/base/sanitizer/tsan.h | 4 +- deps/v8/src/base/sanitizer/ubsan.h | 20 + deps/v8/src/base/small-vector.h | 138 +- deps/v8/src/base/string-format.h | 59 +- deps/v8/src/base/strong-alias.h | 149 + .../template-meta-programming/algorithm.h | 75 - .../base/template-meta-programming/common.h | 40 + .../src/base/template-meta-programming/list.h | 209 +- deps/v8/src/base/template-utils.h | 40 +- deps/v8/src/base/threaded-list.h | 29 + .../src/base/utils/random-number-generator.h | 10 +- deps/v8/src/base/vector.h | 73 +- .../virtual-address-space-page-allocator.h | 1 + deps/v8/src/base/virtual-address-space.h | 1 + deps/v8/src/base/vlq.h | 8 +- .../baseline/arm/baseline-assembler-arm-inl.h | 3 +- .../arm64/baseline-assembler-arm64-inl.h | 3 +- deps/v8/src/baseline/baseline-assembler-inl.h | 4 +- deps/v8/src/baseline/baseline-assembler.h | 16 +- .../src/baseline/baseline-batch-compiler.cc | 17 +- deps/v8/src/baseline/baseline-compiler.cc | 82 +- deps/v8/src/baseline/baseline-compiler.h | 2 +- deps/v8/src/baseline/baseline.cc | 10 +- deps/v8/src/baseline/baseline.h | 4 +- .../ia32/baseline-assembler-ia32-inl.h | 3 +- .../loong64/baseline-assembler-loong64-inl.h | 3 +- .../mips64/baseline-assembler-mips64-inl.h | 3 +- .../baseline/ppc/baseline-assembler-ppc-inl.h | 3 +- .../riscv/baseline-assembler-riscv-inl.h | 5 +- .../s390/baseline-assembler-s390-inl.h | 3 +- .../baseline/x64/baseline-assembler-x64-inl.h | 23 +- .../baseline/x64/baseline-compiler-x64-inl.h | 3 + deps/v8/src/bigint/bigint-internal.h | 7 +- deps/v8/src/bigint/bigint.h | 7 +- deps/v8/src/bigint/digit-arithmetic.h | 4 +- deps/v8/src/bigint/div-barrett.cc | 2 +- deps/v8/src/bigint/fromstring.cc | 2 +- deps/v8/src/bigint/mul-toom.cc | 4 +- deps/v8/src/bigint/tostring.cc | 37 +- deps/v8/src/bigint/util.h | 13 +- deps/v8/src/bigint/vector-arithmetic.h | 4 +- deps/v8/src/builtins/DIR_METADATA | 5 +- deps/v8/src/builtins/accessors.cc | 252 +- deps/v8/src/builtins/accessors.h | 20 +- deps/v8/src/builtins/arm/builtins-arm.cc | 446 +- deps/v8/src/builtins/arm64/builtins-arm64.cc | 641 +- deps/v8/src/builtins/array-concat.tq | 8 +- deps/v8/src/builtins/array-findlast.tq | 1 + deps/v8/src/builtins/array-from-async.tq | 1 + deps/v8/src/builtins/array-from.tq | 4 +- deps/v8/src/builtins/array-join.tq | 28 +- deps/v8/src/builtins/array-lastindexof.tq | 10 +- deps/v8/src/builtins/array-map.tq | 57 +- deps/v8/src/builtins/array-reverse.tq | 20 +- deps/v8/src/builtins/array-shift.tq | 7 +- deps/v8/src/builtins/array-slice.tq | 13 +- deps/v8/src/builtins/array-to-reversed.tq | 8 +- deps/v8/src/builtins/array-to-sorted.tq | 1 + deps/v8/src/builtins/array-to-spliced.tq | 1 + deps/v8/src/builtins/array-unshift.tq | 7 +- deps/v8/src/builtins/array.tq | 16 +- deps/v8/src/builtins/base.tq | 124 +- .../builtins-abstract-module-source.cc | 2 +- deps/v8/src/builtins/builtins-api.cc | 68 +- deps/v8/src/builtins/builtins-array-gen.cc | 77 +- deps/v8/src/builtins/builtins-array-gen.h | 23 +- deps/v8/src/builtins/builtins-array.cc | 485 +- deps/v8/src/builtins/builtins-arraybuffer.cc | 291 +- .../builtins-async-disposable-stack.cc | 70 +- .../builtins/builtins-async-function-gen.cc | 2 +- deps/v8/src/builtins/builtins-async-gen.cc | 8 +- deps/v8/src/builtins/builtins-async-gen.h | 4 +- .../builtins/builtins-async-generator-gen.cc | 22 +- .../builtins/builtins-async-iterator-gen.cc | 16 +- deps/v8/src/builtins/builtins-async-module.cc | 4 +- .../builtins-atomics-synchronization.cc | 89 +- deps/v8/src/builtins/builtins-bigint.cc | 18 +- deps/v8/src/builtins/builtins-bigint.tq | 60 +- deps/v8/src/builtins/builtins-call-gen.cc | 75 +- deps/v8/src/builtins/builtins-call-gen.h | 46 +- .../src/builtins/builtins-collections-gen.cc | 158 +- .../src/builtins/builtins-collections-gen.h | 43 +- deps/v8/src/builtins/builtins-console.cc | 57 +- .../src/builtins/builtins-constructor-gen.cc | 76 +- deps/v8/src/builtins/builtins-dataview.cc | 20 +- deps/v8/src/builtins/builtins-date.cc | 424 +- deps/v8/src/builtins/builtins-definitions.h | 2171 +- deps/v8/src/builtins/builtins-descriptors.h | 52 +- .../src/builtins/builtins-disposable-stack.cc | 52 +- deps/v8/src/builtins/builtins-error.cc | 28 +- deps/v8/src/builtins/builtins-function.cc | 74 +- .../v8/src/builtins/builtins-generator-gen.cc | 71 +- deps/v8/src/builtins/builtins-global.cc | 23 +- deps/v8/src/builtins/builtins-handler-gen.cc | 26 +- deps/v8/src/builtins/builtins-ic-gen.cc | 40 +- deps/v8/src/builtins/builtins-inl.h | 82 +- deps/v8/src/builtins/builtins-internal-gen.cc | 213 +- deps/v8/src/builtins/builtins-internal.cc | 8 + deps/v8/src/builtins/builtins-intl-gen.cc | 16 +- deps/v8/src/builtins/builtins-intl.cc | 207 +- deps/v8/src/builtins/builtins-iterator-gen.cc | 58 +- deps/v8/src/builtins/builtins-iterator-gen.h | 30 +- deps/v8/src/builtins/builtins-json.cc | 4 +- deps/v8/src/builtins/builtins-lazy-gen.cc | 111 +- deps/v8/src/builtins/builtins-lazy-gen.h | 7 + .../builtins/builtins-microtask-queue-gen.cc | 4 +- deps/v8/src/builtins/builtins-number-gen.cc | 4 +- deps/v8/src/builtins/builtins-number.cc | 51 +- deps/v8/src/builtins/builtins-object-gen.cc | 78 +- deps/v8/src/builtins/builtins-object-gen.h | 3 +- deps/v8/src/builtins/builtins-object.cc | 88 +- deps/v8/src/builtins/builtins-proxy-gen.cc | 16 +- deps/v8/src/builtins/builtins-reflect.cc | 27 +- deps/v8/src/builtins/builtins-regexp-gen.cc | 1276 +- deps/v8/src/builtins/builtins-regexp-gen.h | 105 +- deps/v8/src/builtins/builtins-regexp.cc | 250 +- .../src/builtins/builtins-shadow-realm-gen.cc | 10 +- deps/v8/src/builtins/builtins-shadow-realm.cc | 41 +- deps/v8/src/builtins/builtins-shared-array.cc | 2 +- .../builtins-sharedarraybuffer-gen.cc | 92 +- .../builtins/builtins-sharedarraybuffer.cc | 71 +- deps/v8/src/builtins/builtins-string-gen.cc | 59 +- deps/v8/src/builtins/builtins-string-gen.h | 8 +- deps/v8/src/builtins/builtins-string.cc | 127 +- deps/v8/src/builtins/builtins-string.tq | 16 +- deps/v8/src/builtins/builtins-struct.cc | 39 +- deps/v8/src/builtins/builtins-temporal-gen.cc | 14 +- deps/v8/src/builtins/builtins-temporal.cc | 116 +- deps/v8/src/builtins/builtins-trace.cc | 54 +- .../src/builtins/builtins-typed-array-gen.cc | 22 +- deps/v8/src/builtins/builtins-typed-array.cc | 598 +- deps/v8/src/builtins/builtins-utils-inl.h | 12 +- deps/v8/src/builtins/builtins-utils.h | 57 +- deps/v8/src/builtins/builtins-wasm-gen.cc | 14 - deps/v8/src/builtins/builtins-wasm-gen.h | 8 +- deps/v8/src/builtins/builtins.cc | 48 +- deps/v8/src/builtins/builtins.h | 87 +- deps/v8/src/builtins/cast.tq | 23 +- deps/v8/src/builtins/collections.tq | 19 +- deps/v8/src/builtins/console.tq | 10 +- .../src/builtins/constants-table-builder.cc | 29 +- .../v8/src/builtins/constants-table-builder.h | 4 + deps/v8/src/builtins/conversion.tq | 12 +- deps/v8/src/builtins/convert.tq | 23 +- deps/v8/src/builtins/data-view.tq | 5 +- deps/v8/src/builtins/finalization-registry.tq | 92 +- deps/v8/src/builtins/function.tq | 18 +- .../src/builtins/growable-fixed-array-gen.cc | 26 + .../src/builtins/growable-fixed-array-gen.h | 2 + deps/v8/src/builtins/ia32/builtins-ia32.cc | 467 +- deps/v8/src/builtins/ic-callable.tq | 12 +- deps/v8/src/builtins/iterator-helpers.tq | 727 +- deps/v8/src/builtins/iterator.tq | 102 +- deps/v8/src/builtins/js-to-js.tq | 59 +- deps/v8/src/builtins/js-to-wasm.tq | 399 +- .../src/builtins/loong64/builtins-loong64.cc | 790 +- deps/v8/src/builtins/map-groupby.tq | 1 + deps/v8/src/builtins/math.tq | 21 +- .../v8/src/builtins/mips64/builtins-mips64.cc | 429 +- deps/v8/src/builtins/number.tq | 68 +- deps/v8/src/builtins/object-fromentries.tq | 2 +- deps/v8/src/builtins/object-groupby.tq | 3 +- deps/v8/src/builtins/ppc/builtins-ppc.cc | 1334 +- deps/v8/src/builtins/promise-all.tq | 2 +- deps/v8/src/builtins/promise-any.tq | 3 +- deps/v8/src/builtins/promise-constructor.tq | 3 - deps/v8/src/builtins/promise-misc.tq | 4 +- deps/v8/src/builtins/promise-race.tq | 2 +- deps/v8/src/builtins/promise-try.tq | 1 + deps/v8/src/builtins/promise-withresolvers.tq | 1 + deps/v8/src/builtins/regexp-match-all.tq | 4 +- deps/v8/src/builtins/regexp-match.tq | 143 +- deps/v8/src/builtins/regexp-replace.tq | 60 +- deps/v8/src/builtins/regexp-search.tq | 4 +- deps/v8/src/builtins/regexp.tq | 57 +- deps/v8/src/builtins/riscv/builtins-riscv.cc | 1211 +- deps/v8/src/builtins/s390/builtins-s390.cc | 1332 +- deps/v8/src/builtins/set-difference.tq | 6 +- deps/v8/src/builtins/set-intersection.tq | 1 + deps/v8/src/builtins/set-is-disjoint-from.tq | 1 + deps/v8/src/builtins/set-is-subset-of.tq | 1 + deps/v8/src/builtins/set-is-superset-of.tq | 1 + .../src/builtins/set-symmetric-difference.tq | 1 + deps/v8/src/builtins/set-union.tq | 32 +- .../src/builtins/setup-builtins-internal.cc | 308 +- deps/v8/src/builtins/string-iswellformed.tq | 1 + deps/v8/src/builtins/string-match-search.tq | 8 +- deps/v8/src/builtins/string-repeat.tq | 4 +- deps/v8/src/builtins/string-replaceall.tq | 1 + deps/v8/src/builtins/string-towellformed.tq | 1 + deps/v8/src/builtins/symbol.tq | 4 +- deps/v8/src/builtins/torque-internal.tq | 43 +- .../builtins/typed-array-createtypedarray.tq | 13 +- deps/v8/src/builtins/typed-array-from.tq | 4 +- deps/v8/src/builtins/typed-array-set.tq | 2 + deps/v8/src/builtins/typed-array-slice.tq | 2 + deps/v8/src/builtins/typed-array-subarray.tq | 2 + deps/v8/src/builtins/typed-array-to-sorted.tq | 2 + deps/v8/src/builtins/typed-array-with.tq | 39 +- deps/v8/src/builtins/typed-array.tq | 6 +- deps/v8/src/builtins/wasm-strings.tq | 101 +- deps/v8/src/builtins/wasm-to-js.tq | 49 +- deps/v8/src/builtins/wasm.tq | 66 +- deps/v8/src/builtins/weak-ref.tq | 1 + deps/v8/src/builtins/x64/builtins-x64.cc | 932 +- deps/v8/src/codegen/DEPS | 4 + deps/v8/src/codegen/DIR_METADATA | 5 +- deps/v8/src/codegen/arm/assembler-arm-inl.h | 89 +- deps/v8/src/codegen/arm/assembler-arm.cc | 12 +- deps/v8/src/codegen/arm/assembler-arm.h | 14 +- deps/v8/src/codegen/arm/constants-arm.cc | 11 + deps/v8/src/codegen/arm/constants-arm.h | 14 +- .../arm/interface-descriptors-arm-inl.h | 8 - .../v8/src/codegen/arm/macro-assembler-arm.cc | 158 +- deps/v8/src/codegen/arm/macro-assembler-arm.h | 28 +- deps/v8/src/codegen/arm/register-arm.h | 3 + .../src/codegen/arm64/assembler-arm64-inl.h | 94 +- deps/v8/src/codegen/arm64/assembler-arm64.cc | 21 +- deps/v8/src/codegen/arm64/assembler-arm64.h | 54 +- deps/v8/src/codegen/arm64/decoder-arm64-inl.h | 1 + .../src/codegen/arm64/instructions-arm64.cc | 27 +- .../v8/src/codegen/arm64/instructions-arm64.h | 21 +- .../arm64/interface-descriptors-arm64-inl.h | 10 +- .../codegen/arm64/macro-assembler-arm64.cc | 424 +- .../src/codegen/arm64/macro-assembler-arm64.h | 63 +- deps/v8/src/codegen/arm64/register-arm64.h | 1 + deps/v8/src/codegen/assembler-arch.h | 2 +- deps/v8/src/codegen/assembler-inl.h | 3 +- deps/v8/src/codegen/assembler.cc | 21 +- deps/v8/src/codegen/assembler.h | 33 +- deps/v8/src/codegen/bailout-reason.h | 16 +- deps/v8/src/codegen/code-factory.cc | 4 +- deps/v8/src/codegen/code-factory.h | 4 +- deps/v8/src/codegen/code-reference.h | 2 +- deps/v8/src/codegen/code-stub-assembler-inl.h | 76 +- deps/v8/src/codegen/code-stub-assembler.cc | 1287 +- deps/v8/src/codegen/code-stub-assembler.h | 420 +- deps/v8/src/codegen/compilation-cache.cc | 80 +- deps/v8/src/codegen/compilation-cache.h | 31 +- deps/v8/src/codegen/compiler.cc | 895 +- deps/v8/src/codegen/compiler.h | 134 +- deps/v8/src/codegen/constants-arch.h | 2 +- .../define-code-stub-assembler-macros.inc | 4 +- .../src/codegen/external-reference-encoder.cc | 4 +- .../src/codegen/external-reference-encoder.h | 8 +- .../src/codegen/external-reference-table.cc | 2 +- deps/v8/src/codegen/external-reference.cc | 181 +- deps/v8/src/codegen/external-reference.h | 90 +- deps/v8/src/codegen/heap-object-list.h | 56 +- deps/v8/src/codegen/ia32/assembler-ia32-inl.h | 53 +- deps/v8/src/codegen/ia32/assembler-ia32.h | 13 +- deps/v8/src/codegen/ia32/cpu-ia32.cc | 7 +- .../ia32/interface-descriptors-ia32-inl.h | 13 +- .../src/codegen/ia32/macro-assembler-ia32.cc | 134 +- .../src/codegen/ia32/macro-assembler-ia32.h | 21 +- deps/v8/src/codegen/ia32/register-ia32.h | 9 +- .../src/codegen/interface-descriptors-inl.h | 36 +- deps/v8/src/codegen/interface-descriptors.h | 80 +- .../codegen/loong64/assembler-loong64-inl.h | 57 +- .../src/codegen/loong64/assembler-loong64.cc | 49 +- .../src/codegen/loong64/assembler-loong64.h | 41 +- .../src/codegen/loong64/constants-loong64.cc | 13 + .../src/codegen/loong64/constants-loong64.h | 6 +- .../interface-descriptors-loong64-inl.h | 8 - .../loong64/macro-assembler-loong64.cc | 992 +- .../codegen/loong64/macro-assembler-loong64.h | 117 +- .../v8/src/codegen/loong64/register-loong64.h | 10 +- deps/v8/src/codegen/machine-type.cc | 2 + deps/v8/src/codegen/machine-type.h | 4 + deps/v8/src/codegen/macro-assembler-base.cc | 12 +- deps/v8/src/codegen/macro-assembler-base.h | 24 +- deps/v8/src/codegen/macro-assembler-inl.h | 4 +- deps/v8/src/codegen/macro-assembler.h | 2 +- deps/v8/src/codegen/maglev-safepoint-table.cc | 28 +- deps/v8/src/codegen/maglev-safepoint-table.h | 45 +- .../src/codegen/mips64/assembler-mips64-inl.h | 63 +- .../v8/src/codegen/mips64/assembler-mips64.cc | 73 +- deps/v8/src/codegen/mips64/assembler-mips64.h | 42 +- .../v8/src/codegen/mips64/constants-mips64.cc | 13 + deps/v8/src/codegen/mips64/constants-mips64.h | 6 +- .../mips64/interface-descriptors-mips64-inl.h | 8 - .../codegen/mips64/macro-assembler-mips64.cc | 361 +- .../codegen/mips64/macro-assembler-mips64.h | 84 +- deps/v8/src/codegen/mips64/register-mips64.h | 3 +- .../src/codegen/optimized-compilation-info.cc | 35 +- .../src/codegen/optimized-compilation-info.h | 65 +- .../src/codegen/pending-optimization-table.cc | 15 +- deps/v8/src/codegen/ppc/assembler-ppc-inl.h | 127 +- deps/v8/src/codegen/ppc/assembler-ppc.cc | 15 +- deps/v8/src/codegen/ppc/assembler-ppc.h | 54 +- deps/v8/src/codegen/ppc/constants-ppc.cc | 11 + deps/v8/src/codegen/ppc/constants-ppc.h | 6 +- .../ppc/interface-descriptors-ppc-inl.h | 9 +- .../v8/src/codegen/ppc/macro-assembler-ppc.cc | 240 +- deps/v8/src/codegen/ppc/macro-assembler-ppc.h | 83 +- deps/v8/src/codegen/ppc/register-ppc.h | 3 + deps/v8/src/codegen/register-arch.h | 2 +- deps/v8/src/codegen/register-configuration.cc | 2 +- deps/v8/src/codegen/register.h | 15 +- deps/v8/src/codegen/reglist-base.h | 4 +- deps/v8/src/codegen/reglist.h | 2 +- deps/v8/src/codegen/reloc-info-inl.h | 29 +- deps/v8/src/codegen/reloc-info.cc | 142 +- deps/v8/src/codegen/reloc-info.h | 58 +- .../src/codegen/riscv/assembler-riscv-inl.h | 167 +- deps/v8/src/codegen/riscv/assembler-riscv.cc | 198 +- deps/v8/src/codegen/riscv/assembler-riscv.h | 89 +- .../src/codegen/riscv/base-constants-riscv.cc | 44 +- .../src/codegen/riscv/base-constants-riscv.h | 14 + deps/v8/src/codegen/riscv/base-riscv-i.h | 7 +- deps/v8/src/codegen/riscv/constant-riscv-a.h | 1 + deps/v8/src/codegen/riscv/constant-riscv-b.h | 1 + deps/v8/src/codegen/riscv/constant-riscv-c.h | 1 + deps/v8/src/codegen/riscv/constant-riscv-d.h | 2 + deps/v8/src/codegen/riscv/constant-riscv-f.h | 2 + deps/v8/src/codegen/riscv/constant-riscv-i.h | 2 + deps/v8/src/codegen/riscv/constant-riscv-m.h | 1 + deps/v8/src/codegen/riscv/constant-riscv-v.h | 1 + .../src/codegen/riscv/constant-riscv-zicond.h | 1 + .../src/codegen/riscv/constant-riscv-zicsr.h | 1 + .../codegen/riscv/constant-riscv-zifencei.h | 1 + deps/v8/src/codegen/riscv/extension-riscv-a.h | 6 +- deps/v8/src/codegen/riscv/extension-riscv-b.h | 6 +- deps/v8/src/codegen/riscv/extension-riscv-c.h | 6 +- deps/v8/src/codegen/riscv/extension-riscv-d.h | 6 +- deps/v8/src/codegen/riscv/extension-riscv-f.h | 6 +- deps/v8/src/codegen/riscv/extension-riscv-m.h | 5 +- deps/v8/src/codegen/riscv/extension-riscv-v.h | 1 - .../riscv/interface-descriptors-riscv-inl.h | 26 +- .../codegen/riscv/macro-assembler-riscv.cc | 1483 +- .../src/codegen/riscv/macro-assembler-riscv.h | 526 +- deps/v8/src/codegen/riscv/register-riscv.h | 14 +- deps/v8/src/codegen/s390/assembler-s390-inl.h | 120 +- deps/v8/src/codegen/s390/assembler-s390.cc | 38 +- deps/v8/src/codegen/s390/assembler-s390.h | 24 +- deps/v8/src/codegen/s390/constants-s390.cc | 15 +- deps/v8/src/codegen/s390/constants-s390.h | 59 +- deps/v8/src/codegen/s390/cpu-s390.cc | 4 +- .../s390/interface-descriptors-s390-inl.h | 13 +- .../src/codegen/s390/macro-assembler-s390.cc | 420 +- .../src/codegen/s390/macro-assembler-s390.h | 61 +- deps/v8/src/codegen/s390/register-s390.h | 26 +- deps/v8/src/codegen/safepoint-table-base.h | 5 + deps/v8/src/codegen/safepoint-table.cc | 37 +- deps/v8/src/codegen/safepoint-table.h | 22 +- deps/v8/src/codegen/signature.h | 139 +- deps/v8/src/codegen/source-position-table.cc | 7 +- deps/v8/src/codegen/source-position.cc | 25 +- deps/v8/src/codegen/source-position.h | 6 +- deps/v8/src/codegen/tnode.h | 41 +- .../codegen/unoptimized-compilation-info.h | 8 +- deps/v8/src/codegen/x64/assembler-x64-inl.h | 75 +- deps/v8/src/codegen/x64/assembler-x64.cc | 30 +- deps/v8/src/codegen/x64/assembler-x64.h | 40 +- deps/v8/src/codegen/x64/cpu-x64.cc | 7 +- .../x64/interface-descriptors-x64-inl.h | 8 - .../v8/src/codegen/x64/macro-assembler-x64.cc | 414 +- deps/v8/src/codegen/x64/macro-assembler-x64.h | 57 +- deps/v8/src/codegen/x64/register-x64.h | 1 + deps/v8/src/common/assert-scope.cc | 5 +- deps/v8/src/common/assert-scope.h | 10 +- deps/v8/src/common/code-memory-access-inl.h | 136 +- deps/v8/src/common/code-memory-access.cc | 91 +- deps/v8/src/common/code-memory-access.h | 85 +- deps/v8/src/common/globals.h | 323 +- deps/v8/src/common/message-template.h | 29 +- deps/v8/src/common/ptr-compr-inl.h | 74 +- deps/v8/src/common/ptr-compr.cc | 6 + deps/v8/src/common/ptr-compr.h | 75 +- deps/v8/src/common/segmented-table-inl.h | 19 +- deps/v8/src/common/segmented-table.h | 7 + deps/v8/src/common/thread-local-storage.h | 58 + deps/v8/src/compiler-dispatcher/DIR_METADATA | 5 +- .../optimizing-compile-dispatcher.cc | 475 +- .../optimizing-compile-dispatcher.h | 219 +- deps/v8/src/compiler/DIR_METADATA | 5 +- deps/v8/src/compiler/access-builder.cc | 91 +- deps/v8/src/compiler/access-builder.h | 7 + deps/v8/src/compiler/access-info.cc | 68 +- deps/v8/src/compiler/access-info.h | 25 +- .../compiler/add-type-assertions-reducer.cc | 2 +- deps/v8/src/compiler/all-nodes.cc | 8 +- deps/v8/src/compiler/all-nodes.h | 6 +- deps/v8/src/compiler/allocation-builder-inl.h | 6 +- deps/v8/src/compiler/allocation-builder.h | 2 +- deps/v8/src/compiler/backend/DIR_METADATA | 5 +- .../backend/arm/code-generator-arm.cc | 93 +- .../backend/arm/instruction-selector-arm.cc | 3242 +- .../backend/arm64/code-generator-arm64.cc | 372 +- .../backend/arm64/instruction-codes-arm64.h | 12 + .../arm64/instruction-scheduler-arm64.cc | 14 + .../arm64/instruction-selector-arm64.cc | 5497 +- .../v8/src/compiler/backend/bitcast-elider.cc | 4 +- deps/v8/src/compiler/backend/bitcast-elider.h | 6 +- .../v8/src/compiler/backend/code-generator.cc | 121 +- deps/v8/src/compiler/backend/code-generator.h | 19 +- deps/v8/src/compiler/backend/frame-elider.cc | 8 + .../backend/ia32/code-generator-ia32.cc | 145 +- .../backend/ia32/instruction-selector-ia32.cc | 2344 +- .../src/compiler/backend/instruction-codes.h | 4 +- .../compiler/backend/instruction-scheduler.cc | 2 + .../backend/instruction-selector-adapter.h | 1113 +- .../backend/instruction-selector-impl.h | 306 +- .../compiler/backend/instruction-selector.cc | 3491 +- .../compiler/backend/instruction-selector.h | 444 +- deps/v8/src/compiler/backend/instruction.cc | 37 +- deps/v8/src/compiler/backend/instruction.h | 93 +- .../v8/src/compiler/backend/jump-threading.cc | 20 +- .../backend/loong64/code-generator-loong64.cc | 183 +- .../loong64/instruction-selector-loong64.cc | 3487 +- .../backend/mips64/code-generator-mips64.cc | 71 +- .../mips64/instruction-selector-mips64.cc | 3352 +- .../backend/ppc/code-generator-ppc.cc | 192 +- .../backend/ppc/instruction-codes-ppc.h | 8 +- .../backend/ppc/instruction-scheduler-ppc.cc | 8 +- .../backend/ppc/instruction-selector-ppc.cc | 3320 +- .../compiler/backend/register-allocation.h | 1 + .../compiler/backend/register-allocator.cc | 57 +- .../src/compiler/backend/register-allocator.h | 3 +- .../backend/riscv/code-generator-riscv.cc | 427 +- .../backend/riscv/instruction-codes-riscv.h | 6 +- .../riscv/instruction-scheduler-riscv.cc | 45 +- .../riscv/instruction-selector-riscv.h | 2472 +- .../riscv/instruction-selector-riscv32.cc | 1658 +- .../riscv/instruction-selector-riscv64.cc | 3100 +- .../backend/s390/code-generator-s390.cc | 146 +- .../backend/s390/instruction-selector-s390.cc | 3295 +- .../backend/x64/code-generator-x64.cc | 206 +- .../backend/x64/instruction-codes-x64.h | 4 + .../backend/x64/instruction-scheduler-x64.cc | 6 + .../backend/x64/instruction-selector-x64.cc | 4009 +- .../src/compiler/basic-block-instrumentor.cc | 14 +- .../src/compiler/basic-block-instrumentor.h | 4 +- .../compiler/branch-condition-duplicator.cc | 108 - .../compiler/branch-condition-duplicator.h | 85 - deps/v8/src/compiler/branch-elimination.cc | 4 +- deps/v8/src/compiler/branch-elimination.h | 2 +- deps/v8/src/compiler/bytecode-analysis.cc | 8 +- .../v8/src/compiler/bytecode-graph-builder.cc | 117 +- deps/v8/src/compiler/bytecode-graph-builder.h | 3 +- deps/v8/src/compiler/c-linkage.cc | 11 +- .../compiler/code-assembler-compilation-job.h | 99 + deps/v8/src/compiler/code-assembler.cc | 260 +- deps/v8/src/compiler/code-assembler.h | 439 +- .../src/compiler/common-operator-reducer.cc | 4 +- .../v8/src/compiler/common-operator-reducer.h | 8 +- deps/v8/src/compiler/common-operator.cc | 56 +- deps/v8/src/compiler/common-operator.h | 60 +- .../src/compiler/compilation-dependencies.cc | 163 +- .../src/compiler/compilation-dependencies.h | 17 +- .../compiler-source-position-table.cc | 5 +- .../compiler/compiler-source-position-table.h | 4 +- .../compiler/const-tracking-let-helpers.cc | 71 - .../src/compiler/const-tracking-let-helpers.h | 30 - deps/v8/src/compiler/control-equivalence.h | 6 +- deps/v8/src/compiler/control-path-state.h | 5 +- deps/v8/src/compiler/csa-load-elimination.cc | 2 +- deps/v8/src/compiler/csa-load-elimination.h | 4 +- deps/v8/src/compiler/dead-code-elimination.cc | 4 +- deps/v8/src/compiler/dead-code-elimination.h | 6 +- .../src/compiler/decompression-optimizer.cc | 408 - .../v8/src/compiler/decompression-optimizer.h | 130 - deps/v8/src/compiler/diamond.h | 6 +- .../src/compiler/escape-analysis-reducer.cc | 5 +- .../v8/src/compiler/escape-analysis-reducer.h | 6 +- deps/v8/src/compiler/escape-analysis.cc | 71 +- deps/v8/src/compiler/escape-analysis.h | 6 +- deps/v8/src/compiler/fast-api-calls.cc | 153 +- deps/v8/src/compiler/fast-api-calls.h | 15 +- deps/v8/src/compiler/feedback-source.cc | 2 +- deps/v8/src/compiler/feedback-source.h | 4 +- deps/v8/src/compiler/frame-states.cc | 69 +- deps/v8/src/compiler/frame-states.h | 51 +- deps/v8/src/compiler/globals.h | 2 +- deps/v8/src/compiler/graph-assembler.cc | 61 +- deps/v8/src/compiler/graph-assembler.h | 29 +- deps/v8/src/compiler/graph-reducer.cc | 8 +- deps/v8/src/compiler/graph-reducer.h | 12 +- deps/v8/src/compiler/graph-trimmer.cc | 5 +- deps/v8/src/compiler/graph-trimmer.h | 8 +- deps/v8/src/compiler/heap-refs.cc | 157 +- deps/v8/src/compiler/heap-refs.h | 160 +- deps/v8/src/compiler/int64-lowering.cc | 4 +- deps/v8/src/compiler/int64-lowering.h | 10 +- deps/v8/src/compiler/js-call-reducer.cc | 376 +- deps/v8/src/compiler/js-call-reducer.h | 10 +- .../src/compiler/js-context-specialization.cc | 339 +- .../src/compiler/js-context-specialization.h | 13 +- deps/v8/src/compiler/js-create-lowering.cc | 18 +- deps/v8/src/compiler/js-create-lowering.h | 2 +- deps/v8/src/compiler/js-generic-lowering.cc | 7 +- deps/v8/src/compiler/js-generic-lowering.h | 3 +- deps/v8/src/compiler/js-graph.cc | 11 + deps/v8/src/compiler/js-graph.h | 12 +- deps/v8/src/compiler/js-heap-broker-inl.h | 21 +- deps/v8/src/compiler/js-heap-broker.cc | 88 +- deps/v8/src/compiler/js-heap-broker.h | 98 +- deps/v8/src/compiler/js-inlining-heuristic.cc | 30 +- deps/v8/src/compiler/js-inlining-heuristic.h | 2 +- deps/v8/src/compiler/js-inlining.cc | 71 +- deps/v8/src/compiler/js-inlining.h | 5 +- deps/v8/src/compiler/js-intrinsic-lowering.cc | 2 +- deps/v8/src/compiler/js-intrinsic-lowering.h | 2 +- .../js-native-context-specialization.cc | 424 +- .../js-native-context-specialization.h | 17 +- deps/v8/src/compiler/js-operator.cc | 21 +- deps/v8/src/compiler/js-operator.h | 17 +- deps/v8/src/compiler/js-type-hint-lowering.cc | 15 +- deps/v8/src/compiler/js-typed-lowering.cc | 314 +- deps/v8/src/compiler/js-typed-lowering.h | 4 +- deps/v8/src/compiler/late-escape-analysis.cc | 2 +- deps/v8/src/compiler/late-escape-analysis.h | 2 +- deps/v8/src/compiler/linear-scheduler.cc | 11 +- deps/v8/src/compiler/linear-scheduler.h | 4 +- deps/v8/src/compiler/linkage.cc | 69 +- deps/v8/src/compiler/linkage.h | 62 +- deps/v8/src/compiler/load-elimination.cc | 73 +- deps/v8/src/compiler/load-elimination.h | 5 +- deps/v8/src/compiler/loop-analysis.cc | 6 +- deps/v8/src/compiler/loop-analysis.h | 8 +- deps/v8/src/compiler/loop-peeling.cc | 4 +- deps/v8/src/compiler/loop-peeling.h | 6 +- deps/v8/src/compiler/loop-unrolling.cc | 2 +- deps/v8/src/compiler/loop-unrolling.h | 2 +- .../src/compiler/loop-variable-optimizer.cc | 10 +- .../v8/src/compiler/loop-variable-optimizer.h | 8 +- .../v8/src/compiler/machine-graph-verifier.cc | 7 +- deps/v8/src/compiler/machine-graph-verifier.h | 4 +- deps/v8/src/compiler/machine-graph.h | 10 +- .../src/compiler/machine-operator-reducer.cc | 11 +- .../src/compiler/machine-operator-reducer.h | 2 +- deps/v8/src/compiler/machine-operator.cc | 155 +- deps/v8/src/compiler/machine-operator.h | 11 +- deps/v8/src/compiler/memory-lowering.cc | 14 +- deps/v8/src/compiler/memory-lowering.h | 6 +- deps/v8/src/compiler/memory-optimizer.cc | 2 +- deps/v8/src/compiler/memory-optimizer.h | 4 +- deps/v8/src/compiler/node-cache.h | 2 +- deps/v8/src/compiler/node-marker.cc | 4 +- deps/v8/src/compiler/node-marker.h | 7 +- deps/v8/src/compiler/node-matchers.h | 15 +- deps/v8/src/compiler/node-observer.h | 6 +- deps/v8/src/compiler/node-origin-table.cc | 5 +- deps/v8/src/compiler/node-origin-table.h | 4 +- deps/v8/src/compiler/node-properties.cc | 32 +- deps/v8/src/compiler/node-properties.h | 10 +- deps/v8/src/compiler/node.cc | 9 +- deps/v8/src/compiler/node.h | 5 +- deps/v8/src/compiler/opcodes.h | 90 +- deps/v8/src/compiler/operation-typer.cc | 29 +- deps/v8/src/compiler/operation-typer.h | 3 +- deps/v8/src/compiler/operator-properties.cc | 1 + deps/v8/src/compiler/operator.h | 6 +- deps/v8/src/compiler/osr.h | 4 +- .../v8/src/compiler/pair-load-store-reducer.h | 6 +- deps/v8/src/compiler/persistent-map.h | 2 +- deps/v8/src/compiler/pipeline-data-inl.h | 44 +- deps/v8/src/compiler/pipeline-statistics.cc | 4 +- deps/v8/src/compiler/pipeline-statistics.h | 16 +- deps/v8/src/compiler/pipeline.cc | 2424 +- deps/v8/src/compiler/pipeline.h | 76 +- deps/v8/src/compiler/processed-feedback.h | 8 +- .../src/compiler/property-access-builder.cc | 86 +- .../v8/src/compiler/property-access-builder.h | 24 +- deps/v8/src/compiler/raw-machine-assembler.cc | 18 +- deps/v8/src/compiler/raw-machine-assembler.h | 59 +- .../v8/src/compiler/redundancy-elimination.cc | 22 +- deps/v8/src/compiler/representation-change.cc | 224 +- deps/v8/src/compiler/representation-change.h | 19 + deps/v8/src/compiler/revectorizer.cc | 8 +- deps/v8/src/compiler/revectorizer.h | 14 +- deps/v8/src/compiler/scheduler.cc | 13 +- deps/v8/src/compiler/scheduler.h | 8 +- deps/v8/src/compiler/select-lowering.cc | 5 +- deps/v8/src/compiler/select-lowering.h | 2 +- .../compiler/simplified-lowering-verifier.cc | 6 + .../compiler/simplified-lowering-verifier.h | 4 +- deps/v8/src/compiler/simplified-lowering.cc | 253 +- deps/v8/src/compiler/simplified-lowering.h | 4 +- .../compiler/simplified-operator-reducer.cc | 3 +- .../compiler/simplified-operator-reducer.h | 2 +- deps/v8/src/compiler/simplified-operator.cc | 239 +- deps/v8/src/compiler/simplified-operator.h | 88 +- deps/v8/src/compiler/state-values-utils.h | 4 +- .../src/compiler/string-builder-optimizer.cc | 2 +- .../src/compiler/string-builder-optimizer.h | 4 +- deps/v8/src/compiler/turbofan-enabled.cc | 2 +- ...alizer.cc => turbofan-graph-visualizer.cc} | 75 +- ...sualizer.h => turbofan-graph-visualizer.h} | 37 +- .../compiler/{graph.cc => turbofan-graph.cc} | 34 +- .../compiler/{graph.h => turbofan-graph.h} | 28 +- .../compiler/{typer.cc => turbofan-typer.cc} | 124 +- .../compiler/{typer.h => turbofan-typer.h} | 17 +- .../compiler/{types.cc => turbofan-types.cc} | 24 +- .../compiler/{types.h => turbofan-types.h} | 19 +- .../src/compiler/turboshaft/access-builder.h | 4 +- deps/v8/src/compiler/turboshaft/assembler.h | 628 +- .../turboshaft/assert-types-reducer.h | 9 + .../turboshaft/block-instrumentation-phase.cc | 8 +- .../block-instrumentation-reducer.h | 4 +- .../turboshaft/branch-elimination-reducer.h | 34 +- .../turboshaft/builtin-call-descriptors.h | 23 + .../compiler/turboshaft/builtin-compiler.cc | 11 +- .../compiler/turboshaft/builtin-compiler.h | 2 +- .../src/compiler/turboshaft/copying-phase.h | 31 +- .../turboshaft/dataview-lowering-reducer.h | 3 +- .../dead-code-elimination-reducer.h | 27 +- .../turboshaft/define-assembler-macros.inc | 32 +- deps/v8/src/compiler/turboshaft/deopt-data.h | 42 +- .../duplication-optimization-reducer.h | 6 +- .../fast-api-call-lowering-reducer.h | 224 +- deps/v8/src/compiler/turboshaft/fast-hash.h | 2 +- .../src/compiler/turboshaft/graph-builder.cc | 419 +- .../compiler/turboshaft/graph-visualizer.cc | 4 +- deps/v8/src/compiler/turboshaft/graph.h | 22 + .../turboshaft/growable-stacks-reducer.h | 144 + deps/v8/src/compiler/turboshaft/index.h | 167 +- .../turboshaft/instruction-selection-phase.cc | 6 +- .../turboshaft/instruction-selection-phase.h | 3 +- .../turboshaft/int64-lowering-reducer.h | 169 +- .../turboshaft/js-generic-lowering-reducer.h | 2 +- .../late-load-elimination-reducer.cc | 84 +- .../late-load-elimination-reducer.h | 43 +- .../load-store-simplification-reducer.h | 19 - .../turboshaft/loop-peeling-reducer.h | 45 +- .../turboshaft/loop-unrolling-reducer.cc | 15 +- .../turboshaft/loop-unrolling-reducer.h | 90 +- .../turboshaft/machine-lowering-phase.cc | 8 +- .../turboshaft/machine-lowering-reducer-inl.h | 416 +- .../turboshaft/machine-optimization-reducer.h | 766 +- .../maglev-early-lowering-reducer-inl.h | 220 +- .../turboshaft/memory-optimization-reducer.cc | 6 +- .../turboshaft/memory-optimization-reducer.h | 34 +- .../compiler/turboshaft/operation-matcher.h | 317 +- deps/v8/src/compiler/turboshaft/operations.cc | 213 +- deps/v8/src/compiler/turboshaft/operations.h | 957 +- deps/v8/src/compiler/turboshaft/opmasks.h | 17 + deps/v8/src/compiler/turboshaft/phase.cc | 2 +- deps/v8/src/compiler/turboshaft/phase.h | 77 +- deps/v8/src/compiler/turboshaft/pipelines.cc | 109 +- deps/v8/src/compiler/turboshaft/pipelines.h | 152 +- .../turboshaft/recreate-schedule-phase.cc | 30 - .../turboshaft/recreate-schedule-phase.h | 28 - .../compiler/turboshaft/recreate-schedule.cc | 1977 - .../compiler/turboshaft/recreate-schedule.h | 37 - .../src/compiler/turboshaft/reducer-traits.h | 85 +- .../src/compiler/turboshaft/representations.h | 24 +- .../turboshaft/runtime-call-descriptors.h | 12 + deps/v8/src/compiler/turboshaft/sidetable.h | 54 +- .../turboshaft/simplified-lowering-phase.cc | 16 - .../turboshaft/simplified-lowering-phase.h | 20 - .../turboshaft/simplified-lowering-reducer.h | 102 - .../src/compiler/turboshaft/snapshot-table.h | 66 +- .../turboshaft/stack-check-lowering-reducer.h | 71 +- .../store-store-elimination-reducer-inl.h | 5 +- .../string-escape-analysis-reducer.cc | 172 + .../string-escape-analysis-reducer.h | 403 + .../structural-optimization-reducer.h | 53 +- deps/v8/src/compiler/turboshaft/tracing.h | 2 +- ...ing-phase.cc => turbolev-graph-builder.cc} | 1124 +- ...lding-phase.h => turbolev-graph-builder.h} | 9 +- .../turboshaft/type-inference-analysis.h | 8 + deps/v8/src/compiler/turboshaft/typer.h | 7 +- deps/v8/src/compiler/turboshaft/types.h | 37 +- .../turboshaft/undef-assembler-macros.inc | 6 + .../compiler/turboshaft/variable-reducer.h | 2 +- .../turboshaft/wasm-assembler-helpers.h | 6 +- .../wasm-dead-code-elimination-phase.cc | 3 +- .../wasm-dead-code-elimination-phase.h | 6 +- .../wasm-debug-memory-lowering-phase.cc | 21 + .../wasm-debug-memory-lowering-phase.h | 30 + .../turboshaft/wasm-gc-optimize-phase.h | 6 +- .../wasm-gc-typed-optimization-reducer.cc | 189 +- .../wasm-gc-typed-optimization-reducer.h | 138 +- .../turboshaft/wasm-in-js-inlining-phase.h | 6 +- .../wasm-in-js-inlining-reducer-inl.h | 50 +- .../turboshaft/wasm-js-lowering-reducer.h | 8 +- .../wasm-load-elimination-reducer.h | 23 +- .../compiler/turboshaft/wasm-lowering-phase.h | 6 +- .../turboshaft/wasm-lowering-reducer.h | 142 +- .../compiler/turboshaft/wasm-optimize-phase.h | 6 +- .../compiler/turboshaft/wasm-revec-phase.h | 6 +- .../compiler/turboshaft/wasm-revec-reducer.cc | 776 +- .../compiler/turboshaft/wasm-revec-reducer.h | 985 +- .../turboshaft/wasm-shuffle-reducer.cc | 419 + .../turboshaft/wasm-shuffle-reducer.h | 478 + .../compiler/turboshaft/wasm-simd-phase.cc | 22 + .../src/compiler/turboshaft/wasm-simd-phase.h | 24 + .../turboshaft/wasm-turboshaft-compiler.cc | 51 +- .../turboshaft/wasm-turboshaft-compiler.h | 10 +- .../src/compiler/turboshaft/zone-with-name.h | 11 +- deps/v8/src/compiler/type-cache.h | 12 +- .../v8/src/compiler/type-narrowing-reducer.cc | 2 +- deps/v8/src/compiler/type-narrowing-reducer.h | 2 +- deps/v8/src/compiler/typed-optimization.cc | 94 +- deps/v8/src/compiler/typed-optimization.h | 5 +- deps/v8/src/compiler/use-info.h | 25 +- deps/v8/src/compiler/verifier.cc | 71 +- deps/v8/src/compiler/verifier.h | 4 +- .../compiler/wasm-address-reassociation.cc | 2 +- .../src/compiler/wasm-address-reassociation.h | 4 +- deps/v8/src/compiler/wasm-call-descriptors.h | 6 +- .../src/compiler/wasm-compiler-definitions.cc | 38 +- .../src/compiler/wasm-compiler-definitions.h | 32 +- deps/v8/src/compiler/wasm-compiler.cc | 8506 +- deps/v8/src/compiler/wasm-compiler.h | 687 +- deps/v8/src/compiler/wasm-escape-analysis.h | 6 +- deps/v8/src/compiler/wasm-gc-lowering.cc | 30 +- deps/v8/src/compiler/wasm-gc-lowering.h | 6 +- .../src/compiler/wasm-gc-operator-reducer.cc | 42 +- .../src/compiler/wasm-gc-operator-reducer.h | 8 +- deps/v8/src/compiler/wasm-graph-assembler.cc | 73 +- deps/v8/src/compiler/wasm-graph-assembler.h | 15 +- deps/v8/src/compiler/wasm-inlining-into-js.cc | 52 +- deps/v8/src/compiler/wasm-inlining-into-js.h | 6 +- deps/v8/src/compiler/wasm-inlining.cc | 547 - deps/v8/src/compiler/wasm-inlining.h | 133 - deps/v8/src/compiler/wasm-js-lowering.cc | 75 - deps/v8/src/compiler/wasm-js-lowering.h | 41 - deps/v8/src/compiler/wasm-load-elimination.cc | 4 +- deps/v8/src/compiler/wasm-load-elimination.h | 4 +- deps/v8/src/compiler/wasm-loop-peeling.cc | 130 - deps/v8/src/compiler/wasm-loop-peeling.h | 34 - deps/v8/src/compiler/wasm-typer.cc | 8 +- deps/v8/src/compiler/wasm-typer.h | 6 +- deps/v8/src/d8/async-hooks-wrapper.cc | 9 +- deps/v8/src/d8/async-hooks-wrapper.h | 1 - deps/v8/src/d8/d8-console.cc | 2 +- deps/v8/src/d8/d8-platforms.cc | 31 +- deps/v8/src/d8/d8-posix.cc | 4 +- deps/v8/src/d8/d8-test.cc | 232 +- deps/v8/src/d8/d8.cc | 474 +- deps/v8/src/d8/d8.h | 20 +- deps/v8/src/date/DIR_METADATA | 5 +- deps/v8/src/date/date.cc | 201 +- deps/v8/src/date/date.h | 75 +- deps/v8/src/date/dateparser-inl.h | 2 + deps/v8/src/debug/OWNERS | 2 + deps/v8/src/debug/debug-coverage.cc | 3 +- deps/v8/src/debug/debug-evaluate.cc | 112 +- deps/v8/src/debug/debug-evaluate.h | 36 +- deps/v8/src/debug/debug-frames.cc | 10 +- deps/v8/src/debug/debug-frames.h | 4 +- deps/v8/src/debug/debug-interface.cc | 168 +- deps/v8/src/debug/debug-interface.h | 17 +- deps/v8/src/debug/debug-property-iterator.cc | 21 +- deps/v8/src/debug/debug-property-iterator.h | 6 +- deps/v8/src/debug/debug-scope-iterator.cc | 7 +- deps/v8/src/debug/debug-scopes.cc | 122 +- deps/v8/src/debug/debug-scopes.h | 24 +- .../src/debug/debug-stack-trace-iterator.cc | 26 +- deps/v8/src/debug/debug-wasm-objects-inl.h | 2 + deps/v8/src/debug/debug-wasm-objects.cc | 410 +- deps/v8/src/debug/debug-wasm-objects.h | 35 +- deps/v8/src/debug/debug.cc | 197 +- deps/v8/src/debug/debug.h | 54 +- deps/v8/src/debug/interface-types.h | 3 +- deps/v8/src/debug/liveedit-diff.cc | 2 +- deps/v8/src/debug/liveedit.cc | 29 +- .../v8/src/debug/wasm/gdb-server/DIR_METADATA | 5 +- .../wasm/gdb-server/wasm-module-debug.cc | 33 +- deps/v8/src/deoptimizer/DIR_METADATA | 5 +- .../v8/src/deoptimizer/arm/deoptimizer-arm.cc | 6 +- .../deoptimizer/arm64/deoptimizer-arm64.cc | 10 +- deps/v8/src/deoptimizer/deoptimize-reason.cc | 11 + deps/v8/src/deoptimizer/deoptimize-reason.h | 93 +- .../deoptimizer/deoptimizer-cfi-builtins.cc | 77 - .../src/deoptimizer/deoptimizer-cfi-empty.cc | 16 - deps/v8/src/deoptimizer/deoptimizer.cc | 391 +- deps/v8/src/deoptimizer/deoptimizer.h | 37 +- deps/v8/src/deoptimizer/frame-description.h | 7 +- .../deoptimizer/frame-translation-builder.cc | 68 +- .../deoptimizer/frame-translation-builder.h | 12 +- .../src/deoptimizer/ia32/deoptimizer-ia32.cc | 6 +- .../loong64/deoptimizer-loong64.cc | 6 +- .../deoptimizer/materialized-object-store.cc | 15 +- .../deoptimizer/materialized-object-store.h | 6 +- .../deoptimizer/mips64/deoptimizer-mips64.cc | 6 +- .../v8/src/deoptimizer/ppc/deoptimizer-ppc.cc | 6 +- .../deoptimizer/riscv/deoptimizer-riscv.cc | 6 +- .../src/deoptimizer/s390/deoptimizer-s390.cc | 6 +- deps/v8/src/deoptimizer/translated-state.cc | 418 +- deps/v8/src/deoptimizer/translated-state.h | 108 +- deps/v8/src/deoptimizer/translation-opcode.h | 15 +- .../v8/src/deoptimizer/x64/deoptimizer-x64.cc | 14 +- .../src/diagnostics/basic-block-profiler.cc | 11 +- .../v8/src/diagnostics/basic-block-profiler.h | 2 +- .../src/diagnostics/compilation-statistics.cc | 9 +- .../src/diagnostics/compilation-statistics.h | 4 +- deps/v8/src/diagnostics/disassembler.cc | 16 + deps/v8/src/diagnostics/etw-debug-win.cc | 20 + deps/v8/src/diagnostics/etw-debug-win.h | 32 + .../etw-isolate-capture-state-monitor-win.cc | 73 + .../etw-isolate-capture-state-monitor-win.h | 46 + .../etw-isolate-load-script-data-win.cc | 318 + .../etw-isolate-load-script-data-win.h | 99 + .../diagnostics/etw-isolate-operations-win.cc | 76 + .../diagnostics/etw-isolate-operations-win.h | 47 + .../src/diagnostics/etw-jit-metadata-win.cc | 27 + .../v8/src/diagnostics/etw-jit-metadata-win.h | 23 +- deps/v8/src/diagnostics/etw-jit-win.cc | 448 +- deps/v8/src/diagnostics/etw-jit-win.h | 11 +- deps/v8/src/diagnostics/gdb-jit.cc | 10 +- deps/v8/src/diagnostics/objects-debug.cc | 251 +- deps/v8/src/diagnostics/objects-printer.cc | 559 +- deps/v8/src/diagnostics/perf-jit.cc | 41 +- deps/v8/src/diagnostics/perf-jit.h | 17 +- deps/v8/src/diagnostics/riscv/disasm-riscv.cc | 9 +- deps/v8/src/diagnostics/s390/disasm-s390.cc | 4 +- .../src/diagnostics/unwinding-info-win64.cc | 6 +- deps/v8/src/diagnostics/x64/disasm-x64.cc | 14 +- deps/v8/src/execution/DIR_METADATA | 5 +- deps/v8/src/execution/arguments-inl.h | 3 +- deps/v8/src/execution/arguments.h | 2 +- deps/v8/src/execution/arm/simulator-arm.cc | 158 +- deps/v8/src/execution/arm/simulator-arm.h | 48 +- .../arm64/pointer-authentication-arm64.h | 4 +- .../v8/src/execution/arm64/simulator-arm64.cc | 154 +- deps/v8/src/execution/arm64/simulator-arm64.h | 48 +- .../execution/arm64/simulator-logic-arm64.cc | 4 +- deps/v8/src/execution/clobber-registers.h | 1 - deps/v8/src/execution/encoded-c-signature.cc | 2 + deps/v8/src/execution/execution.cc | 297 +- deps/v8/src/execution/execution.h | 51 +- deps/v8/src/execution/frame-constants.h | 89 +- deps/v8/src/execution/frames-inl.h | 43 +- deps/v8/src/execution/frames.cc | 719 +- deps/v8/src/execution/frames.h | 235 +- deps/v8/src/execution/futex-emulation.cc | 111 +- deps/v8/src/execution/futex-emulation.h | 39 +- deps/v8/src/execution/isolate-data.h | 142 +- deps/v8/src/execution/isolate-inl.h | 30 +- deps/v8/src/execution/isolate-utils-inl.h | 38 +- deps/v8/src/execution/isolate-utils.h | 6 +- deps/v8/src/execution/isolate.cc | 1784 +- deps/v8/src/execution/isolate.h | 670 +- deps/v8/src/execution/local-isolate-inl.h | 9 +- deps/v8/src/execution/local-isolate.h | 33 +- .../execution/loong64/simulator-loong64.cc | 75 +- .../src/execution/loong64/simulator-loong64.h | 19 +- deps/v8/src/execution/messages.cc | 289 +- deps/v8/src/execution/messages.h | 90 +- deps/v8/src/execution/microtask-queue.cc | 28 +- deps/v8/src/execution/microtask-queue.h | 3 +- .../src/execution/mips64/simulator-mips64.cc | 59 +- .../src/execution/mips64/simulator-mips64.h | 19 +- ...f-thread.h => mutex-guard-if-off-thread.h} | 10 +- deps/v8/src/execution/ppc/simulator-ppc.cc | 108 +- deps/v8/src/execution/ppc/simulator-ppc.h | 35 +- deps/v8/src/execution/protectors-inl.h | 2 + deps/v8/src/execution/protectors.h | 2 + .../v8/src/execution/riscv/simulator-riscv.cc | 87 +- deps/v8/src/execution/riscv/simulator-riscv.h | 25 +- .../execution/s390/frame-constants-s390.cc | 4 +- .../src/execution/s390/frame-constants-s390.h | 4 - deps/v8/src/execution/s390/simulator-s390.cc | 243 +- deps/v8/src/execution/s390/simulator-s390.h | 39 +- deps/v8/src/execution/simulator-base.h | 45 +- deps/v8/src/execution/simulator.h | 43 +- deps/v8/src/execution/stack-guard.cc | 56 +- deps/v8/src/execution/stack-guard.h | 67 +- deps/v8/src/execution/tiering-manager.cc | 142 +- deps/v8/src/execution/v8threads.cc | 7 +- deps/v8/src/execution/vm-state-inl.h | 18 +- deps/v8/src/execution/vm-state.h | 6 +- .../src/extensions/cputracemark-extension.h | 4 +- .../externalize-string-extension.cc | 163 +- .../extensions/externalize-string-extension.h | 4 +- deps/v8/src/extensions/gc-extension.cc | 10 +- deps/v8/src/extensions/gc-extension.h | 4 +- .../vtunedomain-support-extension.h | 6 +- deps/v8/src/flags/flag-definitions.h | 663 +- deps/v8/src/flags/flags.cc | 234 +- deps/v8/src/flags/flags.h | 4 + deps/v8/src/fuzzilli/fuzzilli.cc | 8 - deps/v8/src/fuzzilli/fuzzilli.h | 4 +- deps/v8/src/handles/DIR_METADATA | 3 + deps/v8/src/handles/global-handles-inl.h | 4 +- deps/v8/src/handles/global-handles.cc | 59 +- deps/v8/src/handles/global-handles.h | 18 +- deps/v8/src/handles/handles-inl.h | 89 +- deps/v8/src/handles/handles.cc | 49 +- deps/v8/src/handles/handles.h | 540 +- deps/v8/src/handles/local-handles-inl.h | 13 +- deps/v8/src/handles/local-handles.cc | 4 +- deps/v8/src/handles/local-handles.h | 14 +- deps/v8/src/handles/maybe-handles-inl.h | 100 +- deps/v8/src/handles/maybe-handles.h | 126 +- deps/v8/src/handles/persistent-handles.cc | 13 +- deps/v8/src/handles/persistent-handles.h | 13 +- deps/v8/src/handles/traced-handles-inl.h | 9 +- deps/v8/src/handles/traced-handles.cc | 377 +- deps/v8/src/handles/traced-handles.h | 34 +- deps/v8/src/heap/DIR_METADATA | 3 + deps/v8/src/heap/allocation-result.h | 2 + deps/v8/src/heap/allocation-stats.h | 2 +- deps/v8/src/heap/array-buffer-sweeper.cc | 162 +- deps/v8/src/heap/array-buffer-sweeper.h | 20 +- .../heap/base/asm/arm64/push_registers_asm.cc | 12 +- .../heap/base/asm/arm64/push_registers_masm.S | 32 - .../base/asm/ia32/push_registers_masm.asm | 48 - deps/v8/src/heap/base/basic-slot-set.h | 104 +- deps/v8/src/heap/base/bytes.h | 38 +- deps/v8/src/heap/base/cached-unordered-map.h | 7 +- .../heap/base/incremental-marking-schedule.cc | 57 +- .../heap/base/incremental-marking-schedule.h | 54 +- deps/v8/src/heap/base/memory-tagging.h | 4 +- deps/v8/src/heap/base/stack.cc | 34 +- deps/v8/src/heap/base/stack.h | 19 +- deps/v8/src/heap/base/worklist.h | 5 +- deps/v8/src/heap/code-range.cc | 125 +- deps/v8/src/heap/code-range.h | 28 +- deps/v8/src/heap/code-stats.cc | 111 - deps/v8/src/heap/code-stats.h | 5 - deps/v8/src/heap/collection-barrier.cc | 8 +- deps/v8/src/heap/concurrent-marking.cc | 256 +- deps/v8/src/heap/concurrent-marking.h | 7 +- ...or.cc => conservative-stack-visitor-inl.h} | 140 +- deps/v8/src/heap/conservative-stack-visitor.h | 53 +- deps/v8/src/heap/cppgc-js/cpp-heap.cc | 201 +- deps/v8/src/heap/cppgc-js/cpp-heap.h | 14 +- .../src/heap/cppgc-js/cpp-marking-state-inl.h | 1 + deps/v8/src/heap/cppgc-js/cpp-snapshot.cc | 43 +- .../heap/cppgc-js/cross-heap-remembered-set.h | 4 +- .../cppgc-js/unified-heap-marking-state-inl.h | 4 +- .../cppgc-js/unified-heap-marking-state.h | 2 + .../cppgc-js/unified-heap-marking-visitor.cc | 12 +- .../cppgc-js/unified-heap-marking-visitor.h | 4 + .../src/heap/cppgc/caged-heap-local-data.cc | 2 +- deps/v8/src/heap/cppgc/caged-heap.h | 1 - deps/v8/src/heap/cppgc/compactor.cc | 4 +- deps/v8/src/heap/cppgc/concurrent-marker.cc | 130 +- deps/v8/src/heap/cppgc/concurrent-marker.h | 8 +- deps/v8/src/heap/cppgc/globals.h | 31 - deps/v8/src/heap/cppgc/heap-base.cc | 8 +- deps/v8/src/heap/cppgc/heap-base.h | 7 +- deps/v8/src/heap/cppgc/heap-config.h | 8 +- deps/v8/src/heap/cppgc/heap-object-header.cc | 6 + deps/v8/src/heap/cppgc/heap-object-header.h | 12 +- deps/v8/src/heap/cppgc/heap-page.cc | 33 +- deps/v8/src/heap/cppgc/heap-page.h | 13 +- deps/v8/src/heap/cppgc/heap-space.cc | 4 +- deps/v8/src/heap/cppgc/marker.cc | 394 +- deps/v8/src/heap/cppgc/marker.h | 87 +- deps/v8/src/heap/cppgc/marking-state.cc | 4 + deps/v8/src/heap/cppgc/marking-state.h | 53 +- deps/v8/src/heap/cppgc/marking-verifier.cc | 78 +- deps/v8/src/heap/cppgc/marking-verifier.h | 5 + deps/v8/src/heap/cppgc/member-storage.cc | 6 +- deps/v8/src/heap/cppgc/object-allocator.cc | 91 +- deps/v8/src/heap/cppgc/object-allocator.h | 2 +- deps/v8/src/heap/cppgc/page-memory.cc | 113 +- deps/v8/src/heap/cppgc/page-memory.h | 54 +- deps/v8/src/heap/cppgc/persistent-node.cc | 19 +- deps/v8/src/heap/cppgc/platform.cc | 2 + deps/v8/src/heap/cppgc/pointer-policies.cc | 2 +- .../v8/src/heap/cppgc/prefinalizer-handler.cc | 7 +- deps/v8/src/heap/cppgc/prefinalizer-handler.h | 3 - deps/v8/src/heap/cppgc/process-heap.cc | 2 +- deps/v8/src/heap/cppgc/process-heap.h | 61 +- deps/v8/src/heap/cppgc/stats-collector.h | 21 +- deps/v8/src/heap/cppgc/sweeper.cc | 733 +- deps/v8/src/heap/cppgc/sweeper.h | 13 +- deps/v8/src/heap/cppgc/visitor.cc | 105 +- deps/v8/src/heap/cppgc/visitor.h | 2 +- deps/v8/src/heap/cppgc/write-barrier.cc | 38 +- deps/v8/src/heap/ephemeron-remembered-set.cc | 4 +- deps/v8/src/heap/evacuation-allocator-inl.h | 4 +- deps/v8/src/heap/evacuation-verifier-inl.h | 7 +- deps/v8/src/heap/evacuation-verifier.cc | 3 +- deps/v8/src/heap/factory-base-inl.h | 22 +- deps/v8/src/heap/factory-base.cc | 229 +- deps/v8/src/heap/factory-base.h | 77 +- deps/v8/src/heap/factory-inl.h | 33 +- deps/v8/src/heap/factory.cc | 1250 +- deps/v8/src/heap/factory.h | 505 +- .../finalization-registry-cleanup-task.cc | 14 +- deps/v8/src/heap/free-list-inl.h | 2 + deps/v8/src/heap/free-list.cc | 32 +- deps/v8/src/heap/free-list.h | 5 + deps/v8/src/heap/gc-tracer-inl.h | 7 +- deps/v8/src/heap/gc-tracer.cc | 313 +- deps/v8/src/heap/gc-tracer.h | 103 +- deps/v8/src/heap/heap-allocator-inl.h | 75 +- deps/v8/src/heap/heap-allocator.cc | 64 +- deps/v8/src/heap/heap-allocator.h | 30 +- deps/v8/src/heap/heap-controller.cc | 23 +- deps/v8/src/heap/heap-controller.h | 9 +- deps/v8/src/heap/heap-inl.h | 141 +- deps/v8/src/heap/heap-layout-inl.h | 102 + deps/v8/src/heap/heap-layout.cc | 57 + deps/v8/src/heap/heap-layout.h | 75 + deps/v8/src/heap/heap-utils-inl.h | 22 + deps/v8/src/heap/heap-utils.h | 23 + deps/v8/src/heap/heap-verifier.cc | 111 +- ...ects-visiting-inl.h => heap-visitor-inl.h} | 287 +- .../{objects-visiting.cc => heap-visitor.cc} | 6 +- .../{objects-visiting.h => heap-visitor.h} | 253 +- deps/v8/src/heap/heap-write-barrier-inl.h | 144 +- deps/v8/src/heap/heap-write-barrier.cc | 133 +- deps/v8/src/heap/heap-write-barrier.h | 41 +- deps/v8/src/heap/heap.cc | 1199 +- deps/v8/src/heap/heap.h | 313 +- deps/v8/src/heap/incremental-marking-inl.h | 6 +- deps/v8/src/heap/incremental-marking-job.cc | 8 +- deps/v8/src/heap/incremental-marking.cc | 302 +- deps/v8/src/heap/incremental-marking.h | 18 +- deps/v8/src/heap/large-page-metadata-inl.h | 2 + deps/v8/src/heap/large-page-metadata.cc | 11 +- deps/v8/src/heap/large-spaces.cc | 5 +- deps/v8/src/heap/large-spaces.h | 6 +- deps/v8/src/heap/list.h | 29 +- deps/v8/src/heap/live-object-range-inl.h | 110 + deps/v8/src/heap/live-object-range.h | 66 + deps/v8/src/heap/local-factory-inl.h | 14 +- deps/v8/src/heap/local-factory.h | 6 +- deps/v8/src/heap/local-heap-inl.h | 8 +- deps/v8/src/heap/local-heap.cc | 49 +- deps/v8/src/heap/local-heap.h | 51 +- deps/v8/src/heap/main-allocator-inl.h | 6 +- deps/v8/src/heap/main-allocator.cc | 45 +- deps/v8/src/heap/main-allocator.h | 9 +- deps/v8/src/heap/mark-compact-inl.h | 12 +- deps/v8/src/heap/mark-compact.cc | 1011 +- deps/v8/src/heap/mark-compact.h | 69 +- deps/v8/src/heap/mark-sweep-utilities.cc | 11 +- deps/v8/src/heap/marking-barrier-inl.h | 33 +- deps/v8/src/heap/marking-barrier.cc | 56 +- deps/v8/src/heap/marking-barrier.h | 13 +- deps/v8/src/heap/marking-inl.h | 122 +- deps/v8/src/heap/marking-progress-tracker.h | 69 + deps/v8/src/heap/marking-state-inl.h | 4 +- deps/v8/src/heap/marking-visitor-inl.h | 260 +- deps/v8/src/heap/marking-visitor.h | 88 +- deps/v8/src/heap/marking-worklist-inl.h | 5 +- deps/v8/src/heap/marking.h | 55 +- deps/v8/src/heap/memory-allocator.cc | 146 +- deps/v8/src/heap/memory-allocator.h | 79 +- deps/v8/src/heap/memory-chunk-constants.h | 43 + deps/v8/src/heap/memory-chunk-inl.h | 13 +- deps/v8/src/heap/memory-chunk-layout.cc | 86 - deps/v8/src/heap/memory-chunk-layout.h | 155 +- deps/v8/src/heap/memory-chunk-metadata-inl.h | 4 +- deps/v8/src/heap/memory-chunk-metadata.cc | 42 +- deps/v8/src/heap/memory-chunk-metadata.h | 55 +- deps/v8/src/heap/memory-chunk.cc | 69 +- deps/v8/src/heap/memory-chunk.h | 127 +- deps/v8/src/heap/memory-measurement-inl.h | 2 + deps/v8/src/heap/memory-measurement.cc | 91 +- deps/v8/src/heap/memory-measurement.h | 4 +- deps/v8/src/heap/memory-reducer.cc | 21 +- deps/v8/src/heap/memory-reducer.h | 3 + deps/v8/src/heap/minor-gc-job.cc | 165 +- deps/v8/src/heap/minor-gc-job.h | 34 +- deps/v8/src/heap/minor-mark-sweep-inl.h | 8 +- deps/v8/src/heap/minor-mark-sweep.cc | 97 +- deps/v8/src/heap/minor-mark-sweep.h | 2 - deps/v8/src/heap/mutable-page-metadata-inl.h | 10 +- deps/v8/src/heap/mutable-page-metadata.cc | 146 +- deps/v8/src/heap/mutable-page-metadata.h | 132 +- deps/v8/src/heap/new-spaces-inl.h | 32 +- deps/v8/src/heap/new-spaces.cc | 474 +- deps/v8/src/heap/new-spaces.h | 182 +- deps/v8/src/heap/object-lock-inl.h | 31 +- deps/v8/src/heap/object-lock.h | 18 +- deps/v8/src/heap/object-stats.cc | 252 +- deps/v8/src/heap/object-stats.h | 7 +- deps/v8/src/heap/page-metadata-inl.h | 4 +- deps/v8/src/heap/page-metadata.cc | 16 +- deps/v8/src/heap/page-metadata.h | 12 +- deps/v8/src/heap/page-pool.cc | 226 + deps/v8/src/heap/page-pool.h | 75 + deps/v8/src/heap/paged-spaces-inl.h | 4 +- deps/v8/src/heap/paged-spaces.cc | 22 +- deps/v8/src/heap/paged-spaces.h | 6 +- deps/v8/src/heap/parked-scope-inl.h | 27 +- deps/v8/src/heap/parked-scope.h | 31 +- deps/v8/src/heap/pretenuring-handler-inl.h | 86 +- deps/v8/src/heap/pretenuring-handler.cc | 17 +- deps/v8/src/heap/pretenuring-handler.h | 11 +- deps/v8/src/heap/progress-bar.h | 62 - deps/v8/src/heap/read-only-heap-inl.h | 24 +- deps/v8/src/heap/read-only-heap.cc | 233 +- deps/v8/src/heap/read-only-heap.h | 70 +- deps/v8/src/heap/read-only-promotion.cc | 106 +- deps/v8/src/heap/read-only-spaces.cc | 369 +- deps/v8/src/heap/read-only-spaces.h | 128 +- deps/v8/src/heap/remembered-set-inl.h | 17 +- deps/v8/src/heap/remembered-set.h | 24 +- deps/v8/src/heap/safepoint.cc | 79 +- deps/v8/src/heap/safepoint.h | 25 +- deps/v8/src/heap/scavenger-inl.h | 215 +- deps/v8/src/heap/scavenger.cc | 772 +- deps/v8/src/heap/scavenger.h | 124 +- deps/v8/src/heap/setup-heap-internal.cc | 240 +- deps/v8/src/heap/slot-set.h | 3 - deps/v8/src/heap/spaces-inl.h | 8 +- deps/v8/src/heap/sweeper.cc | 142 +- deps/v8/src/heap/sweeper.h | 6 + .../src/heap/traced-handles-marking-visitor.h | 1 - deps/v8/src/heap/trusted-range.cc | 20 +- deps/v8/src/heap/visit-object.cc | 164 + deps/v8/src/heap/visit-object.h | 28 + deps/v8/src/heap/weak-object-worklists.cc | 49 +- deps/v8/src/heap/weak-object-worklists.h | 24 +- .../young-generation-marking-visitor-inl.h | 44 +- .../heap/young-generation-marking-visitor.h | 15 +- deps/v8/src/ic/DIR_METADATA | 5 +- deps/v8/src/ic/accessor-assembler.cc | 246 +- deps/v8/src/ic/accessor-assembler.h | 53 +- deps/v8/src/ic/binary-op-assembler.cc | 56 +- deps/v8/src/ic/call-optimization.cc | 10 +- deps/v8/src/ic/call-optimization.h | 10 +- deps/v8/src/ic/handler-configuration-inl.h | 47 +- deps/v8/src/ic/handler-configuration.cc | 83 +- deps/v8/src/ic/handler-configuration.h | 53 +- deps/v8/src/ic/ic-inl.h | 1 + deps/v8/src/ic/ic-stats.cc | 4 +- deps/v8/src/ic/ic.cc | 700 +- deps/v8/src/ic/ic.h | 97 +- deps/v8/src/ic/keyed-store-generic.cc | 73 +- deps/v8/src/ic/keyed-store-generic.h | 2 +- deps/v8/src/ic/stub-cache.cc | 10 +- deps/v8/src/init/DIR_METADATA | 3 + deps/v8/src/init/bootstrapper.cc | 1865 +- deps/v8/src/init/bootstrapper.h | 28 +- deps/v8/src/init/heap-symbols.h | 503 +- deps/v8/src/init/isolate-group.cc | 367 +- deps/v8/src/init/isolate-group.h | 241 +- deps/v8/src/init/v8.cc | 39 +- deps/v8/src/inspector/custom-preview.cc | 6 +- deps/v8/src/inspector/custom-preview.h | 6 +- deps/v8/src/inspector/injected-script.cc | 26 +- deps/v8/src/inspector/injected-script.h | 13 +- deps/v8/src/inspector/inspected-context.cc | 34 +- deps/v8/src/inspector/inspected-context.h | 1 + deps/v8/src/inspector/string-16.cc | 26 +- deps/v8/src/inspector/string-16.h | 2 + deps/v8/src/inspector/string-util.cc | 23 +- deps/v8/src/inspector/string-util.h | 25 +- deps/v8/src/inspector/v8-console-message.cc | 2 +- deps/v8/src/inspector/v8-console.cc | 42 +- .../src/inspector/v8-debugger-agent-impl.cc | 261 +- .../v8/src/inspector/v8-debugger-agent-impl.h | 88 +- deps/v8/src/inspector/v8-debugger-script.cc | 49 +- deps/v8/src/inspector/v8-debugger-script.h | 6 +- deps/v8/src/inspector/v8-debugger.cc | 104 +- deps/v8/src/inspector/v8-debugger.h | 17 +- .../inspector/v8-heap-profiler-agent-impl.cc | 59 +- .../inspector/v8-heap-profiler-agent-impl.h | 28 +- deps/v8/src/inspector/v8-inspector-impl.cc | 20 +- deps/v8/src/inspector/v8-inspector-impl.h | 4 +- .../src/inspector/v8-profiler-agent-impl.cc | 9 +- .../v8/src/inspector/v8-profiler-agent-impl.h | 6 +- .../v8/src/inspector/v8-runtime-agent-impl.cc | 175 +- deps/v8/src/inspector/v8-runtime-agent-impl.h | 98 +- deps/v8/src/inspector/v8-stack-trace-impl.cc | 40 +- deps/v8/src/interpreter/DIR_METADATA | 5 +- .../src/interpreter/bytecode-array-builder.cc | 74 +- .../src/interpreter/bytecode-array-builder.h | 11 +- .../interpreter/bytecode-array-iterator.cc | 51 +- .../src/interpreter/bytecode-array-iterator.h | 14 +- .../bytecode-array-random-iterator.cc | 2 +- .../src/interpreter/bytecode-array-writer.cc | 16 +- .../src/interpreter/bytecode-array-writer.h | 9 +- deps/v8/src/interpreter/bytecode-generator.cc | 280 +- deps/v8/src/interpreter/bytecode-generator.h | 14 +- deps/v8/src/interpreter/bytecodes.h | 9 + .../src/interpreter/constant-array-builder.cc | 17 +- .../src/interpreter/constant-array-builder.h | 7 +- .../src/interpreter/handler-table-builder.cc | 8 +- .../src/interpreter/handler-table-builder.h | 2 +- .../src/interpreter/interpreter-assembler.cc | 80 +- .../src/interpreter/interpreter-assembler.h | 27 +- .../src/interpreter/interpreter-generator.cc | 205 +- .../src/interpreter/interpreter-generator.h | 13 +- .../interpreter-intrinsics-generator.cc | 3 +- deps/v8/src/interpreter/interpreter.cc | 26 +- deps/v8/src/interpreter/interpreter.h | 2 +- deps/v8/src/json/DIR_METADATA | 5 +- deps/v8/src/json/json-parser.cc | 288 +- deps/v8/src/json/json-parser.h | 37 +- deps/v8/src/json/json-stringifier.cc | 2269 +- deps/v8/src/json/json-stringifier.h | 7 +- deps/v8/src/libplatform/DIR_METADATA | 5 +- .../default-foreground-task-runner.cc | 8 +- deps/v8/src/libplatform/default-job.cc | 9 +- deps/v8/src/libplatform/default-platform.cc | 8 +- deps/v8/src/libplatform/delayed-task-queue.h | 1 - .../src/libplatform/tracing/recorder-mac.cc | 1 + .../src/libplatform/tracing/recorder-win.cc | 1 + deps/v8/src/libsampler/sampler.cc | 18 +- deps/v8/src/logging/code-events.h | 81 +- deps/v8/src/logging/counters-definitions.h | 4 +- deps/v8/src/logging/counters.h | 4 +- deps/v8/src/logging/log-inl.h | 4 +- deps/v8/src/logging/log.cc | 333 +- deps/v8/src/logging/log.h | 183 +- deps/v8/src/logging/runtime-call-stats.cc | 11 +- deps/v8/src/logging/runtime-call-stats.h | 25 +- deps/v8/src/maglev/DIR_METADATA | 3 + .../src/maglev/arm/maglev-assembler-arm-inl.h | 70 +- .../v8/src/maglev/arm/maglev-assembler-arm.cc | 6 +- deps/v8/src/maglev/arm/maglev-ir-arm.cc | 75 +- .../maglev/arm64/maglev-assembler-arm64-inl.h | 71 +- .../maglev/arm64/maglev-assembler-arm64.cc | 11 +- deps/v8/src/maglev/arm64/maglev-ir-arm64.cc | 234 +- deps/v8/src/maglev/maglev-assembler-inl.h | 175 +- deps/v8/src/maglev/maglev-assembler.cc | 59 +- deps/v8/src/maglev/maglev-assembler.h | 105 +- deps/v8/src/maglev/maglev-basic-block.h | 198 +- .../v8/src/maglev/maglev-code-gen-state-inl.h | 26 + deps/v8/src/maglev/maglev-code-gen-state.h | 12 +- deps/v8/src/maglev/maglev-code-generator.cc | 330 +- deps/v8/src/maglev/maglev-code-generator.h | 5 +- deps/v8/src/maglev/maglev-compilation-info.cc | 16 +- deps/v8/src/maglev/maglev-compilation-info.h | 27 +- deps/v8/src/maglev/maglev-compilation-unit.cc | 15 +- deps/v8/src/maglev/maglev-compilation-unit.h | 16 +- deps/v8/src/maglev/maglev-compiler.cc | 159 +- deps/v8/src/maglev/maglev-compiler.h | 2 +- .../maglev/maglev-concurrent-dispatcher.cc | 28 +- .../src/maglev/maglev-concurrent-dispatcher.h | 6 +- .../src/maglev/maglev-deopt-frame-visitor.h | 136 + deps/v8/src/maglev/maglev-graph-builder.cc | 5122 +- deps/v8/src/maglev/maglev-graph-builder.h | 1181 +- deps/v8/src/maglev/maglev-graph-labeller.h | 6 - deps/v8/src/maglev/maglev-graph-printer.cc | 122 +- deps/v8/src/maglev/maglev-graph-printer.h | 1 + deps/v8/src/maglev/maglev-graph-processor.h | 18 +- deps/v8/src/maglev/maglev-graph-verifier.h | 17 +- deps/v8/src/maglev/maglev-graph.h | 108 +- deps/v8/src/maglev/maglev-inlining.h | 341 + .../maglev/maglev-interpreter-frame-state.cc | 229 +- .../maglev/maglev-interpreter-frame-state.h | 155 +- deps/v8/src/maglev/maglev-ir-inl.h | 254 +- deps/v8/src/maglev/maglev-ir.cc | 1532 +- deps/v8/src/maglev/maglev-ir.h | 2067 +- .../maglev-phi-representation-selector.cc | 362 +- .../maglev-phi-representation-selector.h | 73 +- ...maglev-post-hoc-optimizations-processors.h | 52 +- .../maglev-pre-regalloc-codegen-processors.h | 58 +- deps/v8/src/maglev/maglev-regalloc.cc | 273 +- deps/v8/src/maglev/maglev-regalloc.h | 27 +- deps/v8/src/maglev/maglev.cc | 3 +- .../maglev/riscv/maglev-assembler-riscv-inl.h | 2026 + .../maglev/riscv/maglev-assembler-riscv.cc | 628 + deps/v8/src/maglev/riscv/maglev-ir-riscv.cc | 940 + .../maglev/s390/maglev-assembler-s390-inl.h | 102 +- .../src/maglev/s390/maglev-assembler-s390.cc | 6 +- deps/v8/src/maglev/s390/maglev-ir-s390.cc | 92 +- .../src/maglev/x64/maglev-assembler-x64-inl.h | 83 +- .../v8/src/maglev/x64/maglev-assembler-x64.cc | 12 +- deps/v8/src/maglev/x64/maglev-ir-x64.cc | 173 +- deps/v8/src/numbers/DIR_METADATA | 5 +- deps/v8/src/numbers/conversions-inl.h | 13 +- deps/v8/src/numbers/conversions.cc | 385 +- deps/v8/src/numbers/conversions.h | 57 +- deps/v8/src/numbers/ieee754.cc | 53 + deps/v8/src/numbers/ieee754.h | 21 + deps/v8/src/numbers/integer-literal-inl.h | 1 + deps/v8/src/objects/DIR_METADATA | 5 +- deps/v8/src/objects/abstract-code-inl.h | 2 + deps/v8/src/objects/all-objects-inl.h | 1 - deps/v8/src/objects/allocation-site-inl.h | 7 +- .../src/objects/allocation-site-scopes-inl.h | 3 +- deps/v8/src/objects/allocation-site-scopes.h | 6 +- deps/v8/src/objects/api-callbacks-inl.h | 2 + deps/v8/src/objects/api-callbacks.h | 5 +- deps/v8/src/objects/arguments-inl.h | 45 +- deps/v8/src/objects/arguments.h | 50 +- deps/v8/src/objects/arguments.tq | 2 +- deps/v8/src/objects/backing-store.cc | 294 +- deps/v8/src/objects/backing-store.h | 125 +- deps/v8/src/objects/bigint-inl.h | 18 - deps/v8/src/objects/bigint.cc | 354 +- deps/v8/src/objects/bigint.h | 102 +- deps/v8/src/objects/bytecode-array-inl.h | 10 +- deps/v8/src/objects/bytecode-array.h | 1 + deps/v8/src/objects/call-site-info-inl.h | 4 +- deps/v8/src/objects/call-site-info.cc | 145 +- deps/v8/src/objects/call-site-info.h | 22 +- deps/v8/src/objects/casting-inl.h | 54 + deps/v8/src/objects/casting.h | 164 +- deps/v8/src/objects/cell-inl.h | 1 + deps/v8/src/objects/code-inl.h | 119 +- deps/v8/src/objects/code-kind.cc | 8 +- deps/v8/src/objects/code-kind.h | 24 +- deps/v8/src/objects/code.cc | 33 +- deps/v8/src/objects/code.h | 34 +- .../src/objects/compilation-cache-table-inl.h | 13 +- .../v8/src/objects/compilation-cache-table.cc | 66 +- deps/v8/src/objects/compilation-cache-table.h | 31 +- deps/v8/src/objects/compressed-slots-inl.h | 97 +- deps/v8/src/objects/compressed-slots.h | 82 +- deps/v8/src/objects/contexts-inl.h | 22 +- deps/v8/src/objects/contexts.cc | 333 +- deps/v8/src/objects/contexts.h | 77 +- deps/v8/src/objects/contexts.tq | 270 +- deps/v8/src/objects/data-handler-inl.h | 14 +- deps/v8/src/objects/debug-objects-inl.h | 23 +- deps/v8/src/objects/debug-objects.cc | 75 +- deps/v8/src/objects/debug-objects.h | 29 +- deps/v8/src/objects/debug-objects.tq | 44 +- deps/v8/src/objects/deoptimization-data-inl.h | 35 +- deps/v8/src/objects/deoptimization-data.cc | 26 +- deps/v8/src/objects/deoptimization-data.h | 53 +- deps/v8/src/objects/dependent-code-inl.h | 9 +- deps/v8/src/objects/dependent-code.cc | 61 +- deps/v8/src/objects/dependent-code.h | 24 +- deps/v8/src/objects/descriptor-array-inl.h | 82 +- deps/v8/src/objects/descriptor-array.h | 17 +- deps/v8/src/objects/dictionary-inl.h | 90 +- deps/v8/src/objects/dictionary.h | 153 +- deps/v8/src/objects/elements-inl.h | 14 +- deps/v8/src/objects/elements-kind.cc | 9 +- deps/v8/src/objects/elements-kind.h | 82 +- deps/v8/src/objects/elements.cc | 739 +- deps/v8/src/objects/elements.h | 125 +- deps/v8/src/objects/embedder-data-array-inl.h | 3 + deps/v8/src/objects/embedder-data-array.cc | 9 +- deps/v8/src/objects/embedder-data-array.h | 4 +- deps/v8/src/objects/embedder-data-slot-inl.h | 26 +- deps/v8/src/objects/embedder-data-slot.h | 12 +- deps/v8/src/objects/feedback-cell-inl.h | 34 +- deps/v8/src/objects/feedback-cell.h | 8 +- deps/v8/src/objects/feedback-cell.tq | 2 +- deps/v8/src/objects/feedback-vector-inl.h | 147 +- deps/v8/src/objects/feedback-vector.cc | 192 +- deps/v8/src/objects/feedback-vector.h | 176 +- deps/v8/src/objects/feedback-vector.tq | 26 +- deps/v8/src/objects/field-index-inl.h | 13 +- deps/v8/src/objects/field-type.cc | 15 +- deps/v8/src/objects/field-type.h | 10 +- deps/v8/src/objects/fixed-array-inl.h | 556 +- deps/v8/src/objects/fixed-array.cc | 87 +- deps/v8/src/objects/fixed-array.h | 537 +- deps/v8/src/objects/fixed-array.tq | 52 +- deps/v8/src/objects/foreign-inl.h | 23 +- deps/v8/src/objects/foreign.h | 3 +- deps/v8/src/objects/free-space-inl.h | 14 +- deps/v8/src/objects/function-kind.h | 8 - deps/v8/src/objects/hash-table-inl.h | 119 +- deps/v8/src/objects/hash-table.h | 178 +- deps/v8/src/objects/heap-number-inl.h | 16 +- deps/v8/src/objects/heap-number.h | 4 +- deps/v8/src/objects/heap-object-inl.h | 5 +- deps/v8/src/objects/heap-object.h | 210 +- deps/v8/src/objects/hole-inl.h | 4 +- deps/v8/src/objects/hole.h | 1 - deps/v8/src/objects/instance-type-checker.h | 1 + deps/v8/src/objects/instance-type-inl.h | 93 +- deps/v8/src/objects/instance-type.h | 49 +- deps/v8/src/objects/instruction-stream-inl.h | 26 +- deps/v8/src/objects/instruction-stream.h | 1 - deps/v8/src/objects/intl-objects.cc | 321 +- deps/v8/src/objects/intl-objects.h | 124 +- deps/v8/src/objects/js-array-buffer-inl.h | 27 +- deps/v8/src/objects/js-array-buffer.cc | 147 +- deps/v8/src/objects/js-array-buffer.h | 120 +- deps/v8/src/objects/js-array-inl.h | 7 +- deps/v8/src/objects/js-array.h | 23 +- deps/v8/src/objects/js-array.tq | 12 +- .../objects/js-atomics-synchronization-inl.h | 27 +- .../src/objects/js-atomics-synchronization.cc | 147 +- .../src/objects/js-atomics-synchronization.h | 50 +- deps/v8/src/objects/js-break-iterator-inl.h | 8 +- deps/v8/src/objects/js-break-iterator.cc | 44 +- deps/v8/src/objects/js-break-iterator.h | 31 +- deps/v8/src/objects/js-collator-inl.h | 8 +- deps/v8/src/objects/js-collator.cc | 29 +- deps/v8/src/objects/js-collator.h | 14 +- deps/v8/src/objects/js-collection-inl.h | 4 +- .../src/objects/js-collection-iterator-inl.h | 2 + deps/v8/src/objects/js-collection.h | 8 +- deps/v8/src/objects/js-date-time-format-inl.h | 8 +- deps/v8/src/objects/js-date-time-format.cc | 368 +- deps/v8/src/objects/js-date-time-format.h | 68 +- deps/v8/src/objects/js-display-names-inl.h | 8 +- deps/v8/src/objects/js-display-names.cc | 69 +- deps/v8/src/objects/js-display-names.h | 28 +- deps/v8/src/objects/js-disposable-stack-inl.h | 32 +- deps/v8/src/objects/js-disposable-stack.cc | 293 +- deps/v8/src/objects/js-disposable-stack.h | 21 +- deps/v8/src/objects/js-disposable-stack.tq | 8 +- deps/v8/src/objects/js-duration-format-inl.h | 8 +- deps/v8/src/objects/js-duration-format.cc | 150 +- deps/v8/src/objects/js-duration-format.h | 24 +- deps/v8/src/objects/js-function-inl.h | 361 +- deps/v8/src/objects/js-function.cc | 412 +- deps/v8/src/objects/js-function.h | 159 +- deps/v8/src/objects/js-function.tq | 1 + deps/v8/src/objects/js-generator-inl.h | 2 + deps/v8/src/objects/js-iterator-helpers-inl.h | 2 + deps/v8/src/objects/js-list-format-inl.h | 8 +- deps/v8/src/objects/js-list-format.cc | 68 +- deps/v8/src/objects/js-list-format.h | 23 +- deps/v8/src/objects/js-locale-inl.h | 8 +- deps/v8/src/objects/js-locale.cc | 162 +- deps/v8/src/objects/js-locale.h | 77 +- deps/v8/src/objects/js-number-format-inl.h | 8 +- deps/v8/src/objects/js-number-format.cc | 291 +- deps/v8/src/objects/js-number-format.h | 45 +- deps/v8/src/objects/js-objects-inl.h | 161 +- deps/v8/src/objects/js-objects.cc | 931 +- deps/v8/src/objects/js-objects.h | 338 +- deps/v8/src/objects/js-objects.tq | 4 +- deps/v8/src/objects/js-plural-rules-inl.h | 8 +- deps/v8/src/objects/js-plural-rules.cc | 95 +- deps/v8/src/objects/js-plural-rules.h | 20 +- deps/v8/src/objects/js-promise-inl.h | 1 + deps/v8/src/objects/js-promise.h | 5 +- deps/v8/src/objects/js-proxy-inl.h | 4 +- deps/v8/src/objects/js-proxy.h | 55 +- deps/v8/src/objects/js-raw-json-inl.h | 2 + deps/v8/src/objects/js-raw-json.cc | 10 +- deps/v8/src/objects/js-raw-json.h | 2 +- deps/v8/src/objects/js-regexp-inl.h | 4 +- .../objects/js-regexp-string-iterator-inl.h | 1 + deps/v8/src/objects/js-regexp.cc | 67 +- deps/v8/src/objects/js-regexp.h | 29 +- .../src/objects/js-relative-time-format-inl.h | 8 +- .../v8/src/objects/js-relative-time-format.cc | 85 +- deps/v8/src/objects/js-relative-time-format.h | 20 +- deps/v8/src/objects/js-segment-iterator-inl.h | 3 + deps/v8/src/objects/js-segment-iterator.cc | 17 +- deps/v8/src/objects/js-segment-iterator.h | 5 +- deps/v8/src/objects/js-segmenter-inl.h | 3 + deps/v8/src/objects/js-segmenter.cc | 22 +- deps/v8/src/objects/js-segmenter.h | 9 +- deps/v8/src/objects/js-segments-inl.h | 3 + deps/v8/src/objects/js-segments.cc | 23 +- deps/v8/src/objects/js-segments.h | 9 +- deps/v8/src/objects/js-shadow-realm-inl.h | 4 +- deps/v8/src/objects/js-shared-array-inl.h | 4 +- deps/v8/src/objects/js-struct-inl.h | 4 +- deps/v8/src/objects/js-struct.cc | 70 +- deps/v8/src/objects/js-struct.h | 33 +- deps/v8/src/objects/js-temporal-objects-inl.h | 4 +- deps/v8/src/objects/js-temporal-objects.cc | 4317 +- deps/v8/src/objects/js-temporal-objects.h | 928 +- deps/v8/src/objects/js-weak-refs-inl.h | 9 +- deps/v8/src/objects/js-weak-refs.cc | 139 + deps/v8/src/objects/js-weak-refs.h | 21 +- deps/v8/src/objects/keys.cc | 189 +- deps/v8/src/objects/keys.h | 52 +- deps/v8/src/objects/literal-objects-inl.h | 22 +- deps/v8/src/objects/literal-objects.cc | 65 +- deps/v8/src/objects/literal-objects.h | 19 +- deps/v8/src/objects/literal-objects.tq | 6 +- deps/v8/src/objects/lookup-cache-inl.h | 2 + deps/v8/src/objects/lookup-inl.h | 164 +- deps/v8/src/objects/lookup.cc | 234 +- deps/v8/src/objects/lookup.h | 146 +- deps/v8/src/objects/managed-inl.h | 26 +- deps/v8/src/objects/managed.cc | 4 +- deps/v8/src/objects/managed.h | 7 +- deps/v8/src/objects/map-inl.h | 95 +- deps/v8/src/objects/map-updater.cc | 197 +- deps/v8/src/objects/map-updater.h | 45 +- deps/v8/src/objects/map.cc | 458 +- deps/v8/src/objects/map.h | 340 +- deps/v8/src/objects/map.tq | 8 +- deps/v8/src/objects/maybe-object-inl.h | 15 +- deps/v8/src/objects/maybe-object.h | 1 + deps/v8/src/objects/megadom-handler-inl.h | 5 +- deps/v8/src/objects/megadom-handler.h | 2 +- deps/v8/src/objects/microtask-inl.h | 1 + deps/v8/src/objects/module-inl.h | 11 +- deps/v8/src/objects/module.cc | 59 +- deps/v8/src/objects/module.h | 30 +- deps/v8/src/objects/name-inl.h | 14 +- deps/v8/src/objects/name.h | 24 +- deps/v8/src/objects/object-list-macros.h | 51 +- deps/v8/src/objects/object-macros-undef.h | 54 +- deps/v8/src/objects/object-macros.h | 294 +- .../objects/objects-body-descriptors-inl.h | 483 +- .../v8/src/objects/objects-body-descriptors.h | 6 +- deps/v8/src/objects/objects-definitions.h | 1 + deps/v8/src/objects/objects-inl.h | 516 +- deps/v8/src/objects/objects.cc | 1425 +- deps/v8/src/objects/objects.h | 301 +- deps/v8/src/objects/oddball-inl.h | 10 +- deps/v8/src/objects/oddball.h | 14 +- deps/v8/src/objects/off-heap-hash-table-inl.h | 4 +- deps/v8/src/objects/off-heap-hash-table.h | 2 + deps/v8/src/objects/option-utils.cc | 54 +- deps/v8/src/objects/option-utils.h | 35 +- deps/v8/src/objects/ordered-hash-table-inl.h | 44 +- deps/v8/src/objects/ordered-hash-table.cc | 254 +- deps/v8/src/objects/ordered-hash-table.h | 101 +- .../src/objects/primitive-heap-object-inl.h | 4 +- deps/v8/src/objects/promise-inl.h | 1 + deps/v8/src/objects/property-array-inl.h | 1 + deps/v8/src/objects/property-cell-inl.h | 18 +- deps/v8/src/objects/property-cell.h | 60 +- deps/v8/src/objects/property-cell.tq | 15 +- .../objects/property-descriptor-object-inl.h | 4 +- deps/v8/src/objects/property-descriptor.cc | 65 +- deps/v8/src/objects/property-descriptor.h | 30 +- deps/v8/src/objects/property.cc | 44 +- deps/v8/src/objects/property.h | 31 +- deps/v8/src/objects/prototype-info-inl.h | 1 + deps/v8/src/objects/prototype-inl.h | 23 +- deps/v8/src/objects/prototype.h | 15 +- deps/v8/src/objects/regexp-match-info-inl.h | 32 +- deps/v8/src/objects/regexp-match-info.cc | 15 +- deps/v8/src/objects/regexp-match-info.h | 36 +- deps/v8/src/objects/regexp-match-info.tq | 2 +- deps/v8/src/objects/scope-info-inl.h | 18 +- deps/v8/src/objects/scope-info.cc | 189 +- deps/v8/src/objects/scope-info.h | 46 +- deps/v8/src/objects/scope-info.tq | 9 +- deps/v8/src/objects/script-inl.h | 12 +- deps/v8/src/objects/script.h | 12 +- .../v8/src/objects/shared-function-info-inl.h | 62 +- deps/v8/src/objects/shared-function-info.cc | 46 +- deps/v8/src/objects/shared-function-info.h | 26 +- deps/v8/src/objects/shared-function-info.tq | 9 +- deps/v8/src/objects/simd.cc | 479 +- deps/v8/src/objects/simd.h | 7 + deps/v8/src/objects/slots-inl.h | 54 +- deps/v8/src/objects/slots.h | 89 +- deps/v8/src/objects/smi-inl.h | 1 + deps/v8/src/objects/smi.h | 17 +- deps/v8/src/objects/source-text-module-inl.h | 4 +- deps/v8/src/objects/source-text-module.cc | 165 +- deps/v8/src/objects/source-text-module.h | 47 +- .../src/objects/string-forwarding-table-inl.h | 12 +- .../v8/src/objects/string-forwarding-table.cc | 11 +- deps/v8/src/objects/string-inl.h | 388 +- deps/v8/src/objects/string-set-inl.h | 8 +- deps/v8/src/objects/string-set.h | 8 +- deps/v8/src/objects/string-table-inl.h | 3 +- deps/v8/src/objects/string-table.cc | 20 +- deps/v8/src/objects/string-table.h | 6 +- deps/v8/src/objects/string.cc | 837 +- deps/v8/src/objects/string.h | 406 +- deps/v8/src/objects/string.tq | 47 +- deps/v8/src/objects/struct-inl.h | 1 + deps/v8/src/objects/struct.h | 6 +- .../v8/src/objects/swiss-hash-table-helpers.h | 8 +- .../src/objects/swiss-name-dictionary-inl.h | 81 +- deps/v8/src/objects/swiss-name-dictionary.cc | 75 +- deps/v8/src/objects/swiss-name-dictionary.h | 51 +- deps/v8/src/objects/symbol-table.cc | 2 +- deps/v8/src/objects/synthetic-module-inl.h | 4 +- deps/v8/src/objects/synthetic-module.cc | 20 +- deps/v8/src/objects/synthetic-module.h | 10 +- deps/v8/src/objects/tagged-field-inl.h | 122 +- deps/v8/src/objects/tagged-field.h | 34 +- deps/v8/src/objects/tagged-impl-inl.h | 25 +- deps/v8/src/objects/tagged-impl.cc | 6 +- deps/v8/src/objects/tagged-impl.h | 8 +- deps/v8/src/objects/tagged-value-inl.h | 9 +- deps/v8/src/objects/tagged.h | 191 +- deps/v8/src/objects/template-objects-inl.h | 1 + deps/v8/src/objects/template-objects.cc | 21 +- deps/v8/src/objects/template-objects.h | 2 +- deps/v8/src/objects/templates-inl.h | 181 +- deps/v8/src/objects/templates.cc | 54 +- deps/v8/src/objects/templates.h | 79 +- deps/v8/src/objects/templates.tq | 19 +- .../src/objects/torque-defined-classes-inl.h | 5 +- deps/v8/src/objects/torque-defined-classes.h | 1 + deps/v8/src/objects/transitions-inl.h | 119 +- deps/v8/src/objects/transitions.cc | 84 +- deps/v8/src/objects/transitions.h | 26 +- deps/v8/src/objects/trusted-object-inl.h | 24 +- deps/v8/src/objects/trusted-object.h | 10 +- deps/v8/src/objects/turbofan-types-inl.h | 6 +- deps/v8/src/objects/turbofan-types.tq | 6 +- deps/v8/src/objects/turboshaft-types-inl.h | 5 +- deps/v8/src/objects/type-hints.cc | 2 + deps/v8/src/objects/type-hints.h | 3 + deps/v8/src/objects/union.h | 44 + deps/v8/src/objects/value-serializer.cc | 570 +- deps/v8/src/objects/value-serializer.h | 89 +- deps/v8/src/objects/visitors-inl.h | 37 +- deps/v8/src/objects/visitors.cc | 2 +- deps/v8/src/objects/visitors.h | 24 +- deps/v8/src/objects/waiter-queue-node.h | 1 - deps/v8/src/parsing/DIR_METADATA | 5 +- deps/v8/src/parsing/func-name-inferrer.h | 2 +- ...ort-assertions.cc => import-attributes.cc} | 2 +- ...mport-assertions.h => import-attributes.h} | 6 +- deps/v8/src/parsing/literal-buffer.cc | 8 +- deps/v8/src/parsing/literal-buffer.h | 2 +- deps/v8/src/parsing/parse-info.cc | 12 +- deps/v8/src/parsing/parse-info.h | 12 +- deps/v8/src/parsing/parser-base.h | 248 +- deps/v8/src/parsing/parser.cc | 270 +- deps/v8/src/parsing/parser.h | 36 +- deps/v8/src/parsing/parsing.cc | 21 +- deps/v8/src/parsing/parsing.h | 11 +- .../pending-compilation-error-handler.cc | 11 +- .../pending-compilation-error-handler.h | 5 +- deps/v8/src/parsing/preparser.h | 35 +- deps/v8/src/parsing/rewriter.cc | 9 +- deps/v8/src/parsing/rewriter.h | 6 +- .../src/parsing/scanner-character-streams.cc | 11 +- deps/v8/src/parsing/scanner-inl.h | 10 +- deps/v8/src/parsing/scanner.cc | 93 +- deps/v8/src/parsing/scanner.h | 13 +- deps/v8/src/profiler/allocation-tracker.cc | 2 +- deps/v8/src/profiler/circular-queue-inl.h | 1 + deps/v8/src/profiler/cpu-profiler-inl.h | 1 + deps/v8/src/profiler/cpu-profiler.cc | 57 +- deps/v8/src/profiler/cpu-profiler.h | 12 +- deps/v8/src/profiler/heap-profiler.cc | 19 +- deps/v8/src/profiler/heap-profiler.h | 7 +- .../profiler/heap-snapshot-generator-inl.h | 5 +- .../src/profiler/heap-snapshot-generator.cc | 624 +- .../v8/src/profiler/heap-snapshot-generator.h | 7 +- deps/v8/src/profiler/output-stream-writer.h | 67 +- deps/v8/src/profiler/profile-generator-inl.h | 1 + deps/v8/src/profiler/profile-generator.cc | 30 +- deps/v8/src/profiler/profile-generator.h | 7 +- deps/v8/src/profiler/profiler-listener.cc | 44 +- deps/v8/src/profiler/profiler-listener.h | 42 +- .../v8/src/profiler/sampling-heap-profiler.cc | 11 +- deps/v8/src/profiler/strings-storage.cc | 42 +- deps/v8/src/profiler/strings-storage.h | 4 +- deps/v8/src/profiler/tick-sample.cc | 21 +- deps/v8/src/profiler/tick-sample.h | 5 +- deps/v8/src/regexp/DIR_METADATA | 3 + .../regexp/arm/regexp-macro-assembler-arm.cc | 38 +- .../regexp/arm/regexp-macro-assembler-arm.h | 6 +- .../arm64/regexp-macro-assembler-arm64.cc | 51 +- .../arm64/regexp-macro-assembler-arm64.h | 6 +- .../experimental/experimental-bytecode.cc | 33 +- .../experimental/experimental-bytecode.h | 100 +- .../experimental/experimental-compiler.cc | 320 +- .../experimental/experimental-interpreter.cc | 787 +- .../src/regexp/experimental/experimental.cc | 94 +- .../v8/src/regexp/experimental/experimental.h | 22 +- .../ia32/regexp-macro-assembler-ia32.cc | 32 +- .../regexp/ia32/regexp-macro-assembler-ia32.h | 6 +- .../loong64/regexp-macro-assembler-loong64.cc | 41 +- .../loong64/regexp-macro-assembler-loong64.h | 6 +- .../mips64/regexp-macro-assembler-mips64.cc | 41 +- .../mips64/regexp-macro-assembler-mips64.h | 7 +- .../regexp/ppc/regexp-macro-assembler-ppc.cc | 36 +- .../regexp/ppc/regexp-macro-assembler-ppc.h | 10 +- deps/v8/src/regexp/regexp-ast.cc | 4 +- .../regexp/regexp-bytecode-generator-inl.h | 1 + .../src/regexp/regexp-bytecode-generator.cc | 7 +- .../v8/src/regexp/regexp-bytecode-generator.h | 7 +- .../v8/src/regexp/regexp-bytecode-peephole.cc | 5 +- deps/v8/src/regexp/regexp-bytecode-peephole.h | 2 +- deps/v8/src/regexp/regexp-compiler-tonode.cc | 194 +- deps/v8/src/regexp/regexp-compiler.cc | 45 +- deps/v8/src/regexp/regexp-compiler.h | 10 +- deps/v8/src/regexp/regexp-flags.h | 7 + deps/v8/src/regexp/regexp-interpreter.cc | 95 +- deps/v8/src/regexp/regexp-interpreter.h | 45 +- .../src/regexp/regexp-macro-assembler-arch.h | 2 +- .../regexp/regexp-macro-assembler-tracer.cc | 11 +- .../regexp/regexp-macro-assembler-tracer.h | 10 +- deps/v8/src/regexp/regexp-macro-assembler.cc | 2 - deps/v8/src/regexp/regexp-macro-assembler.h | 8 +- deps/v8/src/regexp/regexp-nodes.h | 2 +- deps/v8/src/regexp/regexp-parser.cc | 22 +- deps/v8/src/regexp/regexp-result-vector.cc | 68 + deps/v8/src/regexp/regexp-result-vector.h | 42 + deps/v8/src/regexp/regexp-stack.cc | 6 +- deps/v8/src/regexp/regexp-stack.h | 32 +- deps/v8/src/regexp/regexp-utils.cc | 54 +- deps/v8/src/regexp/regexp-utils.h | 24 +- deps/v8/src/regexp/regexp.cc | 644 +- deps/v8/src/regexp/regexp.h | 137 +- .../riscv/regexp-macro-assembler-riscv.cc | 39 +- .../riscv/regexp-macro-assembler-riscv.h | 6 +- .../s390/regexp-macro-assembler-s390.cc | 45 +- .../regexp/s390/regexp-macro-assembler-s390.h | 6 +- .../regexp/x64/regexp-macro-assembler-x64.cc | 71 +- .../regexp/x64/regexp-macro-assembler-x64.h | 6 +- deps/v8/src/roots/DIR_METADATA | 3 + deps/v8/src/roots/roots-inl.h | 64 +- deps/v8/src/roots/roots.cc | 36 +- deps/v8/src/roots/roots.h | 107 +- deps/v8/src/roots/static-roots.h | 2072 +- deps/v8/src/runtime/DIR_METADATA | 5 +- deps/v8/src/runtime/runtime-array.cc | 86 +- deps/v8/src/runtime/runtime-atomics.cc | 19 +- deps/v8/src/runtime/runtime-bigint.cc | 16 +- deps/v8/src/runtime/runtime-classes.cc | 198 +- deps/v8/src/runtime/runtime-collections.cc | 16 +- deps/v8/src/runtime/runtime-compiler.cc | 265 +- deps/v8/src/runtime/runtime-debug.cc | 114 +- deps/v8/src/runtime/runtime-forin.cc | 32 +- deps/v8/src/runtime/runtime-function.cc | 24 +- deps/v8/src/runtime/runtime-generator.cc | 17 +- deps/v8/src/runtime/runtime-internal.cc | 63 +- deps/v8/src/runtime/runtime-intl.cc | 20 +- deps/v8/src/runtime/runtime-literals.cc | 71 +- deps/v8/src/runtime/runtime-module.cc | 22 +- deps/v8/src/runtime/runtime-numbers.cc | 13 +- deps/v8/src/runtime/runtime-object.cc | 440 +- deps/v8/src/runtime/runtime-operators.cc | 24 +- deps/v8/src/runtime/runtime-promise.cc | 54 +- deps/v8/src/runtime/runtime-proxy.cc | 24 +- deps/v8/src/runtime/runtime-regexp.cc | 756 +- deps/v8/src/runtime/runtime-scopes.cc | 291 +- deps/v8/src/runtime/runtime-shadow-realm.cc | 14 +- deps/v8/src/runtime/runtime-strings.cc | 140 +- deps/v8/src/runtime/runtime-symbol.cc | 3 +- deps/v8/src/runtime/runtime-temporal.cc | 2 +- deps/v8/src/runtime/runtime-test-wasm.cc | 398 +- deps/v8/src/runtime/runtime-test.cc | 353 +- deps/v8/src/runtime/runtime-trace.cc | 12 +- deps/v8/src/runtime/runtime-typedarray.cc | 110 +- deps/v8/src/runtime/runtime-utils.cc | 10 +- deps/v8/src/runtime/runtime-utils.h | 8 +- deps/v8/src/runtime/runtime-wasm.cc | 558 +- deps/v8/src/runtime/runtime-weak-refs.cc | 19 +- deps/v8/src/runtime/runtime.cc | 13 +- deps/v8/src/runtime/runtime.h | 254 +- deps/v8/src/sandbox/OWNERS | 1 + deps/v8/src/sandbox/README.md | 28 +- deps/v8/src/sandbox/bounded-size-inl.h | 3 + deps/v8/src/sandbox/bounded-size.h | 4 +- deps/v8/src/sandbox/check.h | 11 +- deps/v8/src/sandbox/code-pointer-inl.h | 10 +- deps/v8/src/sandbox/code-pointer-table-inl.h | 4 +- deps/v8/src/sandbox/code-pointer-table.cc | 3 - deps/v8/src/sandbox/code-pointer-table.h | 8 - .../compactible-external-entity-table-inl.h | 12 +- .../compactible-external-entity-table.h | 1 - deps/v8/src/sandbox/cppheap-pointer-inl.h | 10 +- .../src/sandbox/cppheap-pointer-table-inl.h | 22 +- deps/v8/src/sandbox/cppheap-pointer-table.h | 23 +- deps/v8/src/sandbox/cppheap-pointer.h | 33 + deps/v8/src/sandbox/external-buffer-inl.h | 75 - .../src/sandbox/external-buffer-table-inl.h | 179 - deps/v8/src/sandbox/external-buffer-table.cc | 202 - deps/v8/src/sandbox/external-buffer-table.h | 226 - deps/v8/src/sandbox/external-buffer-tag.h | 88 - deps/v8/src/sandbox/external-buffer.h | 48 - .../src/sandbox/external-entity-table-inl.h | 51 +- deps/v8/src/sandbox/external-entity-table.h | 21 +- deps/v8/src/sandbox/external-pointer-inl.h | 50 +- .../src/sandbox/external-pointer-table-inl.h | 67 +- deps/v8/src/sandbox/external-pointer-table.cc | 11 +- deps/v8/src/sandbox/external-pointer-table.h | 125 +- deps/v8/src/sandbox/external-pointer.h | 22 +- deps/v8/src/sandbox/indirect-pointer-inl.h | 30 +- deps/v8/src/sandbox/indirect-pointer-tag.h | 113 +- deps/v8/src/sandbox/indirect-pointer.h | 8 +- deps/v8/src/sandbox/isolate-inl.h | 142 +- deps/v8/src/sandbox/isolate.h | 86 +- deps/v8/src/sandbox/js-dispatch-table-inl.h | 255 +- deps/v8/src/sandbox/js-dispatch-table.cc | 63 +- deps/v8/src/sandbox/js-dispatch-table.h | 175 +- deps/v8/src/sandbox/sandbox.cc | 99 +- deps/v8/src/sandbox/sandbox.h | 78 +- deps/v8/src/sandbox/sandboxed-pointer-inl.h | 6 +- deps/v8/src/sandbox/tagged-payload.h | 26 +- deps/v8/src/sandbox/testing.cc | 180 +- deps/v8/src/sandbox/testing.h | 37 +- deps/v8/src/sandbox/trusted-pointer-scope.cc | 72 + deps/v8/src/sandbox/trusted-pointer-scope.h | 79 + .../src/sandbox/trusted-pointer-table-inl.h | 47 +- deps/v8/src/sandbox/trusted-pointer-table.h | 22 +- deps/v8/src/snapshot/DIR_METADATA | 5 +- deps/v8/src/snapshot/code-serializer.cc | 177 +- deps/v8/src/snapshot/code-serializer.h | 17 +- deps/v8/src/snapshot/context-deserializer.cc | 25 +- deps/v8/src/snapshot/context-deserializer.h | 10 +- deps/v8/src/snapshot/context-serializer.cc | 12 +- deps/v8/src/snapshot/context-serializer.h | 2 +- deps/v8/src/snapshot/deserializer.cc | 162 +- deps/v8/src/snapshot/deserializer.h | 80 +- .../src/snapshot/embedded/embedded-data-inl.h | 1 + .../v8/src/snapshot/embedded/embedded-data.cc | 6 +- .../embedded/embedded-file-writer-interface.h | 3 - .../snapshot/embedded/embedded-file-writer.cc | 13 - .../snapshot/embedded/embedded-file-writer.h | 3 - .../platform-embedded-file-writer-generic.cc | 6 +- .../platform-embedded-file-writer-mac.cc | 4 - .../platform-embedded-file-writer-win.cc | 4 - deps/v8/src/snapshot/object-deserializer.cc | 36 +- deps/v8/src/snapshot/object-deserializer.h | 15 +- .../v8/src/snapshot/read-only-deserializer.cc | 17 +- deps/v8/src/snapshot/read-only-serializer.cc | 20 +- .../v8/src/snapshot/serializer-deserializer.h | 8 +- deps/v8/src/snapshot/serializer-inl.h | 4 +- deps/v8/src/snapshot/serializer.cc | 102 +- deps/v8/src/snapshot/serializer.h | 23 +- .../src/snapshot/shared-heap-deserializer.cc | 9 +- deps/v8/src/snapshot/snapshot.cc | 48 +- deps/v8/src/snapshot/snapshot.h | 10 +- deps/v8/src/strings/DEPS | 5 + deps/v8/src/strings/DIR_METADATA | 5 +- deps/v8/src/strings/char-predicates-inl.h | 6 +- deps/v8/src/strings/string-builder-inl.h | 72 +- deps/v8/src/strings/string-builder.cc | 5 +- deps/v8/src/strings/string-builder.h | 55 +- deps/v8/src/strings/string-case.cc | 127 +- deps/v8/src/strings/string-case.h | 13 +- deps/v8/src/strings/string-hasher-inl.h | 324 +- deps/v8/src/strings/string-hasher.cc | 78 + deps/v8/src/strings/string-hasher.h | 25 +- deps/v8/src/strings/string-stream.cc | 22 +- deps/v8/src/strings/string-stream.h | 17 +- deps/v8/src/strings/unicode-decoder.cc | 2 +- deps/v8/src/strings/unicode-decoder.h | 10 +- deps/v8/src/strings/unicode-inl.h | 88 +- deps/v8/src/strings/unicode.cc | 2 +- deps/v8/src/strings/unicode.h | 24 +- deps/v8/src/strings/uri.cc | 37 +- deps/v8/src/strings/uri.h | 32 +- deps/v8/src/temporal/temporal-parser.cc | 34 +- deps/v8/src/temporal/temporal-parser.h | 4 +- deps/v8/src/third_party/valgrind/OWNERS | 1 - deps/v8/src/third_party/vtune/DEPS | 3 - deps/v8/src/third_party/vtune/OWNERS | 1 - deps/v8/src/torque/ast.h | 19 +- deps/v8/src/torque/cc-generator.cc | 26 +- .../torque/class-debug-reader-generator.cc | 3 +- deps/v8/src/torque/constants.h | 10 +- deps/v8/src/torque/csa-generator.cc | 28 +- deps/v8/src/torque/declarable.cc | 2 +- deps/v8/src/torque/declarable.h | 13 +- deps/v8/src/torque/declaration-visitor.cc | 74 +- deps/v8/src/torque/declaration-visitor.h | 1 + deps/v8/src/torque/declarations.cc | 24 +- deps/v8/src/torque/declarations.h | 5 +- deps/v8/src/torque/implementation-visitor.cc | 179 +- deps/v8/src/torque/implementation-visitor.h | 11 +- deps/v8/src/torque/instructions.h | 5 +- deps/v8/src/torque/runtime-macro-shims.h | 6 +- deps/v8/src/torque/torque-compiler.cc | 2 +- deps/v8/src/torque/torque-compiler.h | 2 +- deps/v8/src/torque/torque-parser.cc | 332 +- deps/v8/src/torque/type-oracle.h | 10 +- deps/v8/src/torque/type-visitor.cc | 21 +- deps/v8/src/torque/types.cc | 58 +- deps/v8/src/torque/types.h | 5 +- deps/v8/src/torque/utils.cc | 33 +- deps/v8/src/torque/utils.h | 2 +- deps/v8/src/tracing/code-data-source.cc | 25 +- deps/v8/src/tracing/code-data-source.h | 18 +- deps/v8/src/tracing/code-trace-context.h | 17 +- deps/v8/src/tracing/perfetto-logger.cc | 67 +- deps/v8/src/tracing/perfetto-logger.h | 42 +- deps/v8/src/tracing/perfetto-utils.h | 2 +- deps/v8/src/tracing/trace-categories.cc | 12 + deps/v8/src/tracing/trace-event.h | 13 +- deps/v8/src/tracing/trace-id.h | 19 + deps/v8/src/tracing/traced-value.cc | 10 +- deps/v8/src/tracing/traced-value.h | 1 + deps/v8/src/trap-handler/DIR_METADATA | 5 +- .../src/trap-handler/handler-inside-posix.cc | 2 +- .../v8/src/trap-handler/handler-inside-win.cc | 9 +- deps/v8/src/trap-handler/handler-inside.cc | 19 +- deps/v8/src/trap-handler/handler-outside.cc | 63 +- deps/v8/src/trap-handler/handler-shared.cc | 14 +- .../src/trap-handler/trap-handler-internal.h | 21 +- deps/v8/src/trap-handler/trap-handler.h | 61 +- deps/v8/src/utils/DEPS | 5 + deps/v8/src/utils/address-map.cc | 4 - deps/v8/src/utils/address-map.h | 1 - deps/v8/src/utils/allocation.cc | 17 +- deps/v8/src/utils/allocation.h | 13 +- deps/v8/src/utils/boxed-float.h | 2 +- deps/v8/src/utils/identity-map.cc | 2 +- deps/v8/src/utils/identity-map.h | 2 +- deps/v8/src/utils/locked-queue-inl.h | 4 +- deps/v8/src/utils/locked-queue.h | 1 + deps/v8/src/utils/ostreams.h | 5 +- deps/v8/src/utils/scoped-list.h | 2 +- deps/v8/src/utils/utils-inl.h | 14 +- deps/v8/src/utils/utils.cc | 2 +- deps/v8/src/utils/utils.h | 34 +- deps/v8/src/utils/version.h | 2 +- deps/v8/src/wasm/DEPS | 5 + deps/v8/src/wasm/DIR_METADATA | 5 +- .../baseline/arm/liftoff-assembler-arm-inl.h | 116 +- .../arm64/liftoff-assembler-arm64-inl.h | 53 +- .../ia32/liftoff-assembler-ia32-inl.h | 199 +- .../src/wasm/baseline/liftoff-assembler-inl.h | 11 +- .../v8/src/wasm/baseline/liftoff-assembler.cc | 17 +- deps/v8/src/wasm/baseline/liftoff-assembler.h | 38 +- deps/v8/src/wasm/baseline/liftoff-compiler.cc | 1015 +- deps/v8/src/wasm/baseline/liftoff-compiler.h | 18 +- deps/v8/src/wasm/baseline/liftoff-register.h | 31 +- .../loong64/liftoff-assembler-loong64-inl.h | 225 +- .../mips64/liftoff-assembler-mips64-inl.h | 146 +- deps/v8/src/wasm/baseline/parallel-move-inl.h | 4 +- deps/v8/src/wasm/baseline/parallel-move.h | 20 +- .../baseline/ppc/liftoff-assembler-ppc-inl.h | 196 +- .../riscv/liftoff-assembler-riscv-inl.h | 174 +- .../riscv/liftoff-assembler-riscv32-inl.h | 156 +- .../riscv/liftoff-assembler-riscv64-inl.h | 155 +- .../s390/liftoff-assembler-s390-inl.h | 186 +- .../baseline/x64/liftoff-assembler-x64-inl.h | 209 +- deps/v8/src/wasm/branch-hint-map.h | 20 +- deps/v8/src/wasm/c-api.cc | 1126 +- deps/v8/src/wasm/c-api.h | 16 +- deps/v8/src/wasm/canonical-types.cc | 521 +- deps/v8/src/wasm/canonical-types.h | 547 +- deps/v8/src/wasm/code-space-access.h | 6 +- .../v8/src/wasm/compilation-environment-inl.h | 13 +- deps/v8/src/wasm/compilation-environment.h | 58 +- .../src/wasm/constant-expression-interface.cc | 231 +- .../src/wasm/constant-expression-interface.h | 22 +- deps/v8/src/wasm/constant-expression.cc | 46 +- deps/v8/src/wasm/constant-expression.h | 44 +- deps/v8/src/wasm/decoder.h | 9 +- deps/v8/src/wasm/function-body-decoder-impl.h | 788 +- deps/v8/src/wasm/function-body-decoder.h | 9 +- deps/v8/src/wasm/function-compiler.cc | 147 +- deps/v8/src/wasm/function-compiler.h | 36 +- .../wasm/fuzzing/random-module-generation.cc | 1415 +- .../wasm/fuzzing/random-module-generation.h | 59 +- deps/v8/src/wasm/graph-builder-interface.cc | 2846 - deps/v8/src/wasm/graph-builder-interface.h | 73 - deps/v8/src/wasm/inlining-tree.h | 113 +- .../arm64/interpreter-builtins-arm64.cc | 97 +- .../wasm/interpreter/instruction-handlers.h | 323 +- .../wasm/interpreter/wasm-interpreter-inl.h | 132 +- .../wasm-interpreter-objects-inl.h | 8 +- .../interpreter/wasm-interpreter-objects.cc | 24 +- .../interpreter/wasm-interpreter-objects.h | 19 +- .../wasm-interpreter-runtime-inl.h | 78 +- .../interpreter/wasm-interpreter-runtime.cc | 781 +- .../interpreter/wasm-interpreter-runtime.h | 125 +- .../wasm/interpreter/wasm-interpreter-simd.cc | 4 +- .../src/wasm/interpreter/wasm-interpreter.cc | 10146 ++- .../src/wasm/interpreter/wasm-interpreter.h | 339 +- .../x64/interpreter-builtins-x64.cc | 2306 +- deps/v8/src/wasm/jump-table-assembler.cc | 811 +- deps/v8/src/wasm/jump-table-assembler.h | 112 +- deps/v8/src/wasm/leb-helper.h | 6 +- deps/v8/src/wasm/local-decl-encoder.cc | 22 +- deps/v8/src/wasm/local-decl-encoder.h | 6 +- deps/v8/src/wasm/memory-tracing.h | 6 +- deps/v8/src/wasm/module-compiler.cc | 1347 +- deps/v8/src/wasm/module-compiler.h | 49 +- deps/v8/src/wasm/module-decoder-impl.h | 626 +- deps/v8/src/wasm/module-decoder.cc | 226 +- deps/v8/src/wasm/module-decoder.h | 36 +- deps/v8/src/wasm/module-instantiate.cc | 1379 +- deps/v8/src/wasm/module-instantiate.h | 76 +- deps/v8/src/wasm/names-provider.cc | 139 +- deps/v8/src/wasm/names-provider.h | 41 +- deps/v8/src/wasm/object-access.h | 12 +- deps/v8/src/wasm/pgo.cc | 28 +- deps/v8/src/wasm/pgo.h | 6 +- deps/v8/src/wasm/serialized-signature-inl.h | 108 - deps/v8/src/wasm/signature-hashing.h | 21 +- deps/v8/src/wasm/simd-shuffle.cc | 191 +- deps/v8/src/wasm/simd-shuffle.h | 94 +- deps/v8/src/wasm/stacks.cc | 57 +- deps/v8/src/wasm/stacks.h | 80 +- deps/v8/src/wasm/std-object-sizes.h | 16 +- deps/v8/src/wasm/streaming-decoder.cc | 4 +- deps/v8/src/wasm/streaming-decoder.h | 8 +- deps/v8/src/wasm/string-builder-multiline.h | 6 +- deps/v8/src/wasm/string-builder.h | 11 +- deps/v8/src/wasm/struct-types.h | 238 +- deps/v8/src/wasm/sync-streaming-decoder.cc | 33 +- .../v8/src/wasm/turboshaft-graph-interface.cc | 1216 +- deps/v8/src/wasm/turboshaft-graph-interface.h | 23 +- deps/v8/src/wasm/value-type.cc | 183 +- deps/v8/src/wasm/value-type.h | 1851 +- deps/v8/src/wasm/wasm-arguments.h | 12 +- deps/v8/src/wasm/wasm-builtin-list.h | 42 +- deps/v8/src/wasm/wasm-code-manager.cc | 673 +- deps/v8/src/wasm/wasm-code-manager.h | 170 +- .../v8/src/wasm/wasm-code-pointer-table-inl.h | 76 +- deps/v8/src/wasm/wasm-code-pointer-table.cc | 33 +- deps/v8/src/wasm/wasm-code-pointer-table.h | 58 +- deps/v8/src/wasm/wasm-constants.h | 19 +- deps/v8/src/wasm/wasm-debug.cc | 68 +- deps/v8/src/wasm/wasm-debug.h | 18 +- deps/v8/src/wasm/wasm-deopt-data.h | 3 + deps/v8/src/wasm/wasm-disassembler-impl.h | 17 +- deps/v8/src/wasm/wasm-disassembler.cc | 95 +- deps/v8/src/wasm/wasm-disassembler.h | 6 +- deps/v8/src/wasm/wasm-engine.cc | 519 +- deps/v8/src/wasm/wasm-engine.h | 145 +- deps/v8/src/wasm/wasm-external-refs.cc | 111 +- deps/v8/src/wasm/wasm-external-refs.h | 8 +- deps/v8/src/wasm/wasm-feature-flags.h | 79 +- deps/v8/src/wasm/wasm-features.cc | 8 +- deps/v8/src/wasm/wasm-features.h | 21 +- deps/v8/src/wasm/wasm-import-wrapper-cache.cc | 72 +- deps/v8/src/wasm/wasm-import-wrapper-cache.h | 40 +- deps/v8/src/wasm/wasm-init-expr.h | 48 +- deps/v8/src/wasm/wasm-js.cc | 2531 +- deps/v8/src/wasm/wasm-js.h | 38 +- deps/v8/src/wasm/wasm-limits.h | 23 +- deps/v8/src/wasm/wasm-linkage.h | 17 +- deps/v8/src/wasm/wasm-module-builder.cc | 156 +- deps/v8/src/wasm/wasm-module-builder.h | 111 +- deps/v8/src/wasm/wasm-module-sourcemap.cc | 16 +- deps/v8/src/wasm/wasm-module-sourcemap.h | 6 +- deps/v8/src/wasm/wasm-module.cc | 256 +- deps/v8/src/wasm/wasm-module.h | 347 +- deps/v8/src/wasm/wasm-objects-inl.h | 259 +- deps/v8/src/wasm/wasm-objects.cc | 2681 +- deps/v8/src/wasm/wasm-objects.h | 636 +- deps/v8/src/wasm/wasm-objects.tq | 123 +- deps/v8/src/wasm/wasm-opcodes-inl.h | 33 +- deps/v8/src/wasm/wasm-opcodes.cc | 19 +- deps/v8/src/wasm/wasm-opcodes.h | 80 +- deps/v8/src/wasm/wasm-result.cc | 4 +- deps/v8/src/wasm/wasm-result.h | 21 +- deps/v8/src/wasm/wasm-serialization.cc | 179 +- deps/v8/src/wasm/wasm-serialization.h | 8 +- deps/v8/src/wasm/wasm-subtyping.cc | 1078 +- deps/v8/src/wasm/wasm-subtyping.h | 47 +- deps/v8/src/wasm/wasm-tier.h | 6 +- deps/v8/src/wasm/wasm-value.h | 36 +- deps/v8/src/wasm/well-known-imports.cc | 67 +- deps/v8/src/wasm/well-known-imports.h | 37 +- deps/v8/src/wasm/wrappers.cc | 428 +- deps/v8/src/zone/zone-chunk-list.h | 6 +- deps/v8/src/zone/zone-containers.h | 18 +- deps/v8/src/zone/zone-list-inl.h | 4 +- deps/v8/src/zone/zone.cc | 37 +- deps/v8/src/zone/zone.h | 42 +- deps/v8/test/benchmarks/benchmarks.status | 1 + deps/v8/test/benchmarks/cpp/BUILD.gn | 21 + .../v8/test/benchmarks/cpp/benchmark-utils.cc | 1 + deps/v8/test/benchmarks/cpp/bindings.cc | 4 +- deps/v8/test/benchmarks/cpp/fast-api.cc | 226 + deps/v8/test/bigint/bigint-shell.cc | 15 +- deps/v8/test/cctest/BUILD.gn | 11 +- deps/v8/test/cctest/cctest-utils.h | 3 - deps/v8/test/cctest/cctest.cc | 10 +- deps/v8/test/cctest/cctest.h | 10 +- deps/v8/test/cctest/cctest.status | 55 +- deps/v8/test/cctest/compiler/codegen-tester.h | 8 +- .../test/cctest/compiler/function-tester.cc | 25 +- .../v8/test/cctest/compiler/function-tester.h | 25 +- .../test/cctest/compiler/graph-and-builders.h | 6 +- .../cctest/compiler/js-heap-broker-base.h | 45 +- .../test-atomic-load-store-codegen.cc | 8 +- .../cctest/compiler/test-code-assembler.cc | 14 +- .../cctest/compiler/test-code-generator.cc | 75 +- .../test-concurrent-shared-function-info.cc | 7 +- .../cctest/compiler/test-graph-visualizer.cc | 14 +- .../compiler/test-instruction-scheduler.cc | 6 +- .../test/cctest/compiler/test-instruction.cc | 4 +- .../cctest/compiler/test-js-constant-cache.cc | 4 +- .../test-js-context-specialization.cc | 8 +- .../cctest/compiler/test-js-typed-lowering.cc | 4 +- .../cctest/compiler/test-jump-threading.cc | 73 +- deps/v8/test/cctest/compiler/test-linkage.cc | 10 +- .../cctest/compiler/test-loop-analysis.cc | 6 +- .../compiler/test-machine-operator-reducer.cc | 4 +- .../cctest/compiler/test-multiple-return.cc | 64 +- deps/v8/test/cctest/compiler/test-node.cc | 38 +- .../compiler/test-representation-change.cc | 2 +- .../test/cctest/compiler/test-run-machops.cc | 8 +- .../cctest/compiler/test-run-native-calls.cc | 45 +- .../compiler/turboshaft-codegen-tester.h | 14 +- .../turboshaft-test-compare-combine.cc | 105 +- deps/v8/test/cctest/feedback-vector-helper.h | 2 +- deps/v8/test/cctest/heap/heap-tester.h | 2 +- deps/v8/test/cctest/heap/heap-utils.cc | 81 +- deps/v8/test/cctest/heap/heap-utils.h | 20 +- deps/v8/test/cctest/heap/test-alloc.cc | 25 +- .../cctest/heap/test-array-buffer-tracker.cc | 46 +- deps/v8/test/cctest/heap/test-compaction.cc | 51 +- .../cctest/heap/test-concurrent-allocation.cc | 40 +- .../cctest/heap/test-concurrent-marking.cc | 4 +- .../heap/test-external-string-tracker.cc | 7 +- deps/v8/test/cctest/heap/test-heap.cc | 698 +- .../cctest/heap/test-incremental-marking.cc | 3 +- deps/v8/test/cctest/heap/test-mark-compact.cc | 44 +- .../cctest/heap/test-memory-measurement.cc | 16 +- deps/v8/test/cctest/heap/test-pool.cc | 6 +- deps/v8/test/cctest/heap/test-spaces.cc | 147 +- .../test/cctest/heap/test-weak-references.cc | 113 +- .../v8/test/cctest/heap/test-write-barrier.cc | 6 +- deps/v8/test/cctest/profiler-extension.h | 4 +- .../v8/test/cctest/test-accessor-assembler.cc | 49 +- deps/v8/test/cctest/test-accessors.cc | 5 +- deps/v8/test/cctest/test-allocation.cc | 22 +- deps/v8/test/cctest/test-api-array-buffer.cc | 546 +- deps/v8/test/cctest/test-api-interceptors.cc | 6 +- deps/v8/test/cctest/test-api-stack-traces.cc | 48 +- deps/v8/test/cctest/test-api-typed-array.cc | 4 +- deps/v8/test/cctest/test-api.cc | 1861 +- deps/v8/test/cctest/test-assembler-arm.cc | 2 +- deps/v8/test/cctest/test-assembler-riscv32.cc | 6 +- deps/v8/test/cctest/test-assembler-riscv64.cc | 22 +- .../test/cctest/test-code-stub-assembler.cc | 164 +- deps/v8/test/cctest/test-cpu-profiler.cc | 43 +- deps/v8/test/cctest/test-debug-helper.cc | 20 +- deps/v8/test/cctest/test-debug.cc | 108 +- deps/v8/test/cctest/test-descriptor-array.cc | 42 +- .../v8/test/cctest/test-disasm-regex-helper.h | 1 + .../test/cctest/test-field-type-tracking.cc | 534 +- deps/v8/test/cctest/test-heap-profiler.cc | 193 +- deps/v8/test/cctest/test-helper-riscv32.h | 6 +- deps/v8/test/cctest/test-helper-riscv64.h | 6 +- deps/v8/test/cctest/test-icache.cc | 2 +- .../cctest/test-inobject-slack-tracking.cc | 17 +- deps/v8/test/cctest/test-js-to-wasm.cc | 73 +- deps/v8/test/cctest/test-js-weak-refs.cc | 195 +- deps/v8/test/cctest/test-lockers.cc | 16 +- deps/v8/test/cctest/test-log-stack-tracer.cc | 2 +- .../cctest/test-macro-assembler-riscv32.cc | 8 +- .../cctest/test-macro-assembler-riscv64.cc | 8 +- deps/v8/test/cctest/test-mementos.cc | 3 +- deps/v8/test/cctest/test-orderedhashtable.cc | 11 +- deps/v8/test/cctest/test-profile-generator.cc | 11 +- deps/v8/test/cctest/test-ptr-compr-cage.cc | 33 +- deps/v8/test/cctest/test-regexp.cc | 8 +- deps/v8/test/cctest/test-serialize.cc | 310 +- deps/v8/test/cctest/test-shared-strings.cc | 396 +- deps/v8/test/cctest/test-strings.cc | 151 +- .../cctest/test-swiss-name-dictionary-csa.cc | 55 +- .../test-swiss-name-dictionary-infra.cc | 10 +- .../cctest/test-swiss-name-dictionary-infra.h | 42 +- .../test-swiss-name-dictionary-shared-tests.h | 41 +- .../test/cctest/test-swiss-name-dictionary.cc | 12 +- deps/v8/test/cctest/test-transitions.cc | 22 +- deps/v8/test/cctest/test-utils-arm64.cc | 4 +- deps/v8/test/cctest/torque/test-torque.cc | 37 +- deps/v8/test/cctest/wasm/DEPS | 5 + deps/v8/test/cctest/wasm/DIR_METADATA | 5 +- .../v8/test/cctest/wasm/test-backing-store.cc | 14 +- deps/v8/test/cctest/wasm/test-c-wasm-entry.cc | 14 +- .../cctest/wasm/test-compilation-cache.cc | 37 +- deps/v8/test/cctest/wasm/test-gc.cc | 611 +- deps/v8/test/cctest/wasm/test-grow-memory.cc | 28 +- .../cctest/wasm/test-jump-table-assembler.cc | 56 +- .../cctest/wasm/test-liftoff-for-fuzzing.cc | 49 +- .../cctest/wasm/test-liftoff-inspection.cc | 6 +- deps/v8/test/cctest/wasm/test-run-wasm-64.cc | 3 +- .../test/cctest/wasm/test-run-wasm-asmjs.cc | 29 +- .../cctest/wasm/test-run-wasm-bulk-memory.cc | 12 +- .../cctest/wasm/test-run-wasm-exceptions.cc | 12 +- deps/v8/test/cctest/wasm/test-run-wasm-f16.cc | 15 - deps/v8/test/cctest/wasm/test-run-wasm-js.cc | 62 +- .../cctest/wasm/test-run-wasm-memory64.cc | 13 +- .../test/cctest/wasm/test-run-wasm-module.cc | 71 +- .../cctest/wasm/test-run-wasm-relaxed-simd.cc | 59 +- .../cctest/wasm/test-run-wasm-simd-liftoff.cc | 2 +- .../v8/test/cctest/wasm/test-run-wasm-simd.cc | 1232 +- .../cctest/wasm/test-run-wasm-wrappers.cc | 111 +- deps/v8/test/cctest/wasm/test-run-wasm.cc | 138 +- .../cctest/wasm/test-streaming-compilation.cc | 284 +- .../test/cctest/wasm/test-wasm-breakpoints.cc | 77 +- .../wasm/test-wasm-import-wrapper-cache.cc | 73 +- deps/v8/test/cctest/wasm/test-wasm-metrics.cc | 24 +- .../cctest/wasm/test-wasm-serialization.cc | 273 +- .../cctest/wasm/test-wasm-shared-engine.cc | 77 +- deps/v8/test/cctest/wasm/test-wasm-stack.cc | 67 +- deps/v8/test/cctest/wasm/test-wasm-strings.cc | 4 +- .../cctest/wasm/test-wasm-trap-position.cc | 33 +- deps/v8/test/cctest/wasm/wasm-run-utils.cc | 209 +- deps/v8/test/cctest/wasm/wasm-run-utils.h | 120 +- deps/v8/test/cctest/wasm/wasm-simd-utils.cc | 207 +- deps/v8/test/cctest/wasm/wasm-simd-utils.h | 65 +- deps/v8/test/common/code-assembler-tester.h | 64 +- deps/v8/test/common/types-fuzz.h | 44 +- deps/v8/test/common/wasm/test-signatures.h | 266 +- deps/v8/test/common/wasm/wasm-macro-gen.h | 170 +- .../v8/test/common/wasm/wasm-module-runner.cc | 87 +- deps/v8/test/common/wasm/wasm-module-runner.h | 22 +- .../debug/compiler/loop-interrupt-check.js | 2 +- .../debug/compiler/regress-354005322.js | 2 +- .../debug-evaluate-shadowed-context-reuse.js | 2 +- .../debug/debug-evaluate-shadowed-context.js | 2 +- .../debug-evaluate-no-side-effect-builtins.js | 2 +- ...g-evaluate-no-side-effect-runtime-check.js | 2 +- deps/v8/test/debugger/debug/wasm/asm-debug.js | 2 +- ...bled-tier-down-wasm-unsupported-liftoff.js | 1 - .../debugger/debug/wasm/frame-inspection.js | 2 - deps/v8/test/debugger/debugger.status | 7 +- .../debugging/wasm/gdb-server/DIR_METADATA | 5 +- deps/v8/test/fuzzer/BUILD.gn | 9 +- deps/v8/test/fuzzer/fuzzer-support.cc | 17 +- deps/v8/test/fuzzer/fuzzer.status | 11 +- deps/v8/test/fuzzer/multi-return.cc | 26 +- deps/v8/test/fuzzer/parser.cc | 5 +- deps/v8/test/fuzzer/regexp.cc | 22 +- deps/v8/test/fuzzer/testcfg.py | 28 +- deps/v8/test/fuzzer/wasm-fuzzer-common.h | 68 - deps/v8/test/fuzzer/wasm/DIR_METADATA | 14 + .../fuzzer/{wasm-async.cc => wasm/async.cc} | 29 +- .../{wasm_async => wasm/async}/README.md | 0 .../async}/regress-1115431.wasm | Bin .../async}/regress-1405322.wasm | Bin .../async}/regression-761784.wasm | Bin .../{wasm_async => wasm/async}/valid.wasm | Bin .../fuzzer/{wasm-code.cc => wasm/code.cc} | 8 +- deps/v8/test/fuzzer/wasm/{ => code}/foo | 0 .../compile-all.cc} | 13 +- .../compile-simd.cc} | 13 +- .../compile-wasmgc.cc} | 13 +- .../{wasm-compile.cc => wasm/compile.cc} | 12 +- .../fuzzer/{wasm_code => wasm/compile}/foo | 0 .../fuzzer/{wasm-deopt.cc => wasm/deopt.cc} | 220 +- .../fuzzer-common.cc} | 285 +- deps/v8/test/fuzzer/wasm/fuzzer-common.h | 107 + .../{wasm-init-expr.cc => wasm/init-expr.cc} | 79 +- deps/v8/test/fuzzer/wasm/interpreter/OWNERS | 3 + .../wasm/interpreter/fast-interpreter.cc | 71 + .../wasm/interpreter/interpreter-all.cc | 28 + .../wasm/interpreter/interpreter-base.cc | 27 + .../wasm/interpreter/interpreter-code.cc | 31 + .../wasm/interpreter/interpreter-diff.cc | 89 + .../interpreter/interpreter-fuzzer-common.cc | 519 + .../interpreter/interpreter-fuzzer-common.h | 38 + .../wasm/interpreter/interpreter-init-expr.cc | 382 + .../wasm/interpreter/interpreter-simd.cc | 27 + .../wasm/interpreter/interpreter-wasmgc.cc | 26 + .../test/fuzzer/{wasm.cc => wasm/module.cc} | 27 +- .../fuzzer/{wasm_compile => wasm/module}/foo | 0 .../wasm/{ => module}/regress-1115280.wasm | Bin .../wasm/{ => module}/regress-1127717.wasm | Bin .../wasm/{ => module}/regress-1191853.wasm | Bin .../wasm/{ => module}/regress-1404619.wasm | Bin .../wasm/{ => module}/regress-1464231.wasm | Bin .../{wasm-streaming.cc => wasm/streaming.cc} | 15 +- .../streaming}/README.md | 0 .../streaming}/empty_module | Bin .../streaming}/regress-1334577 | Bin .../streaming}/regress-1335023 | Bin .../streaming}/regress-1427898 | Bin .../streaming}/regress-1429613 | Bin .../console-profile-wasm-expected.txt | 10 +- .../debugger/async-chains-expected.txt | 18 - ...-explicit-resource-management-expected.txt | 191 + ...-exception-explicit-resource-management.js | 178 + .../break-on-exception-framework-expected.txt | 48 +- ...eption-framework-promise-tree-expected.txt | 368 +- ...tion-promise-catch-prediction-expected.txt | 1251 +- ...k-on-exception-promise-catch-prediction.js | 17 + ...-explicit-resource-management-expected.txt | 75 + ...g-evaluate-explicit-resource-management.js | 44 + .../es6-module-script-parsed-expected.txt | 9 +- ...ssible-breakpoints-lazy-error-expected.txt | 5 +- ...-anonymous-and-content-script-expected.txt | 21 + .../ignore-anonymous-and-content-script.js | 57 + .../resource-name-to-url-expected.txt | 20 +- .../inspector/debugger/restore-breakpoint.js | 6 +- .../script-on-after-compile-expected.txt | 216 +- .../debugger/script-origin-stack-expected.txt | 11 +- ...t-parsed-for-runtime-evaluate-expected.txt | 68 +- .../debugger/script-parsed-hash-expected.txt | 9 +- ...int-reset-on-debugger-restart-expected.txt | 2 +- .../wasm-conditional-breakpoints-expected.txt | 24 +- .../debugger/wasm-debug-command-expected.txt | 4 +- .../debugger/wasm-evaluate-on-call-frame.js | 1 - .../debugger/wasm-gc-anyref-expected.txt | 8 +- .../debugger/wasm-gc-breakpoints-expected.txt | 6 +- .../inspector/debugger/wasm-gc-breakpoints.js | 2 +- .../wasm-gc-in-debug-break-expected.txt | 4 +- .../wasm-gc-multi-module-expected.txt | 12 +- .../debugger/wasm-gc-multi-module.js | 16 +- ...akable-locations-byte-offsets-expected.txt | 42 +- ...sm-get-breakable-locations-byte-offsets.js | 2 - .../debugger/wasm-imports-expected.txt | 8 +- ...sm-instrumentation-breakpoint-expected.txt | 24 +- .../wasm-jspi-async-stack-expected.txt | 277 +- .../debugger/wasm-jspi-async-stack.js | 2 +- .../wasm-remove-breakpoint-expected.txt | 4 +- .../debugger/wasm-scope-info-expected.txt | 18 +- .../inspector/debugger/wasm-scope-info.js | 2 +- .../wasm-script-code-offset-streaming.js | 2 +- .../debugger/wasm-script-code-offset.js | 2 +- .../wasm-script-parsed-buildid-expected.txt | 77 + .../debugger/wasm-script-parsed-buildid.js | 57 + .../wasm-scripts-disassembly-expected.txt | 4 +- .../debugger/wasm-scripts-expected.txt | 98 +- .../wasm-scripts-with-name-expected.txt | 8 +- .../debugger/wasm-scripts-with-name.js | 2 - .../test/inspector/debugger/wasm-scripts.js | 14 +- .../debugger/wasm-set-breakpoint-expected.txt | 60 +- ...breakpoint-on-instrumentation-expected.txt | 20 +- .../v8/test/inspector/debugger/wasm-source.js | 2 - .../debugger/wasm-stack-check-expected.txt | 2 +- .../debugger/wasm-stack-expected.txt | 4 +- deps/v8/test/inspector/debugger/wasm-stack.js | 2 - .../debugger/wasm-step-a-lot-expected.txt | 2 +- .../wasm-step-after-trap-expected.txt | 4 +- ...p-from-non-breakable-position-expected.txt | 8 +- .../debugger/wasm-stepping-expected.txt | 78 +- .../wasm-stepping-in-from-js-expected.txt | 6 +- .../wasm-stepping-out-from-js-expected.txt | 4 +- .../debugger/wasm-stepping-to-js-expected.txt | 12 +- ...tepping-with-blackboxed-range-expected.txt | 68 +- .../wasm-stepping-with-skiplist-expected.txt | 122 +- ...wasm-stepping-with-source-map-expected.txt | 52 +- ...-terminate-execution-on-pause-expected.txt | 2 +- .../heap-profiler/console-retaining-path.js | 2 +- .../heap-snapshot-js-weak-refs.js | 2 +- deps/v8/test/inspector/inspector-test.cc | 3 +- deps/v8/test/inspector/inspector.status | 6 +- deps/v8/test/inspector/isolate-data.cc | 5 + .../regress-crbug-383029265-expected.txt | 189 + .../regress/regress-crbug-383029265.js | 66 + .../runtime/command-line-api-expected.txt | 22 + .../runtime/console-methods-expected.txt | 36 + .../runtime/error-stack-async-expected.txt | 66 + .../inspector/runtime/error-stack-async.js | 35 + .../inspector/runtime/es6-module-expected.txt | 16 +- ...class-member-invalid-receiver-expected.txt | 99 + ...e-private-class-member-invalid-receiver.js | 41 + ...e-repl-mode-using-await-using-expected.txt | 39 + .../evaluate-repl-mode-using-await-using.js | 19 + .../test/inspector/runtime/get-properties.js | 2 +- .../runtime/regression-1140845-expected.txt | 2 +- .../inspector/runtime/regression-1140845.js | 2 +- deps/v8/test/inspector/task-runner.cc | 4 +- deps/v8/test/inspector/utils.cc | 10 +- deps/v8/test/intl/DIR_METADATA | 5 +- .../duration-format/format-basic-digital.js | 1 - .../format-digital-longdigits.js | 10 + .../locale/locale-info-check-return-types.js | 7 +- deps/v8/test/intl/number-format/pr925.js | 15 + .../resolvedOptions-pluralCategories-order.js | 41 + deps/v8/test/intl/regress-386857213.js | 5 + deps/v8/test/js-perf-test/JSTests4.json | 2 +- deps/v8/test/js-perf-test/RegExp.json | 49 +- .../test/js-perf-test/RegExp/RegExpTests.json | 67 - deps/v8/test/js-perf-test/RegExp/base.js | 6 +- .../test/js-perf-test/RegExp/base_replace.js | 3 + .../RegExp/base_replace_emoji_g.js | 22 + .../RegExp/base_replace_emoji_gu.js | 22 + .../RegExp/base_replace_emoji_gv.js | 22 + .../RegExp/base_replaceall_emoji_g.js | 22 + .../RegExp/base_replaceall_emoji_gu.js | 22 + .../RegExp/base_replaceall_emoji_gv.js | 22 + .../js-perf-test/RegExp/replace_emoji_g.js | 7 + .../js-perf-test/RegExp/replace_emoji_gu.js | 7 + .../js-perf-test/RegExp/replace_emoji_gv.js | 7 + .../js-perf-test/RegExp/replaceall_emoji_g.js | 7 + .../RegExp/replaceall_emoji_gu.js | 7 + .../RegExp/replaceall_emoji_gv.js | 7 + deps/v8/test/js-perf-test/RegExp/run.js | 16 +- .../RegExp/slow_replace_emoji_g.js | 7 + .../RegExp/slow_replace_emoji_gu.js | 7 + .../RegExp/slow_replace_emoji_gv.js | 7 + .../RegExp/slow_replaceall_emoji_g.js | 7 + .../RegExp/slow_replaceall_emoji_gu.js | 7 + .../RegExp/slow_replaceall_emoji_gv.js | 7 + .../message/fail/iterator-non-callable-2.out | 2 +- .../message/fail/iterator-non-callable.out | 2 +- .../fail/modules-import-assertions-fail-1.out | 6 - .../fail/modules-import-assertions-fail-3.out | 4 - ...s => modules-import-attributes-fail-1.mjs} | 3 +- .../fail/modules-import-attributes-fail-1.out | 5 + ...s => modules-import-attributes-fail-2.mjs} | 3 +- ...t => modules-import-attributes-fail-2.out} | 1 - ...s => modules-import-attributes-fail-3.mjs} | 3 +- .../fail/modules-import-attributes-fail-3.out | 4 + ...modules-skip-1-import-attributes-fail.mjs} | 0 ...odules-skip-3-import-attributes-fail.json} | 0 .../throw-during-IteratorCloseOnException.out | 2 +- .../message/fail/using-declaration-rethrow.js | 11 + .../fail/using-declaration-rethrow.out | 5 + .../fail/wasm-exception-stack-trace.out | 2 +- .../test/message/fail/wasm-function-name.js | 2 - .../test/message/fail/wasm-function-name.out | 2 +- .../fail/wasm-module-and-function-name.js | 2 - .../fail/wasm-module-and-function-name.out | 2 +- deps/v8/test/message/fail/wasm-module-name.js | 2 - .../v8/test/message/fail/wasm-module-name.out | 2 +- deps/v8/test/message/fail/wasm-no-name.js | 2 - deps/v8/test/message/fail/wasm-no-name.out | 2 +- deps/v8/test/message/fail/wasm-trap.js | 2 - deps/v8/test/message/fail/wasm-trap.out | 2 +- deps/v8/test/message/message.status | 6 +- .../message/wasm-deopt-max-input-count.js | 43 + .../message/wasm-deopt-max-input-count.out | 6 + deps/v8/test/message/wasm-deopt-max-limit.js | 51 + deps/v8/test/message/wasm-deopt-max-limit.out | 14 + .../test/message/wasm-function-name-async.js | 2 - .../test/message/wasm-function-name-async.out | 2 +- .../message/wasm-function-name-streaming.js | 2 +- .../message/wasm-function-name-streaming.out | 2 +- .../wasm-module-and-function-name-async.js | 2 - .../wasm-module-and-function-name-async.out | 2 +- ...wasm-module-and-function-name-streaming.js | 2 +- ...asm-module-and-function-name-streaming.out | 2 +- .../v8/test/message/wasm-module-name-async.js | 2 - .../test/message/wasm-module-name-async.out | 2 +- .../message/wasm-module-name-streaming.js | 2 +- .../message/wasm-module-name-streaming.out | 2 +- deps/v8/test/message/wasm-no-name-async.js | 2 - deps/v8/test/message/wasm-no-name-async.out | 2 +- .../v8/test/message/wasm-no-name-streaming.js | 2 +- .../test/message/wasm-no-name-streaming.out | 2 +- .../v8/test/message/wasm-recognize-imports.js | 9 +- .../test/message/wasm-recognize-imports.out | 2 +- .../test/message/wasm-speculative-inlining.js | 2 +- .../message/wasm-speculative-inlining.out | 54 +- deps/v8/test/message/wasm-trace-deopt-32.js | 4 +- deps/v8/test/message/wasm-trace-deopt-64.js | 4 +- deps/v8/test/message/wasm-trace-liftoff.js | 1 + .../message/wasm-trace-memory64-liftoff.js | 2 +- deps/v8/test/message/wasm-trace-memory64.js | 2 +- deps/v8/test/message/wasm-trace-turbofan.js | 2 +- .../weakref-finalizationregistry-error.out | 3 - .../mjsunit/additive-safe-int-feedback.js | 346 + .../mjsunit/arguments-load-across-eval.js | 2 +- deps/v8/test/mjsunit/array-buffer-limit.js | 90 + ...array-prototype-map-elements-kinds-dict.js | 57 + .../array-prototype-map-elements-kinds.js | 308 + deps/v8/test/mjsunit/array-sort.js | 66 +- deps/v8/test/mjsunit/asm/noexpose-wasm.js | 37 - .../mjsunit/async-hooks/async-await-tree.js | 2 +- .../async-hooks/regress-crbug-1433521.js | 2 +- .../mjsunit/baseline/deopt-to-baseline.js | 32 - .../test/mjsunit/code-coverage-block-async.js | 20 +- deps/v8/test/mjsunit/code-coverage-block.js | 15 +- ...array-prototype-map-elements-kinds-dict.js | 94 + .../array-prototype-map-elements-kinds.js | 568 + .../compiler/bound-functions-serialize.js | 2 +- .../call-with-arraylike-or-spread-7.js | 2 +- ...checkmaps-with-migration-and-deopt-mono.js | 40 + ...heckmaps-with-migration-and-deopt-mono2.js | 31 + ...checkmaps-with-migration-and-deopt-poly.js | 44 + ...heckmaps-with-migration-and-deopt-poly2.js | 35 + ...heckmaps-with-migration-and-deopt-poly3.js | 41 + .../test/mjsunit/compiler/dataview-float16.js | 81 + deps/v8/test/mjsunit/compiler/dataview-get.js | 2 +- .../mjsunit/compiler/escape-analysis-1.js | 1 + .../mjsunit/compiler/escape-analysis-2.js | 1 + .../mjsunit/compiler/escape-analysis-3.js | 1 + .../mjsunit/compiler/escape-analysis-4.js | 2 + .../mjsunit/compiler/escape-analysis-5.js | 2 + .../mjsunit/compiler/escape-analysis-6.js | 1 + .../mjsunit/compiler/escape-analysis-7.js | 1 + .../mjsunit/compiler/escape-analysis-8.js | 1 + .../mjsunit/compiler/escape-analysis-9.js | 1 + .../mjsunit/compiler/fast-api-annotations.js | 137 +- .../mjsunit/compiler/fast-api-attributes.js | 45 + .../mjsunit/compiler/fast-api-calls-throw.js | 2 +- .../test/mjsunit/compiler/fast-api-helpers.js | 3 +- .../mjsunit/compiler/fast-api-sequences.js | 24 - .../mjsunit/compiler/float16-array-next.js | 2 +- .../v8/test/mjsunit/compiler/float16-array.js | 96 +- ...d_mutable_heap_slot_context_specialized.js | 108 + .../monomorphic-named-load-with-no-map.js | 7 +- .../compiler/optimized-array-at-throw.js | 31 + .../mjsunit/compiler/poly-store-gets-smi.js | 30 + .../compiler/redundancy-elimination.js | 4 +- .../mjsunit/compiler/regress-356196918.js | 40 + .../mjsunit/compiler/regress-376100382.js | 17 + .../mjsunit/compiler/regress-376307767.js | 21 + .../mjsunit/compiler/regress-376818204.js | 18 + .../mjsunit/compiler/regress-377213712-1.js | 22 + .../mjsunit/compiler/regress-377213712-2.js | 24 + .../mjsunit/compiler/regress-377213712-3.js | 24 + .../mjsunit/compiler/regress-378408466.js | 26 + .../mjsunit/compiler/regress-379519287.js | 18 + .../mjsunit/compiler/regress-385386138.js | 27 + .../mjsunit/compiler/regress-392660676.js | 16 + .../mjsunit/compiler/regress-392667952.js | 25 + .../mjsunit/compiler/regress-393411524.js | 30 + .../mjsunit/compiler/regress-394120836.js | 41 + .../mjsunit/compiler/regress-394327270.js | 17 + .../mjsunit/compiler/regress-394650781.js | 14 + .../mjsunit/compiler/regress-396463255.js | 29 + .../mjsunit/compiler/regress-398431403.js | 23 + .../mjsunit/compiler/regress-400052777.js | 31 + .../mjsunit/compiler/regress-402646504.js | 30 + .../mjsunit/compiler/regress-404356997.js | 27 + .../mjsunit/compiler/regress-crbug-1344965.js | 2 +- .../mjsunit/compiler/regress-crbug-1470495.js | 2 +- .../mjsunit/compiler/regress-crbug-1483259.js | 2 +- .../mjsunit/compiler/regress-crbug-1484894.js | 2 +- .../mjsunit/compiler/regress-crbug-1484895.js | 2 +- .../mjsunit/compiler/regress-crbug-1487463.js | 2 +- .../compiler/regress-crbug-369685641.js | 26 + .../test/mjsunit/compiler/regress-v8-5756.js | 2 +- .../compiler/string-concat-escape-nested.js | 22 + .../mjsunit/compiler/string-concat-escape.js | 52 + .../compiler/typed-array-length-all-kinds.js | 97 + .../compiler/typed-array-length-as-number.js | 28 + .../compiler/typed-array-length-constant.js | 21 + .../compiler/typed-array-length-custom-1a.js | 22 + .../compiler/typed-array-length-custom-1b.js | 27 + .../compiler/typed-array-length-custom-2a.js | 21 + .../compiler/typed-array-length-custom-2b.js | 26 + .../compiler/typed-array-length-custom-3a.js | 21 + .../compiler/typed-array-length-custom-3b.js | 27 + .../compiler/typed-array-length-custom-4a.js | 20 + .../compiler/typed-array-length-custom-4b.js | 23 + .../compiler/typed-array-length-custom-6a.js | 22 + .../compiler/typed-array-length-custom-6b.js | 24 + .../compiler/typed-array-length-custom-7a.js | 21 + .../compiler/typed-array-length-custom-7b.js | 24 + .../compiler/typed-array-length-detached-1.js | 23 + .../compiler/typed-array-length-detached-2.js | 25 + ...yped-array-length-from-call-polymorphic.js | 25 + .../compiler/typed-array-length-from-call.js | 19 + .../compiler/typed-array-length-iteration.js | 38 + .../typed-array-length-polymorphic.js | 25 + .../typedarray-resizablearraybuffer.js | 6 +- ...ady-not-constant-global-no-deopt-maglev.js | 7 +- ...et-already-not-constant-no-deopt-maglev.js | 7 +- .../const-tracking-let-invalidate-eval.js | 2 +- ...er-dynamic-import-execution-terminating.js | 15 + .../test/mjsunit/d8/flush-denormals-flag.js | 8 + .../test/mjsunit/d8/flush-denormals-helper.js | 10 + .../test/mjsunit/d8/flush-denormals-worker.js | 43 + deps/v8/test/mjsunit/d8/regress-389573438.js | 14 + .../dataview-growablesharedarraybuffer.js | 2 +- .../dataview-resizablearraybuffer-detach.js | 2 +- .../mjsunit/dataview-resizablearraybuffer.js | 2 +- deps/v8/test/mjsunit/deopt-with-fp-regs.js | 2 +- deps/v8/test/mjsunit/elements-kind.js | 2 +- .../v8/test/mjsunit/elements-kinds-helpers.js | 38 + .../mjsunit/empty-tf-cons-string-tree.mjs | 40 + ...tequals-feedback.js => equals-feedback.js} | 159 +- deps/v8/test/mjsunit/es6/big-weakmap.js | 35 + .../v8/test/mjsunit/es6/iterator-prototype.js | 1 - .../mjsunit/es6/super-ic-opt-no-turboprop.js | 5 +- deps/v8/test/mjsunit/es6/super-ic-opt.js | 33 +- deps/v8/test/mjsunit/field-type-tracking.js | 13 +- .../harmony/array-findlast-unscopables.js | 1 - .../harmony/array-prototype-findlast.js | 1 - .../harmony/array-prototype-findlastindex.js | 1 - .../test/mjsunit/harmony/array-to-spliced.js | 2 - .../harmony/async-await-optimization.js | 1 - ...ync-disposable-stack-dispose-tick-count.js | 2 +- ...le-stack-with-null-undefined-tick-count.js | 2 +- deps/v8/test/mjsunit/harmony/atomics.js | 5 +- ...spose-after-symbol.asyncDispose.is-null.js | 29 + .../test/mjsunit/harmony/await-using-null.js | 11 + .../await-using-throws-suppressed-error.js | 48 + .../mjsunit/harmony/await-using-tick-count.js | 2 +- ...th-sync-async-null-undefined-tick-count.js | 2 +- ...ing-with-sync-null-undefined-tick-count.js | 2 +- .../harmony/base64-from-hex-long-inputs.js | 66 + .../base64-from-hex-with-two-byte-strings.js | 13 + .../base64-prototype-to-hex-long-inputs.js | 39 + .../mjsunit/harmony/dataview-accessors.js | 2 +- ...disposable-stack-use-throws-if-disposed.js | 9 + deps/v8/test/mjsunit/harmony/error-cause.js | 1 - ...anagement-call-sync-from-async-receiver.js | 34 + .../harmony/for-using-of-await-using-of.js | 96 + .../mjsunit/harmony/iterator-constructor.js | 1 - deps/v8/test/mjsunit/harmony/iterator-from.js | 1 - .../test/mjsunit/harmony/iterator-helpers.js | 1 - .../json-parse-with-source-snapshot.js | 1 - .../mjsunit/harmony/json-parse-with-source.js | 1 - .../logical-assignment-function-name.js | 1 - .../mjsunit/harmony/logical-assignment.js | 1 - .../modules-import-15-top-level-await.mjs | 2 +- .../mjsunit/harmony/modules-import-17.mjs | 2 +- .../harmony/modules-import-assertions-1.mjs | 9 - .../harmony/modules-import-assertions-2.mjs | 9 - .../harmony/modules-import-assertions-3.mjs | 9 - .../harmony/modules-import-assertions-4.mjs | 9 - .../modules-import-assertions-dynamic-1.mjs | 12 - .../modules-import-assertions-dynamic-10.mjs | 19 - .../modules-import-assertions-dynamic-11.mjs | 19 - .../modules-import-assertions-dynamic-12.mjs | 26 - .../modules-import-assertions-dynamic-2.mjs | 13 - .../modules-import-assertions-dynamic-3.mjs | 13 - .../modules-import-assertions-dynamic-4.mjs | 14 - .../modules-import-assertions-dynamic-5.mjs | 12 - .../modules-import-assertions-dynamic-6.mjs | 18 - .../modules-import-assertions-dynamic-7.mjs | 63 - .../modules-import-assertions-dynamic-8.mjs | 13 - .../modules-import-assertions-dynamic-9.mjs | 13 - .../harmony/modules-import-attributes-1.mjs | 1 - .../harmony/modules-import-attributes-2.mjs | 1 - .../harmony/modules-import-attributes-3.mjs | 1 - .../harmony/modules-import-attributes-4.mjs | 1 - .../modules-import-attributes-dynamic-1.mjs | 2 +- .../modules-import-attributes-dynamic-10.mjs | 4 +- .../modules-import-attributes-dynamic-11.mjs | 2 +- .../modules-import-attributes-dynamic-12.mjs | 4 +- .../modules-import-attributes-dynamic-13.mjs | 2 +- .../modules-import-attributes-dynamic-2.mjs | 2 +- .../modules-import-attributes-dynamic-3.mjs | 2 +- .../modules-import-attributes-dynamic-4.mjs | 2 +- .../modules-import-attributes-dynamic-5.mjs | 2 +- .../modules-import-attributes-dynamic-6.mjs | 2 +- .../modules-import-attributes-dynamic-7.mjs | 6 +- .../modules-import-attributes-dynamic-8.mjs | 2 +- .../modules-import-attributes-dynamic-9.mjs | 2 +- ...tributes-dynamic-assertions-fallback-1.mjs | 15 - ...tributes-dynamic-assertions-fallback-2.mjs | 15 - .../mjsunit/harmony/modules-import-meta.mjs | 1 - ...modules-import-rqstd-order-async-cycle.mjs | 1 - ...ules-import-rqstd-order-async-subgraph.mjs | 1 - ...s-import-rqstd-order-top-level-await-1.mjs | 1 - ...s-import-rqstd-order-top-level-await-2.mjs | 1 - ...s-import-rqstd-order-top-level-await-3.mjs | 1 - ...s-import-rqstd-order-top-level-await-4.mjs | 1 - ...s-import-rqstd-order-top-level-await-5.mjs | 1 - ...s-import-rqstd-order-top-level-await-6.mjs | 1 - ...s-import-rqstd-order-top-level-await-7.mjs | 1 - ...s-import-rqstd-order-top-level-await-8.mjs | 1 - .../modules-import-top-level-await-1.mjs | 2 +- .../modules-import-top-level-await-2.mjs | 1 - .../modules-import-top-level-await-3.mjs | 1 - .../modules-import-top-level-await-4.mjs | 1 - .../modules-import-top-level-await-5.mjs | 1 - .../modules-import-top-level-await-6.mjs | 1 - .../modules-import-top-level-await-7.mjs | 1 - .../modules-import-top-level-await-8.mjs | 1 - .../modules-import-top-level-await-cycle.mjs | 1 - ...les-import-top-level-await-exception-1.mjs | 2 +- ...les-import-top-level-await-exception-2.mjs | 2 +- ...les-import-top-level-await-exception-3.mjs | 2 +- .../harmony/modules-skip-async-cycle-1.mjs | 1 - .../harmony/modules-skip-async-cycle-2.mjs | 1 - .../harmony/modules-skip-async-cycle-3.mjs | 1 - .../harmony/modules-skip-async-cycle-leaf.mjs | 1 - .../modules-skip-async-cycle-start.mjs | 1 - .../harmony/modules-skip-async-subgraph-1.mjs | 1 - .../harmony/modules-skip-async-subgraph-2.mjs | 1 - .../modules-skip-async-subgraph-async.mjs | 1 - .../modules-skip-async-subgraph-start.mjs | 1 - .../harmony/modules-skip-async-subgraph-x.mjs | 1 - ...modules-skip-imports-attributes-json-1.mjs | 1 - .../harmony/modules-skip-imports-json-1.mjs | 4 +- deps/v8/test/mjsunit/harmony/nullish.js | 1 - .../mjsunit/harmony/optional-chaining-this.js | 1 - .../test/mjsunit/harmony/optional-chaining.js | 1 - .../mjsunit/harmony/private-brand-checks.js | 2 +- .../harmony/regexp-duplicate-named-groups.js | 1 - .../mjsunit/harmony/regexp-match-indices.js | 2 +- .../test/mjsunit/harmony/regexp-modifiers.js | 1 - .../mjsunit/harmony/regexp-overriden-exec.js | 2 +- .../harmony/regress/regress-352690887.js | 32 + .../harmony/regress/regress-368503280.js | 7 + .../harmony/regress/regress-369010108.js | 22 + .../harmony/regress/regress-369652654.js | 14 + .../harmony/regress/regress-379888466.js | 11 + .../harmony/regress/regress-380677637.js | 19 + .../harmony/regress/regress-385406640.js | 20 + .../harmony/regress/regress-402863536.js | 19 + .../harmony/regress/regress-crbug-1410963.js | 1 - .../harmony/regress/regress-crbug-1422812.js | 1 - .../harmony/regress/regress-crbug-1423310.js | 1 - .../harmony/regress/regress-crbug-1444842.js | 1 - .../harmony/regress/regress-crbug-1471048.js | 1 - .../harmony/relative-indexing-methods.js | 2 +- .../v8/test/mjsunit/harmony/set-difference.js | 37 +- .../test/mjsunit/harmony/set-intersection.js | 1 - .../mjsunit/harmony/set-is-disjoint-from.js | 1 - .../test/mjsunit/harmony/set-is-subset-of.js | 1 - .../mjsunit/harmony/set-is-superset-of.js | 1 - .../harmony/set-symmetric-difference.js | 1 - deps/v8/test/mjsunit/harmony/set-union.js | 5 +- .../string-iswellformed-external-uncached.js | 2 +- .../string-iswellformed-flat-indirect.js | 1 - .../test/mjsunit/harmony/string-replaceAll.js | 2 +- .../test/mjsunit/harmony/suppressed-error.js | 2 +- .../mjsunit/harmony/typed-array-to-sorted.js | 2 +- .../mjsunit/harmony/typedarray-findlast.js | 4 +- .../harmony/typedarray-findlastindex.js | 2 +- .../mjsunit/harmony/typedarray-to-reversed.js | 2 +- .../mjsunit/harmony/typedarray-tostringtag.js | 2 +- .../test/mjsunit/harmony/typedarray-with.js | 2 +- .../harmony/using-requires-initializer.js | 10 + .../harmony/weakrefs/basics-cleanupsome.js | 25 - .../mjsunit/harmony/weakrefs/cleanupsome-2.js | 37 - .../weakrefs/cleanupsome-after-unregister.js | 42 - .../harmony/weakrefs/cleanupsome-optional.js | 13 - .../mjsunit/harmony/weakrefs/cleanupsome.js | 42 - .../harmony/weakrefs/weak-unregistertoken.js | 4 +- deps/v8/test/mjsunit/huge-typedarrays.js | 22 +- .../test/mjsunit/json-parser-double-arrays.js | 45 + .../test/mjsunit/json-stringify-recursive.js | 6 +- deps/v8/test/mjsunit/json.js | 59 + .../mjsunit/keyed-load-hole-to-undefined.js | 2 +- .../regress/regress-crbug-400504688.js | 26 + .../regress/regress-crbug-405910175-map.js | 14 + .../regress/regress-crbug-405910175-set.js | 14 + ...array-prototype-map-elements-kinds-dict.js | 88 + .../array-prototype-map-elements-kinds.js | 504 + .../maglev/array-push-with-impossible-type.js | 26 + ...nchifrootconstant-with-float64toboolean.js | 17 + ...ranchifrootconstant-with-int32toboolean.js | 17 + ...checkmaps-with-migration-and-deopt-mono.js | 40 + ...heckmaps-with-migration-and-deopt-mono2.js | 31 + ...checkmaps-with-migration-and-deopt-poly.js | 44 + ...heckmaps-with-migration-and-deopt-poly2.js | 35 + ...heckmaps-with-migration-and-deopt-poly3.js | 41 + .../lazy-deopt-with-onstack-activation.js | 3 +- .../lazy-deopt-without-onstack-activation.js | 2 +- .../maglev/lda-global-inside-typeof.js | 2 +- deps/v8/test/mjsunit/maglev/lda-global.js | 2 +- ...d_mutable_heap_slot_context_specialized.js | 87 + ...utable_heap_slot_no_context_specialized.js | 46 + .../mjsunit/maglev/maglev-inlining-dead.js | 232 + .../mjsunit/maglev/maglev-loop-3-preds.js | 30 + .../mjsunit/maglev/no-deopt-deprecated-map.js | 1 + .../maglev/phi-untagging-conversions.js | 1 + .../mjsunit/maglev/poly-store-transition.js | 32 + .../v8/test/mjsunit/maglev/regress-1417125.js | 20 - .../test/mjsunit/maglev/regress-367814188.js | 26 + .../test/mjsunit/maglev/regress-369652820.js | 25 + .../test/mjsunit/maglev/regress-371659897.js | 25 + .../test/mjsunit/maglev/regress-373473130.js | 16 + .../test/mjsunit/maglev/regress-375330032.js | 26 + .../test/mjsunit/maglev/regress-376502882.js | 27 + .../test/mjsunit/maglev/regress-376503834.js | 24 + .../test/mjsunit/maglev/regress-377352333.js | 17 + .../test/mjsunit/maglev/regress-377736134.js | 20 + .../test/mjsunit/maglev/regress-377850462.js | 67 + .../test/mjsunit/maglev/regress-377966014.js | 20 + .../test/mjsunit/maglev/regress-378014582.js | 17 + .../test/mjsunit/maglev/regress-379159138.js | 22 + .../test/mjsunit/maglev/regress-379669752.js | 960 + .../test/mjsunit/maglev/regress-379843860.js | 27 + .../test/mjsunit/maglev/regress-389330329.js | 37 + .../test/mjsunit/maglev/regress-390461961.js | 20 + .../test/mjsunit/maglev/regress-390461961b.js | 26 + .../test/mjsunit/maglev/regress-393231744.js | 22 + .../test/mjsunit/maglev/regress-395969077.js | 15 + .../test/mjsunit/maglev/regress-399697984.js | 18 + .../test/mjsunit/maglev/regress-402646504.js | 30 + .../test/mjsunit/maglev/regress-405452052.js | 21 + .../test/mjsunit/maglev/regress-405522048.js | 27 + .../test/mjsunit/maglev/regress-406043356.js | 57 + .../maglev/regress-6565476905713664.js | 43 + deps/v8/test/mjsunit/maglev/regress-cse.js | 2 +- .../mjsunit/maglev/regress/regress-1405651.js | 1 + .../maglev/regress/regress-367758074.js | 34 + .../maglev/regress/regress-371044612.js | 22 + .../maglev/regress/regress-379066970.js | 31 + .../maglev/regress/regress-383019484.js | 15 + .../maglev/regress/regress-383999269.js | 17 + .../maglev/regress/regress-399208503.js | 22 + ...e_mutable_heap_slot_context_specialized.js | 114 + ...utable_heap_slot_no_context_specialized.js | 37 + .../maglev/strict-equals-number-boolean.js | 4 +- ...ct-equals-receiver-or-null-or-undefined.js | 47 + deps/v8/test/mjsunit/maglev/string-compare.js | 1 + .../mjsunit/maglev/string-wrapper-add-1.js | 37 + .../mjsunit/maglev/string-wrapper-add-2.js | 26 + .../mjsunit/maglev/string-wrapper-add-3.js | 35 + .../mjsunit/maglev/typed-array-length-abs.js | 27 + .../maglev/typed-array-length-all-kinds.js | 97 + .../typed-array-length-as-number-large.js | 26 + .../maglev/typed-array-length-as-number.js | 27 + .../maglev/typed-array-length-bitwise.js | 27 + .../typed-array-length-branch-if-root.js | 27 + ...-array-length-branch-if-to-boolean-true.js | 28 + .../maglev/typed-array-length-custom-1a.js | 22 + .../maglev/typed-array-length-custom-1b.js | 27 + .../maglev/typed-array-length-custom-2a.js | 21 + .../maglev/typed-array-length-custom-2b.js | 26 + .../maglev/typed-array-length-deopt-large.js | 22 + .../maglev/typed-array-length-deopt.js | 19 + .../maglev/typed-array-length-detached-1.js | 23 + .../maglev/typed-array-length-detached-2.js | 25 + .../typed-array-length-exception-phi.js | 41 + ...ped-array-length-index-into-array-large.js | 34 + .../typed-array-length-index-into-array.js | 34 + ...ray-length-index-into-typed-array-large.js | 35 + ...ped-array-length-index-into-typed-array.js | 29 + .../typed-array-length-iteration-large.js | 35 + .../maglev/typed-array-length-iteration.js | 37 + .../maglev/typed-array-length-parseint.js | 27 + .../mjsunit/maglev/typed-array-length-phi.js | 32 + .../maglev/typed-array-length-rab-gsab.js | 24 + .../maglev/typed-array-length-round.js | 16 + ...yped-array-length-store-as-uint8clamped.js | 29 + ...ed-array-length-store-into-global-large.js | 29 + .../typed-array-length-store-into-global.js | 30 + ...array-length-store-script-context-large.js | 29 + ...typed-array-length-store-script-context.js | 31 + .../maglev/typed-array-length-to-boolean.js | 27 + .../typed-array-length-to-number-large.js | 27 + .../maglev/typed-array-length-to-number.js | 27 + .../maglev/typedarray-resizablearraybuffer.js | 2 +- deps/v8/test/mjsunit/mjsunit.js | 27 +- deps/v8/test/mjsunit/mjsunit.status | 516 +- .../test/mjsunit/modules-export-star-as1.mjs | 1 - .../test/mjsunit/modules-export-star-as2.mjs | 1 - .../test/mjsunit/modules-export-star-as3.mjs | 1 - deps/v8/test/mjsunit/modules-imports8.mjs | 1 - deps/v8/test/mjsunit/mutable-int32-slot.js | 134 + deps/v8/test/mjsunit/number-tostring-small.js | 663 +- deps/v8/test/mjsunit/object-seal.js | 4 - deps/v8/test/mjsunit/optimized-filter.js | 2 +- deps/v8/test/mjsunit/optimized-map.js | 2 +- deps/v8/test/mjsunit/promise-hooks.js | 4 +- .../protector-cell/typedarray-length-1.js | 17 + .../protector-cell/typedarray-length-2.js | 16 + .../protector-cell/typedarray-length-3.js | 16 + .../protector-cell/typedarray-length-4.js | 17 + .../protector-cell/typedarray-length-5.js | 21 + .../protector-cell/typedarray-length-6.js | 17 + .../protector-cell/typedarray-length-7.js | 16 + .../test/mjsunit/random-bit-correlations.js | 13 +- .../test/mjsunit/regexp-cons-empty-first.js | 12 + deps/v8/test/mjsunit/regexp-experimental.js | 106 +- deps/v8/test/mjsunit/regexp-fallback.js | 8 +- .../mjsunit/regexp-lookahead-experimental.js | 120 + .../mjsunit/regexp-lookbehind-experimental.js | 123 + .../mjsunit/regexp-match-global-atom-cache.js | 13 + .../test/mjsunit/regexp-tier-up-multiple.js | 13 - deps/v8/test/mjsunit/regexp-tier-up.js | 11 +- .../{harmony => }/regexp-unicode-sets.js | 24 +- deps/v8/test/mjsunit/regexp.js | 9 +- deps/v8/test/mjsunit/regress-1417125.js | 20 - deps/v8/test/mjsunit/regress-367066330.js | 4 + deps/v8/test/mjsunit/regress-376701117.js | 27 + deps/v8/test/mjsunit/regress-376723691.js | 30 + deps/v8/test/mjsunit/regress-376738752.js | 25 + deps/v8/test/mjsunit/regress-377352368.js | 25 + deps/v8/test/mjsunit/regress-378102635.js | 17 + deps/v8/test/mjsunit/regress-378634722.js | 10 + deps/v8/test/mjsunit/regress-378836886.js | 26 + deps/v8/test/mjsunit/regress-378836891.js | 15 + deps/v8/test/mjsunit/regress-378891969O.js | 12 + deps/v8/test/mjsunit/regress-378891973.js | 23 + deps/v8/test/mjsunit/regress-379441907.js | 14 + deps/v8/test/mjsunit/regress-381332101.js | 37 + deps/v8/test/mjsunit/regress-382896285.js | 16 + deps/v8/test/mjsunit/regress-383588431.js | 14 + deps/v8/test/mjsunit/regress-383854199.js | 22 + deps/v8/test/mjsunit/regress-393408781-2.js | 5 + deps/v8/test/mjsunit/regress-393408781.js | 16 + deps/v8/test/mjsunit/regress-396485545.js | 16 + deps/v8/test/mjsunit/regress-398879933.js | 19 + deps/v8/test/mjsunit/regress-399698534.js | 32 + deps/v8/test/mjsunit/regress-401652934-2.js | 7 + deps/v8/test/mjsunit/regress-401652934.js | 13 + deps/v8/test/mjsunit/regress-403345124.js | 58 + .../test/mjsunit/regress-crbug-370694832.js | 56 + .../mjsunit/regress/asm/regress-575364.js | 2 +- .../test/mjsunit/regress/asm/regress-8505.js | 2 +- .../regress/proto-transition-regress.js | 2 +- .../test/mjsunit/regress/regress-1112155.js | 2 +- deps/v8/test/mjsunit/regress/regress-11491.js | 2 +- deps/v8/test/mjsunit/regress/regress-12657.js | 2 +- .../test/mjsunit/regress/regress-1415210.js | 2 - .../regress/regress-319722-TypedArrays.js | 3 +- .../test/mjsunit/regress/regress-357651585.js | 1 - .../test/mjsunit/regress/regress-366323469.js | 23 + .../test/mjsunit/regress/regress-366323504.js | 14 + ...ress-335548148.js => regress-366635361.js} | 23 +- .../test/mjsunit/regress/regress-366783816.js | 24 + .../test/mjsunit/regress/regress-367752279.js | 26 + .../test/mjsunit/regress/regress-367779587.js | 23 + .../test/mjsunit/regress/regress-368076858.js | 31 + .../test/mjsunit/regress/regress-368467195.js | 14 + .../test/mjsunit/regress/regress-369667727.js | 24 + .../test/mjsunit/regress/regress-371237560.js | 22 + .../test/mjsunit/regress/regress-372298921.js | 16 + .../test/mjsunit/regress/regress-372524119.js | 9 + .../mjsunit/regress/regress-372750822.mjs | 13 + .../test/mjsunit/regress/regress-372819446.js | 22 + .../test/mjsunit/regress/regress-374627491.js | 26 + .../test/mjsunit/regress/regress-374812617.js | 19 + .../test/mjsunit/regress/regress-375286252.js | 13 + .../test/mjsunit/regress/regress-375748220.js | 14 + .../test/mjsunit/regress/regress-376770786.js | 15 + .../test/mjsunit/regress/regress-377574368.js | 25 + .../test/mjsunit/regress/regress-377820802.js | 13 + .../test/mjsunit/regress/regress-377829476.js | 25 + .../test/mjsunit/regress/regress-377971738.js | 14 + .../test/mjsunit/regress/regress-378014586.js | 24 + .../test/mjsunit/regress/regress-378058739.js | 17 + .../test/mjsunit/regress/regress-378102651.js | 24 + .../test/mjsunit/regress/regress-379811150.js | 15 + .../test/mjsunit/regress/regress-379811151.js | 21 + .../test/mjsunit/regress/regress-380416869.js | 7 + .../test/mjsunit/regress/regress-381216375.js | 8 + .../test/mjsunit/regress/regress-381390367.js | 19 + .../test/mjsunit/regress/regress-382310350.js | 15 + .../test/mjsunit/regress/regress-382867816.js | 25 + .../test/mjsunit/regress/regress-383781940.js | 17 + .../test/mjsunit/regress/regress-383825153.js | 16 + .../test/mjsunit/regress/regress-384605103.js | 5 + .../test/mjsunit/regress/regress-384773802.js | 16 + .../test/mjsunit/regress/regress-385326426.js | 7 + .../test/mjsunit/regress/regress-386487312.js | 7 + .../test/mjsunit/regress/regress-388068045.js | 6 + .../test/mjsunit/regress/regress-388290816.js | 13 + .../test/mjsunit/regress/regress-388905056.js | 16 + .../test/mjsunit/regress/regress-390004174.js | 20 + .../test/mjsunit/regress/regress-390503430.js | 11 + .../test/mjsunit/regress/regress-390568195.js | 16 + .../test/mjsunit/regress/regress-390675705.js | 20 + .../test/mjsunit/regress/regress-392928803.js | 5 + .../test/mjsunit/regress/regress-393164869.js | 14 + .../test/mjsunit/regress/regress-394874187.js | 14 + .../test/mjsunit/regress/regress-395028748.js | 18 + .../test/mjsunit/regress/regress-395053819.js | 11 + .../test/mjsunit/regress/regress-396460426.js | 8 + .../test/mjsunit/regress/regress-397720949.js | 15 + .../test/mjsunit/regress/regress-398067539.js | 14 + .../test/mjsunit/regress/regress-401111776.js | 11 + .../test/mjsunit/regress/regress-406828712.js | 8 + .../test/mjsunit/regress/regress-406830031.js | 6 + deps/v8/test/mjsunit/regress/regress-5404.js | 4 +- .../v8/test/mjsunit/regress/regress-7014-1.js | 3 + .../v8/test/mjsunit/regress/regress-7014-2.js | 2 + deps/v8/test/mjsunit/regress/regress-88591.js | 2 +- .../v8/test/mjsunit/regress/regress-930045.js | 1 - .../v8/test/mjsunit/regress/regress-932953.js | 11 +- deps/v8/test/mjsunit/regress/regress-95920.js | 4 +- .../regress/regress-961709-classes-opt.js | 3 +- .../mjsunit/regress/regress-crbug-1360736.js | 2 +- .../mjsunit/regress/regress-crbug-1423650.js | 2 +- .../mjsunit/regress/regress-crbug-1424699.js | 2 +- .../mjsunit/regress/regress-crbug-1442801.js | 2 +- .../mjsunit/regress/regress-crbug-1443001.js | 2 +- .../regress/regress-crbug-366863049.js | 12 + .../regress/regress-crbug-366873205.js | 60 + .../regress/regress-crbug-368634139.js | 16 + .../regress/regress-crbug-369003813.js | 20 + .../regress/regress-crbug-370133742.js | 20 + .../regress/regress-crbug-371237564.js | 19 + .../regress/regress-crbug-371239173.js | 17 + .../regress/regress-crbug-371445202.js | 24 + .../mjsunit/regress/regress-crbug-724153.js | 2 +- .../mjsunit/regress/regress-crbug-902610-2.js | 12 + .../mjsunit/regress/regress-crbug-941743.js | 2 +- .../test/mjsunit/regress/regress-v8-6716.js | 2 +- .../regress/wasm/i32-lowering-inlining.js | 2 +- .../regress/wasm/inline-call-to-reexport.js | 2 +- .../mjsunit/regress/wasm/loop-stack-check.js | 2 - .../mjsunit/regress/wasm/regress-11024.js | 2 +- .../mjsunit/regress/wasm/regress-1125951.js | 2 +- .../mjsunit/regress/wasm/regress-11335.js | 2 +- .../mjsunit/regress/wasm/regress-12874.js | 2 +- .../mjsunit/regress/wasm/regress-1364036.js | 2 +- .../mjsunit/regress/wasm/regress-1374535.js | 2 +- .../mjsunit/regress/wasm/regress-1447367.js | 2 +- .../mjsunit/regress/wasm/regress-14689.js | 2 +- .../mjsunit/regress/wasm/regress-14695.js | 2 +- .../mjsunit/regress/wasm/regress-1478913.js | 2 +- .../mjsunit/regress/wasm/regress-1490847-3.js | 2 +- .../mjsunit/regress/wasm/regress-1492772.js | 3 +- .../mjsunit/regress/wasm/regress-1502837.js | 2 +- .../mjsunit/regress/wasm/regress-1507743.js | 2 +- .../mjsunit/regress/wasm/regress-1507779.js | 2 +- .../mjsunit/regress/wasm/regress-1511849.js | 2 +- .../mjsunit/regress/wasm/regress-1512426.js | 2 - .../mjsunit/regress/wasm/regress-1514072-2.js | 2 +- .../mjsunit/regress/wasm/regress-1514072.js | 2 - .../mjsunit/regress/wasm/regress-1514304.js | 2 +- .../mjsunit/regress/wasm/regress-1521371.js | 2 +- .../mjsunit/regress/wasm/regress-1523313.js | 2 +- .../mjsunit/regress/wasm/regress-1523316.js | 2 +- .../mjsunit/regress/wasm/regress-1523407.js | 2 +- .../mjsunit/regress/wasm/regress-1523414.js | 2 +- .../mjsunit/regress/wasm/regress-324475066.js | 2 +- .../mjsunit/regress/wasm/regress-324690505.js | 3 +- .../mjsunit/regress/wasm/regress-324747822.js | 1 - .../mjsunit/regress/wasm/regress-325372946.js | 2 +- .../mjsunit/regress/wasm/regress-325756545.js | 1 - .../mjsunit/regress/wasm/regress-326091470.js | 2 +- .../mjsunit/regress/wasm/regress-326260438.js | 2 +- .../mjsunit/regress/wasm/regress-326273468.js | 2 +- .../mjsunit/regress/wasm/regress-329130358.js | 4 +- .../mjsunit/regress/wasm/regress-329464129.js | 2 +- .../mjsunit/regress/wasm/regress-329706236.js | 1 - .../mjsunit/regress/wasm/regress-330580823.js | 2 +- .../mjsunit/regress/wasm/regress-331704408.js | 2 +- .../mjsunit/regress/wasm/regress-332939161.js | 2 +- .../mjsunit/regress/wasm/regress-334687959.js | 2 +- .../mjsunit/regress/wasm/regress-336007398.js | 2 +- .../mjsunit/regress/wasm/regress-336214779.js | 2 +- .../mjsunit/regress/wasm/regress-336358915.js | 2 +- .../mjsunit/regress/wasm/regress-336852356.js | 2 +- .../mjsunit/regress/wasm/regress-342602616.js | 80 + .../regress/wasm/regress-347905990-2.js | 2 - .../mjsunit/regress/wasm/regress-347961785.js | 2 +- .../mjsunit/regress/wasm/regress-349640002.js | 4 +- .../mjsunit/regress/wasm/regress-350779988.js | 2 +- .../mjsunit/regress/wasm/regress-353582136.js | 2 +- .../regress/wasm/regress-354324155-2.js | 2 +- .../mjsunit/regress/wasm/regress-354324155.js | 2 +- .../mjsunit/regress/wasm/regress-360044696.js | 2 +- .../mjsunit/regress/wasm/regress-360052650.js | 2 +- .../mjsunit/regress/wasm/regress-361123483.js | 21 + .../mjsunit/regress/wasm/regress-361611472.js | 1 - .../mjsunit/regress/wasm/regress-361717714.js | 26 + .../mjsunit/regress/wasm/regress-362539773.js | 18 + .../mjsunit/regress/wasm/regress-363826217.js | 2 +- .../mjsunit/regress/wasm/regress-364667545.js | 2 +- .../mjsunit/regress/wasm/regress-365376497.js | 33 + .../mjsunit/regress/wasm/regress-365802567.js | 50 + .../mjsunit/regress/wasm/regress-366307027.js | 15 + .../mjsunit/regress/wasm/regress-366323508.js | 17 + .../mjsunit/regress/wasm/regress-366350766.js | 13 + .../mjsunit/regress/wasm/regress-366350770.js | 16 + .../mjsunit/regress/wasm/regress-366350772.js | 23 + .../mjsunit/regress/wasm/regress-368070338.js | 14 + .../mjsunit/regress/wasm/regress-368086282.js | 46 + .../mjsunit/regress/wasm/regress-368512282.js | 22 + .../mjsunit/regress/wasm/regress-369533086.js | 36 + .../mjsunit/regress/wasm/regress-369652650.js | 13 + .../mjsunit/regress/wasm/regress-370191716.js | 26 + .../mjsunit/regress/wasm/regress-371565065.js | 73 + .../mjsunit/regress/wasm/regress-372067240.js | 16 + .../mjsunit/regress/wasm/regress-372261626.js | 21 + .../mjsunit/regress/wasm/regress-372294705.js | 11 + .../mjsunit/regress/wasm/regress-372993873.js | 12 + .../mjsunit/regress/wasm/regress-373684419.js | 11 + .../mjsunit/regress/wasm/regress-373702823.js | 29 + .../mjsunit/regress/wasm/regress-373907109.js | 25 + .../mjsunit/regress/wasm/regress-374820218.js | 8 + .../mjsunit/regress/wasm/regress-375220562.js | 11 + .../mjsunit/regress/wasm/regress-375270509.js | 23 + .../mjsunit/regress/wasm/regress-375314963.js | 24 + .../mjsunit/regress/wasm/regress-375343420.js | 35 + .../mjsunit/regress/wasm/regress-375346071.js | 21 + .../mjsunit/regress/wasm/regress-375959770.js | 46 + .../mjsunit/regress/wasm/regress-377620832.js | 89 + .../mjsunit/regress/wasm/regress-377942344.js | 19 + .../mjsunit/regress/wasm/regress-377971725.js | 16 + .../mjsunit/regress/wasm/regress-378014602.js | 19 + .../mjsunit/regress/wasm/regress-379009132.js | 17 + .../mjsunit/regress/wasm/regress-379066968.js | 19 + .../mjsunit/regress/wasm/regress-379414135.js | 20 + .../mjsunit/regress/wasm/regress-379811148.js | 40 + .../mjsunit/regress/wasm/regress-380397544.js | 55 + .../mjsunit/regress/wasm/regress-381120595.js | 29 + .../mjsunit/regress/wasm/regress-381458039.js | 64 + .../mjsunit/regress/wasm/regress-381696874.js | 84 + .../mjsunit/regress/wasm/regress-381917890.js | 23 + .../mjsunit/regress/wasm/regress-382291459.js | 82 + .../mjsunit/regress/wasm/regress-382547695.js | 19 + .../mjsunit/regress/wasm/regress-382564224.js | 18 + .../mjsunit/regress/wasm/regress-382816108.js | 7 + .../mjsunit/regress/wasm/regress-383356864.js | 70 + .../mjsunit/regress/wasm/regress-384549252.js | 30 + .../mjsunit/regress/wasm/regress-384974501.js | 18 + .../mjsunit/regress/wasm/regress-385256127.js | 18 + .../mjsunit/regress/wasm/regress-387055479.js | 27 + .../mjsunit/regress/wasm/regress-388290793.js | 27 + .../regress/wasm/regress-388934347-a.js | 13 + .../regress/wasm/regress-388934347-b.js | 19 + .../mjsunit/regress/wasm/regress-390467420.js | 18 + .../mjsunit/regress/wasm/regress-390675703.js | 26 + .../mjsunit/regress/wasm/regress-392318896.js | 24 + .../mjsunit/regress/wasm/regress-392928805.js | 18 + .../mjsunit/regress/wasm/regress-393632542.js | 49 + .../mjsunit/regress/wasm/regress-394091686.js | 23 + .../mjsunit/regress/wasm/regress-395214627.js | 25 + .../mjsunit/regress/wasm/regress-396461004.js | 8 + .../mjsunit/regress/wasm/regress-397043084.js | 46 + .../mjsunit/regress/wasm/regress-398439335.js | 25 + .../mjsunit/regress/wasm/regress-399402814.js | 14 + .../mjsunit/regress/wasm/regress-399412227.js | 20 + .../mjsunit/regress/wasm/regress-399497254.js | 21 + .../mjsunit/regress/wasm/regress-400852655.js | 50 + .../mjsunit/regress/wasm/regress-40258436.js | 1 - .../mjsunit/regress/wasm/regress-403308742.js | 6 + .../mjsunit/regress/wasm/regress-403364367.js | 19 + .../mjsunit/regress/wasm/regress-405498890.js | 30 + .../mjsunit/regress/wasm/regress-406043349.js | 14 + .../mjsunit/regress/wasm/regress-406053619.js | 36 + .../test/mjsunit/regress/wasm/regress-5531.js | 2 - .../test/mjsunit/regress/wasm/regress-5860.js | 2 - .../mjsunit/regress/wasm/regress-644682.js | 2 - .../mjsunit/regress/wasm/regress-648079.js | 2 - .../mjsunit/regress/wasm/regress-651961.js | 2 - .../mjsunit/regress/wasm/regress-654377.js | 2 - .../mjsunit/regress/wasm/regress-663994.js | 2 - .../mjsunit/regress/wasm/regress-666741.js | 2 +- .../mjsunit/regress/wasm/regress-667745.js | 2 - .../mjsunit/regress/wasm/regress-670683.js | 2 +- .../mjsunit/regress/wasm/regress-699485.js | 2 - .../mjsunit/regress/wasm/regress-709684.js | 2 +- .../mjsunit/regress/wasm/regress-737069.js | 2 - .../mjsunit/regress/wasm/regress-752423.js | 2 - .../mjsunit/regress/wasm/regress-813440.js | 2 +- .../mjsunit/regress/wasm/regress-875556.js | 2 - .../test/mjsunit/regress/wasm/regress-8947.js | 2 - .../mjsunit/regress/wasm/regress-964607.js | 2 - .../mjsunit/regress/wasm/regress-968078.js | 2 - .../regress/wasm/regress-crbug-1006631.js | 2 +- .../regress/wasm/regress-crbug-1047368.js | 4 +- .../regress/wasm/regress-crbug-1463232.js | 2 +- .../regress/wasm/regress-crbug-1466312.js | 2 +- .../regress/wasm/regress-crbug-1507663.js | 2 +- .../regress/wasm/regress-crbug-1510626.js | 2 +- .../regress/wasm/regress-crbug-772056.js | 2 - .../regress/wasm/regress-simd-391916477.js | 31 + .../regress/wasm/regress-simd-396460489.js | 22 + .../regress/wasm/regress-simd-403675482.js | 22 + .../mjsunit/regress/wasm/regress-v8-14471.js | 2 +- .../mjsunit/regress/wasm/regress-v8-14710.js | 2 +- ...learraybuffer-growablesharedarraybuffer.js | 2 +- .../mjsunit/sandbox/memory-corruption-api.js | 43 +- .../test/mjsunit/sandbox/regress-385775375.js | 35 + .../test/mjsunit/sandbox/regress-391169061.js | 96 + .../sandbox/regress/regress-329345899.js | 28 + .../sandbox/regress/regress-342297062-1.js | 33 + ...ss-342297062.js => regress-342297062-2.js} | 0 .../sandbox/regress/regress-342297062-3.js | 56 + .../sandbox/regress/regress-348084786.js | 36 + .../sandbox/regress/regress-349502157.js | 2 +- .../sandbox/regress/regress-354408144.js | 75 + .../sandbox/regress/regress-369748453-1.js | 22 + .../sandbox/regress/regress-369748453-2.js | 30 + .../sandbox/regress/regress-369748453-3.js | 52 + .../sandbox/regress/regress-376071292-1.js | 43 + .../sandbox/regress/regress-376071292-2.js | 43 + .../sandbox/regress/regress-376496315.js | 37 + .../sandbox/regress/regress-379418918.js | 36 + .../sandbox/regress/regress-379768241.js | 31 + .../sandbox/regress/regress-379774687.js | 93 + .../sandbox/regress/regress-381999810.js | 42 + .../sandbox/regress/regress-388616182.js | 34 + .../sandbox/regress/regress-392180065.js | 72 + .../sandbox/regress/regress-40070746.js | 33 + .../wasm-imports-concurrent-mutation.js | 11 +- .../mjsunit/sandbox/wasm-inlining-sigcheck.js | 4 +- .../sandbox/wasm-signature-verification.js | 2 +- .../test/mjsunit/sandbox/wasm-table-import.js | 6 +- .../mjsunit/sandbox/wasm-table-sigcheck.js | 10 +- .../sandbox/wasm-table-wasmjsfunction.js | 9 +- .../condition-async-wait-no-await.js | 27 + .../shared-memory/regress-crbug-366323424.js | 11 + .../shared-memory/regress-crbug-366643711.js | 39 + .../shared-memory/regress-crbug-371659887.js | 40 + .../test/mjsunit/shared-memory/shared-heap.js | 10 + .../shared-string-copy-on-share.js | 8 +- .../shared-memory/wasm/regress-406662636.js | 68 + .../test/mjsunit/stack-traces-class-fields.js | 1 - deps/v8/test/mjsunit/stack-traces.js | 28 + ...e_mutable_heap_slot_context_specialized.js | 117 + deps/v8/test/mjsunit/stress-delay-tasks.js | 8 + deps/v8/test/mjsunit/string-wrapper-add-3.js | 35 + deps/v8/test/mjsunit/thin-strings.js | 28 +- deps/v8/test/mjsunit/tools/foozzie.js | 14 +- .../mjsunit/tools/foozzie_arch_specific.js | 14 + .../mjsunit/turbolev/regress-402170119-1.js | 28 + .../mjsunit/turbolev/regress-402170119-2.js | 28 + ...checkmaps-with-migration-and-deopt-mono.js | 41 + ...heckmaps-with-migration-and-deopt-mono2.js | 32 + ...checkmaps-with-migration-and-deopt-poly.js | 47 + ...heckmaps-with-migration-and-deopt-poly2.js | 36 + ...heckmaps-with-migration-and-deopt-poly3.js | 41 + .../Uint8Clamped-typed-array.js | 2 +- .../maglev-frontend/add-double-property.js | 2 +- .../maglev-frontend/api-call-no-prof.js | 2 +- .../maglev-frontend/api-call-prof.js | 2 +- .../maglev-frontend/array-buffer-detached.js | 2 +- .../maglev-frontend/array-destruct.js | 2 +- .../maglev-frontend/array-double-load.js | 2 +- .../maglev-frontend/array-foreach.js | 2 +- .../array-holey-double-load.js | 2 +- .../maglev-frontend/array-load-hole.js | 2 +- .../maglev-frontend/array-oob-load.js | 2 +- ...ototype-map-array-constructor-protector.js | 46 + ...array-prototype-map-elements-kinds-dict.js | 90 + .../array-prototype-map-elements-kinds.js | 583 + .../maglev-frontend/array-push-grow.js | 2 +- .../maglev-frontend/array-push-pop.js | 2 +- .../maglev-frontend/array-smi-load.js | 2 +- .../maglev-frontend/array-transitions.js | 2 +- .../turboshaft/maglev-frontend/bitwise-smi.js | 2 +- .../maglev-frontend/branch-on-math.js | 2 +- .../builtin-continuation-deopt.js | 2 +- .../maglev-frontend/call-spread-and-args.js | 2 +- .../turboshaft/maglev-frontend/call-spread.js | 2 +- .../maglev-frontend/catch-and-return.js | 2 +- .../maglev-frontend/catch-multiple.js | 2 +- .../turboshaft/maglev-frontend/catch.js | 2 +- .../turboshaft/maglev-frontend/char-at.js | 2 +- .../char-code-at-uint32max-deopt.js | 2 +- .../maglev-frontend/check-float64-is-nan.js | 2 +- .../maglev-frontend/check-value-equals-f64.js | 2 +- .../maglev-frontend/const-tracking-let.js | 6 +- .../construct-array-feedback.js | 22 + .../maglev-frontend/construct-with-spread.js | 2 +- .../constructor-extend-null-throw.js | 2 +- .../constructor-super-called-twice.js | 2 +- .../constructor-super-not-called.js | 2 +- .../maglev-frontend/constructors.js | 2 +- .../maglev-frontend/convert-receiver.js | 2 +- .../maglev-frontend/create-array-lit.js | 2 +- .../maglev-frontend/create-closure.js | 2 +- .../maglev-frontend/create-object-lit.js | 2 +- .../maglev-frontend/create-regexp-lit.js | 2 +- .../create-shallow-array-literal.js | 2 +- .../maglev-frontend/create-shallow-literal.js | 2 +- .../turboshaft/maglev-frontend/dataview.js | 2 +- .../maglev-frontend/delete-property-sloppy.js | 2 +- .../maglev-frontend/delete-property-strict.js | 2 +- .../dematerialized-arguments-length.js | 2 +- .../dematerialized-arguments.js | 2 +- .../dematerialized-double-array.js | 2 +- .../dematerialized-duplicated-recursive.js | 2 +- .../dematerialized-duplicated.js | 2 +- .../dematerialized-heap-number.js | 2 +- ...terialized-identical-heap-number-fields.js | 2 +- .../dematerialized-multi-escape.js | 2 +- .../dematerialized-nested-objects.js | 2 +- .../maglev-frontend/dematerialized-regexp.js | 2 +- .../dematerialized-rest-length.js | 2 +- .../maglev-frontend/dematerialized-rest.js | 2 +- .../dematerialized-simple-object.js | 2 +- .../maglev-frontend/deopt-raw-float-int32.js | 2 +- .../turboshaft/maglev-frontend/eval.js | 2 +- .../exception-phis-retagging.js | 2 +- .../extend-property-backing-store-1.js | 2 +- .../extend-property-backing-store-2.js | 2 +- .../turboshaft/maglev-frontend/fact.js | 2 +- .../turboshaft/maglev-frontend/float-arith.js | 9 +- .../maglev-frontend/float64-compare.js | 2 +- .../maglev-frontend/float64-phi-osr.js | 2 +- .../maglev-frontend/float64-to-bool-branch.js | 2 +- .../maglev-frontend/float64-to-bool.js | 2 +- .../turboshaft/maglev-frontend/for-in-arr.js | 2 +- .../turboshaft/maglev-frontend/for-in-obj.js | 2 +- .../turboshaft/maglev-frontend/for-in-this.js | 2 +- .../function-apply-arguments.js | 2 +- .../maglev-frontend/function-apply.js | 2 +- .../maglev-frontend/function-call-generic.js | 2 +- .../generator-async-await-loop.js | 2 +- .../maglev-frontend/generator-async.js | 2 +- .../maglev-frontend/generator-if.js | 2 +- .../generator-infinite-loop.js | 2 +- .../maglev-frontend/generator-loop-if.js | 2 +- .../generator-loop-multi-if.js | 2 +- .../generator-loop-no-forward-edge.js | 2 +- .../generator-loop-untagged-phis.js | 2 +- .../maglev-frontend/generator-loop.js | 2 +- .../maglev-frontend/generator-nested-loops.js | 2 +- .../generator-return-finally-loop.js | 2 +- .../generator-return-finally.js | 2 +- .../maglev-frontend/generator-return.js | 2 +- .../generator-straight-line.js | 2 +- .../generator-throw-loop-2-yields.js | 2 +- .../maglev-frontend/generator-throw-loop.js | 2 +- .../generator-throw-nested-loop.js | 2 +- .../maglev-frontend/generator-throw.js | 2 +- .../generator-yield-star-loop-1.js | 2 +- .../generator-yield-star-loop-2.js | 2 +- .../maglev-frontend/generator-yield-star.js | 2 +- .../generic-binop-exception.js | 2 +- .../maglev-frontend/generic-binops-unops.js | 2 +- .../maglev-frontend/get-template-object.js | 2 +- .../has-in-prototype-chain-wasm.js | 2 +- .../maglev-frontend/has-in-prototype-chain.js | 2 +- .../maglev-frontend/holey-array-load.js | 2 +- .../maglev-frontend/holey-float64-deopt.js | 2 +- .../holey-float64-phi-deopt.js | 2 +- .../holey-float64-phi-to-smi.js | 2 +- .../maglev-frontend/ieee754-unary.js | 2 +- .../maglev-frontend/inlined-function-loop.js | 2 +- .../maglev-frontend/inner-function.js | 2 +- .../turboshaft/maglev-frontend/instanceof.js | 2 +- .../maglev-frontend/int32-compare.js | 2 +- .../javascript-builtin-continuation.js | 9 +- .../maglev-frontend/js-call-lazy-deopt.js | 2 +- .../maglev-frontend/js-call-on-receiver.js | 2 +- .../turboshaft/maglev-frontend/js-fun-call.js | 2 +- .../lazy-deopt-multi-return.js | 2 +- .../maglev-frontend/literal-nan-hole-deopt.js | 2 +- .../load-arr-with-float64-index.js | 2 +- .../maglev-frontend/load-const-string-key.js | 9 +- .../turboshaft/maglev-frontend/load-field.js | 2 +- .../load-global-inside-typeof.js | 2 +- .../turboshaft/maglev-frontend/load-global.js | 2 +- .../load-holey-double-arr-for-branch.js | 2 +- .../load-holey-double-arr-for-return.js | 2 +- .../maglev-frontend/load-named-from-super.js | 2 +- .../maglev-frontend/load-named-generic.js | 2 +- .../maglev-frontend/load-named-on-num.js | 2 +- .../loop-multiple-forward-edges-no-phi.js | 2 +- .../loop-multiple-forward-edges.js | 2 +- .../turboshaft/maglev-frontend/loop.js | 2 +- .../maglev-frontend/make-array-init-size.js | 2 +- .../make-array-no-init-size.js | 2 +- .../maglev-frontend/make-fast-arr.js | 2 +- .../maglev-frontend/make_objects.js | 2 +- .../maglev-frontend/map-migration.js | 2 +- .../turboshaft/maglev-frontend/math-round.js | 2 +- .../maglev-frontend/megamorphic-load.js | 2 +- .../mutable-heap-number-field.js | 2 +- .../maglev-frontend/nested-loop-osr-throw.js | 2 +- .../turboshaft/maglev-frontend/new-array.js | 2 +- .../turboshaft/maglev-frontend/new-derived.js | 2 +- .../maglev-frontend/new-obj-deopt.js | 2 +- .../turboshaft/maglev-frontend/new-obj.js | 5 +- .../maglev-frontend/new_obj_arr_proto.js | 2 +- .../maglev-frontend/new_obj_int_property.js | 2 +- .../maglev-frontend/no-backedge-loop.js | 2 +- .../not-initialized-let-in-switch.js | 2 +- .../maglev-frontend/number-float-truncate.js | 2 +- .../maglev-frontend/number-to-string.js | 2 +- .../mjsunit/turboshaft/maglev-frontend/osr.js | 2 +- .../over-under-application-inline.js | 2 +- .../over-under-application-not-inline.js | 2 +- .../maglev-frontend/poly-store-transition.js | 2 +- .../turboshaft/maglev-frontend/raw-abs.js | 2 +- .../maglev-frontend/regress-351177452.js | 2 +- .../maglev-frontend/regress-351219206.js | 2 +- .../maglev-frontend/regress-351283984.js | 2 +- .../maglev-frontend/regress-351418008.js | 2 +- .../maglev-frontend/regress-351418019.js | 2 +- .../maglev-frontend/regress-351576252.js | 2 +- .../maglev-frontend/regress-354145409-1.js | 2 +- .../maglev-frontend/regress-354145409-2.js | 2 +- .../maglev-frontend/regress-355016861.js | 2 +- .../maglev-frontend/regress-356194021.js | 2 +- .../maglev-frontend/regress-356436621.js | 2 +- .../maglev-frontend/regress-356649152.js | 2 +- .../maglev-frontend/regress-356720579.js | 2 +- .../maglev-frontend/regress-356901359.js | 2 +- .../maglev-frontend/regress-356913279.js | 2 +- .../maglev-frontend/regress-356913284-1.js | 2 +- .../maglev-frontend/regress-356913284-2.js | 2 +- .../maglev-frontend/regress-358461173-1.js | 28 + .../maglev-frontend/regress-358461173-2.js | 28 + .../maglev-frontend/regress-358957666.js | 18 + .../maglev-frontend/regress-359266991.js | 18 + .../maglev-frontend/regress-360207713.js | 35 + .../maglev-frontend/regress-361124378.js | 43 + .../maglev-frontend/regress-368725681.js | 16 + .../maglev-frontend/regress-372754523.js | 35 + .../maglev-frontend/regress-373025979.js | 33 + .../maglev-frontend/regress-379207983.js | 23 + .../maglev-frontend/regress-379776583.js | 40 + .../maglev-frontend/regress-385657142.js | 20 + .../maglev-frontend/regress-406054652.js | 40 + .../maglev-frontend/rest-param-length.js | 2 +- .../script-context-smi-generator.js | 19 + .../maglev-frontend/set-get-keyed-generic.js | 2 +- .../maglev-frontend/set-named-generic.js | 2 +- .../maglev-frontend/set-prototype-has.js | 41 + .../turboshaft/maglev-frontend/shift_left.js | 2 +- .../turboshaft/maglev-frontend/smi-arith.js | 2 +- .../maglev-frontend/stack-overflow.js | 2 +- .../turboshaft/maglev-frontend/store-field.js | 2 +- .../store-float-to-smi-field.js | 2 +- .../maglev-frontend/store-global.js | 2 +- .../maglev-frontend/store-jsarray.js | 2 +- .../store-uint32-to-smi-field.js | 2 +- .../turboshaft/maglev-frontend/string-cmp.js | 2 +- .../maglev-frontend/string-concat-throw.js | 2 +- .../maglev-frontend/string-concat.js | 2 +- .../maglev-frontend/string-from-charcode.js | 2 +- .../turboshaft/maglev-frontend/string-lt.js | 2 +- .../maglev-frontend/string-to-boolean.js | 2 +- .../turboshaft/maglev-frontend/switch.js | 2 +- .../turboshaft/maglev-frontend/symbol-eq.js | 2 +- .../maglev-frontend/tagged-equal.js | 2 +- .../maglev-frontend/test-undetectable.js | 5 +- .../turboshaft/maglev-frontend/throw.js | 2 +- .../turboshaft/maglev-frontend/to-boolean.js | 2 +- .../turboshaft/maglev-frontend/to-name.js | 2 +- .../maglev-frontend/to-number-int32-phi.js | 2 +- .../turboshaft/maglev-frontend/to-number.js | 2 +- .../turboshaft/maglev-frontend/to-string.js | 2 +- .../typed-array-length-all-kinds.js | 97 + .../typed-array-length-as-number-large.js | 27 + .../typed-array-length-as-number.js | 27 + ...-array-length-branch-if-to-boolean-true.js | 28 + .../typed-array-length-deopt-large.js | 22 + .../typed-array-length-deopt.js | 19 + .../typed-array-length-exception-phi.js | 41 + ...ped-array-length-index-into-array-large.js | 34 + .../typed-array-length-index-into-array.js | 34 + ...ray-length-index-into-typed-array-large.js | 32 + ...ped-array-length-index-into-typed-array.js | 29 + .../typed-array-length-iteration-large.js | 35 + .../typed-array-length-iteration.js | 37 + .../maglev-frontend/typed-array-length-phi.js | 32 + .../typed-array-length-rab-gsab.js | 24 + ...ed-array-length-store-into-global-large.js | 29 + .../typed-array-length-store-into-global.js | 30 + ...array-length-store-script-context-large.js | 29 + ...typed-array-length-store-script-context.js | 31 + .../typed-array-length-to-boolean.js | 27 + .../typed-array-length-to-number-large.js | 27 + .../typed-array-length-to-number.js | 27 + .../maglev-frontend/typed-arrays.js | 2 +- .../turboshaft/maglev-frontend/typeof-self.js | 2 +- .../turboshaft/maglev-frontend/uint32-conv.js | 2 +- .../uint8-clamped-arr-deopt.js | 2 +- .../unary_minus_smi_minus_0.js | 2 +- .../maglev-frontend/unconditional-deopt.js | 2 +- .../under-applied-builtin-call.js | 2 +- .../maglev-frontend/unreachable-catch.js | 2 +- .../maglev-frontend/write-const-glob.js | 2 +- .../mjsunit/turboshaft/math-pow-0-point-5.js | 63 + .../mjsunit/turboshaft/regress-380487911.js | 67 + .../mjsunit/turboshaft/regress-381129317.js | 26 + .../mjsunit/turboshaft/regress-382135577.js | 23 + .../mjsunit/turboshaft/regress-382547699-1.js | 24 + .../mjsunit/turboshaft/regress-382547699-2.js | 38 + .../mjsunit/turboshaft/regress-383397477.js | 19 + .../mjsunit/turboshaft/regress-391500839.js | 33 + .../mjsunit/turboshaft/regress-394402574.js | 17 + .../mjsunit/turboshaft/regress-396460487.js | 23 + ...ct-equals-receiver-or-null-or-undefined.js | 46 + ...tring-escape-analysis-exponential-state.js | 51 + ...-analysis-rematerialize-for-arguments-1.js | 28 + ...-analysis-rematerialize-for-arguments-2.js | 29 + .../turboshaft/turboshaft-frontend-test.js | 27 - deps/v8/test/mjsunit/typed-array-slice.js | 2 +- .../typedarray-constructor-mixed-bigint.js | 2 +- ...growablesharedarraybuffer-array-methods.js | 2 +- ...array-growablesharedarraybuffer-atomics.js | 2 +- .../typedarray-growablesharedarraybuffer.js | 30 +- deps/v8/test/mjsunit/typedarray-helpers.js | 10 + ...rray-resizablearraybuffer-array-methods.js | 2 +- ...typedarray-resizablearraybuffer-atomics.js | 2 +- .../typedarray-resizablearraybuffer-detach.js | 2 +- .../typedarray-resizablearraybuffer.js | 38 +- deps/v8/test/mjsunit/value-serializer.js | 2 +- deps/v8/test/mjsunit/wasm/adapter-frame.js | 2 - deps/v8/test/mjsunit/wasm/add-getters.js | 2 - deps/v8/test/mjsunit/wasm/anyfunc.js | 2 +- deps/v8/test/mjsunit/wasm/array-fill-gc.js | 74 + deps/v8/test/mjsunit/wasm/asm-wasm-copy.js | 2 - .../mjsunit/wasm/asm-wasm-math-intrinsic.js | 7 +- .../v8/test/mjsunit/wasm/asm-with-wasm-off.js | 2 +- .../mjsunit/wasm/async-compile-non-async.js | 7 + .../mjsunit/wasm/atomic-wait-multi-memory.js | 1 - deps/v8/test/mjsunit/wasm/atomics-memory64.js | 2 +- deps/v8/test/mjsunit/wasm/calls.js | 2 - .../wasm/code-flushing-single-isolate.js | 2 +- deps/v8/test/mjsunit/wasm/code-flushing.js | 2 +- .../wasm/compiled-module-management.js | 135 +- .../wasm/compiled-module-serialization.js | 2 +- deps/v8/test/mjsunit/wasm/data-segments.js | 2 - deps/v8/test/mjsunit/wasm/denormals.js | 34 + .../mjsunit/wasm/deopt/deopt-call-indirect.js | 5 +- .../mjsunit/wasm/deopt/deopt-debugging.js | 55 + .../wasm/deopt/deopt-dynamic-tierup.js | 5 +- .../wasm/deopt/deopt-feedback-states.js | 5 +- .../deopt/deopt-inlined-param-stack-slots.js | 5 +- .../wasm/deopt/deopt-inlined-stacktrace.js | 5 +- .../test/mjsunit/wasm/deopt/deopt-inlined.js | 5 +- .../mjsunit/wasm/deopt/deopt-int64-values.js | 5 +- .../wasm/deopt/deopt-large-i31ref-constant.js | 3 +- .../deopt-many-params-many-locals-s128.js | 5 +- .../wasm/deopt/deopt-many-params-tagged.js | 5 +- .../mjsunit/wasm/deopt/deopt-many-params.js | 5 +- .../mjsunit/wasm/deopt/deopt-many-results.js | 5 +- .../mjsunit/wasm/deopt/deopt-memory-access.js | 5 +- .../test/mjsunit/wasm/deopt/deopt-metrics.js | 5 +- .../test/mjsunit/wasm/deopt/deopt-minimal.js | 5 +- .../deopt-multi-instance-call-indirect.js | 86 + .../deopt-multi-instance-different-callee.js | 69 +- .../deopt/deopt-multi-instance-inlined.js | 1 - .../wasm/deopt/deopt-multi-instance.js | 3 +- .../test/mjsunit/wasm/deopt/deopt-multiple.js | 5 +- deps/v8/test/mjsunit/wasm/deopt/deopt-nan.js | 5 +- .../wasm/deopt/deopt-non-inlineable-target.js | 5 +- .../wasm/deopt/deopt-non-inlined-target.js | 5 +- .../wasm/deopt/deopt-serialized-module.js | 98 + .../wasm/deopt/deopt-signal-handler.js | 5 +- .../deopt/deopt-tail-call-parent-frame.js | 5 +- .../wasm/deopt/deopt-too-much-feedback.js | 207 + .../deopt/deopt-untagged-parameters-s128.js | 2 +- .../wasm/deopt/deopt-untagged-parameters.js | 2 +- .../mjsunit/wasm/deopt/deopt-value-types.js | 5 +- deps/v8/test/mjsunit/wasm/disallow-codegen.js | 2 +- deps/v8/test/mjsunit/wasm/divrem-trap.js | 2 +- .../test/mjsunit/wasm/empirical_max_memory.js | 2 - .../wasm/ensure-wasm-binaries-up-to-date.js | 2 - deps/v8/test/mjsunit/wasm/errors.js | 2 +- ...module-import-source-dynamic-not-found.mjs | 17 + .../wasm/esm/module-import-source-dynamic.mjs | 19 + deps/v8/test/mjsunit/wasm/exact-types.js | 128 + deps/v8/test/mjsunit/wasm/exnref-api.js | 2 +- deps/v8/test/mjsunit/wasm/exnref-global.js | 2 +- deps/v8/test/mjsunit/wasm/exnref-rethrow.js | 2 +- deps/v8/test/mjsunit/wasm/exnref.js | 33 +- deps/v8/test/mjsunit/wasm/export-table.js | 2 - deps/v8/test/mjsunit/wasm/expose-wasm.js | 7 - deps/v8/test/mjsunit/wasm/externref.js | 2 +- ...i-calls-with-wellknown-imports-conflict.js | 4 +- ...api-calls-with-wellknown-imports-floats.js | 2 +- ...st-api-calls-with-wellknown-imports-i64.js | 4 +- ...api-calls-with-wellknown-imports-tagged.js | 2 +- deps/v8/test/mjsunit/wasm/ffi-error.js | 2 - deps/v8/test/mjsunit/wasm/ffi.js | 2 +- .../mjsunit/wasm/float-constant-folding.js | 2 - deps/v8/test/mjsunit/wasm/function-names.js | 2 - .../test/mjsunit/wasm/function-prototype.js | 2 - deps/v8/test/mjsunit/wasm/gc-buffer.js | 2 +- deps/v8/test/mjsunit/wasm/gc-casts-exnref.js | 128 +- .../v8/test/mjsunit/wasm/gc-casts-from-any.js | 2 +- deps/v8/test/mjsunit/wasm/gc-casts-invalid.js | 2 +- deps/v8/test/mjsunit/wasm/gc-frame.js | 2 +- .../mjsunit/wasm/gc-js-interop-helpers.js | 6 + .../mjsunit/wasm/gc-js-interop-objects.js | 3 + .../mjsunit/wasm/gc-optimization-array-get.js | 2 +- deps/v8/test/mjsunit/wasm/gc-optimizations.js | 2 +- deps/v8/test/mjsunit/wasm/gc-stress.js | 2 +- .../wasm/generate-random-module-no-staging.js | 21 + .../mjsunit/wasm/generate-random-module.js | 2 +- deps/v8/test/mjsunit/wasm/generic-wrapper.js | 1 - deps/v8/test/mjsunit/wasm/globals.js | 2 - .../v8/test/mjsunit/wasm/graceful_shutdown.js | 2 +- .../wasm/grow-huge-memory-resizable-buffer.js | 46 + .../grow-memory-detaching-resizable-buffer.js | 104 + .../mjsunit/wasm/grow-memory-detaching.js | 2 - .../grow-memory-in-branch-resizable-buffer.js | 304 + .../mjsunit/wasm/grow-memory-in-branch.js | 2 +- .../grow-memory-in-call-resizable-buffer.js | 459 + .../test/mjsunit/wasm/grow-memory-in-call.js | 2 +- .../grow-memory-in-loop-resizable-buffer.js | 264 + .../test/mjsunit/wasm/grow-memory-in-loop.js | 2 +- .../wasm/grow-memory-resizable-buffer.js | 490 + deps/v8/test/mjsunit/wasm/grow-memory.js | 2 +- .../grow-shared-memory-resizable-buffer.js | 569 + deps/v8/test/mjsunit/wasm/growable-stacks.js | 189 +- deps/v8/test/mjsunit/wasm/import-function.js | 2 - deps/v8/test/mjsunit/wasm/import-memory.js | 2 - deps/v8/test/mjsunit/wasm/import-table.js | 2 - .../wasm/imported-strings-constants.js | 1 - .../mjsunit/wasm/imported-strings-invalid.js | 3 +- .../wasm/imported-strings-streaming.js | 2 +- .../mjsunit/wasm/imported-strings-utf8.js | 2 +- deps/v8/test/mjsunit/wasm/imported-strings.js | 22 +- deps/v8/test/mjsunit/wasm/indirect-calls.js | 2 - .../mjsunit/wasm/indirect-sig-mismatch.js | 2 - .../mjsunit/wasm/inlining-multi-instance.js | 93 + .../wasm/inlining-mutable-instance-fields.js | 1 - deps/v8/test/mjsunit/wasm/inlining.js | 2 +- deps/v8/test/mjsunit/wasm/instance-gc.js | 2 +- .../mjsunit/wasm/instance-memory-gc-stress.js | 2 +- .../mjsunit/wasm/instantiate-module-basic.js | 2 +- .../v8/test/mjsunit/wasm/interleaved-loads.js | 879 + deps/v8/test/mjsunit/wasm/js-api.js | 8 +- deps/v8/test/mjsunit/wasm/js-to-js.js | 1 + .../mjsunit/wasm/js-wrapper-typechecks.js | 2 +- .../wasm/lazy-feedback-vector-allocation.js | 2 +- .../wasm/log-wasm-to-js-wrapper-callref.js | 3 +- deps/v8/test/mjsunit/wasm/max-params.js | 27 + deps/v8/test/mjsunit/wasm/memory-control.js | 33 + .../test/mjsunit/wasm/memory-external-call.js | 2 - .../wasm/memory-huge-constant-index.js | 51 + .../wasm/memory-instance-validation.js | 2 +- ...ble-buffer-array-concat-dictionary-mode.js | 86 + .../memory-resizable-buffer-array-concat.js | 110 + .../memory-resizable-buffer-array-filter.js | 95 + ...esizable-buffer-array-flat-flatmap-from.js | 112 + ...izable-buffer-array-flat-grows-detaches.js | 63 + ...ble-buffer-array-flatmap-grows-detaches.js | 70 + ...y-resizable-buffer-array-foreach-reduce.js | 166 + ...izable-buffer-array-from-grows-detaches.js | 63 + ...memory-resizable-buffer-array-pop-shift.js | 42 + ...izable-buffer-array-push-unshift-splice.js | 43 + .../memory-resizable-buffer-array-slice.js | 93 + .../wasm/memory-resizable-buffer-errors.js | 41 + deps/v8/test/mjsunit/wasm/memory-size.js | 2 - .../wasm/memory-toresizable-tofixedlength.js | 37 + deps/v8/test/mjsunit/wasm/memory.js | 2 - deps/v8/test/mjsunit/wasm/memory64.js | 73 +- deps/v8/test/mjsunit/wasm/module-memory.js | 2 +- deps/v8/test/mjsunit/wasm/module-prototype.js | 2 +- deps/v8/test/mjsunit/wasm/module-source.js | 5 +- deps/v8/test/mjsunit/wasm/multi-memory.js | 1 - .../mjsunit/wasm/multi-memory64-memorysize.js | 1 - .../wasm/multi-memory64-wrong-offset.js | 1 - deps/v8/test/mjsunit/wasm/multi-memory64.js | 1 - .../wasm/multi-table-element-section.js | 2 - deps/v8/test/mjsunit/wasm/names.js | 2 - deps/v8/test/mjsunit/wasm/nan-constant.js | 5 +- .../test/mjsunit/wasm/origin-trial-flags.js | 1 - .../test/mjsunit/wasm/parallel_compilation.js | 2 +- deps/v8/test/mjsunit/wasm/params.js | 2 - deps/v8/test/mjsunit/wasm/receiver.js | 2 - .../v8/test/mjsunit/wasm/recognize-imports.js | 56 +- .../mjsunit/wasm/redundant-shuffle-lanes.js | 941 + .../mjsunit/wasm/reference-globals-import.js | 2 +- .../wasm/reference-table-js-interop.js | 2 +- .../serialization-with-compilation-hints.js | 2 +- .../mjsunit/wasm/shared-everything/basic.js | 12 +- .../shared-type-with-unshared-elem.js | 70 + ...ed-memory-resizable-buffer-array-concat.js | 90 + ...esizable-buffer-array-flat-flatmap-from.js | 88 + ...emory-resizable-buffer-array-flat-grows.js | 40 + ...ry-resizable-buffer-array-flatmap-grows.js | 42 + ...emory-resizable-buffer-array-from-grows.js | 42 + ...memory-resizable-buffer-array-pop-shift.js | 48 + ...izable-buffer-array-push-unshift-splice.js | 49 + ...red-memory-resizable-buffer-array-slice.js | 62 + .../shared-memory-resizable-buffer-errors.js | 15 + deps/v8/test/mjsunit/wasm/shared-memory.js | 5 +- deps/v8/test/mjsunit/wasm/shuffles.js | 123 + .../test/mjsunit/wasm/simd-lane-memory64.js | 1 - .../mjsunit/wasm/simd-wasm-interpreter.js | 237 + .../test/mjsunit/wasm/speculative-inlining.js | 3 - .../mjsunit/wasm/stack-switching-export.js | 2 +- .../wasm/stack-switching-generic-wrapper.js | 2 +- .../mjsunit/wasm/stack-switching-init-safe.js | 20 + .../mjsunit/wasm/stack-switching-no-stress.js | 109 + .../mjsunit/wasm/stack-switching-notraps.js | 89 + deps/v8/test/mjsunit/wasm/stack-switching.js | 233 +- deps/v8/test/mjsunit/wasm/stack.js | 20 +- deps/v8/test/mjsunit/wasm/stackwalk.js | 2 +- deps/v8/test/mjsunit/wasm/start-function.js | 2 - .../mjsunit/wasm/streaming-api-non-async.js | 7 + .../v8/test/mjsunit/wasm/streaming-compile.js | 2 +- .../mjsunit/wasm/streaming-error-position.js | 2 +- .../mjsunit/wasm/streaming-trap-location.js | 2 +- .../mjsunit/wasm/stringref-array-nonetype.js | 2 +- .../mjsunit/wasm/stringref-instance-type.js | 2 +- .../test/mjsunit/wasm/stringref-memory64.js | 2 +- .../test/mjsunit/wasm/stringrefs-exec-gc.js | 2 +- deps/v8/test/mjsunit/wasm/stringrefs-exec.js | 2 +- deps/v8/test/mjsunit/wasm/stringrefs-js.js | 2 +- .../mjsunit/wasm/stringrefs-regressions.js | 2 +- deps/v8/test/mjsunit/wasm/stringrefs-valid.js | 2 +- .../mjsunit/wasm/stringview-valuestack.js | 2 +- .../v8/test/mjsunit/wasm/subtyping-invalid.js | 178 + deps/v8/test/mjsunit/wasm/table-access.js | 2 - deps/v8/test/mjsunit/wasm/table-fill.js | 2 - .../test/mjsunit/wasm/table-grow-from-wasm.js | 2 - deps/v8/test/mjsunit/wasm/table.js | 2 - .../test/mjsunit/wasm/table64-callindirect.js | 1 - deps/v8/test/mjsunit/wasm/table64-copy.js | 3 +- deps/v8/test/mjsunit/wasm/table64-fill.js | 1 - deps/v8/test/mjsunit/wasm/table64-get.js | 1 - deps/v8/test/mjsunit/wasm/table64-grow.js | 1 - deps/v8/test/mjsunit/wasm/table64-import.js | 17 +- deps/v8/test/mjsunit/wasm/table64-init.js | 1 - deps/v8/test/mjsunit/wasm/table64-js-api.js | 89 + deps/v8/test/mjsunit/wasm/table64-limits.js | 41 +- deps/v8/test/mjsunit/wasm/table64-set.js | 3 +- deps/v8/test/mjsunit/wasm/table64-size.js | 1 - ...est-serialization-with-lazy-compilation.js | 2 +- .../mjsunit/wasm/test-wasm-module-builder.js | 2 - deps/v8/test/mjsunit/wasm/torque-wrapper.js | 8 + deps/v8/test/mjsunit/wasm/trap-location.js | 2 - deps/v8/test/mjsunit/wasm/turboshaft/basic.js | 2 +- .../wasm/turboshaft/br-table-analysis.js | 2 +- .../wasm/turboshaft/instruction-selection.js | 4 +- .../mjsunit/wasm/turboshaft/int64-lowering.js | 2 +- .../turboshaft/load-elimination-revisits.js | 2 +- .../wasm/turboshaft/reduction-shuffle.js | 2 +- .../wasm/turboshaft/regress-crbug-1513580.js | 1 - .../mjsunit/wasm/type-reflection-exnref.js | 2 +- .../wasm/type-reflection-other-callable.js | 36 + .../wasm/type-reflection-with-externref.js | 8 +- .../mjsunit/wasm/type-reflection-with-mv.js | 2 +- deps/v8/test/mjsunit/wasm/type-reflection.js | 561 +- .../test/mjsunit/wasm/unicode-validation.js | 2 - .../mjsunit/wasm/unreachable-validation.js | 2 - deps/v8/test/mjsunit/wasm/unreachable.js | 2 - .../mjsunit/wasm/user-properties-common.js | 2 +- .../wasm/user-properties-constructed.js | 2 +- .../mjsunit/wasm/user-properties-exported.js | 2 +- .../mjsunit/wasm/user-properties-module.js | 2 +- .../mjsunit/wasm/user-properties-reexport.js | 2 +- .../wasm/verify-module-basic-errors.js | 2 - deps/v8/test/mjsunit/wasm/wasm-gc-inlining.js | 67 +- .../wasm/wasm-inlining-catch-unreachable.js | 2 +- .../mjsunit/wasm/wasm-interpreter-fuzzer.js | 27 + .../mjsunit/wasm/wasm-interpreter-memory64.js | 239 + deps/v8/test/mjsunit/wasm/wasm-interpreter.js | 1098 +- .../test/mjsunit/wasm/wasm-math-intrinsic.js | 52 +- .../test/mjsunit/wasm/wasm-module-builder.js | 139 +- deps/v8/test/mjsunit/wasm/wasm-object-api.js | 2 - .../v8/test/mjsunit/wasm/wasm-to-js-tierup.js | 2 +- deps/v8/test/mjsunit/wasm/wasm-to-js.js | 2 +- .../wasm/wrapper-inlining-lazy-deopt.js | 156 + deps/v8/test/test262/BUILD.gn | 1 - .../built-ins/RegExp/escape/surrogate-pair.js | 9 + .../local-tests/test/staging/features.txt | 45 +- deps/v8/test/test262/prune-local-tests.sh | 17 - deps/v8/test/test262/test262.status | 929 +- deps/v8/test/test262/testcfg.py | 8 +- deps/v8/test/test262/upstream-local-tests.sh | 22 - deps/v8/test/torque/test-torque.tq | 43 +- deps/v8/test/unittests/BUILD.gn | 66 +- deps/v8/test/unittests/DEPS | 3 +- .../unittests/api/access-check-unittest.cc | 10 +- .../test/unittests/api/api-wasm-unittest.cc | 9 +- .../api/dictionary-template-unittest.cc | 2 +- .../v8/test/unittests/api/isolate-unittest.cc | 3 +- .../unittests/api/remote-object-unittest.cc | 4 +- .../api/resource-constraints-unittest.cc | 27 +- .../unittests/api/smi-tagging-unittest.cc | 79 + .../test/unittests/api/v8-array-unittest.cc | 17 +- .../test/unittests/api/v8-object-unittest.cc | 5 +- .../test/unittests/api/v8-script-unittest.cc | 334 +- .../assembler/disasm-arm-unittest.cc | 4 +- .../assembler/disasm-arm64-unittest.cc | 24 +- .../assembler/disasm-ia32-unittest.cc | 2 +- .../assembler/disasm-ppc-unittest.cc | 6 +- .../assembler/disasm-riscv-unittest.cc | 2 +- .../assembler/disasm-s390-unittest.cc | 76 - .../assembler/disasm-x64-unittest.cc | 16 +- .../assembler/macro-assembler-arm-unittest.cc | 16 +- .../macro-assembler-arm64-unittest.cc | 15 +- .../macro-assembler-ia32-unittest.cc | 6 +- .../macro-assembler-loong64-unittest.cc | 6 +- .../macro-assembler-mips64-unittest.cc | 6 +- .../assembler/macro-assembler-ppc-unittest.cc | 6 +- .../macro-assembler-riscv-unittest.cc | 6 +- .../macro-assembler-s390-unittest.cc | 6 +- .../assembler/macro-assembler-x64-unittest.cc | 6 +- .../unittests/base/atomic-utils-unittest.cc | 28 +- ...tional-unittest.cc => hashing-unittest.cc} | 61 +- .../test/unittests/base/logging-unittest.cc | 9 + .../unittests/base/platform/mutex-unittest.cc | 213 +- .../unittests/base/small-vector-unittest.cc | 2291 + .../unittests/base/string-format-unittest.cc | 23 +- .../unittests/base/template-utils-unittest.cc | 19 +- .../v8/test/unittests/base/vector-unittest.cc | 6 +- .../unittests/codegen/code-pages-unittest.cc | 47 +- .../codegen/code-stub-assembler-unittest.cc | 10 +- .../unittests/codegen/factory-unittest.cc | 4 +- .../optimizing-compile-dispatcher-unittest.cc | 22 +- .../arm/instruction-selector-arm-unittest.cc | 4 + ...shaft-instruction-selector-arm-unittest.cc | 3259 + .../instruction-selector-arm64-unittest.cc | 5968 -- ...aft-instruction-selector-arm64-unittest.cc | 995 +- .../backend/instruction-selector-unittest.cc | 20 +- .../backend/instruction-selector-unittest.h | 21 +- ...urboshaft-instruction-selector-unittest.cc | 4 +- ...turboshaft-instruction-selector-unittest.h | 19 +- .../test/unittests/compiler/codegen-tester.h | 6 +- .../unittests/compiler/compiler-unittest.cc | 110 +- .../constant-folding-reducer-unittest.cc | 20 +- .../compiler/control-equivalence-unittest.cc | 2 +- .../decompression-optimizer-unittest.cc | 6 +- .../unittests/compiler/function-tester.cc | 40 +- .../test/unittests/compiler/function-tester.h | 23 +- .../compiler/graph-reducer-unittest.cc | 25 +- .../test/unittests/compiler/graph-unittest.cc | 13 +- .../test/unittests/compiler/graph-unittest.h | 20 +- ...aft-instruction-selector-ia32-unittest.cc} | 570 +- .../compiler/int64-lowering-unittest.cc | 18 +- .../compiler/js-call-reducer-unittest.cc | 18 +- .../compiler/js-create-lowering-unittest.cc | 2 +- .../compiler/linear-scheduler-unittest.cc | 6 +- .../compiler/linkage-tail-call-unittest.cc | 2 +- ...-instruction-selector-loong64-unittest.cc} | 0 .../compiler/loop-peeling-unittest.cc | 4 +- .../machine-operator-reducer-unittest.cc | 12 +- ...t-instruction-selector-mips64-unittest.cc} | 105 +- .../compiler/node-matchers-unittest.cc | 2 +- .../unittests/compiler/node-test-utils.cc | 3 +- .../redundancy-elimination-unittest.cc | 28 +- .../regalloc/register-allocator-unittest.cc | 23 +- .../test/unittests/compiler/revec-unittest.cc | 7 +- .../instruction-selector-riscv32-unittest.cc | 1115 - ...t-instruction-selector-riscv32-unittest.cc | 36 +- .../instruction-selector-riscv64-unittest.cc | 1571 - ...t-instruction-selector-riscv64-unittest.cc | 110 +- .../run-bytecode-graph-builder-unittest.cc | 23 +- .../compiler/run-jsobjects-unittest.cc | 18 +- .../compiler/run-tail-calls-unittest.cc | 10 +- .../unittests/compiler/scheduler-unittest.cc | 13 +- .../compiler/simplified-operator-unittest.cc | 23 +- .../turboshaft/control-flow-unittest.cc | 1 - .../loop-unrolling-analyzer-unittest.cc | 70 + .../compiler/turboshaft/opmask-unittest.cc | 1 + .../compiler/turboshaft/reducer-test.h | 9 +- .../simplified-lowering-reducer-unittest.cc | 38 - .../wasm-shuffle-reducer-unittest.cc | 500 + .../compiler/turboshaft/wasm-simd-unittest.cc | 37 +- .../test/unittests/compiler/typer-unittest.cc | 26 +- .../test/unittests/compiler/types-unittest.cc | 464 +- .../value-numbering-reducer-unittest.cc | 6 +- .../x64/instruction-selector-x64-unittest.cc | 2523 - ...shaft-instruction-selector-x64-unittest.cc | 141 +- deps/v8/test/unittests/date/date-unittest.cc | 4 +- .../debug/debug-property-iterator-unittest.cc | 25 +- .../deoptimizer/deoptimization-unittest.cc | 2 +- .../diagnostics/etw-control-unittest.cc | 488 + ...late-capture-state-monitor-win-unittest.cc | 72 + .../execution/microtask-queue-unittest.cc | 52 +- .../execution/thread-termination-unittest.cc | 27 +- .../flags/flag-definitions-unittest.cc | 43 +- deps/v8/test/unittests/fuzztest.h | 6 +- .../heap/base/basic-slot-set-unittest.cc | 14 +- .../unittests/heap/base/bytes-unittest.cc | 60 +- .../incremental-marking-schedule-unittest.cc | 64 +- .../test/unittests/heap/bitmap-test-utils.h | 43 - .../conservative-stack-visitor-unittest.cc | 26 +- .../embedder-roots-handler-unittest.cc | 29 +- .../unified-heap-snapshot-unittest.cc | 139 +- .../heap/cppgc-js/unified-heap-unittest.cc | 174 +- .../heap/cppgc-js/unified-heap-utils.cc | 65 - .../heap/cppgc-js/unified-heap-utils.h | 64 +- .../cppgc-js/young-unified-heap-unittest.cc | 4 +- .../heap/cppgc/age-table-unittest.cc | 4 +- .../heap/cppgc/compactor-unittest.cc | 17 +- .../heap/cppgc/concurrent-sweeper-unittest.cc | 13 +- .../cppgc/cross-thread-persistent-unittest.cc | 2 +- .../heap/cppgc/ephemeron-pair-unittest.cc | 31 +- .../heap/cppgc/garbage-collected-unittest.cc | 5 +- .../unittests/heap/cppgc/gc-info-unittest.cc | 39 +- .../heap/cppgc/heap-object-header-unittest.cc | 4 +- .../heap/cppgc/heap-page-unittest.cc | 5 +- .../heap-statistics-collector-unittest.cc | 1 + .../unittests/heap/cppgc/marker-unittest.cc | 2 +- .../heap/cppgc/marking-verifier-unittest.cc | 42 + .../heap/cppgc/marking-visitor-unittest.cc | 24 +- .../unittests/heap/cppgc/member-unittest.cc | 89 +- .../unittests/heap/cppgc/minor-gc-unittest.cc | 4 +- .../heap/cppgc/name-trait-unittest.cc | 21 +- .../heap/cppgc/page-memory-unittest.cc | 181 +- .../heap/cppgc/prefinalizer-unittest.cc | 12 +- .../unittests/heap/cppgc/sweeper-unittest.cc | 6 +- deps/v8/test/unittests/heap/cppgc/tests.h | 8 + .../heap/cppgc/write-barrier-unittest.cc | 4 + .../unittests/heap/direct-handles-unittest.cc | 121 +- .../test/unittests/heap/gc-tracer-unittest.cc | 200 +- .../unittests/heap/global-handles-unittest.cc | 41 +- .../heap/global-safepoint-unittest.cc | 4 +- deps/v8/test/unittests/heap/heap-unittest.cc | 524 +- deps/v8/test/unittests/heap/heap-utils.cc | 28 +- deps/v8/test/unittests/heap/heap-utils.h | 38 +- .../heap/inner-pointer-resolution-unittest.cc | 22 +- deps/v8/test/unittests/heap/list-unittest.cc | 43 +- .../unittests/heap/local-factory-unittest.cc | 2 +- .../unittests/heap/local-handles-unittest.cc | 4 +- ...unittest.cc => marking-bitmap-unittest.cc} | 31 +- .../heap/marking-progress-tracker-unittest.cc | 87 + .../test/unittests/heap/marking-unittest.cc | 34 - .../unittests/heap/memory-reducer-unittest.cc | 28 + .../heap/persistent-handles-unittest.cc | 6 +- deps/v8/test/unittests/heap/pool-unittest.cc | 30 +- .../unittests/heap/progressbar-unittest.cc | 72 - .../unittests/heap/shared-heap-unittest.cc | 24 +- .../v8/test/unittests/heap/spaces-unittest.cc | 38 + .../heap/strong-root-allocator-unittest.cc | 28 +- .../unittests/inspector/inspector-unittest.cc | 18 +- .../bytecode-array-builder-unittest.cc | 88 +- .../bytecode-expectations-printer.cc | 8 +- .../AsyncGenerators.golden | 138 +- .../bytecode_expectations/AsyncModules.golden | 36 +- .../bytecode_expectations/ForAwaitOf.golden | 16 +- .../bytecode_expectations/ForOfLoop.golden | 8 +- .../PrivateAccessorAccess.golden | 8 +- .../PrivateMethodAccess.golden | 4 +- .../StandardForLoop.golden | 8 +- .../StaticPrivateMethodAccess.golden | 30 +- .../constant-array-builder-unittest.cc | 4 +- .../generate-bytecode-expectations.cc | 7 +- .../interpreter-intrinsics-unittest.cc | 10 +- .../interpreter/interpreter-tester.cc | 12 +- .../interpreter/interpreter-tester.h | 17 +- .../interpreter/interpreter-unittest.cc | 128 +- ...mics-synchronization-primitive-unittest.cc | 4 +- .../libplatform/default-platform-unittest.cc | 3 +- .../signals-and-mutexes-unittest.cc | 36 +- .../v8/test/unittests/logging/log-unittest.cc | 14 +- .../maglev/maglev-assembler-unittest.cc | 4 +- deps/v8/test/unittests/maglev/maglev-test.cc | 10 +- deps/v8/test/unittests/maglev/maglev-test.h | 2 +- .../unittests/maglev/node-type-unittest.cc | 161 +- .../test/unittests/numbers/bigint-unittest.cc | 4 +- .../unittests/numbers/conversions-unittest.cc | 22 +- .../unittests/objects/array-list-unittest.cc | 11 +- .../concurrent-descriptor-array-unittest.cc | 27 +- .../concurrent-feedback-vector-unittest.cc | 35 +- .../objects/concurrent-prototype-unittest.cc | 29 +- ...oncurrent-script-context-table-unittest.cc | 8 +- .../objects/concurrent-string-unittest.cc | 18 +- .../concurrent-transition-array-unittest.cc | 12 +- .../unittests/objects/dictionary-unittest.cc | 26 +- .../objects/elements-kind-unittest.cc | 186 +- .../objects/feedback-vector-unittest.cc | 10 +- .../unittests/objects/hashcode-unittest.cc | 8 +- .../test/unittests/objects/intl-unittest.cc | 40 +- .../unittests/objects/managed-unittest.cc | 21 +- .../unittests/objects/modules-unittest.cc | 101 +- .../test/unittests/objects/object-unittest.cc | 20 +- .../objects/value-serializer-unittest.cc | 40 +- .../unittests/objects/weakmaps-unittest.cc | 51 +- .../unittests/objects/weaksets-unittest.cc | 12 +- .../test/unittests/parser/decls-unittest.cc | 22 +- .../test/unittests/parser/parsing-unittest.cc | 477 +- .../unittests/parser/preparser-unittest.cc | 2 +- .../parser/scanner-streams-unittest.cc | 148 +- .../v8/test/unittests/regexp/regexp-fuzzer.cc | 16 +- .../test/unittests/regexp/regexp-unittest.cc | 210 +- .../regress/regress-crbug-1056054-unittest.cc | 2 +- .../runtime/runtime-debug-unittest.cc | 22 +- .../sandbox/pointer-table-unittest.cc | 99 + .../unittests/sandbox/sandbox-unittest.cc | 7 + .../unittests/strings/unicode-unittest.cc | 6 +- .../tasks/background-compile-task-unittest.cc | 3 +- .../temporal/temporal-parser-unittest.cc | 20 +- deps/v8/test/unittests/test-helpers.cc | 4 +- deps/v8/test/unittests/test-utils.cc | 8 +- deps/v8/test/unittests/test-utils.h | 46 +- deps/v8/test/unittests/testcfg.py | 2 + .../test/unittests/torque/torque-unittest.cc | 3 +- deps/v8/test/unittests/unittests.status | 20 +- .../unittests/utils/identity-map-unittest.cc | 13 +- deps/v8/test/unittests/wasm/DIR_METADATA | 5 +- .../wasm/function-body-decoder-unittest.cc | 772 +- .../wasm/memory-protection-unittest.cc | 13 +- .../wasm/module-decoder-memory64-unittest.cc | 17 +- .../wasm/module-decoder-table64-unittest.cc | 85 +- .../unittests/wasm/module-decoder-unittest.cc | 305 +- .../unittests/wasm/simd-shuffle-unittest.cc | 236 +- .../unittests/wasm/struct-types-unittest.cc | 21 +- .../test/unittests/wasm/subtyping-unittest.cc | 658 +- .../wasm/trap-handler-native-unittest.cc | 96 +- .../wasm/trap-handler-simulator-unittest.cc | 8 +- .../wasm/type-canonicalization-fuzztest.cc | 286 + .../wasm/wasm-code-pointer-table-unittest.cc | 4 +- .../test/unittests/wasm/wasm-compile-module.h | 95 + .../test/unittests/wasm/wasm-usecounters.cc | 121 + deps/v8/test/wasm-api-tests/callbacks.cc | 121 +- deps/v8/test/wasm-api-tests/finalize.cc | 33 +- deps/v8/test/wasm-api-tests/globals.cc | 68 +- deps/v8/test/wasm-api-tests/hostref.cc | 42 +- deps/v8/test/wasm-api-tests/memory.cc | 20 +- deps/v8/test/wasm-api-tests/multi-return.cc | 13 +- deps/v8/test/wasm-api-tests/reflect.cc | 30 +- deps/v8/test/wasm-api-tests/regressions.cc | 4 +- deps/v8/test/wasm-api-tests/serialize.cc | 8 +- deps/v8/test/wasm-api-tests/startup-errors.cc | 12 +- deps/v8/test/wasm-api-tests/table.cc | 19 +- deps/v8/test/wasm-api-tests/threads.cc | 18 +- deps/v8/test/wasm-api-tests/traps.cc | 36 +- deps/v8/test/wasm-api-tests/wasm-api-test.h | 22 +- deps/v8/test/wasm-js/testcfg.py | 17 +- deps/v8/test/wasm-js/tests.tar.gz.sha1 | 2 +- deps/v8/test/wasm-js/wasm-js.status | 77 +- deps/v8/test/wasm-spec-tests/DIR_METADATA | 5 +- deps/v8/test/wasm-spec-tests/testcfg.py | 29 +- .../v8/test/wasm-spec-tests/tests.tar.gz.sha1 | 2 +- .../wasm-spec-tests/wasm-spec-tests.status | 153 +- deps/v8/test/webkit/stack-overflow-catch.js | 4 +- deps/v8/test/webkit/webkit.status | 4 +- deps/v8/third_party/abseil-cpp/BUILD.gn | 36 +- .../abseil-cpp/CMake/AbseilDll.cmake | 33 +- .../abseil-cpp/CMake/AbseilHelpers.cmake | 6 +- .../v8/third_party/abseil-cpp/CMake/README.md | 4 +- deps/v8/third_party/abseil-cpp/CMakeLists.txt | 25 +- deps/v8/third_party/abseil-cpp/MODULE.bazel | 33 +- .../v8/third_party/abseil-cpp/README.chromium | 6 +- deps/v8/third_party/abseil-cpp/README.md | 14 +- deps/v8/third_party/abseil-cpp/WORKSPACE | 63 - .../third_party/abseil-cpp/WORKSPACE.bzlmod | 19 - deps/v8/third_party/abseil-cpp/absl.gni | 46 +- .../third_party/abseil-cpp/absl/BUILD.bazel | 93 +- .../abseil-cpp/absl/abseil.podspec.gen.py | 9 +- .../abseil-cpp/absl/algorithm/BUILD.bazel | 8 +- .../abseil-cpp/absl/algorithm/container.h | 6 +- .../absl/algorithm/container_test.cc | 2 + .../abseil-cpp/absl/base/BUILD.bazel | 213 +- .../third_party/abseil-cpp/absl/base/BUILD.gn | 78 +- .../abseil-cpp/absl/base/CMakeLists.txt | 87 +- .../abseil-cpp/absl/base/attributes.h | 90 +- .../abseil-cpp/absl/base/attributes_test.cc | 43 + .../abseil-cpp/absl/base/call_once.h | 17 +- .../third_party/abseil-cpp/absl/base/config.h | 133 +- .../base/exception_safety_testing_test.cc | 4 - .../absl/base/inline_variable_test.cc | 64 - .../absl/base/internal/cycleclock.cc | 5 - .../absl/base/internal/cycleclock_config.h | 14 +- .../abseil-cpp/absl/base/internal/endian.h | 48 +- .../absl/base/internal/fast_type_id.h | 5 - .../absl/base/internal/inline_variable.h | 108 - .../base/internal/inline_variable_testing.h | 46 - .../abseil-cpp/absl/base/internal/invoke.h | 241 - .../absl/base/internal/iterator_traits.h | 71 + .../base/internal/iterator_traits_test.cc | 85 + .../internal/iterator_traits_test_helper.h | 97 + .../absl/base/internal/nullability_impl.h | 73 +- .../abseil-cpp/absl/base/internal/spinlock.cc | 9 - .../abseil-cpp/absl/base/internal/spinlock.h | 16 +- .../internal/thread_identity_benchmark.cc | 2 +- .../absl/base/internal/unscaledcycleclock.cc | 10 - .../absl/base/internal/unscaledcycleclock.h | 12 + .../abseil-cpp/absl/base/invoke_test.cc | 331 - .../third_party/abseil-cpp/absl/base/macros.h | 17 +- .../abseil-cpp/absl/base/no_destructor.h | 29 +- .../absl/base/no_destructor_test.cc | 4 - .../abseil-cpp/absl/base/nullability.h | 189 +- .../abseil-cpp/absl/base/nullability_test.cc | 73 +- .../abseil-cpp/absl/base/optimization.h | 20 +- .../abseil-cpp/absl/base/optimization_test.cc | 28 +- .../abseil-cpp/absl/base/options.h | 81 +- .../abseil-cpp/absl/base/policy_checks.h | 16 +- .../abseil-cpp/absl/cleanup/BUILD.bazel | 5 +- .../abseil-cpp/absl/cleanup/BUILD.gn | 1 - .../abseil-cpp/absl/cleanup/CMakeLists.txt | 1 - .../abseil-cpp/absl/cleanup/cleanup.h | 4 +- .../abseil-cpp/absl/cleanup/cleanup_test.cc | 2 - .../absl/cleanup/internal/cleanup.h | 7 +- .../abseil-cpp/absl/container/BUILD.bazel | 151 +- .../abseil-cpp/absl/container/BUILD.gn | 52 +- .../abseil-cpp/absl/container/CMakeLists.txt | 27 + .../absl/container/btree_benchmark.cc | 60 +- .../abseil-cpp/absl/container/btree_map.h | 6 +- .../abseil-cpp/absl/container/btree_set.h | 6 +- .../abseil-cpp/absl/container/btree_test.cc | 94 +- .../abseil-cpp/absl/container/fixed_array.h | 21 +- .../absl/container/fixed_array_test.cc | 25 +- .../absl/container/flat_hash_map_test.cc | 29 +- .../abseil-cpp/absl/container/flat_hash_set.h | 2 +- .../absl/container/flat_hash_set_test.cc | 92 + .../absl/container/inlined_vector.h | 12 +- .../absl/container/inlined_vector_test.cc | 107 +- .../absl/container/internal/btree.h | 159 +- .../absl/container/internal/btree_container.h | 242 +- .../absl/container/internal/common.h | 43 + .../container/internal/common_policy_traits.h | 12 +- .../internal/compressed_tuple_test.cc | 14 - .../container/internal/container_memory.h | 19 +- .../internal/hash_generator_testing.h | 14 +- .../container/internal/hash_policy_traits.h | 4 - .../internal/hashtable_control_bytes.h | 527 + .../container/internal/hashtablez_sampler.cc | 24 +- .../container/internal/hashtablez_sampler.h | 43 +- .../absl/container/internal/inlined_vector.h | 15 +- .../absl/container/internal/layout.h | 70 +- .../absl/container/internal/raw_hash_map.h | 267 +- .../absl/container/internal/raw_hash_set.cc | 1109 +- .../absl/container/internal/raw_hash_set.h | 2294 +- .../container/internal/raw_hash_set_test.cc | 694 +- .../abseil-cpp/absl/container/node_hash_map.h | 9 +- .../absl/container/node_hash_map_test.cc | 3 - .../abseil-cpp/absl/container/node_hash_set.h | 9 +- .../container/sample_element_size_test.cc | 11 +- .../absl/copts/AbseilConfigureCopts.cmake | 2 +- .../absl/copts/GENERATED_AbseilCopts.cmake | 22 +- .../abseil-cpp/absl/copts/GENERATED_copts.bzl | 22 +- .../abseil-cpp/absl/copts/configure_copts.bzl | 65 +- .../abseil-cpp/absl/copts/copts.py | 46 +- .../abseil-cpp/absl/crc/BUILD.bazel | 19 +- .../third_party/abseil-cpp/absl/crc/BUILD.gn | 1 + .../abseil-cpp/absl/crc/CMakeLists.txt | 1 + .../third_party/abseil-cpp/absl/crc/crc32c.cc | 4 - .../third_party/abseil-cpp/absl/crc/crc32c.h | 12 +- .../abseil-cpp/absl/crc/crc32c_benchmark.cc | 21 +- .../absl/crc/internal/cpu_detect.cc | 56 + .../internal/crc32_x86_arm_combined_simd.h | 22 - .../absl/crc/internal/crc_x86_arm_combined.cc | 119 +- .../absl/crc/internal/non_temporal_memcpy.h | 28 +- .../crc/internal/non_temporal_memcpy_test.cc | 2 + .../abseil-cpp/absl/debugging/BUILD.bazel | 63 +- .../abseil-cpp/absl/debugging/BUILD.gn | 12 +- .../abseil-cpp/absl/debugging/CMakeLists.txt | 3 + .../absl/debugging/failure_signal_handler.cc | 37 +- .../absl/debugging/internal/addresses.h | 57 + .../absl/debugging/internal/demangle.cc | 17 +- .../absl/debugging/internal/demangle_rust.cc | 32 +- .../absl/debugging/internal/demangle_test.cc | 7 + .../absl/debugging/internal/elf_mem_image.h | 2 +- .../internal/stacktrace_aarch64-inl.inc | 20 +- .../debugging/internal/stacktrace_arm-inl.inc | 23 +- .../internal/stacktrace_emscripten-inl.inc | 15 +- .../internal/stacktrace_generic-inl.inc | 14 +- .../internal/stacktrace_powerpc-inl.inc | 41 +- .../internal/stacktrace_riscv-inl.inc | 26 +- .../internal/stacktrace_unimplemented-inl.inc | 7 +- .../internal/stacktrace_win32-inl.inc | 14 +- .../debugging/internal/stacktrace_x86-inl.inc | 26 +- .../abseil-cpp/absl/debugging/leak_check.cc | 4 +- .../abseil-cpp/absl/debugging/stacktrace.cc | 85 +- .../abseil-cpp/absl/debugging/stacktrace.h | 59 +- .../absl/debugging/stacktrace_test.cc | 100 +- .../abseil-cpp/absl/debugging/symbolize.cc | 5 +- .../absl/debugging/symbolize_elf.inc | 57 +- .../abseil-cpp/absl/flags/BUILD.bazel | 50 +- .../abseil-cpp/absl/flags/BUILD.gn | 6 + .../abseil-cpp/absl/flags/CMakeLists.txt | 6 + .../abseil-cpp/absl/flags/commandlineflag.cc | 1 + .../abseil-cpp/absl/flags/commandlineflag.h | 7 + .../third_party/abseil-cpp/absl/flags/flag.h | 30 +- .../abseil-cpp/absl/flags/flag_test.cc | 4 +- .../abseil-cpp/absl/flags/internal/flag.cc | 16 +- .../abseil-cpp/absl/flags/internal/flag.h | 28 +- .../flags/internal/private_handle_accessor.cc | 4 + .../flags/internal/private_handle_accessor.h | 3 + .../absl/flags/internal/program_name.cc | 25 +- .../abseil-cpp/absl/flags/internal/registry.h | 4 +- .../abseil-cpp/absl/flags/internal/usage.cc | 27 +- .../abseil-cpp/absl/flags/parse.cc | 37 +- .../abseil-cpp/absl/flags/reflection.cc | 5 +- .../abseil-cpp/absl/flags/usage_config.cc | 13 +- .../abseil-cpp/absl/functional/BUILD.bazel | 26 +- .../abseil-cpp/absl/functional/BUILD.gn | 4 - .../abseil-cpp/absl/functional/CMakeLists.txt | 4 - .../absl/functional/any_invocable.h | 18 +- .../absl/functional/any_invocable_test.cc | 44 +- .../absl/functional/bind_front_test.cc | 4 - .../abseil-cpp/absl/functional/function_ref.h | 3 +- .../functional/function_type_benchmark.cc | 2 +- .../absl/functional/internal/any_invocable.h | 336 +- .../absl/functional/internal/front_binder.h | 22 +- .../absl/functional/internal/function_ref.h | 7 +- .../abseil-cpp/absl/functional/overload.h | 20 - .../absl/functional/overload_test.cc | 8 +- .../abseil-cpp/absl/hash/BUILD.bazel | 28 +- .../third_party/abseil-cpp/absl/hash/BUILD.gn | 8 +- .../abseil-cpp/absl/hash/CMakeLists.txt | 8 +- .../third_party/abseil-cpp/absl/hash/hash.h | 28 +- .../abseil-cpp/absl/hash/hash_benchmark.cc | 61 + .../abseil-cpp/absl/hash/hash_test.cc | 110 +- .../abseil-cpp/absl/hash/hash_testing.h | 54 +- .../abseil-cpp/absl/hash/internal/hash.cc | 32 +- .../abseil-cpp/absl/hash/internal/hash.h | 291 +- .../absl/hash/internal/low_level_hash.cc | 93 +- .../absl/hash/internal/low_level_hash.h | 8 +- .../absl/hash/internal/low_level_hash_test.cc | 183 +- .../absl/hash/internal/spy_hash_state.h | 8 + .../abseil-cpp/absl/log/BUILD.bazel | 80 +- .../third_party/abseil-cpp/absl/log/BUILD.gn | 4 +- .../abseil-cpp/absl/log/CMakeLists.txt | 58 +- .../abseil-cpp/absl/log/check_test_impl.inc | 8 - .../abseil-cpp/absl/log/die_if_null.h | 4 +- .../third_party/abseil-cpp/absl/log/globals.h | 9 +- .../abseil-cpp/absl/log/globals_test.cc | 9 + .../abseil-cpp/absl/log/internal/BUILD.bazel | 100 +- .../abseil-cpp/absl/log/internal/BUILD.gn | 40 +- .../abseil-cpp/absl/log/internal/check_op.cc | 81 +- .../abseil-cpp/absl/log/internal/check_op.h | 180 +- .../absl/log/internal/conditions.cc | 8 +- .../abseil-cpp/absl/log/internal/conditions.h | 9 +- .../absl/log/internal/fnmatch_test.cc | 1 + .../absl/log/internal/log_message.cc | 144 +- .../absl/log/internal/log_message.h | 180 +- .../abseil-cpp/absl/log/internal/nullstream.h | 1 + .../abseil-cpp/absl/log/internal/proto.cc | 8 +- .../abseil-cpp/absl/log/internal/proto.h | 46 +- .../abseil-cpp/absl/log/internal/strip.h | 16 +- .../abseil-cpp/absl/log/internal/structured.h | 108 +- .../absl/log/internal/structured_proto.cc | 115 + .../absl/log/internal/structured_proto.h | 107 + .../log/internal/structured_proto_test.cc | 120 + .../absl/log/internal/vlog_config.cc | 9 +- .../absl/log/internal/vlog_config.h | 5 +- .../abseil-cpp/absl/log/internal/voidify.h | 14 +- deps/v8/third_party/abseil-cpp/absl/log/log.h | 83 +- .../absl/log/log_basic_test_impl.inc | 64 +- .../abseil-cpp/absl/log/log_entry.cc | 41 - .../abseil-cpp/absl/log/log_format_test.cc | 641 +- .../absl/log/log_modifier_methods_test.cc | 37 +- .../abseil-cpp/absl/log/log_sink_registry.h | 7 +- .../abseil-cpp/absl/log/log_streamer_test.cc | 189 +- .../abseil-cpp/absl/log/scoped_mock_log.h | 4 +- .../abseil-cpp/absl/log/structured.h | 7 +- .../abseil-cpp/absl/log/structured_test.cc | 9 +- .../abseil-cpp/absl/log/vlog_is_on_test.cc | 75 +- .../abseil-cpp/absl/memory/BUILD.bazel | 4 +- .../abseil-cpp/absl/meta/BUILD.bazel | 4 +- .../abseil-cpp/absl/meta/type_traits.h | 209 +- .../abseil-cpp/absl/meta/type_traits_test.cc | 453 +- .../abseil-cpp/absl/numeric/BUILD.bazel | 18 +- .../abseil-cpp/absl/numeric/BUILD.gn | 1 + .../abseil-cpp/absl/numeric/CMakeLists.txt | 2 + .../abseil-cpp/absl/numeric/bits.h | 70 +- .../abseil-cpp/absl/numeric/bits_benchmark.cc | 2 +- .../abseil-cpp/absl/numeric/bits_test.cc | 56 + .../abseil-cpp/absl/numeric/int128.cc | 52 - .../abseil-cpp/absl/numeric/int128.h | 18 +- .../absl/numeric/int128_benchmark.cc | 2 +- .../absl/numeric/int128_have_intrinsic.inc | 10 +- .../absl/numeric/int128_no_intrinsic.inc | 9 +- .../abseil-cpp/absl/numeric/int128_test.cc | 109 +- .../abseil-cpp/absl/numeric/internal/bits.h | 10 +- .../abseil-cpp/absl/profiling/BUILD.bazel | 14 +- .../profiling/internal/exponential_biased.cc | 2 +- .../abseil-cpp/absl/random/BUILD.bazel | 87 +- .../abseil-cpp/absl/random/BUILD.gn | 12 +- .../abseil-cpp/absl/random/CMakeLists.txt | 47 +- .../abseil-cpp/absl/random/benchmarks.cc | 41 +- .../absl/random/bernoulli_distribution.h | 4 +- .../absl/random/beta_distribution.h | 4 +- .../abseil-cpp/absl/random/bit_gen_ref.h | 13 +- .../absl/random/bit_gen_ref_test.cc | 7 +- .../absl/random/discrete_distribution.cc | 10 + .../absl/random/discrete_distribution.h | 6 +- .../abseil-cpp/absl/random/distributions.h | 14 +- .../absl/random/distributions_test.cc | 18 +- .../abseil-cpp/absl/random/examples_test.cc | 1 - .../absl/random/exponential_distribution.h | 1 + .../absl/random/gaussian_distribution.h | 3 +- .../abseil-cpp/absl/random/generators_test.cc | 1 - .../absl/random/internal/BUILD.bazel | 203 +- .../abseil-cpp/absl/random/internal/BUILD.gn | 45 +- .../absl/random/internal/chi_square.cc | 9 +- .../absl/random/internal/chi_square_test.cc | 3 +- .../random/internal/distribution_caller.h | 12 +- .../random/internal/distribution_test_util.h | 6 +- .../{pool_urbg.cc => entropy_pool.cc} | 83 +- .../internal/entropy_pool.h} | 20 +- .../absl/random/internal/entropy_pool_test.cc | 119 + .../random/internal/explicit_seed_seq_test.cc | 8 +- .../gaussian_distribution_gentables.cc | 3 +- .../random/internal/iostream_state_saver.h | 7 +- .../absl/random/internal/mock_helpers.h | 6 +- .../absl/random/internal/mock_overload_set.h | 12 +- .../absl/random/internal/nonsecure_base.h | 11 +- .../random/internal/nonsecure_base_test.cc | 48 +- .../absl/random/internal/platform.h | 24 +- .../absl/random/internal/pool_urbg.h | 131 - .../absl/random/internal/pool_urbg_test.cc | 182 - .../absl/random/internal/randen_benchmarks.cc | 17 +- .../absl/random/internal/randen_detect.cc | 63 +- .../absl/random/internal/randen_engine.h | 3 +- .../absl/random/internal/randen_hwaes_test.cc | 2 +- .../random/internal/salted_seed_seq_test.cc | 8 +- .../absl/random/internal/seed_material.cc | 32 +- .../absl/random/internal/seed_material.h | 10 +- .../random/internal/seed_material_test.cc | 3 + .../absl/random/internal/traits_test.cc | 13 +- .../absl/random/internal/uniform_helper.h | 4 +- .../absl/random/internal/wide_multiply.h | 1 - .../random/log_uniform_int_distribution.h | 5 +- .../log_uniform_int_distribution_test.cc | 4 +- .../absl/random/mock_distributions.h | 4 +- .../absl/random/mock_distributions_test.cc | 19 +- .../abseil-cpp/absl/random/mocking_bit_gen.h | 125 +- .../absl/random/poisson_distribution.h | 7 +- .../absl/random/poisson_distribution_test.cc | 1 - .../abseil-cpp/absl/random/random.h | 141 +- .../absl/random/seed_gen_exception.cc | 5 +- .../abseil-cpp/absl/random/seed_sequences.cc | 8 +- .../abseil-cpp/absl/random/seed_sequences.h | 3 +- .../absl/random/uniform_int_distribution.h | 3 +- .../random/uniform_int_distribution_test.cc | 4 +- .../absl/random/uniform_real_distribution.h | 2 + .../random/uniform_real_distribution_test.cc | 2 +- .../absl/random/zipf_distribution.h | 9 +- .../absl/random/zipf_distribution_test.cc | 12 +- .../abseil-cpp/absl/status/BUILD.bazel | 38 +- .../abseil-cpp/absl/status/BUILD.gn | 6 +- .../abseil-cpp/absl/status/CMakeLists.txt | 3 +- .../absl/status/internal/status_internal.cc | 12 +- .../absl/status/internal/status_internal.h | 2 +- .../absl/status/internal/status_matchers.cc | 7 +- .../abseil-cpp/absl/status/status.cc | 4 - .../abseil-cpp/absl/status/status.h | 4 - .../status_benchmark.cc} | 30 +- .../absl/status/status_matchers_test.cc | 42 + .../abseil-cpp/absl/status/statusor.h | 2 +- .../absl/status/statusor_benchmark.cc | 480 + .../abseil-cpp/absl/strings/BUILD.bazel | 322 +- .../abseil-cpp/absl/strings/BUILD.gn | 136 +- .../abseil-cpp/absl/strings/CMakeLists.txt | 6 +- .../abseil-cpp/absl/strings/ascii.cc | 46 +- .../abseil-cpp/absl/strings/ascii.h | 46 +- .../absl/strings/ascii_benchmark.cc | 11 +- .../abseil-cpp/absl/strings/ascii_test.cc | 8 + .../abseil-cpp/absl/strings/charconv.cc | 23 +- .../absl/strings/charconv_benchmark.cc | 3 +- .../abseil-cpp/absl/strings/charset.h | 7 +- .../absl/strings/charset_benchmark.cc | 2 +- .../abseil-cpp/absl/strings/cord.cc | 10 +- .../abseil-cpp/absl/strings/cord.h | 19 +- .../abseil-cpp/absl/strings/cord_buffer.cc | 30 - .../abseil-cpp/absl/strings/escaping.cc | 104 +- .../abseil-cpp/absl/strings/escaping.h | 4 +- .../absl/strings/escaping_benchmark.cc | 62 +- .../absl/strings/internal/charconv_bigint.cc | 2 +- .../absl/strings/internal/charconv_bigint.h | 2 +- .../absl/strings/internal/cord_internal.h | 31 +- .../absl/strings/internal/cord_rep_btree.cc | 4 - .../absl/strings/internal/cordz_info.cc | 4 - .../damerau_levenshtein_distance_benchmark.cc | 56 + .../strings/internal/memutil_benchmark.cc | 5 +- .../internal/ostringstream_benchmark.cc | 3 +- .../strings/internal/str_format/extension.cc | 22 - .../internal/str_format/float_conversion.cc | 5 +- .../strings/internal/str_format/output.cc | 8 +- .../absl/strings/internal/str_format/parser.h | 6 +- .../absl/strings/internal/str_join_internal.h | 6 +- .../strings/internal/str_split_internal.h | 35 + .../absl/strings/internal/string_constant.h | 5 - .../abseil-cpp/absl/strings/match.h | 32 +- .../abseil-cpp/absl/strings/numbers.cc | 28 +- .../abseil-cpp/absl/strings/numbers.h | 118 +- .../absl/strings/numbers_benchmark.cc | 2 +- .../abseil-cpp/absl/strings/numbers_test.cc | 726 +- .../abseil-cpp/absl/strings/str_cat.h | 33 +- .../absl/strings/str_cat_benchmark.cc | 26 +- .../abseil-cpp/absl/strings/str_cat_test.cc | 15 +- .../abseil-cpp/absl/strings/str_format.h | 12 +- .../absl/strings/str_format_test.cc | 16 +- .../absl/strings/str_join_benchmark.cc | 5 +- .../abseil-cpp/absl/strings/str_replace.h | 2 +- .../absl/strings/str_replace_benchmark.cc | 5 +- .../abseil-cpp/absl/strings/str_split.h | 19 +- .../absl/strings/str_split_benchmark.cc | 5 +- .../abseil-cpp/absl/strings/str_split_test.cc | 46 + .../abseil-cpp/absl/strings/string_view.cc | 5 - .../abseil-cpp/absl/strings/string_view.h | 45 +- .../absl/strings/string_view_benchmark.cc | 5 +- .../absl/strings/string_view_test.cc | 26 +- .../abseil-cpp/absl/strings/strip.h | 19 +- .../abseil-cpp/absl/strings/substitute.h | 22 +- .../absl/strings/substitute_benchmark.cc | 158 + .../absl/synchronization/BUILD.bazel | 50 +- .../abseil-cpp/absl/synchronization/BUILD.gn | 1 + .../absl/synchronization/CMakeLists.txt | 1 + .../synchronization/internal/futex_waiter.cc | 4 - .../internal/graphcycles_benchmark.cc | 5 +- .../internal/graphcycles_test.cc | 11 +- .../internal/kernel_timeout.cc | 5 - .../internal/pthread_waiter.cc | 4 - .../synchronization/internal/sem_waiter.cc | 4 - .../synchronization/internal/stdcpp_waiter.cc | 4 - .../synchronization/internal/waiter_base.cc | 4 - .../synchronization/internal/waiter_test.cc | 3 + .../synchronization/internal/win32_waiter.cc | 4 - .../abseil-cpp/absl/synchronization/mutex.cc | 52 +- .../abseil-cpp/absl/synchronization/mutex.h | 22 +- .../absl/synchronization/mutex_test.cc | 4 +- .../absl/synchronization/notification.h | 2 +- .../absl/synchronization/notification_test.cc | 6 +- .../abseil-cpp/absl/time/BUILD.bazel | 17 +- .../third_party/abseil-cpp/absl/time/BUILD.gn | 1 + .../abseil-cpp/absl/time/CMakeLists.txt | 1 + .../abseil-cpp/absl/time/civil_time.cc | 1 + .../abseil-cpp/absl/time/civil_time_test.cc | 134 + .../abseil-cpp/absl/time/duration.cc | 76 +- .../abseil-cpp/absl/time/duration_test.cc | 3 + .../absl/time/internal/cctz/BUILD.bazel | 39 +- .../absl/time/internal/cctz/BUILD.gn | 4 + .../time/internal/cctz/src/cctz_benchmark.cc | 2 +- .../time/internal/cctz/src/time_zone_fixed.cc | 2 +- .../internal/cctz/src/time_zone_format.cc | 2 +- .../time/internal/cctz/src/time_zone_if.cc | 6 +- .../time/internal/cctz/src/time_zone_impl.cc | 4 +- .../time/internal/cctz/src/time_zone_impl.h | 4 +- .../time/internal/cctz/src/time_zone_info.cc | 6 +- .../time/internal/cctz/src/time_zone_info.h | 4 +- .../time/internal/cctz/src/time_zone_libc.cc | 2 +- .../time/internal/cctz/src/time_zone_libc.h | 2 +- .../internal/cctz/src/time_zone_lookup.cc | 5 +- .../cctz/src/time_zone_lookup_test.cc | 41 +- .../time/internal/cctz/src/time_zone_posix.cc | 2 +- .../absl/time/internal/cctz/src/tzfile.h | 10 +- .../absl/time/internal/cctz/testdata/version | 2 +- .../cctz/testdata/zoneinfo/Africa/Maputo | Bin 131 -> 131 bytes .../cctz/testdata/zoneinfo/America/Asuncion | Bin 884 -> 1085 bytes .../testdata/zoneinfo/America/Bahia_Banderas | Bin 728 -> 700 bytes .../cctz/testdata/zoneinfo/America/Cancun | Bin 529 -> 538 bytes .../cctz/testdata/zoneinfo/America/Chihuahua | Bin 691 -> 691 bytes .../testdata/zoneinfo/America/Ciudad_Juarez | Bin 718 -> 718 bytes .../cctz/testdata/zoneinfo/America/Ensenada | Bin 1025 -> 1079 bytes .../cctz/testdata/zoneinfo/America/Hermosillo | Bin 286 -> 258 bytes .../cctz/testdata/zoneinfo/America/Mazatlan | Bin 718 -> 690 bytes .../cctz/testdata/zoneinfo/America/Merida | Bin 654 -> 654 bytes .../testdata/zoneinfo/America/Mexico_City | Bin 773 -> 773 bytes .../cctz/testdata/zoneinfo/America/Monterrey | Bin 644 -> 709 bytes .../cctz/testdata/zoneinfo/America/Ojinaga | Bin 718 -> 718 bytes .../testdata/zoneinfo/America/Santa_Isabel | Bin 1025 -> 1079 bytes .../cctz/testdata/zoneinfo/America/Tijuana | Bin 1025 -> 1079 bytes .../cctz/testdata/zoneinfo/Asia/Choibalsan | Bin 619 -> 594 bytes .../internal/cctz/testdata/zoneinfo/Asia/Dili | Bin 170 -> 170 bytes .../cctz/testdata/zoneinfo/Asia/Manila | Bin 238 -> 274 bytes .../cctz/testdata/zoneinfo/Atlantic/Azores | Bin 1453 -> 1401 bytes .../cctz/testdata/zoneinfo/Atlantic/Madeira | Bin 1453 -> 1372 bytes .../time/internal/cctz/testdata/zoneinfo/CET | Bin 621 -> 1103 bytes .../internal/cctz/testdata/zoneinfo/CST6CDT | Bin 951 -> 1754 bytes .../time/internal/cctz/testdata/zoneinfo/EET | Bin 497 -> 682 bytes .../time/internal/cctz/testdata/zoneinfo/EST | Bin 111 -> 149 bytes .../internal/cctz/testdata/zoneinfo/EST5EDT | Bin 951 -> 1744 bytes .../cctz/testdata/zoneinfo/Europe/Lisbon | Bin 1454 -> 1463 bytes .../time/internal/cctz/testdata/zoneinfo/HST | Bin 112 -> 221 bytes .../time/internal/cctz/testdata/zoneinfo/MET | Bin 621 -> 1103 bytes .../time/internal/cctz/testdata/zoneinfo/MST | Bin 111 -> 240 bytes .../internal/cctz/testdata/zoneinfo/MST7MDT | Bin 951 -> 1042 bytes .../cctz/testdata/zoneinfo/Mexico/BajaNorte | Bin 1025 -> 1079 bytes .../cctz/testdata/zoneinfo/Mexico/BajaSur | Bin 718 -> 690 bytes .../cctz/testdata/zoneinfo/Mexico/General | Bin 773 -> 773 bytes .../internal/cctz/testdata/zoneinfo/PST8PDT | Bin 951 -> 1294 bytes .../internal/cctz/testdata/zoneinfo/Portugal | Bin 1454 -> 1463 bytes .../time/internal/cctz/testdata/zoneinfo/WET | Bin 494 -> 1463 bytes .../cctz/testdata/zoneinfo/zone1970.tab | 9 +- .../cctz/testdata/zoneinfo/zonenow.tab | 17 +- .../third_party/abseil-cpp/absl/time/time.h | 72 +- .../abseil-cpp/absl/time/time_test.cc | 29 + .../abseil-cpp/absl/types/BUILD.bazel | 184 +- .../abseil-cpp/absl/types/BUILD.gn | 68 +- .../abseil-cpp/absl/types/CMakeLists.txt | 189 +- .../third_party/abseil-cpp/absl/types/any.h | 493 +- .../absl/types/any_exception_safety_test.cc | 173 - .../abseil-cpp/absl/types/any_test.cc | 778 - .../abseil-cpp/absl/types/bad_any_cast.cc | 64 - .../abseil-cpp/absl/types/bad_any_cast.h | 75 - .../absl/types/bad_optional_access.cc | 66 - .../absl/types/bad_optional_access.h | 78 - .../absl/types/bad_variant_access.cc | 82 - .../absl/types/bad_variant_access.h | 82 - .../abseil-cpp/absl/types/internal/optional.h | 352 - .../abseil-cpp/absl/types/internal/span.h | 5 +- .../abseil-cpp/absl/types/internal/variant.h | 1622 - .../abseil-cpp/absl/types/optional.h | 752 +- .../types/optional_exception_safety_test.cc | 292 - .../abseil-cpp/absl/types/optional_test.cc | 1615 - .../third_party/abseil-cpp/absl/types/span.h | 126 +- .../abseil-cpp/absl/types/span_test.cc | 41 +- .../abseil-cpp/absl/types/variant.h | 789 +- .../absl/types/variant_benchmark.cc | 222 - .../types/variant_exception_safety_test.cc | 532 - .../abseil-cpp/absl/types/variant_test.cc | 2640 +- .../abseil-cpp/absl/utility/BUILD.bazel | 41 - .../abseil-cpp/absl/utility/BUILD.gn | 14 - .../abseil-cpp/absl/utility/CMakeLists.txt | 40 - .../absl/utility/internal/if_constexpr.h | 70 - .../utility/internal/if_constexpr_test.cc | 79 - .../abseil-cpp/absl/utility/utility.h | 195 +- .../abseil-cpp/absl/utility/utility_test.cc | 239 - .../abseil-cpp/generate_def_files.py | 5 +- .../patches/0001-Turn-on-hardened-mode.patch | 33 +- .../0002-delete-unprefixed-annotations.patch | 2 +- ...ete-static-initializer-in-stacktrace.patch | 2 +- .../0004-keep-transitive-include.patch | 17 - .../abseil-cpp/symbols_arm64_dbg.def | 1476 +- .../abseil-cpp/symbols_arm64_rel.def | 256 +- .../abseil-cpp/symbols_x64_dbg.def | 1477 +- .../abseil-cpp/symbols_x64_rel.def | 257 +- .../abseil-cpp/symbols_x64_rel_asan.def | 277 +- .../abseil-cpp/symbols_x86_dbg.def | 1475 +- .../abseil-cpp/symbols_x86_rel.def | 256 +- deps/v8/third_party/colorama/README.v8 | 2 +- deps/v8/third_party/cpu_features/README.v8 | 2 +- deps/v8/third_party/fast_float/README.v8 | 4 +- .../src/include/fast_float/ascii_number.h | 42 +- .../src/include/fast_float/bigint.h | 4 + .../fast_float/constexpr_feature_detect.h | 6 + .../src/include/fast_float/fast_float.h | 2 + .../src/include/fast_float/fast_table.h | 4 + .../src/include/fast_float/float_common.h | 112 +- .../src/include/fast_float/parse_number.h | 98 +- deps/v8/third_party/fp16/README.v8 | 2 +- .../fp16/src/include/fp16/bitcasts.h | 10 +- deps/v8/third_party/glibc/README.v8 | 1 + deps/v8/third_party/highway/BUILD.gn | 14 + deps/v8/third_party/highway/README.chromium | 2 +- deps/v8/third_party/highway/src/hwy/abort.cc | 75 + deps/v8/third_party/highway/src/hwy/abort.h | 28 + .../third_party/highway/src/hwy/abort_test.cc | 73 + .../highway/src/hwy/aligned_allocator.cc | 156 + .../highway/src/hwy/aligned_allocator.h | 423 + .../highway/src/hwy/aligned_allocator_test.cc | 468 + deps/v8/third_party/highway/src/hwy/base.h | 3004 + .../third_party/highway/src/hwy/base_test.cc | 866 + deps/v8/third_party/highway/src/hwy/bit_set.h | 158 + .../highway/src/hwy/bit_set_test.cc | 205 + .../highway/src/hwy/cache_control.h | 126 + .../highway/src/hwy/contrib/algo/copy-inl.h | 145 + .../highway/src/hwy/contrib/algo/copy_test.cc | 210 + .../highway/src/hwy/contrib/algo/find-inl.h | 113 + .../highway/src/hwy/contrib/algo/find_test.cc | 230 + .../src/hwy/contrib/algo/transform-inl.h | 228 + .../src/hwy/contrib/algo/transform_test.cc | 464 + .../src/hwy/contrib/bit_pack/bit_pack-inl.h | 2851 + .../src/hwy/contrib/bit_pack/bit_pack_test.cc | 244 + .../highway/src/hwy/contrib/dot/dot-inl.h | 361 + .../highway/src/hwy/contrib/dot/dot_test.cc | 292 + .../highway/src/hwy/contrib/image/image.cc | 145 + .../highway/src/hwy/contrib/image/image.h | 467 + .../src/hwy/contrib/image/image_test.cc | 153 + .../highway/src/hwy/contrib/math/math-inl.h | 1752 + .../highway/src/hwy/contrib/math/math_test.cc | 664 + .../src/hwy/contrib/matvec/matvec-inl.h | 449 + .../src/hwy/contrib/matvec/matvec_test.cc | 293 + .../src/hwy/contrib/random/random-inl.h | 384 + .../src/hwy/contrib/random/random_test.cc | 318 + .../highway/src/hwy/contrib/sort/BUILD | 264 + .../highway/src/hwy/contrib/sort/README.md | 361 + .../highway/src/hwy/contrib/sort/algo-inl.h | 621 + .../src/hwy/contrib/sort/bench_parallel.cc | 242 + .../src/hwy/contrib/sort/bench_sort.cc | 480 + .../highway/src/hwy/contrib/sort/order.h | 34 + .../src/hwy/contrib/sort/print_network.cc | 90 + .../highway/src/hwy/contrib/sort/result-inl.h | 291 + .../highway/src/hwy/contrib/sort/shared-inl.h | 157 + .../highway/src/hwy/contrib/sort/sort_test.cc | 283 + .../src/hwy/contrib/sort/sort_unit_test.cc | 574 + .../hwy/contrib/sort/sorting_networks-inl.h | 902 + .../highway/src/hwy/contrib/sort/traits-inl.h | 618 + .../src/hwy/contrib/sort/traits128-inl.h | 549 + .../highway/src/hwy/contrib/sort/vqsort-inl.h | 2243 + .../highway/src/hwy/contrib/sort/vqsort.cc | 217 + .../highway/src/hwy/contrib/sort/vqsort.h | 303 + .../src/hwy/contrib/sort/vqsort_128a.cc | 71 + .../src/hwy/contrib/sort/vqsort_128d.cc | 71 + .../src/hwy/contrib/sort/vqsort_f16a.cc | 91 + .../src/hwy/contrib/sort/vqsort_f16d.cc | 91 + .../src/hwy/contrib/sort/vqsort_f32a.cc | 70 + .../src/hwy/contrib/sort/vqsort_f32d.cc | 70 + .../src/hwy/contrib/sort/vqsort_f64a.cc | 90 + .../src/hwy/contrib/sort/vqsort_f64d.cc | 91 + .../src/hwy/contrib/sort/vqsort_i16a.cc | 71 + .../src/hwy/contrib/sort/vqsort_i16d.cc | 71 + .../src/hwy/contrib/sort/vqsort_i32a.cc | 71 + .../src/hwy/contrib/sort/vqsort_i32d.cc | 71 + .../src/hwy/contrib/sort/vqsort_i64a.cc | 71 + .../src/hwy/contrib/sort/vqsort_i64d.cc | 71 + .../src/hwy/contrib/sort/vqsort_kv128a.cc | 74 + .../src/hwy/contrib/sort/vqsort_kv128d.cc | 74 + .../src/hwy/contrib/sort/vqsort_kv64a.cc | 74 + .../src/hwy/contrib/sort/vqsort_kv64d.cc | 74 + .../src/hwy/contrib/sort/vqsort_u16a.cc | 71 + .../src/hwy/contrib/sort/vqsort_u16d.cc | 71 + .../src/hwy/contrib/sort/vqsort_u32a.cc | 71 + .../src/hwy/contrib/sort/vqsort_u32d.cc | 71 + .../src/hwy/contrib/sort/vqsort_u64a.cc | 71 + .../src/hwy/contrib/sort/vqsort_u64d.cc | 71 + .../src/hwy/contrib/thread_pool/futex.h | 199 + .../src/hwy/contrib/thread_pool/thread_pool.h | 693 + .../contrib/thread_pool/thread_pool_test.cc | 400 + .../src/hwy/contrib/thread_pool/topology.cc | 530 + .../src/hwy/contrib/thread_pool/topology.h | 108 + .../hwy/contrib/thread_pool/topology_test.cc | 89 + .../src/hwy/contrib/unroller/README.md | 31 + .../src/hwy/contrib/unroller/unroller-inl.h | 470 + .../src/hwy/contrib/unroller/unroller_test.cc | 491 + .../highway/src/hwy/detect_compiler_arch.h | 376 + .../highway/src/hwy/detect_targets.h | 797 + .../highway/src/hwy/examples/benchmark.cc | 253 + .../src/hwy/examples/profiler_example.cc | 95 + .../highway/src/hwy/examples/skeleton-inl.h | 64 + .../highway/src/hwy/examples/skeleton.cc | 129 + .../highway/src/hwy/examples/skeleton.h | 38 + .../highway/src/hwy/examples/skeleton_test.cc | 149 + .../highway/src/hwy/foreach_target.h | 375 + deps/v8/third_party/highway/src/hwy/highway.h | 607 + .../highway/src/hwy/highway_export.h | 74 + .../highway/src/hwy/highway_test.cc | 610 + .../third_party/highway/src/hwy/hwy.version | 19 + .../highway/src/hwy/nanobenchmark.cc | 300 + .../highway/src/hwy/nanobenchmark.h | 171 + .../highway/src/hwy/nanobenchmark_test.cc | 91 + .../highway/src/hwy/ops/arm_neon-inl.h | 10459 +++ .../highway/src/hwy/ops/arm_sve-inl.h | 6308 ++ .../highway/src/hwy/ops/emu128-inl.h | 2958 + .../highway/src/hwy/ops/generic_ops-inl.h | 7378 ++ .../highway/src/hwy/ops/inside-inl.h | 691 + .../highway/src/hwy/ops/ppc_vsx-inl.h | 7284 ++ .../third_party/highway/src/hwy/ops/rvv-inl.h | 6300 ++ .../highway/src/hwy/ops/scalar-inl.h | 2153 + .../highway/src/hwy/ops/set_macros-inl.h | 729 + .../highway/src/hwy/ops/shared-inl.h | 692 + .../highway/src/hwy/ops/wasm_128-inl.h | 5988 ++ .../highway/src/hwy/ops/wasm_256-inl.h | 2491 + .../highway/src/hwy/ops/x86_128-inl.h | 13796 ++++ .../highway/src/hwy/ops/x86_256-inl.h | 8743 +++ .../highway/src/hwy/ops/x86_512-inl.h | 8210 ++ .../third_party/highway/src/hwy/per_target.cc | 75 + .../third_party/highway/src/hwy/per_target.h | 49 + .../third_party/highway/src/hwy/print-inl.h | 62 + deps/v8/third_party/highway/src/hwy/print.cc | 132 + deps/v8/third_party/highway/src/hwy/print.h | 75 + .../v8/third_party/highway/src/hwy/profiler.h | 682 + .../highway/src/hwy/robust_statistics.h | 148 + deps/v8/third_party/highway/src/hwy/stats.cc | 120 + deps/v8/third_party/highway/src/hwy/stats.h | 194 + .../v8/third_party/highway/src/hwy/targets.cc | 777 + deps/v8/third_party/highway/src/hwy/targets.h | 346 + .../highway/src/hwy/targets_test.cc | 189 + .../highway/src/hwy/tests/arithmetic_test.cc | 329 + .../highway/src/hwy/tests/bit_permute_test.cc | 98 + .../src/hwy/tests/blockwise_combine_test.cc | 152 + .../src/hwy/tests/blockwise_shift_test.cc | 170 + .../highway/src/hwy/tests/blockwise_test.cc | 523 + .../highway/src/hwy/tests/cast_test.cc | 312 + .../highway/src/hwy/tests/combine_test.cc | 257 + .../highway/src/hwy/tests/compare_test.cc | 702 + .../highway/src/hwy/tests/compress_test.cc | 830 + .../highway/src/hwy/tests/concat_test.cc | 156 + .../highway/src/hwy/tests/convert_test.cc | 1473 + .../highway/src/hwy/tests/count_test.cc | 312 + .../highway/src/hwy/tests/crypto_test.cc | 723 + .../highway/src/hwy/tests/demote_test.cc | 849 + .../highway/src/hwy/tests/div_test.cc | 281 + .../highway/src/hwy/tests/dup128_vec_test.cc | 237 + .../highway/src/hwy/tests/expand_test.cc | 291 + .../highway/src/hwy/tests/float_test.cc | 536 + .../highway/src/hwy/tests/fma_test.cc | 186 + .../highway/src/hwy/tests/foreach_vec_test.cc | 654 + .../highway/src/hwy/tests/hwy_gtest.h | 645 + .../highway/src/hwy/tests/if_test.cc | 372 + .../tests/in_range_float_to_int_conv_test.cc | 644 + .../highway/src/hwy/tests/interleaved_test.cc | 189 + .../highway/src/hwy/tests/list_targets.cc | 77 + .../highway/src/hwy/tests/logical_test.cc | 166 + .../src/hwy/tests/mask_combine_test.cc | 191 + .../src/hwy/tests/mask_convert_test.cc | 351 + .../highway/src/hwy/tests/mask_mem_test.cc | 403 + .../highway/src/hwy/tests/mask_slide_test.cc | 159 + .../highway/src/hwy/tests/mask_test.cc | 578 + .../src/hwy/tests/masked_arithmetic_test.cc | 401 + .../src/hwy/tests/masked_minmax_test.cc | 156 + .../highway/src/hwy/tests/memory_test.cc | 586 + .../highway/src/hwy/tests/minmax_test.cc | 281 + .../highway/src/hwy/tests/mul_by_pow2_test.cc | 618 + .../src/hwy/tests/mul_pairwise_test.cc | 361 + .../highway/src/hwy/tests/mul_test.cc | 446 + .../highway/src/hwy/tests/reduction_test.cc | 374 + .../highway/src/hwy/tests/resize_test.cc | 188 + .../highway/src/hwy/tests/reverse_test.cc | 309 + .../highway/src/hwy/tests/rotate_test.cc | 298 + .../highway/src/hwy/tests/saturated_test.cc | 168 + .../highway/src/hwy/tests/shift_test.cc | 523 + .../highway/src/hwy/tests/shuffle4_test.cc | 232 + .../highway/src/hwy/tests/sign_test.cc | 101 + .../src/hwy/tests/slide_up_down_test.cc | 466 + .../src/hwy/tests/sums_abs_diff_test.cc | 353 + .../src/hwy/tests/swizzle_block_test.cc | 266 + .../highway/src/hwy/tests/swizzle_test.cc | 422 + .../highway/src/hwy/tests/table_test.cc | 213 + .../highway/src/hwy/tests/test_util-inl.h | 902 + .../highway/src/hwy/tests/test_util.cc | 118 + .../highway/src/hwy/tests/test_util.h | 249 + .../highway/src/hwy/tests/test_util_test.cc | 116 + .../highway/src/hwy/tests/truncate_test.cc | 127 + .../highway/src/hwy/tests/tuple_test.cc | 101 + .../highway/src/hwy/tests/widen_mul_test.cc | 529 + .../third_party/highway/src/hwy/timer-inl.h | 202 + deps/v8/third_party/highway/src/hwy/timer.cc | 194 + deps/v8/third_party/highway/src/hwy/timer.h | 70 + .../third_party/inspector_protocol/BUILD.gn | 2 - .../third_party/inspector_protocol/README.v8 | 6 +- .../inspector_protocol/code_generator.py | 8 +- .../inspector_protocol/crdtp/cbor.h | 7 +- .../crdtp/frontend_channel.h | 2 +- .../inspector_protocol/crdtp/glue.h | 80 - .../inspector_protocol/crdtp/glue_test.cc | 44 - .../crdtp/json_platform_v8.cc | 5 +- .../inspector_protocol/crdtp/maybe.h | 154 - .../inspector_protocol/crdtp/maybe_test.cc | 44 - .../inspector_protocol/crdtp/protocol_core.cc | 6 +- .../inspector_protocol/crdtp/protocol_core.h | 40 +- .../crdtp/protocol_core_test.cc | 12 +- .../inspector_protocol/crdtp/span.h | 10 +- .../inspector_protocol/inspector_protocol.gni | 14 +- .../inspector_protocol/lib/Forward_h.template | 6 - .../lib/Values_cpp.template | 3 +- .../v8/third_party/inspector_protocol/roll.py | 1 - .../templates/TypeBuilder_cpp.template | 8 +- .../templates/TypeBuilder_h.template | 17 +- deps/v8/third_party/jinja2/README.chromium | 2 +- deps/v8/third_party/llvm-libc/BUILD.gn | 16 + deps/v8/third_party/llvm-libc/README.md | 1 + deps/v8/third_party/llvm-libc/README.v8 | 12 + .../v8/third_party/markupsafe/README.chromium | 2 +- deps/v8/third_party/rapidhash-v8/LICENSE | 34 + deps/v8/third_party/rapidhash-v8/OWNERS | 2 + .../third_party/rapidhash-v8/README.chromium | 20 + deps/v8/third_party/rapidhash-v8/rapidhash.h | 354 + deps/v8/third_party/re2/OWNERS | 3 +- deps/v8/third_party/re2/README.v8 | 2 +- deps/v8/third_party/simdutf/BUILD.gn | 22 + deps/v8/third_party/simdutf/LICENSE | 18 + deps/v8/third_party/simdutf/OWNERS | 2 + deps/v8/third_party/simdutf/README.chromium | 27 + deps/v8/third_party/simdutf/simdutf.cpp | 65479 ++++++++++++++++ deps/v8/third_party/simdutf/simdutf.h | 5990 ++ deps/v8/{src => }/third_party/siphash/LICENSE | 0 deps/v8/{src => }/third_party/siphash/OWNERS | 0 .../third_party/siphash/halfsiphash.cc | 4 +- .../third_party/siphash/halfsiphash.h | 0 deps/v8/third_party/test262-harness/LICENSE | 28 - deps/v8/third_party/test262-harness/OWNERS | 2 - deps/v8/third_party/test262-harness/README.md | 19 - deps/v8/third_party/test262-harness/README.v8 | 16 - .../third_party/test262-harness/__init__.py | 1 - .../test262-harness/excludelist.xml | 3 - .../test262-harness/src/__init__.py | 0 .../test262-harness/src/_common.py | 18 - .../test262-harness/src/_monkeyYaml.py | 147 - .../test262-harness/src/_packager.py | 335 - .../test262-harness/src/_packagerConfig.py | 117 - .../test262-harness/src/parseTestRecord.py | 111 - .../src/templates/runner.bestPractice.html | 170 - .../src/templates/runner.intl402.html | 192 - .../src/templates/runner.test262.html | 203 - .../test262-harness/src/test262.py | 664 - .../test262-harness/test/README.md | 11 - .../test262-harness/test/fixtures/negative.js | 11 - .../test/fixtures/test262-old-headers.js | 19 - .../test/fixtures/test262-yaml-headers.js | 18 - .../test262-harness/test/test_common.py | 64 - .../test262-harness/test/test_monkeyYaml.py | 208 - .../test/test_parseTestRecord.py | 183 - .../test262-harness/test/test_test262.py | 274 - .../third_party/utf8-decoder/LICENSE | 0 .../{src => }/third_party/utf8-decoder/OWNERS | 0 .../third_party/utf8-decoder/README.v8 | 3 +- .../utf8-decoder/generalized-utf8-decoder.h | 0 .../third_party/utf8-decoder/utf8-decoder.h | 0 deps/v8/third_party/v8/builtins/array-sort.tq | 199 +- deps/v8/third_party/v8/codegen/fp16-inl.h | 6 +- .../v8/{src => }/third_party/valgrind/LICENSE | 0 deps/v8/third_party/valgrind/OWNERS | 1 + deps/v8/third_party/valgrind/README.v8 | 10 + .../{src => }/third_party/valgrind/valgrind.h | 0 deps/v8/{src => }/third_party/vtune/BUILD.gn | 4 +- deps/v8/third_party/vtune/DEPS | 3 + deps/v8/{src => }/third_party/vtune/LICENSE | 19 - deps/v8/third_party/vtune/OWNERS | 1 + .../v8/{src => }/third_party/vtune/v8-vtune.h | 22 +- .../{src => }/third_party/vtune/vtune-jit.cc | 37 +- .../{src => }/third_party/vtune/vtune-jit.h | 19 - .../{src => }/third_party/vtune/vtuneapi.cc | 0 .../v8/{src => }/third_party/vtune/vtuneapi.h | 0 deps/v8/third_party/wasm-api/README.v8 | 8 +- .../third_party/wasm-api/example/callback.c | 35 +- .../third_party/wasm-api/example/callback.cc | 51 +- .../third_party/wasm-api/example/finalize.c | 9 +- .../third_party/wasm-api/example/finalize.cc | 3 +- deps/v8/third_party/wasm-api/example/global.c | 52 +- .../v8/third_party/wasm-api/example/global.cc | 25 +- deps/v8/third_party/wasm-api/example/hello.c | 20 +- deps/v8/third_party/wasm-api/example/hello.cc | 22 +- .../v8/third_party/wasm-api/example/hostref.c | 71 +- .../third_party/wasm-api/example/hostref.cc | 44 +- .../third_party/wasm-api/example/hostref.wat | 16 +- deps/v8/third_party/wasm-api/example/memory.c | 58 +- .../v8/third_party/wasm-api/example/memory.cc | 17 +- deps/v8/third_party/wasm-api/example/multi.c | 54 +- deps/v8/third_party/wasm-api/example/multi.cc | 27 +- .../v8/third_party/wasm-api/example/reflect.c | 8 +- .../third_party/wasm-api/example/reflect.cc | 37 +- .../third_party/wasm-api/example/serialize.c | 14 +- .../third_party/wasm-api/example/serialize.cc | 15 +- deps/v8/third_party/wasm-api/example/start.c | 5 +- deps/v8/third_party/wasm-api/example/start.cc | 3 +- deps/v8/third_party/wasm-api/example/table.c | 32 +- deps/v8/third_party/wasm-api/example/table.cc | 28 +- .../v8/third_party/wasm-api/example/threads.c | 20 +- .../third_party/wasm-api/example/threads.cc | 28 +- deps/v8/third_party/wasm-api/example/trap.c | 15 +- deps/v8/third_party/wasm-api/example/trap.cc | 28 +- deps/v8/third_party/wasm-api/wasm.h | 314 +- deps/v8/third_party/wasm-api/wasm.hh | 390 +- deps/v8/third_party/zlib/CMakeLists.txt | 1 + deps/v8/third_party/zlib/chromeconf.h | 3 - .../third_party/zlib/contrib/minizip/Makefile | 18 +- .../zlib/contrib/minizip/README.chromium | 11 +- .../third_party/zlib/contrib/minizip/ints.h | 57 + .../third_party/zlib/contrib/minizip/ioapi.h | 35 +- .../zlib/contrib/minizip/iowin32.c | 16 +- .../zlib/contrib/minizip/miniunz.c | 32 +- .../zlib/contrib/minizip/minizip.c | 17 +- .../zlib/contrib/minizip/mztools.c | 61 +- .../zlib/contrib/minizip/skipset.h | 361 + .../third_party/zlib/contrib/minizip/unzip.c | 13 +- .../third_party/zlib/contrib/minizip/unzip.h | 6 +- .../v8/third_party/zlib/contrib/minizip/zip.c | 255 +- .../v8/third_party/zlib/contrib/minizip/zip.h | 24 +- .../zlib/google/compression_utils.cc | 11 +- .../zlib/google/compression_utils.h | 5 +- .../third_party/zlib/google/zip_internal.cc | 13 +- .../zlib/google/zip_reader_unittest.cc | 7 +- .../third_party/zlib/google/zip_unittest.cc | 32 +- deps/v8/third_party/zlib/google/zip_writer.cc | 9 +- .../0008-minizip-zip-unzip-tools.patch | 35 +- ...0015-minizip-unzip-enable-decryption.patch | 11 - deps/v8/tools/.vpython3 | 5 + deps/v8/tools/README.md | 4 +- deps/v8/tools/__init__.py | 1 - deps/v8/tools/bazel/bazel.sha1 | 2 +- .../tools/builtins-pgo/download_profiles.py | 7 +- .../foozzie/testdata/baseline/d8.py | 10 +- .../clusterfuzz/foozzie/testdata/build1/d8.py | 9 +- .../clusterfuzz/foozzie/testdata/build2/d8.py | 8 +- .../clusterfuzz/foozzie/testdata/build3/d8.py | 10 +- .../clusterfuzz/foozzie/testdata/build4/d8.py | 16 + .../testdata/build4/v8_build_config.json | 1 + .../clusterfuzz/foozzie/testdata/build5/d8.py | 20 + .../testdata/build5/v8_build_config.json | 1 + .../foozzie/testdata/failure_output.txt | 27 +- .../foozzie/testdata/failure_output_arch.txt | 27 +- .../testdata/failure_output_second.txt | 27 +- .../clusterfuzz/foozzie/testdata/fuzz-123.js | 3 + .../foozzie/testdata/fuzz-wasm-struct-123.js | 7 + .../testdata/simulated_crash_output.txt | 5 + .../testdata/smoke_test_crash_output.txt | 5 + .../foozzie/testdata/smoke_test_output.txt | 45 +- .../clusterfuzz/foozzie/toolchain/BUILD.gn | 8 +- .../tools/clusterfuzz/foozzie/v8_commands.py | 58 +- .../tools/clusterfuzz/foozzie/v8_foozzie.py | 326 +- .../clusterfuzz/foozzie/v8_foozzie_test.py | 518 +- .../clusterfuzz/foozzie/v8_fuzz_config.py | 17 +- .../foozzie/v8_fuzz_experiments.json | 2 +- .../clusterfuzz/foozzie/v8_fuzz_flags.json | 11 +- deps/v8/tools/clusterfuzz/foozzie/v8_mock.js | 19 +- .../clusterfuzz/foozzie/v8_mock_archs.js | 14 + .../clusterfuzz/foozzie/v8_smoke_tests.js | 10 + .../clusterfuzz/foozzie/v8_suppressions.py | 286 +- deps/v8/tools/clusterfuzz/js_fuzzer/README.md | 2 +- .../tools/clusterfuzz/js_fuzzer/build_db.js | 4 +- deps/v8/tools/clusterfuzz/js_fuzzer/corpus.js | 174 +- deps/v8/tools/clusterfuzz/js_fuzzer/db.js | 27 +- .../js_fuzzer/differential_script_mutator.js | 52 +- .../tools/clusterfuzz/js_fuzzer/exceptions.js | 89 +- .../js_fuzzer/mutators/analyzer.js | 257 + .../js_fuzzer/mutators/array_mutator.js | 8 +- .../js_fuzzer/mutators/closure_remover.js | 145 + .../clusterfuzz/js_fuzzer/mutators/common.js | 119 +- .../js_fuzzer/mutators/crossover_mutator.js | 167 +- .../mutators/differential_fuzz_mutator.js | 2 +- .../js_fuzzer/mutators/expression_mutator.js | 12 +- .../mutators/function_call_mutator.js | 54 +- .../clusterfuzz/js_fuzzer/mutators/mutator.js | 35 +- .../js_fuzzer/mutators/normalizer.js | 51 +- .../js_fuzzer/mutators/number_mutator.js | 39 +- .../js_fuzzer/mutators/object_mutator.js | 7 +- .../js_fuzzer/mutators/try_catch.js | 182 +- .../js_fuzzer/mutators/variable_mutator.js | 45 +- .../mutators/variable_or_object_mutation.js | 53 +- .../clusterfuzz/js_fuzzer/package-lock.json | 5502 +- .../tools/clusterfuzz/js_fuzzer/package.json | 13 +- .../v8/tools/clusterfuzz/js_fuzzer/package.sh | 2 +- deps/v8/tools/clusterfuzz/js_fuzzer/random.js | 65 +- .../js_fuzzer/resources/async_iterator.js | 9 + .../js_fuzzer/resources/chakra_stubs.js | 11 + .../resources/cross_over_template_1.js | 8 + .../resources/cross_over_template_2.js | 16 + .../resources/cross_over_template_3.js | 16 + .../js_fuzzer/resources/fuzz_library.js | 72 +- .../js_fuzzer/resources/sandbox.js | 28 + .../js_fuzzer/resources/spidermonkey_stubs.js | 7 + .../clusterfuzz/js_fuzzer/resources/stubs.js | 3 + deps/v8/tools/clusterfuzz/js_fuzzer/run.js | 115 +- deps/v8/tools/clusterfuzz/js_fuzzer/runner.js | 237 + .../clusterfuzz/js_fuzzer/script_mutator.js | 208 +- .../clusterfuzz/js_fuzzer/source_helpers.js | 222 +- .../clusterfuzz/js_fuzzer/test/helpers.js | 53 +- .../test/test_available_variables.js | 41 +- .../js_fuzzer/test/test_context.js | 64 + .../clusterfuzz/js_fuzzer/test/test_corpus.js | 62 +- .../clusterfuzz/js_fuzzer/test/test_db.js | 13 +- .../js_fuzzer/test/test_differential_fuzz.js | 123 +- .../clusterfuzz/js_fuzzer/test/test_flags.js | 43 + .../clusterfuzz/js_fuzzer/test/test_load.js | 40 +- .../js_fuzzer/test/test_mutate_arrays.js | 7 +- .../js_fuzzer/test/test_mutate_expressions.js | 4 +- .../test/test_mutate_function_calls.js | 4 +- .../js_fuzzer/test/test_mutate_numbers.js | 23 +- .../test/test_mutate_variable_or_object.js | 6 + .../js_fuzzer/test/test_mutation_order.js | 2 +- .../js_fuzzer/test/test_normalize.js | 41 + .../clusterfuzz/js_fuzzer/test/test_random.js | 45 +- .../js_fuzzer/test/test_regressions.js | 369 +- .../clusterfuzz/js_fuzzer/test/test_runner.js | 136 + .../js_fuzzer/test/test_try_catch.js | 36 +- .../test_data/available_variables.js | 11 +- .../available_variables_arrow_fun_exp.js | 30 + ...ilable_variables_arrow_fun_exp_expected.js | 187 + .../test_data/available_variables_expected.js | 56 - .../test_data/available_variables_fun_exp.js | 30 + .../available_variables_fun_exp_expected.js | 187 + .../available_variables_sloppy_expected.js | 270 + .../js_fuzzer/test_data/chakra/load.js | 7 +- .../js_fuzzer/test_data/chakra/load1.js | 2 + .../test_data/chakra/load_expected.js | 10 +- .../js_fuzzer/test_data/closures.js | 181 + .../js_fuzzer/test_data/closures_expected.js | 132 + .../crashtests_softskipped/not_great.js | 5 + .../test_data/crashtests_softskipped/test.js | 5 + .../js_fuzzer/test_data/db/e2e/input1.js | 92 + .../js_fuzzer/test_data/db/e2e/input2.js | 18 + ...6a21afb7224a48ec53aa4436f4d93349c5fa0.json | 1 + ...7c68f689d7eb9fd7e9d42e98d92a3bd11d4f3.json | 1 + ...c27d1e4a8e5a959a7c12bbd6d08d6ba5e8b28.json | 1 + ...63bdec092babc502181f10470c11643c66aa9.json | 1 + ...69494369ef66a7074b32fd6b27c588860b571.json | 1 + ...13b84d032ce3d569c58e7aabbc013bc17c487.json | 1 + ...5a134bf1ed0009f03b8931dc2157b53b97de1.json | 1 + ...1aa3649d75f272d662a385e028a4d4f24a712.json | 1 + ...59b515fdaaf897409c544d19fec01b7c677f5.json | 1 + ...7959bebf4148eab01ad9187a3390f6b127e23.json | 1 + ...43fff3bfa6f144c2f06a7de6cd10c0b650cae.json | 1 + ...9bddfed6319031112411ec0633c4e423ae460.json | 1 + ...296654616254793e9c1948c12a2951e711156.json | 1 + ...2c139a3406842de5446673fdd2613c4e6ca00.json | 1 + .../test_data/db/e2e_expected/index.json | 1 + .../differential_fuzz/combined_expected.js | 21 +- .../differential_fuzz/exceptions_expected.js | 1 - .../fuzzilli_combined_expected.js | 44 + .../differential_fuzz/mutations_expected.js | 16 +- .../suppressions_expected.js | 18 +- .../expected_code_0.js | 43 + .../expected_code_1.js | 40 + .../expected_code_2.js | 62 + .../expected_flags_0.js | 11 + .../expected_flags_1.js | 11 + .../expected_flags_2.js | 11 + .../fuzzilli/fuzzdir-1/corpus/program_1.js | 5 + .../fuzzilli/fuzzdir-1/corpus/program_2.js | 5 + .../fuzzilli/fuzzdir-1/corpus/program_3.js | 27 + .../fuzzilli/fuzzdir-1/settings.json | 9 + .../fuzzilli/fuzzdir-2/corpus/program_1.js | 5 + .../fuzzilli/fuzzdir-2/corpus/program_2.js | 19 + .../fuzzilli/fuzzdir-2/corpus/program_3.js | 19 + .../fuzzilli/fuzzdir-2/settings.json | 9 + .../v8/test/mjsunit/dummy.js | 3 + .../test_data/flags/blocked_flags/input1.js | 5 + .../test_data/flags/blocked_flags/input2.js | 5 + .../test_data/flags/corpus/v8/input1.js | 5 + .../test_data/flags/corpus/v8/input2.js | 5 + .../test_data/flags/corpus/v8/input3.js | 5 + .../fuzzilli/fuzzdir-1/corpus/program_1.js | 5 + .../fuzzilli/fuzzdir-1/settings.json | 9 + .../input_archive/CrashTests/crash_test.js | 5 + .../input_archive/WebKit/JSTests/jsc_test.js | 5 + .../WebKit/JSTests/jsc_test_2.js | 5 + .../input_archive/chakra/chakra_test1.js | 5 + .../input_archive/chakra/chakra_test2.js | 5 + .../fuzzilli/fuzzdir-1/corpus/program_1.js | 5 + .../fuzzilli/fuzzdir-1/settings.json | 3 + .../fuzzilli/fuzzdir-2/crashes/program_2.js | 5 + .../fuzzilli/fuzzdir-2/crashes/program_3.js | 7 + .../fuzzilli/fuzzdir-2/settings.json | 3 + .../spidermonkey/spidermonkey_test.js | 5 + .../input_archive/v8/test/mjsunit/v8_test.js | 5 + .../v8/test/mjsunit/wasm/regress-123.js | 7 + .../v8/test/mjsunit/wasm/regress-456.js | 7 + .../test/mjsunit/wasm/wasm-module-builder.js | 5 + .../js_fuzzer/test_data/language/features.js | 201 + .../test_data/language/features_expected.js | 146 + .../js_fuzzer/test_data/large_loops.js | 120 + .../test_data/large_loops_expected.js | 36 + .../fuzzilli/fuzzdir-1/corpus/program_x.js | 9 + .../fuzzilli/fuzzdir-1/settings.json | 9 + .../fuzzilli_scenario/test_load_expected.js | 6 + .../fuzzilli_scenario/v8/test/mjsunit/wmb.js | 5 + .../js_fuzzer/test_data/loop_mutations.js | 50 + .../test_data/loop_mutations_expected.js | 58 + .../js_fuzzer/test_data/loop_variables.js | 58 + .../test_data/loop_variables_expected.js | 12 + .../loop_variables_source_expected.js | 45 + .../js_fuzzer/test_data/mutate_arrays.js | 1 + .../test_data/mutate_arrays_expected.js | 95 +- .../mutate_expressions_current_expected.js | 2 - .../mutate_expressions_previous_expected.js | 1 - .../mutate_function_call_baseline_expected.js | 13 +- .../mutate_function_call_deopt_expected.js | 15 +- .../mutate_function_call_expected.js | 17 +- .../mutate_function_call_maglev_expected.js | 17 +- .../js_fuzzer/test_data/mutate_numbers.js | 5 + .../test_data/mutate_numbers_class.js | 15 + .../mutate_numbers_class_expected.js | 12 + .../test_data/mutate_numbers_expected.js | 41 +- .../test_data/mutate_objects_expected.js | 107 +- .../test_data/mutate_var_or_obj_expected.js | 17 +- .../js_fuzzer/test_data/mutate_variables.js | 2 + .../test_data/mutate_variables_expected.js | 45 +- .../mutation_order/output_expected.js | 88 +- .../js_fuzzer/test_data/normalize.js | 2 + .../test_data/normalize_expected_0.js | 7 +- .../test_data/normalize_expected_1.js | 19 +- .../test_data/normalize_fuzz_test.js | 12 + .../test_data/normalize_fuzz_test_expected.js | 13 + .../normalize_fuzz_test_functions.js | 6 + .../normalize_fuzz_test_functions_expected.js | 7 + .../test_data/regress/arguments/expected.js | 38 + .../test_data/regress/arguments/input.js | 41 + .../regress/async/full_async_expected.js | 57 + .../test_data/regress/async/input.js | 28 + .../regress/async/no_async_expected.js | 57 + .../test_data/regress/db/input/input.js | 10 + .../testsuite/harness/wasm-constants.js | 5 + .../testsuite/harness/wasm-module-builder.js | 5 + .../dependency_collision/chakra/input.js | 6 + .../v8/test/mjsunit/mjsunit.js | 3 + .../v8/test/mjsunit/wasm/input.js | 5 + .../test/mjsunit/wasm/wasm-module-builder.js | 6 + .../ArrowFunctionExpression/a1.json | 8 + .../duplicates/duplicates_db/index.json | 9 + .../regress/duplicates/duplicates_expected.js | 22 + .../test_data/regress/duplicates/input.js | 10 + .../regress/infinite_loop_fun/expected.js | 30 + .../regress/infinite_loop_fun/input.js | 16 + .../test_data/regress/iterator/expected.js | 22 + .../test_data/regress/iterator/input.js | 6 + .../test_data/regress/large_loops/expected.js | 35 + .../test_data/regress/large_loops/input.js | 27 + .../regress/legacy_scope/expected.js | 17 + .../test_data/regress/legacy_scope/input.js | 8 + .../test_data/regress/parentheses/expected.js | 14 + .../test_data/regress/parentheses/input.js | 5 + .../test_data/regress/resources/input.js | 5 + .../test_data/regress/super/call_expected.js | 23 + .../test_data/regress/super/input.js | 23 + .../regress/super/member_expected.js | 29 + .../super_call_db/CallExpression/a1.json | 7 + .../super_call_db/CallExpression/a2.json | 7 + .../regress/super/super_call_db/index.json | 12 + .../super_member_db/CallExpression/a1.json | 7 + .../super_member_db/CallExpression/a2.json | 7 + .../regress/super/super_member_db/index.json | 12 + .../regress/try_catch_while_true/expected.js | 23 + .../regress/try_catch_while_true/input.js | 13 + .../test_data/regress/yield/expected.js | 17 + .../test_data/regress/yield/input.js | 8 + .../js_fuzzer/test_data/sandbox/load.js | 11 + .../test_data/sandbox/load_expected.js | 33 + .../test_data/simple_test_expected.js | 97 +- .../test_data/spidermonkey/test/load.js | 7 + .../spidermonkey/test/load_expected.js | 18 +- .../test_data/spidermonkey/test/shell.js | 6 + .../js_fuzzer/test_data/try_catch.js | 34 + .../test_data/try_catch_alternate_expected.js | 44 +- .../test_data/try_catch_distribution.js | 15 + .../try_catch_distribution_expected.js | 142 + .../js_fuzzer/test_data/try_catch_expected.js | 74 +- .../test_data/try_catch_nothing_expected.js | 43 +- .../test_data/try_catch_toplevel_expected.js | 64 +- .../{ => v8}/differential_fuzz/input1.js | 0 .../{ => v8}/differential_fuzz/input2.js | 0 .../{ => v8}/regress/contradictions/input1.js | 0 .../{ => v8}/regress/contradictions/input2.js | 0 .../test_data/v8/regress/mjs_flags/input.js | 6 + .../test_data/verify_db/expected_code_0.js | 15 + .../test_data/verify_db/expected_code_1.js | 15 + .../test_data/verify_db/expected_code_2.js | 10 + .../v8/tools/clusterfuzz/js_fuzzer/test_db.js | 2 +- .../trials/clusterfuzz_trials_config.json | 15 +- deps/v8/tools/debug_helper/compiler-types.cc | 2 +- .../debug_helper/debug-helper-internal.h | 6 +- deps/v8/tools/debug_helper/debug-helper.h | 6 +- .../v8/tools/debug_helper/debug-macro-shims.h | 6 +- .../debug_helper/get-object-properties.cc | 12 +- .../dev/clean-up-feature-flags-in-tests.py | 150 + deps/v8/tools/dev/gen-tags.py | 2 +- deps/v8/tools/dev/gm.py | 18 +- ...enerate-explicit-function-compile-hints.py | 226 +- deps/v8/tools/fix-inl-header-includes.sh | 43 + deps/v8/tools/gcmole/BUILD.gn | 16 +- deps/v8/tools/gcmole/bootstrap.sh | 4 +- deps/v8/tools/gcmole/gcmole-test.cc | 8 + deps/v8/tools/gcmole/gcmole-tools.tar.gz.sha1 | 2 +- deps/v8/tools/gcmole/gcmole.cc | 47 +- deps/v8/tools/gcmole/gcmole.py | 39 +- deps/v8/tools/gcmole/gcmole_args.py | 24 +- deps/v8/tools/gcmole/gcmole_test.py | 9 +- deps/v8/tools/gcmole/test-expectations.txt | 300 +- deps/v8/tools/gdbinit | 122 +- deps/v8/tools/gen-postmortem-metadata.py | 65 +- deps/v8/tools/gen-v8-gn.py | 27 +- .../tools/generate-header-include-checks.py | 3 + .../tools/heap-layout/heap-layout-viewer.mjs | 428 +- .../heap-layout/heap-size-trend-viewer.mjs | 408 +- .../tools/heap-layout/trace-file-reader.mjs | 46 +- deps/v8/tools/heap-stats/categories.js | 9 + deps/v8/tools/heap-stats/global-timeline.js | 3 - deps/v8/tools/lldb_commands.py | 120 +- deps/v8/tools/lldb_visualizers.py | 8 +- deps/v8/tools/mb/mb.py | 6 +- deps/v8/tools/package-lock.json | 1895 +- deps/v8/tools/package.json | 8 +- deps/v8/tools/perf-bisect.pl | 341 + deps/v8/tools/predictable_wrapper.py | 2 +- deps/v8/tools/profile.mjs | 2 + .../linux-perf-chrome-renderer-cmd.sh | 87 +- deps/v8/tools/profiling/linux-perf-chrome.py | 99 +- deps/v8/tools/profiling/linux-perf-d8.py | 58 +- deps/v8/tools/profiling/ll_prof.py | 45 +- deps/v8/tools/release/auto_roll.py | 174 - deps/v8/tools/release/merge_to_branch.py | 2 - .../tools/release/merge_to_branch_gerrit.py | 28 +- deps/v8/tools/release/roll_bisect.py | 75 +- deps/v8/tools/release/test_scripts.py | 102 - deps/v8/tools/run_perf.py | 9 +- deps/v8/tools/system-analyzer/app-model.mjs | 3 +- deps/v8/tools/system-analyzer/local-server.sh | 27 +- .../tools/system-analyzer/view/code-panel.mjs | 211 +- .../tools/system-analyzer/view/list-panel.mjs | 373 +- .../tools/system-analyzer/view/map-panel.mjs | 197 +- .../view/map-panel/map-transitions.mjs | 345 +- .../system-analyzer/view/profiler-panel.mjs | 532 +- .../view/property-link-table.mjs | 277 +- .../system-analyzer/view/script-panel.mjs | 359 +- .../view/timeline/timeline-overview.mjs | 234 +- .../view/timeline/timeline-track-map.mjs | 244 +- .../tools/system-analyzer/view/tool-tip.mjs | 275 +- deps/v8/tools/testrunner/base_runner.py | 44 +- deps/v8/tools/testrunner/build_config.py | 4 +- deps/v8/tools/testrunner/local/android.py | 5 + deps/v8/tools/testrunner/local/command.py | 27 +- deps/v8/tools/testrunner/local/context.py | 17 +- deps/v8/tools/testrunner/local/statusfile.py | 41 +- deps/v8/tools/testrunner/local/variants.py | 73 +- deps/v8/tools/testrunner/num_fuzzer.py | 12 +- deps/v8/tools/testrunner/objects/testcase.py | 100 +- deps/v8/tools/testrunner/outproc/fuzzer.py | 19 + deps/v8/tools/testrunner/outproc/message.py | 2 +- deps/v8/tools/testrunner/standard_runner.py | 31 +- .../tools/testrunner/standard_runner_test.py | 66 +- .../testdata/testroot7/out/build/d8_mocked.py | 22 + .../testroot7/test/sweet/sweet.status | 6 + .../testdata/testroot7/test/sweet/testcfg.py | 32 + deps/v8/tools/testrunner/testproc/fuzzer.py | 13 +- deps/v8/tools/torque/format-torque.py | 10 +- deps/v8/tools/turbolizer/README.md | 4 - deps/v8/tools/turbolizer/package-lock.json | 5298 +- deps/v8/tools/turbolizer/package.json | 3 +- deps/v8/tools/turbolizer/rollup.config.js | 2 +- .../turboshaft-graph-operation.ts | 176 +- .../tools/turbolizer/src/source-resolver.ts | 3 +- deps/v8/tools/turbolizer/src/source.ts | 5 +- .../src/views/bytecode-source-view.ts | 40 +- .../src/views/turboshaft-graph-view.ts | 7 +- .../v8/tools/v8windbg/src/object-inspection.h | 6 +- .../v8windbg/src/v8-debug-helper-interop.cc | 6 +- .../wasm/mjsunit-module-disassembler-impl.h | 259 +- deps/v8/tools/wasm/module-inspector.cc | 85 +- deps/v8/tools/wasm/update-wasm-spec-tests.sh | 212 +- deps/v8/tools/whitespace.txt | 24 +- 5274 files changed, 454273 insertions(+), 196343 deletions(-) create mode 100644 deps/v8/MODULE.bazel delete mode 100644 deps/v8/WORKSPACE create mode 100644 deps/v8/build_overrides/partition_alloc.gni delete mode 100644 deps/v8/include/cppgc/ephemeron-pair.h create mode 100644 deps/v8/include/cppgc/internal/conditional-stack-allocated.h create mode 100644 deps/v8/include/v8-external-memory-accounter.h create mode 100644 deps/v8/include/v8-trace-categories.h create mode 100644 deps/v8/pyrightconfig.json create mode 100644 deps/v8/src/base/fpu.cc create mode 100644 deps/v8/src/base/fpu.h rename deps/v8/src/base/{functional.h => hashing.h} (94%) create mode 100644 deps/v8/src/base/sanitizer/ubsan.h create mode 100644 deps/v8/src/base/strong-alias.h delete mode 100644 deps/v8/src/base/template-meta-programming/algorithm.h create mode 100644 deps/v8/src/base/template-meta-programming/common.h create mode 100644 deps/v8/src/common/thread-local-storage.h delete mode 100644 deps/v8/src/compiler/branch-condition-duplicator.cc delete mode 100644 deps/v8/src/compiler/branch-condition-duplicator.h create mode 100644 deps/v8/src/compiler/code-assembler-compilation-job.h delete mode 100644 deps/v8/src/compiler/const-tracking-let-helpers.cc delete mode 100644 deps/v8/src/compiler/const-tracking-let-helpers.h delete mode 100644 deps/v8/src/compiler/decompression-optimizer.cc delete mode 100644 deps/v8/src/compiler/decompression-optimizer.h rename deps/v8/src/compiler/{graph-visualizer.cc => turbofan-graph-visualizer.cc} (96%) rename deps/v8/src/compiler/{graph-visualizer.h => turbofan-graph-visualizer.h} (90%) rename deps/v8/src/compiler/{graph.cc => turbofan-graph.cc} (67%) rename deps/v8/src/compiler/{graph.h => turbofan-graph.h} (86%) rename deps/v8/src/compiler/{typer.cc => turbofan-typer.cc} (95%) rename deps/v8/src/compiler/{typer.h => turbofan-typer.h} (82%) rename deps/v8/src/compiler/{types.cc => turbofan-types.cc} (98%) rename deps/v8/src/compiler/{types.h => turbofan-types.h} (97%) create mode 100644 deps/v8/src/compiler/turboshaft/growable-stacks-reducer.h delete mode 100644 deps/v8/src/compiler/turboshaft/recreate-schedule-phase.cc delete mode 100644 deps/v8/src/compiler/turboshaft/recreate-schedule-phase.h delete mode 100644 deps/v8/src/compiler/turboshaft/recreate-schedule.cc delete mode 100644 deps/v8/src/compiler/turboshaft/recreate-schedule.h delete mode 100644 deps/v8/src/compiler/turboshaft/simplified-lowering-phase.cc delete mode 100644 deps/v8/src/compiler/turboshaft/simplified-lowering-phase.h delete mode 100644 deps/v8/src/compiler/turboshaft/simplified-lowering-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/string-escape-analysis-reducer.cc create mode 100644 deps/v8/src/compiler/turboshaft/string-escape-analysis-reducer.h rename deps/v8/src/compiler/turboshaft/{maglev-graph-building-phase.cc => turbolev-graph-builder.cc} (86%) rename deps/v8/src/compiler/turboshaft/{maglev-graph-building-phase.h => turbolev-graph-builder.h} (68%) create mode 100644 deps/v8/src/compiler/turboshaft/wasm-debug-memory-lowering-phase.cc create mode 100644 deps/v8/src/compiler/turboshaft/wasm-debug-memory-lowering-phase.h create mode 100644 deps/v8/src/compiler/turboshaft/wasm-shuffle-reducer.cc create mode 100644 deps/v8/src/compiler/turboshaft/wasm-shuffle-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/wasm-simd-phase.cc create mode 100644 deps/v8/src/compiler/turboshaft/wasm-simd-phase.h delete mode 100644 deps/v8/src/compiler/wasm-inlining.cc delete mode 100644 deps/v8/src/compiler/wasm-inlining.h delete mode 100644 deps/v8/src/compiler/wasm-js-lowering.cc delete mode 100644 deps/v8/src/compiler/wasm-js-lowering.h delete mode 100644 deps/v8/src/compiler/wasm-loop-peeling.cc delete mode 100644 deps/v8/src/compiler/wasm-loop-peeling.h delete mode 100644 deps/v8/src/deoptimizer/deoptimizer-cfi-builtins.cc delete mode 100644 deps/v8/src/deoptimizer/deoptimizer-cfi-empty.cc create mode 100644 deps/v8/src/diagnostics/etw-debug-win.cc create mode 100644 deps/v8/src/diagnostics/etw-debug-win.h create mode 100644 deps/v8/src/diagnostics/etw-isolate-capture-state-monitor-win.cc create mode 100644 deps/v8/src/diagnostics/etw-isolate-capture-state-monitor-win.h create mode 100644 deps/v8/src/diagnostics/etw-isolate-load-script-data-win.cc create mode 100644 deps/v8/src/diagnostics/etw-isolate-load-script-data-win.h create mode 100644 deps/v8/src/diagnostics/etw-isolate-operations-win.cc create mode 100644 deps/v8/src/diagnostics/etw-isolate-operations-win.h create mode 100644 deps/v8/src/diagnostics/etw-jit-metadata-win.cc rename deps/v8/src/execution/{shared-mutex-guard-if-off-thread.h => mutex-guard-if-off-thread.h} (51%) delete mode 100644 deps/v8/src/heap/base/asm/arm64/push_registers_masm.S delete mode 100644 deps/v8/src/heap/base/asm/ia32/push_registers_masm.asm rename deps/v8/src/heap/{conservative-stack-visitor.cc => conservative-stack-visitor-inl.h} (56%) create mode 100644 deps/v8/src/heap/heap-layout-inl.h create mode 100644 deps/v8/src/heap/heap-layout.cc create mode 100644 deps/v8/src/heap/heap-layout.h create mode 100644 deps/v8/src/heap/heap-utils-inl.h create mode 100644 deps/v8/src/heap/heap-utils.h rename deps/v8/src/heap/{objects-visiting-inl.h => heap-visitor-inl.h} (59%) rename deps/v8/src/heap/{objects-visiting.cc => heap-visitor.cc} (98%) rename deps/v8/src/heap/{objects-visiting.h => heap-visitor.h} (57%) create mode 100644 deps/v8/src/heap/live-object-range-inl.h create mode 100644 deps/v8/src/heap/live-object-range.h create mode 100644 deps/v8/src/heap/marking-progress-tracker.h create mode 100644 deps/v8/src/heap/memory-chunk-constants.h delete mode 100644 deps/v8/src/heap/memory-chunk-layout.cc create mode 100644 deps/v8/src/heap/page-pool.cc create mode 100644 deps/v8/src/heap/page-pool.h delete mode 100644 deps/v8/src/heap/progress-bar.h create mode 100644 deps/v8/src/heap/visit-object.cc create mode 100644 deps/v8/src/heap/visit-object.h create mode 100644 deps/v8/src/maglev/maglev-code-gen-state-inl.h create mode 100644 deps/v8/src/maglev/maglev-deopt-frame-visitor.h create mode 100644 deps/v8/src/maglev/maglev-inlining.h create mode 100644 deps/v8/src/maglev/riscv/maglev-assembler-riscv-inl.h create mode 100644 deps/v8/src/maglev/riscv/maglev-assembler-riscv.cc create mode 100644 deps/v8/src/maglev/riscv/maglev-ir-riscv.cc create mode 100644 deps/v8/src/numbers/ieee754.cc create mode 100644 deps/v8/src/numbers/ieee754.h delete mode 100644 deps/v8/src/objects/bigint-inl.h create mode 100644 deps/v8/src/objects/casting-inl.h create mode 100644 deps/v8/src/objects/js-weak-refs.cc rename deps/v8/src/parsing/{import-assertions.cc => import-attributes.cc} (91%) rename deps/v8/src/parsing/{import-assertions.h => import-attributes.h} (87%) create mode 100644 deps/v8/src/regexp/regexp-result-vector.cc create mode 100644 deps/v8/src/regexp/regexp-result-vector.h create mode 100644 deps/v8/src/sandbox/cppheap-pointer.h delete mode 100644 deps/v8/src/sandbox/external-buffer-inl.h delete mode 100644 deps/v8/src/sandbox/external-buffer-table-inl.h delete mode 100644 deps/v8/src/sandbox/external-buffer-table.cc delete mode 100644 deps/v8/src/sandbox/external-buffer-table.h delete mode 100644 deps/v8/src/sandbox/external-buffer-tag.h delete mode 100644 deps/v8/src/sandbox/external-buffer.h create mode 100644 deps/v8/src/sandbox/trusted-pointer-scope.cc create mode 100644 deps/v8/src/sandbox/trusted-pointer-scope.h create mode 100644 deps/v8/src/strings/DEPS create mode 100644 deps/v8/src/strings/string-hasher.cc delete mode 100644 deps/v8/src/third_party/valgrind/OWNERS delete mode 100644 deps/v8/src/third_party/vtune/DEPS delete mode 100644 deps/v8/src/third_party/vtune/OWNERS create mode 100644 deps/v8/src/tracing/trace-id.h create mode 100644 deps/v8/src/utils/DEPS delete mode 100644 deps/v8/src/wasm/graph-builder-interface.cc delete mode 100644 deps/v8/src/wasm/graph-builder-interface.h delete mode 100644 deps/v8/src/wasm/serialized-signature-inl.h create mode 100644 deps/v8/test/benchmarks/cpp/fast-api.cc create mode 100644 deps/v8/test/cctest/wasm/DEPS delete mode 100644 deps/v8/test/fuzzer/wasm-fuzzer-common.h create mode 100644 deps/v8/test/fuzzer/wasm/DIR_METADATA rename deps/v8/test/fuzzer/{wasm-async.cc => wasm/async.cc} (68%) rename deps/v8/test/fuzzer/{wasm_async => wasm/async}/README.md (100%) rename deps/v8/test/fuzzer/{wasm_async => wasm/async}/regress-1115431.wasm (100%) rename deps/v8/test/fuzzer/{wasm_async => wasm/async}/regress-1405322.wasm (100%) rename deps/v8/test/fuzzer/{wasm_async => wasm/async}/regression-761784.wasm (100%) rename deps/v8/test/fuzzer/{wasm_async => wasm/async}/valid.wasm (100%) rename deps/v8/test/fuzzer/{wasm-code.cc => wasm/code.cc} (85%) rename deps/v8/test/fuzzer/wasm/{ => code}/foo (100%) rename deps/v8/test/fuzzer/{wasm-compile-all.cc => wasm/compile-all.cc} (71%) rename deps/v8/test/fuzzer/{wasm-compile-simd.cc => wasm/compile-simd.cc} (70%) rename deps/v8/test/fuzzer/{wasm-compile-wasmgc.cc => wasm/compile-wasmgc.cc} (70%) rename deps/v8/test/fuzzer/{wasm-compile.cc => wasm/compile.cc} (71%) rename deps/v8/test/fuzzer/{wasm_code => wasm/compile}/foo (100%) rename deps/v8/test/fuzzer/{wasm-deopt.cc => wasm/deopt.cc} (58%) rename deps/v8/test/fuzzer/{wasm-fuzzer-common.cc => wasm/fuzzer-common.cc} (62%) create mode 100644 deps/v8/test/fuzzer/wasm/fuzzer-common.h rename deps/v8/test/fuzzer/{wasm-init-expr.cc => wasm/init-expr.cc} (85%) create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/OWNERS create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/fast-interpreter.cc create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-all.cc create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-base.cc create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-code.cc create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-diff.cc create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-fuzzer-common.cc create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-fuzzer-common.h create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-init-expr.cc create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-simd.cc create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-wasmgc.cc rename deps/v8/test/fuzzer/{wasm.cc => wasm/module.cc} (78%) rename deps/v8/test/fuzzer/{wasm_compile => wasm/module}/foo (100%) rename deps/v8/test/fuzzer/wasm/{ => module}/regress-1115280.wasm (100%) rename deps/v8/test/fuzzer/wasm/{ => module}/regress-1127717.wasm (100%) rename deps/v8/test/fuzzer/wasm/{ => module}/regress-1191853.wasm (100%) rename deps/v8/test/fuzzer/wasm/{ => module}/regress-1404619.wasm (100%) rename deps/v8/test/fuzzer/wasm/{ => module}/regress-1464231.wasm (100%) rename deps/v8/test/fuzzer/{wasm-streaming.cc => wasm/streaming.cc} (93%) rename deps/v8/test/fuzzer/{wasm_streaming => wasm/streaming}/README.md (100%) rename deps/v8/test/fuzzer/{wasm_streaming => wasm/streaming}/empty_module (100%) rename deps/v8/test/fuzzer/{wasm_streaming => wasm/streaming}/regress-1334577 (100%) rename deps/v8/test/fuzzer/{wasm_streaming => wasm/streaming}/regress-1335023 (100%) rename deps/v8/test/fuzzer/{wasm_streaming => wasm/streaming}/regress-1427898 (100%) rename deps/v8/test/fuzzer/{wasm_streaming => wasm/streaming}/regress-1429613 (100%) create mode 100644 deps/v8/test/inspector/debugger/break-on-exception-explicit-resource-management-expected.txt create mode 100644 deps/v8/test/inspector/debugger/break-on-exception-explicit-resource-management.js create mode 100644 deps/v8/test/inspector/debugger/debug-evaluate-explicit-resource-management-expected.txt create mode 100644 deps/v8/test/inspector/debugger/debug-evaluate-explicit-resource-management.js create mode 100644 deps/v8/test/inspector/debugger/ignore-anonymous-and-content-script-expected.txt create mode 100644 deps/v8/test/inspector/debugger/ignore-anonymous-and-content-script.js create mode 100644 deps/v8/test/inspector/debugger/wasm-script-parsed-buildid-expected.txt create mode 100644 deps/v8/test/inspector/debugger/wasm-script-parsed-buildid.js create mode 100644 deps/v8/test/inspector/regress/regress-crbug-383029265-expected.txt create mode 100644 deps/v8/test/inspector/regress/regress-crbug-383029265.js create mode 100644 deps/v8/test/inspector/runtime/error-stack-async-expected.txt create mode 100644 deps/v8/test/inspector/runtime/error-stack-async.js create mode 100644 deps/v8/test/inspector/runtime/evaluate-private-class-member-invalid-receiver-expected.txt create mode 100644 deps/v8/test/inspector/runtime/evaluate-private-class-member-invalid-receiver.js create mode 100644 deps/v8/test/inspector/runtime/evaluate-repl-mode-using-await-using-expected.txt create mode 100644 deps/v8/test/inspector/runtime/evaluate-repl-mode-using-await-using.js create mode 100644 deps/v8/test/intl/duration-format/format-digital-longdigits.js create mode 100644 deps/v8/test/intl/number-format/pr925.js create mode 100644 deps/v8/test/intl/plural-rules/resolvedOptions-pluralCategories-order.js create mode 100644 deps/v8/test/intl/regress-386857213.js delete mode 100644 deps/v8/test/js-perf-test/RegExp/RegExpTests.json create mode 100644 deps/v8/test/js-perf-test/RegExp/base_replace_emoji_g.js create mode 100644 deps/v8/test/js-perf-test/RegExp/base_replace_emoji_gu.js create mode 100644 deps/v8/test/js-perf-test/RegExp/base_replace_emoji_gv.js create mode 100644 deps/v8/test/js-perf-test/RegExp/base_replaceall_emoji_g.js create mode 100644 deps/v8/test/js-perf-test/RegExp/base_replaceall_emoji_gu.js create mode 100644 deps/v8/test/js-perf-test/RegExp/base_replaceall_emoji_gv.js create mode 100644 deps/v8/test/js-perf-test/RegExp/replace_emoji_g.js create mode 100644 deps/v8/test/js-perf-test/RegExp/replace_emoji_gu.js create mode 100644 deps/v8/test/js-perf-test/RegExp/replace_emoji_gv.js create mode 100644 deps/v8/test/js-perf-test/RegExp/replaceall_emoji_g.js create mode 100644 deps/v8/test/js-perf-test/RegExp/replaceall_emoji_gu.js create mode 100644 deps/v8/test/js-perf-test/RegExp/replaceall_emoji_gv.js create mode 100644 deps/v8/test/js-perf-test/RegExp/slow_replace_emoji_g.js create mode 100644 deps/v8/test/js-perf-test/RegExp/slow_replace_emoji_gu.js create mode 100644 deps/v8/test/js-perf-test/RegExp/slow_replace_emoji_gv.js create mode 100644 deps/v8/test/js-perf-test/RegExp/slow_replaceall_emoji_g.js create mode 100644 deps/v8/test/js-perf-test/RegExp/slow_replaceall_emoji_gu.js create mode 100644 deps/v8/test/js-perf-test/RegExp/slow_replaceall_emoji_gv.js delete mode 100644 deps/v8/test/message/fail/modules-import-assertions-fail-1.out delete mode 100644 deps/v8/test/message/fail/modules-import-assertions-fail-3.out rename deps/v8/test/message/fail/{modules-import-assertions-fail-3.mjs => modules-import-attributes-fail-1.mjs} (67%) create mode 100644 deps/v8/test/message/fail/modules-import-attributes-fail-1.out rename deps/v8/test/message/fail/{modules-import-assertions-fail-2.mjs => modules-import-attributes-fail-2.mjs} (62%) rename deps/v8/test/message/fail/{modules-import-assertions-fail-2.out => modules-import-attributes-fail-2.out} (61%) rename deps/v8/test/message/fail/{modules-import-assertions-fail-1.mjs => modules-import-attributes-fail-3.mjs} (60%) create mode 100644 deps/v8/test/message/fail/modules-import-attributes-fail-3.out rename deps/v8/test/message/fail/{modules-skip-1-import-assertions-fail.mjs => modules-skip-1-import-attributes-fail.mjs} (100%) rename deps/v8/test/message/fail/{modules-skip-3-import-assertions-fail.json => modules-skip-3-import-attributes-fail.json} (100%) create mode 100644 deps/v8/test/message/fail/using-declaration-rethrow.js create mode 100644 deps/v8/test/message/fail/using-declaration-rethrow.out create mode 100644 deps/v8/test/message/wasm-deopt-max-input-count.js create mode 100644 deps/v8/test/message/wasm-deopt-max-input-count.out create mode 100644 deps/v8/test/message/wasm-deopt-max-limit.js create mode 100644 deps/v8/test/message/wasm-deopt-max-limit.out create mode 100644 deps/v8/test/mjsunit/additive-safe-int-feedback.js create mode 100644 deps/v8/test/mjsunit/array-buffer-limit.js create mode 100644 deps/v8/test/mjsunit/array-prototype-map-elements-kinds-dict.js create mode 100644 deps/v8/test/mjsunit/array-prototype-map-elements-kinds.js delete mode 100644 deps/v8/test/mjsunit/asm/noexpose-wasm.js delete mode 100644 deps/v8/test/mjsunit/baseline/deopt-to-baseline.js create mode 100644 deps/v8/test/mjsunit/compiler/array-prototype-map-elements-kinds-dict.js create mode 100644 deps/v8/test/mjsunit/compiler/array-prototype-map-elements-kinds.js create mode 100644 deps/v8/test/mjsunit/compiler/checkmaps-with-migration-and-deopt-mono.js create mode 100644 deps/v8/test/mjsunit/compiler/checkmaps-with-migration-and-deopt-mono2.js create mode 100644 deps/v8/test/mjsunit/compiler/checkmaps-with-migration-and-deopt-poly.js create mode 100644 deps/v8/test/mjsunit/compiler/checkmaps-with-migration-and-deopt-poly2.js create mode 100644 deps/v8/test/mjsunit/compiler/checkmaps-with-migration-and-deopt-poly3.js create mode 100644 deps/v8/test/mjsunit/compiler/dataview-float16.js create mode 100644 deps/v8/test/mjsunit/compiler/fast-api-attributes.js create mode 100644 deps/v8/test/mjsunit/compiler/load_mutable_heap_slot_context_specialized.js create mode 100644 deps/v8/test/mjsunit/compiler/optimized-array-at-throw.js create mode 100644 deps/v8/test/mjsunit/compiler/poly-store-gets-smi.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-356196918.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-376100382.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-376307767.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-376818204.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-377213712-1.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-377213712-2.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-377213712-3.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-378408466.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-379519287.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-385386138.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-392660676.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-392667952.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-393411524.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-394120836.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-394327270.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-394650781.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-396463255.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-398431403.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-400052777.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-402646504.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-404356997.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-crbug-369685641.js create mode 100644 deps/v8/test/mjsunit/compiler/string-concat-escape-nested.js create mode 100644 deps/v8/test/mjsunit/compiler/string-concat-escape.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-all-kinds.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-as-number.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-constant.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-1a.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-1b.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-2a.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-2b.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-3a.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-3b.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-4a.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-4b.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-6a.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-6b.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-7a.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-custom-7b.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-detached-1.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-detached-2.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-from-call-polymorphic.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-from-call.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-iteration.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-length-polymorphic.js create mode 100644 deps/v8/test/mjsunit/d8/d8-worker-dynamic-import-execution-terminating.js create mode 100644 deps/v8/test/mjsunit/d8/flush-denormals-flag.js create mode 100644 deps/v8/test/mjsunit/d8/flush-denormals-helper.js create mode 100644 deps/v8/test/mjsunit/d8/flush-denormals-worker.js create mode 100644 deps/v8/test/mjsunit/d8/regress-389573438.js create mode 100644 deps/v8/test/mjsunit/elements-kinds-helpers.js create mode 100644 deps/v8/test/mjsunit/empty-tf-cons-string-tree.mjs rename deps/v8/test/mjsunit/{strictequals-feedback.js => equals-feedback.js} (52%) create mode 100644 deps/v8/test/mjsunit/es6/big-weakmap.js create mode 100644 deps/v8/test/mjsunit/harmony/await-using-get-symbol.dispose-after-symbol.asyncDispose.is-null.js create mode 100644 deps/v8/test/mjsunit/harmony/await-using-null.js create mode 100644 deps/v8/test/mjsunit/harmony/await-using-throws-suppressed-error.js create mode 100644 deps/v8/test/mjsunit/harmony/base64-from-hex-long-inputs.js create mode 100644 deps/v8/test/mjsunit/harmony/base64-from-hex-with-two-byte-strings.js create mode 100644 deps/v8/test/mjsunit/harmony/base64-prototype-to-hex-long-inputs.js create mode 100644 deps/v8/test/mjsunit/harmony/disposable-stack-use-throws-if-disposed.js create mode 100644 deps/v8/test/mjsunit/harmony/explicit-resource-management-call-sync-from-async-receiver.js create mode 100644 deps/v8/test/mjsunit/harmony/for-using-of-await-using-of.js delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-1.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-2.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-3.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-4.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-1.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-10.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-11.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-12.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-2.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-3.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-4.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-5.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-6.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-7.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-8.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-assertions-dynamic-9.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-attributes-dynamic-assertions-fallback-1.mjs delete mode 100644 deps/v8/test/mjsunit/harmony/modules-import-attributes-dynamic-assertions-fallback-2.mjs create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-352690887.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-368503280.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-369010108.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-369652654.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-379888466.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-380677637.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-385406640.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-402863536.js create mode 100644 deps/v8/test/mjsunit/harmony/using-requires-initializer.js delete mode 100644 deps/v8/test/mjsunit/harmony/weakrefs/basics-cleanupsome.js delete mode 100644 deps/v8/test/mjsunit/harmony/weakrefs/cleanupsome-2.js delete mode 100644 deps/v8/test/mjsunit/harmony/weakrefs/cleanupsome-after-unregister.js delete mode 100644 deps/v8/test/mjsunit/harmony/weakrefs/cleanupsome-optional.js delete mode 100644 deps/v8/test/mjsunit/harmony/weakrefs/cleanupsome.js create mode 100644 deps/v8/test/mjsunit/json-parser-double-arrays.js create mode 100644 deps/v8/test/mjsunit/lower_limits_mode/regress/regress-crbug-400504688.js create mode 100644 deps/v8/test/mjsunit/lower_limits_mode/regress/regress-crbug-405910175-map.js create mode 100644 deps/v8/test/mjsunit/lower_limits_mode/regress/regress-crbug-405910175-set.js create mode 100644 deps/v8/test/mjsunit/maglev/array-prototype-map-elements-kinds-dict.js create mode 100644 deps/v8/test/mjsunit/maglev/array-prototype-map-elements-kinds.js create mode 100644 deps/v8/test/mjsunit/maglev/array-push-with-impossible-type.js create mode 100644 deps/v8/test/mjsunit/maglev/branchifrootconstant-with-float64toboolean.js create mode 100644 deps/v8/test/mjsunit/maglev/branchifrootconstant-with-int32toboolean.js create mode 100644 deps/v8/test/mjsunit/maglev/checkmaps-with-migration-and-deopt-mono.js create mode 100644 deps/v8/test/mjsunit/maglev/checkmaps-with-migration-and-deopt-mono2.js create mode 100644 deps/v8/test/mjsunit/maglev/checkmaps-with-migration-and-deopt-poly.js create mode 100644 deps/v8/test/mjsunit/maglev/checkmaps-with-migration-and-deopt-poly2.js create mode 100644 deps/v8/test/mjsunit/maglev/checkmaps-with-migration-and-deopt-poly3.js create mode 100644 deps/v8/test/mjsunit/maglev/load_mutable_heap_slot_context_specialized.js create mode 100644 deps/v8/test/mjsunit/maglev/load_mutable_heap_slot_no_context_specialized.js create mode 100644 deps/v8/test/mjsunit/maglev/maglev-inlining-dead.js create mode 100644 deps/v8/test/mjsunit/maglev/maglev-loop-3-preds.js create mode 100644 deps/v8/test/mjsunit/maglev/poly-store-transition.js delete mode 100644 deps/v8/test/mjsunit/maglev/regress-1417125.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-367814188.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-369652820.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-371659897.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-373473130.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-375330032.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-376502882.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-376503834.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-377352333.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-377736134.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-377850462.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-377966014.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-378014582.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-379159138.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-379669752.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-379843860.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-389330329.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-390461961.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-390461961b.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-393231744.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-395969077.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-399697984.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-402646504.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-405452052.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-405522048.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-406043356.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-6565476905713664.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-367758074.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-371044612.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-379066970.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-383019484.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-383999269.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-399208503.js create mode 100644 deps/v8/test/mjsunit/maglev/store_mutable_heap_slot_context_specialized.js create mode 100644 deps/v8/test/mjsunit/maglev/store_mutable_heap_slot_no_context_specialized.js create mode 100644 deps/v8/test/mjsunit/maglev/strict-equals-receiver-or-null-or-undefined.js create mode 100644 deps/v8/test/mjsunit/maglev/string-wrapper-add-1.js create mode 100644 deps/v8/test/mjsunit/maglev/string-wrapper-add-2.js create mode 100644 deps/v8/test/mjsunit/maglev/string-wrapper-add-3.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-abs.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-all-kinds.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-as-number-large.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-as-number.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-bitwise.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-branch-if-root.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-branch-if-to-boolean-true.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-custom-1a.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-custom-1b.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-custom-2a.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-custom-2b.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-deopt-large.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-deopt.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-detached-1.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-detached-2.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-exception-phi.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-index-into-array-large.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-index-into-array.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-index-into-typed-array-large.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-index-into-typed-array.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-iteration-large.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-iteration.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-parseint.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-phi.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-rab-gsab.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-round.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-store-as-uint8clamped.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-store-into-global-large.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-store-into-global.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-store-script-context-large.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-store-script-context.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-to-boolean.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-to-number-large.js create mode 100644 deps/v8/test/mjsunit/maglev/typed-array-length-to-number.js create mode 100644 deps/v8/test/mjsunit/mutable-int32-slot.js create mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-1.js create mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-2.js create mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-3.js create mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-4.js create mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-5.js create mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-6.js create mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-7.js create mode 100644 deps/v8/test/mjsunit/regexp-cons-empty-first.js create mode 100644 deps/v8/test/mjsunit/regexp-lookahead-experimental.js create mode 100644 deps/v8/test/mjsunit/regexp-lookbehind-experimental.js create mode 100644 deps/v8/test/mjsunit/regexp-match-global-atom-cache.js rename deps/v8/test/mjsunit/{harmony => }/regexp-unicode-sets.js (91%) delete mode 100644 deps/v8/test/mjsunit/regress-1417125.js create mode 100644 deps/v8/test/mjsunit/regress-367066330.js create mode 100644 deps/v8/test/mjsunit/regress-376701117.js create mode 100644 deps/v8/test/mjsunit/regress-376723691.js create mode 100644 deps/v8/test/mjsunit/regress-376738752.js create mode 100644 deps/v8/test/mjsunit/regress-377352368.js create mode 100644 deps/v8/test/mjsunit/regress-378102635.js create mode 100644 deps/v8/test/mjsunit/regress-378634722.js create mode 100644 deps/v8/test/mjsunit/regress-378836886.js create mode 100644 deps/v8/test/mjsunit/regress-378836891.js create mode 100644 deps/v8/test/mjsunit/regress-378891969O.js create mode 100644 deps/v8/test/mjsunit/regress-378891973.js create mode 100644 deps/v8/test/mjsunit/regress-379441907.js create mode 100644 deps/v8/test/mjsunit/regress-381332101.js create mode 100644 deps/v8/test/mjsunit/regress-382896285.js create mode 100644 deps/v8/test/mjsunit/regress-383588431.js create mode 100644 deps/v8/test/mjsunit/regress-383854199.js create mode 100644 deps/v8/test/mjsunit/regress-393408781-2.js create mode 100644 deps/v8/test/mjsunit/regress-393408781.js create mode 100644 deps/v8/test/mjsunit/regress-396485545.js create mode 100644 deps/v8/test/mjsunit/regress-398879933.js create mode 100644 deps/v8/test/mjsunit/regress-399698534.js create mode 100644 deps/v8/test/mjsunit/regress-401652934-2.js create mode 100644 deps/v8/test/mjsunit/regress-401652934.js create mode 100644 deps/v8/test/mjsunit/regress-403345124.js create mode 100644 deps/v8/test/mjsunit/regress-crbug-370694832.js create mode 100644 deps/v8/test/mjsunit/regress/regress-366323469.js create mode 100644 deps/v8/test/mjsunit/regress/regress-366323504.js rename deps/v8/test/mjsunit/regress/{regress-335548148.js => regress-366635361.js} (50%) create mode 100644 deps/v8/test/mjsunit/regress/regress-366783816.js create mode 100644 deps/v8/test/mjsunit/regress/regress-367752279.js create mode 100644 deps/v8/test/mjsunit/regress/regress-367779587.js create mode 100644 deps/v8/test/mjsunit/regress/regress-368076858.js create mode 100644 deps/v8/test/mjsunit/regress/regress-368467195.js create mode 100644 deps/v8/test/mjsunit/regress/regress-369667727.js create mode 100644 deps/v8/test/mjsunit/regress/regress-371237560.js create mode 100644 deps/v8/test/mjsunit/regress/regress-372298921.js create mode 100644 deps/v8/test/mjsunit/regress/regress-372524119.js create mode 100644 deps/v8/test/mjsunit/regress/regress-372750822.mjs create mode 100644 deps/v8/test/mjsunit/regress/regress-372819446.js create mode 100644 deps/v8/test/mjsunit/regress/regress-374627491.js create mode 100644 deps/v8/test/mjsunit/regress/regress-374812617.js create mode 100644 deps/v8/test/mjsunit/regress/regress-375286252.js create mode 100644 deps/v8/test/mjsunit/regress/regress-375748220.js create mode 100644 deps/v8/test/mjsunit/regress/regress-376770786.js create mode 100644 deps/v8/test/mjsunit/regress/regress-377574368.js create mode 100644 deps/v8/test/mjsunit/regress/regress-377820802.js create mode 100644 deps/v8/test/mjsunit/regress/regress-377829476.js create mode 100644 deps/v8/test/mjsunit/regress/regress-377971738.js create mode 100644 deps/v8/test/mjsunit/regress/regress-378014586.js create mode 100644 deps/v8/test/mjsunit/regress/regress-378058739.js create mode 100644 deps/v8/test/mjsunit/regress/regress-378102651.js create mode 100644 deps/v8/test/mjsunit/regress/regress-379811150.js create mode 100644 deps/v8/test/mjsunit/regress/regress-379811151.js create mode 100644 deps/v8/test/mjsunit/regress/regress-380416869.js create mode 100644 deps/v8/test/mjsunit/regress/regress-381216375.js create mode 100644 deps/v8/test/mjsunit/regress/regress-381390367.js create mode 100644 deps/v8/test/mjsunit/regress/regress-382310350.js create mode 100644 deps/v8/test/mjsunit/regress/regress-382867816.js create mode 100644 deps/v8/test/mjsunit/regress/regress-383781940.js create mode 100644 deps/v8/test/mjsunit/regress/regress-383825153.js create mode 100644 deps/v8/test/mjsunit/regress/regress-384605103.js create mode 100644 deps/v8/test/mjsunit/regress/regress-384773802.js create mode 100644 deps/v8/test/mjsunit/regress/regress-385326426.js create mode 100644 deps/v8/test/mjsunit/regress/regress-386487312.js create mode 100644 deps/v8/test/mjsunit/regress/regress-388068045.js create mode 100644 deps/v8/test/mjsunit/regress/regress-388290816.js create mode 100644 deps/v8/test/mjsunit/regress/regress-388905056.js create mode 100644 deps/v8/test/mjsunit/regress/regress-390004174.js create mode 100644 deps/v8/test/mjsunit/regress/regress-390503430.js create mode 100644 deps/v8/test/mjsunit/regress/regress-390568195.js create mode 100644 deps/v8/test/mjsunit/regress/regress-390675705.js create mode 100644 deps/v8/test/mjsunit/regress/regress-392928803.js create mode 100644 deps/v8/test/mjsunit/regress/regress-393164869.js create mode 100644 deps/v8/test/mjsunit/regress/regress-394874187.js create mode 100644 deps/v8/test/mjsunit/regress/regress-395028748.js create mode 100644 deps/v8/test/mjsunit/regress/regress-395053819.js create mode 100644 deps/v8/test/mjsunit/regress/regress-396460426.js create mode 100644 deps/v8/test/mjsunit/regress/regress-397720949.js create mode 100644 deps/v8/test/mjsunit/regress/regress-398067539.js create mode 100644 deps/v8/test/mjsunit/regress/regress-401111776.js create mode 100644 deps/v8/test/mjsunit/regress/regress-406828712.js create mode 100644 deps/v8/test/mjsunit/regress/regress-406830031.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-366863049.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-366873205.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-368634139.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-369003813.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-370133742.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-371237564.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-371239173.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-371445202.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-902610-2.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-342602616.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-361123483.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-361717714.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-362539773.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-365376497.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-365802567.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-366307027.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-366323508.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-366350766.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-366350770.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-366350772.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-368070338.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-368086282.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-368512282.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-369533086.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-369652650.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-370191716.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-371565065.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-372067240.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-372261626.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-372294705.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-372993873.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-373684419.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-373702823.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-373907109.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-374820218.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-375220562.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-375270509.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-375314963.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-375343420.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-375346071.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-375959770.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-377620832.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-377942344.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-377971725.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-378014602.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-379009132.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-379066968.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-379414135.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-379811148.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-380397544.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-381120595.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-381458039.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-381696874.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-381917890.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-382291459.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-382547695.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-382564224.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-382816108.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-383356864.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-384549252.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-384974501.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-385256127.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-387055479.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-388290793.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-388934347-a.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-388934347-b.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-390467420.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-390675703.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-392318896.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-392928805.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-393632542.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-394091686.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-395214627.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-396461004.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-397043084.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-398439335.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-399402814.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-399412227.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-399497254.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-400852655.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-403308742.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-403364367.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-405498890.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-406043349.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-406053619.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-simd-391916477.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-simd-396460489.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-simd-403675482.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-385775375.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-391169061.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-329345899.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-342297062-1.js rename deps/v8/test/mjsunit/sandbox/regress/{regress-342297062.js => regress-342297062-2.js} (100%) create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-342297062-3.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-348084786.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-354408144.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-369748453-1.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-369748453-2.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-369748453-3.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-376071292-1.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-376071292-2.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-376496315.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-379418918.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-379768241.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-379774687.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-381999810.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-388616182.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-392180065.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-40070746.js create mode 100644 deps/v8/test/mjsunit/shared-memory/condition-async-wait-no-await.js create mode 100644 deps/v8/test/mjsunit/shared-memory/regress-crbug-366323424.js create mode 100644 deps/v8/test/mjsunit/shared-memory/regress-crbug-366643711.js create mode 100644 deps/v8/test/mjsunit/shared-memory/regress-crbug-371659887.js create mode 100644 deps/v8/test/mjsunit/shared-memory/shared-heap.js create mode 100644 deps/v8/test/mjsunit/shared-memory/wasm/regress-406662636.js create mode 100644 deps/v8/test/mjsunit/store_mutable_heap_slot_context_specialized.js create mode 100644 deps/v8/test/mjsunit/stress-delay-tasks.js create mode 100644 deps/v8/test/mjsunit/string-wrapper-add-3.js create mode 100644 deps/v8/test/mjsunit/tools/foozzie_arch_specific.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-402170119-1.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-402170119-2.js create mode 100644 deps/v8/test/mjsunit/turboshaft/checkmaps-with-migration-and-deopt-mono.js create mode 100644 deps/v8/test/mjsunit/turboshaft/checkmaps-with-migration-and-deopt-mono2.js create mode 100644 deps/v8/test/mjsunit/turboshaft/checkmaps-with-migration-and-deopt-poly.js create mode 100644 deps/v8/test/mjsunit/turboshaft/checkmaps-with-migration-and-deopt-poly2.js create mode 100644 deps/v8/test/mjsunit/turboshaft/checkmaps-with-migration-and-deopt-poly3.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/array-prototype-map-array-constructor-protector.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/array-prototype-map-elements-kinds-dict.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/array-prototype-map-elements-kinds.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/construct-array-feedback.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-358461173-1.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-358461173-2.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-358957666.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-359266991.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-360207713.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-361124378.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-368725681.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-372754523.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-373025979.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-379207983.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-379776583.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-385657142.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-406054652.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/script-context-smi-generator.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/set-prototype-has.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-all-kinds.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-as-number-large.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-as-number.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-branch-if-to-boolean-true.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-deopt-large.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-deopt.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-exception-phi.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-index-into-array-large.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-index-into-array.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-index-into-typed-array-large.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-index-into-typed-array.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-iteration-large.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-iteration.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-phi.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-rab-gsab.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-store-into-global-large.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-store-into-global.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-store-script-context-large.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-store-script-context.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-to-boolean.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-to-number-large.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-to-number.js create mode 100644 deps/v8/test/mjsunit/turboshaft/math-pow-0-point-5.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-380487911.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-381129317.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-382135577.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-382547699-1.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-382547699-2.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-383397477.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-391500839.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-394402574.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-396460487.js create mode 100644 deps/v8/test/mjsunit/turboshaft/strict-equals-receiver-or-null-or-undefined.js create mode 100644 deps/v8/test/mjsunit/turboshaft/string-escape-analysis-exponential-state.js create mode 100644 deps/v8/test/mjsunit/turboshaft/string-escape-analysis-rematerialize-for-arguments-1.js create mode 100644 deps/v8/test/mjsunit/turboshaft/string-escape-analysis-rematerialize-for-arguments-2.js delete mode 100644 deps/v8/test/mjsunit/turboshaft/turboshaft-frontend-test.js create mode 100644 deps/v8/test/mjsunit/wasm/array-fill-gc.js create mode 100644 deps/v8/test/mjsunit/wasm/async-compile-non-async.js create mode 100644 deps/v8/test/mjsunit/wasm/denormals.js create mode 100644 deps/v8/test/mjsunit/wasm/deopt/deopt-debugging.js create mode 100644 deps/v8/test/mjsunit/wasm/deopt/deopt-multi-instance-call-indirect.js create mode 100644 deps/v8/test/mjsunit/wasm/deopt/deopt-serialized-module.js create mode 100644 deps/v8/test/mjsunit/wasm/deopt/deopt-too-much-feedback.js create mode 100644 deps/v8/test/mjsunit/wasm/esm/module-import-source-dynamic-not-found.mjs create mode 100644 deps/v8/test/mjsunit/wasm/esm/module-import-source-dynamic.mjs create mode 100644 deps/v8/test/mjsunit/wasm/exact-types.js delete mode 100644 deps/v8/test/mjsunit/wasm/expose-wasm.js create mode 100644 deps/v8/test/mjsunit/wasm/generate-random-module-no-staging.js create mode 100644 deps/v8/test/mjsunit/wasm/grow-huge-memory-resizable-buffer.js create mode 100644 deps/v8/test/mjsunit/wasm/grow-memory-detaching-resizable-buffer.js create mode 100644 deps/v8/test/mjsunit/wasm/grow-memory-in-branch-resizable-buffer.js create mode 100644 deps/v8/test/mjsunit/wasm/grow-memory-in-call-resizable-buffer.js create mode 100644 deps/v8/test/mjsunit/wasm/grow-memory-in-loop-resizable-buffer.js create mode 100644 deps/v8/test/mjsunit/wasm/grow-memory-resizable-buffer.js create mode 100644 deps/v8/test/mjsunit/wasm/grow-shared-memory-resizable-buffer.js create mode 100644 deps/v8/test/mjsunit/wasm/inlining-multi-instance.js create mode 100644 deps/v8/test/mjsunit/wasm/interleaved-loads.js create mode 100644 deps/v8/test/mjsunit/wasm/max-params.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-control.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-huge-constant-index.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-concat-dictionary-mode.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-concat.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-filter.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-flat-flatmap-from.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-flat-grows-detaches.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-flatmap-grows-detaches.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-foreach-reduce.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-from-grows-detaches.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-pop-shift.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-push-unshift-splice.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-array-slice.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-resizable-buffer-errors.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-toresizable-tofixedlength.js create mode 100644 deps/v8/test/mjsunit/wasm/redundant-shuffle-lanes.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/shared-type-with-unshared-elem.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-memory-resizable-buffer-array-concat.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-memory-resizable-buffer-array-flat-flatmap-from.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-memory-resizable-buffer-array-flat-grows.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-memory-resizable-buffer-array-flatmap-grows.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-memory-resizable-buffer-array-from-grows.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-memory-resizable-buffer-array-pop-shift.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-memory-resizable-buffer-array-push-unshift-splice.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-memory-resizable-buffer-array-slice.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-memory-resizable-buffer-errors.js create mode 100644 deps/v8/test/mjsunit/wasm/shuffles.js create mode 100644 deps/v8/test/mjsunit/wasm/stack-switching-init-safe.js create mode 100644 deps/v8/test/mjsunit/wasm/stack-switching-no-stress.js create mode 100644 deps/v8/test/mjsunit/wasm/stack-switching-notraps.js create mode 100644 deps/v8/test/mjsunit/wasm/streaming-api-non-async.js create mode 100644 deps/v8/test/mjsunit/wasm/subtyping-invalid.js create mode 100644 deps/v8/test/mjsunit/wasm/table64-js-api.js create mode 100644 deps/v8/test/mjsunit/wasm/type-reflection-other-callable.js create mode 100644 deps/v8/test/mjsunit/wasm/wasm-interpreter-fuzzer.js create mode 100644 deps/v8/test/mjsunit/wasm/wasm-interpreter-memory64.js create mode 100644 deps/v8/test/mjsunit/wasm/wrapper-inlining-lazy-deopt.js create mode 100644 deps/v8/test/test262/local-tests/test/staging/built-ins/RegExp/escape/surrogate-pair.js delete mode 100755 deps/v8/test/test262/prune-local-tests.sh delete mode 100755 deps/v8/test/test262/upstream-local-tests.sh create mode 100644 deps/v8/test/unittests/api/smi-tagging-unittest.cc rename deps/v8/test/unittests/base/{functional-unittest.cc => hashing-unittest.cc} (80%) create mode 100644 deps/v8/test/unittests/base/small-vector-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/arm/turboshaft-instruction-selector-arm-unittest.cc delete mode 100644 deps/v8/test/unittests/compiler/arm64/instruction-selector-arm64-unittest.cc rename deps/v8/test/unittests/compiler/ia32/{instruction-selector-ia32-unittest.cc => turboshaft-instruction-selector-ia32-unittest.cc} (65%) rename deps/v8/test/unittests/compiler/loong64/{instruction-selector-loong64-unittest.cc => turboshaft-instruction-selector-loong64-unittest.cc} (100%) rename deps/v8/test/unittests/compiler/mips64/{instruction-selector-mips64-unittest.cc => turboshaft-instruction-selector-mips64-unittest.cc} (97%) delete mode 100644 deps/v8/test/unittests/compiler/riscv32/instruction-selector-riscv32-unittest.cc delete mode 100644 deps/v8/test/unittests/compiler/riscv64/instruction-selector-riscv64-unittest.cc delete mode 100644 deps/v8/test/unittests/compiler/turboshaft/simplified-lowering-reducer-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/turboshaft/wasm-shuffle-reducer-unittest.cc delete mode 100644 deps/v8/test/unittests/compiler/x64/instruction-selector-x64-unittest.cc create mode 100644 deps/v8/test/unittests/diagnostics/etw-control-unittest.cc create mode 100644 deps/v8/test/unittests/diagnostics/etw-isolate-capture-state-monitor-win-unittest.cc delete mode 100644 deps/v8/test/unittests/heap/bitmap-test-utils.h rename deps/v8/test/unittests/heap/{bitmap-unittest.cc => marking-bitmap-unittest.cc} (86%) create mode 100644 deps/v8/test/unittests/heap/marking-progress-tracker-unittest.cc delete mode 100644 deps/v8/test/unittests/heap/marking-unittest.cc delete mode 100644 deps/v8/test/unittests/heap/progressbar-unittest.cc create mode 100644 deps/v8/test/unittests/sandbox/pointer-table-unittest.cc create mode 100644 deps/v8/test/unittests/wasm/type-canonicalization-fuzztest.cc create mode 100644 deps/v8/test/unittests/wasm/wasm-compile-module.h create mode 100644 deps/v8/test/unittests/wasm/wasm-usecounters.cc delete mode 100644 deps/v8/third_party/abseil-cpp/WORKSPACE delete mode 100644 deps/v8/third_party/abseil-cpp/WORKSPACE.bzlmod create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/attributes_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/base/inline_variable_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/inline_variable.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/inline_variable_testing.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/invoke.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/iterator_traits.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/iterator_traits_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/iterator_traits_test_helper.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/base/invoke_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/debugging/internal/addresses.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/log/internal/structured_proto.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/log/internal/structured_proto.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/log/internal/structured_proto_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/log/log_entry.cc rename deps/v8/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc => entropy_pool.cc} (75%) rename deps/v8/third_party/abseil-cpp/absl/{base/inline_variable_test_b.cc => random/internal/entropy_pool.h} (57%) create mode 100644 deps/v8/third_party/abseil-cpp/absl/random/internal/entropy_pool_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/random/internal/pool_urbg.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/random/internal/pool_urbg_test.cc rename deps/v8/third_party/abseil-cpp/absl/{base/inline_variable_test_a.cc => status/status_benchmark.cc} (52%) create mode 100644 deps/v8/third_party/abseil-cpp/absl/status/statusor_benchmark.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/cord_buffer.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance_benchmark.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/substitute_benchmark.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/any_exception_safety_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/any_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/bad_any_cast.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/bad_any_cast.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/bad_optional_access.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/bad_optional_access.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/bad_variant_access.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/bad_variant_access.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/internal/optional.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/internal/variant.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/optional_exception_safety_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/optional_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/variant_benchmark.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/types/variant_exception_safety_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/utility/internal/if_constexpr.h delete mode 100644 deps/v8/third_party/abseil-cpp/absl/utility/internal/if_constexpr_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/utility/utility_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/patches/0004-keep-transitive-include.patch create mode 100644 deps/v8/third_party/highway/src/hwy/abort.cc create mode 100644 deps/v8/third_party/highway/src/hwy/abort.h create mode 100644 deps/v8/third_party/highway/src/hwy/abort_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/aligned_allocator.cc create mode 100644 deps/v8/third_party/highway/src/hwy/aligned_allocator.h create mode 100644 deps/v8/third_party/highway/src/hwy/aligned_allocator_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/base.h create mode 100644 deps/v8/third_party/highway/src/hwy/base_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/bit_set.h create mode 100644 deps/v8/third_party/highway/src/hwy/bit_set_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/cache_control.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/algo/copy-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/algo/copy_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/algo/find-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/algo/find_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/algo/transform-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/algo/transform_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/bit_pack/bit_pack-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/bit_pack/bit_pack_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/dot/dot-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/dot/dot_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/image/image.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/image/image.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/image/image_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/math/math-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/math/math_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/matvec/matvec-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/matvec/matvec_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/random/random-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/random/random_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/BUILD create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/README.md create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/algo-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/bench_parallel.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/bench_sort.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/order.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/print_network.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/result-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/shared-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/sort_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/sort_unit_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/sorting_networks-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/traits-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/traits128-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_128a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_128d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_f16a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_f16d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_f32a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_f32d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_f64a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_f64d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_i16a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_i16d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_i32a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_i32d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_i64a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_i64d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_kv128a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_kv128d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_kv64a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_kv64d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_u16a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_u16d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_u32a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_u32d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_u64a.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/vqsort_u64d.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/thread_pool/futex.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/thread_pool/thread_pool.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/thread_pool/thread_pool_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/thread_pool/topology.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/thread_pool/topology.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/thread_pool/topology_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/unroller/README.md create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/unroller/unroller-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/unroller/unroller_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/detect_compiler_arch.h create mode 100644 deps/v8/third_party/highway/src/hwy/detect_targets.h create mode 100644 deps/v8/third_party/highway/src/hwy/examples/benchmark.cc create mode 100644 deps/v8/third_party/highway/src/hwy/examples/profiler_example.cc create mode 100644 deps/v8/third_party/highway/src/hwy/examples/skeleton-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/examples/skeleton.cc create mode 100644 deps/v8/third_party/highway/src/hwy/examples/skeleton.h create mode 100644 deps/v8/third_party/highway/src/hwy/examples/skeleton_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/foreach_target.h create mode 100644 deps/v8/third_party/highway/src/hwy/highway.h create mode 100644 deps/v8/third_party/highway/src/hwy/highway_export.h create mode 100644 deps/v8/third_party/highway/src/hwy/highway_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/hwy.version create mode 100644 deps/v8/third_party/highway/src/hwy/nanobenchmark.cc create mode 100644 deps/v8/third_party/highway/src/hwy/nanobenchmark.h create mode 100644 deps/v8/third_party/highway/src/hwy/nanobenchmark_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/ops/arm_neon-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/arm_sve-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/emu128-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/generic_ops-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/inside-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/rvv-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/scalar-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/set_macros-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/shared-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/wasm_128-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/wasm_256-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/x86_128-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/x86_256-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/x86_512-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/per_target.cc create mode 100644 deps/v8/third_party/highway/src/hwy/per_target.h create mode 100644 deps/v8/third_party/highway/src/hwy/print-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/print.cc create mode 100644 deps/v8/third_party/highway/src/hwy/print.h create mode 100644 deps/v8/third_party/highway/src/hwy/profiler.h create mode 100644 deps/v8/third_party/highway/src/hwy/robust_statistics.h create mode 100644 deps/v8/third_party/highway/src/hwy/stats.cc create mode 100644 deps/v8/third_party/highway/src/hwy/stats.h create mode 100644 deps/v8/third_party/highway/src/hwy/targets.cc create mode 100644 deps/v8/third_party/highway/src/hwy/targets.h create mode 100644 deps/v8/third_party/highway/src/hwy/targets_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/arithmetic_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/bit_permute_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/blockwise_combine_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/blockwise_shift_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/blockwise_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/cast_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/combine_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/compare_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/compress_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/concat_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/convert_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/count_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/crypto_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/demote_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/div_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/dup128_vec_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/expand_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/float_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/fma_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/foreach_vec_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/hwy_gtest.h create mode 100644 deps/v8/third_party/highway/src/hwy/tests/if_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/in_range_float_to_int_conv_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/interleaved_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/list_targets.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/logical_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/mask_combine_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/mask_convert_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/mask_mem_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/mask_slide_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/mask_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/masked_arithmetic_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/masked_minmax_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/memory_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/minmax_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/mul_by_pow2_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/mul_pairwise_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/mul_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/reduction_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/resize_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/reverse_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/rotate_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/saturated_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/shift_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/shuffle4_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/sign_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/slide_up_down_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/sums_abs_diff_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/swizzle_block_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/swizzle_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/table_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/test_util-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/tests/test_util.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/test_util.h create mode 100644 deps/v8/third_party/highway/src/hwy/tests/test_util_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/truncate_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/tuple_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/widen_mul_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/timer-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/timer.cc create mode 100644 deps/v8/third_party/highway/src/hwy/timer.h delete mode 100644 deps/v8/third_party/inspector_protocol/crdtp/glue.h delete mode 100644 deps/v8/third_party/inspector_protocol/crdtp/glue_test.cc delete mode 100644 deps/v8/third_party/inspector_protocol/crdtp/maybe.h delete mode 100644 deps/v8/third_party/inspector_protocol/crdtp/maybe_test.cc create mode 100644 deps/v8/third_party/llvm-libc/BUILD.gn create mode 100644 deps/v8/third_party/llvm-libc/README.md create mode 100644 deps/v8/third_party/llvm-libc/README.v8 create mode 100644 deps/v8/third_party/rapidhash-v8/LICENSE create mode 100644 deps/v8/third_party/rapidhash-v8/OWNERS create mode 100644 deps/v8/third_party/rapidhash-v8/README.chromium create mode 100644 deps/v8/third_party/rapidhash-v8/rapidhash.h create mode 100644 deps/v8/third_party/simdutf/BUILD.gn create mode 100644 deps/v8/third_party/simdutf/LICENSE create mode 100644 deps/v8/third_party/simdutf/OWNERS create mode 100644 deps/v8/third_party/simdutf/README.chromium create mode 100644 deps/v8/third_party/simdutf/simdutf.cpp create mode 100644 deps/v8/third_party/simdutf/simdutf.h rename deps/v8/{src => }/third_party/siphash/LICENSE (100%) rename deps/v8/{src => }/third_party/siphash/OWNERS (100%) rename deps/v8/{src => }/third_party/siphash/halfsiphash.cc (95%) rename deps/v8/{src => }/third_party/siphash/halfsiphash.h (100%) delete mode 100644 deps/v8/third_party/test262-harness/LICENSE delete mode 100644 deps/v8/third_party/test262-harness/OWNERS delete mode 100644 deps/v8/third_party/test262-harness/README.md delete mode 100644 deps/v8/third_party/test262-harness/README.v8 delete mode 100644 deps/v8/third_party/test262-harness/__init__.py delete mode 100644 deps/v8/third_party/test262-harness/excludelist.xml delete mode 100644 deps/v8/third_party/test262-harness/src/__init__.py delete mode 100644 deps/v8/third_party/test262-harness/src/_common.py delete mode 100644 deps/v8/third_party/test262-harness/src/_monkeyYaml.py delete mode 100644 deps/v8/third_party/test262-harness/src/_packager.py delete mode 100644 deps/v8/third_party/test262-harness/src/_packagerConfig.py delete mode 100644 deps/v8/third_party/test262-harness/src/parseTestRecord.py delete mode 100644 deps/v8/third_party/test262-harness/src/templates/runner.bestPractice.html delete mode 100644 deps/v8/third_party/test262-harness/src/templates/runner.intl402.html delete mode 100644 deps/v8/third_party/test262-harness/src/templates/runner.test262.html delete mode 100755 deps/v8/third_party/test262-harness/src/test262.py delete mode 100644 deps/v8/third_party/test262-harness/test/README.md delete mode 100644 deps/v8/third_party/test262-harness/test/fixtures/negative.js delete mode 100644 deps/v8/third_party/test262-harness/test/fixtures/test262-old-headers.js delete mode 100644 deps/v8/third_party/test262-harness/test/fixtures/test262-yaml-headers.js delete mode 100644 deps/v8/third_party/test262-harness/test/test_common.py delete mode 100644 deps/v8/third_party/test262-harness/test/test_monkeyYaml.py delete mode 100644 deps/v8/third_party/test262-harness/test/test_parseTestRecord.py delete mode 100644 deps/v8/third_party/test262-harness/test/test_test262.py rename deps/v8/{src => }/third_party/utf8-decoder/LICENSE (100%) rename deps/v8/{src => }/third_party/utf8-decoder/OWNERS (100%) rename deps/v8/{src => }/third_party/utf8-decoder/README.v8 (97%) rename deps/v8/{src => }/third_party/utf8-decoder/generalized-utf8-decoder.h (100%) rename deps/v8/{src => }/third_party/utf8-decoder/utf8-decoder.h (100%) rename deps/v8/{src => }/third_party/valgrind/LICENSE (100%) create mode 100644 deps/v8/third_party/valgrind/OWNERS create mode 100644 deps/v8/third_party/valgrind/README.v8 rename deps/v8/{src => }/third_party/valgrind/valgrind.h (100%) rename deps/v8/{src => }/third_party/vtune/BUILD.gn (95%) create mode 100644 deps/v8/third_party/vtune/DEPS rename deps/v8/{src => }/third_party/vtune/LICENSE (70%) create mode 100644 deps/v8/third_party/vtune/OWNERS rename deps/v8/{src => }/third_party/vtune/v8-vtune.h (69%) rename deps/v8/{src => }/third_party/vtune/vtune-jit.cc (87%) rename deps/v8/{src => }/third_party/vtune/vtune-jit.h (73%) rename deps/v8/{src => }/third_party/vtune/vtuneapi.cc (100%) rename deps/v8/{src => }/third_party/vtune/vtuneapi.h (100%) create mode 100644 deps/v8/third_party/zlib/contrib/minizip/ints.h create mode 100644 deps/v8/third_party/zlib/contrib/minizip/skipset.h create mode 100644 deps/v8/tools/clusterfuzz/foozzie/testdata/build4/d8.py create mode 100644 deps/v8/tools/clusterfuzz/foozzie/testdata/build4/v8_build_config.json create mode 100644 deps/v8/tools/clusterfuzz/foozzie/testdata/build5/d8.py create mode 100644 deps/v8/tools/clusterfuzz/foozzie/testdata/build5/v8_build_config.json create mode 100644 deps/v8/tools/clusterfuzz/foozzie/testdata/fuzz-wasm-struct-123.js create mode 100644 deps/v8/tools/clusterfuzz/foozzie/testdata/simulated_crash_output.txt create mode 100644 deps/v8/tools/clusterfuzz/foozzie/testdata/smoke_test_crash_output.txt create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/mutators/analyzer.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/mutators/closure_remover.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/resources/async_iterator.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/resources/chakra_stubs.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/resources/cross_over_template_1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/resources/cross_over_template_2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/resources/cross_over_template_3.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/resources/sandbox.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/resources/spidermonkey_stubs.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/runner.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test/test_context.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test/test_flags.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test/test_runner.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/available_variables_arrow_fun_exp.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/available_variables_arrow_fun_exp_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/available_variables_fun_exp.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/available_variables_fun_exp_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/available_variables_sloppy_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/closures.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/closures_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/crashtests_softskipped/not_great.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/crashtests_softskipped/test.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e/input1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e/input2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/CallExpression/1876a21afb7224a48ec53aa4436f4d93349c5fa0.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/CallExpression/76c7c68f689d7eb9fd7e9d42e98d92a3bd11d4f3.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/CallExpression/877c27d1e4a8e5a959a7c12bbd6d08d6ba5e8b28.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/CallExpression/9a863bdec092babc502181f10470c11643c66aa9.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/ClassExpression/32369494369ef66a7074b32fd6b27c588860b571.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/LogicalExpression/c5813b84d032ce3d569c58e7aabbc013bc17c487.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/LogicalExpression/cc45a134bf1ed0009f03b8931dc2157b53b97de1.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/NewExpression/0001aa3649d75f272d662a385e028a4d4f24a712.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/SequenceExpression/92059b515fdaaf897409c544d19fec01b7c677f5.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/TaggedTemplateExpression/93c7959bebf4148eab01ad9187a3390f6b127e23.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/ThisExpression/c2543fff3bfa6f144c2f06a7de6cd10c0b650cae.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/UnaryExpression/3b59bddfed6319031112411ec0633c4e423ae460.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/UpdateExpression/62f296654616254793e9c1948c12a2951e711156.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/UpdateExpression/9822c139a3406842de5446673fdd2613c4e6ca00.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/db/e2e_expected/index.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz/fuzzilli_combined_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/expected_code_0.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/expected_code_1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/expected_code_2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/expected_flags_0.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/expected_flags_1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/expected_flags_2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/fuzzdir-1/corpus/program_1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/fuzzdir-1/corpus/program_2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/fuzzdir-1/corpus/program_3.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/fuzzdir-1/settings.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/fuzzdir-2/corpus/program_1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/fuzzdir-2/corpus/program_2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/fuzzdir-2/corpus/program_3.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/fuzzdir-2/settings.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/v8/test/mjsunit/dummy.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/flags/blocked_flags/input1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/flags/blocked_flags/input2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/flags/corpus/v8/input1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/flags/corpus/v8/input2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/flags/corpus/v8/input3.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/fuzzilli/fuzzdir-1/corpus/program_1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/fuzzilli/fuzzdir-1/settings.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/CrashTests/crash_test.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/WebKit/JSTests/jsc_test.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/WebKit/JSTests/jsc_test_2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/chakra/chakra_test1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/chakra/chakra_test2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/fuzzilli/fuzzdir-1/corpus/program_1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/fuzzilli/fuzzdir-1/settings.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/fuzzilli/fuzzdir-2/crashes/program_2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/fuzzilli/fuzzdir-2/crashes/program_3.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/fuzzilli/fuzzdir-2/settings.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/spidermonkey/spidermonkey_test.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/v8/test/mjsunit/v8_test.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/v8/test/mjsunit/wasm/regress-123.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/v8/test/mjsunit/wasm/regress-456.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/input_archive/v8/test/mjsunit/wasm/wasm-module-builder.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/language/features.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/language/features_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/large_loops.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/large_loops_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/load/fuzzilli_scenario/fuzzilli/fuzzdir-1/corpus/program_x.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/load/fuzzilli_scenario/fuzzilli/fuzzdir-1/settings.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/load/fuzzilli_scenario/test_load_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/load/fuzzilli_scenario/v8/test/mjsunit/wmb.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/loop_mutations.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/loop_mutations_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/loop_variables.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/loop_variables_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/loop_variables_source_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/mutate_numbers_class.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/mutate_numbers_class_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/normalize_fuzz_test.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/normalize_fuzz_test_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/normalize_fuzz_test_functions.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/normalize_fuzz_test_functions_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/arguments/expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/arguments/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/async/full_async_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/async/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/async/no_async_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/db/input/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/dependency_collision/chakra/WasmSpec/testsuite/harness/wasm-constants.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/dependency_collision/chakra/WasmSpec/testsuite/harness/wasm-module-builder.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/dependency_collision/chakra/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/dependency_collision/v8/test/mjsunit/mjsunit.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/dependency_collision/v8/test/mjsunit/wasm/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/dependency_collision/v8/test/mjsunit/wasm/wasm-module-builder.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/duplicates/duplicates_db/ArrowFunctionExpression/a1.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/duplicates/duplicates_db/index.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/duplicates/duplicates_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/duplicates/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/infinite_loop_fun/expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/infinite_loop_fun/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/iterator/expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/iterator/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/large_loops/expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/large_loops/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/legacy_scope/expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/legacy_scope/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/parentheses/expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/parentheses/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/resources/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/super/call_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/super/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/super/member_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/super/super_call_db/CallExpression/a1.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/super/super_call_db/CallExpression/a2.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/super/super_call_db/index.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/super/super_member_db/CallExpression/a1.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/super/super_member_db/CallExpression/a2.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/super/super_member_db/index.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/try_catch_while_true/expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/try_catch_while_true/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/yield/expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/yield/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/sandbox/load.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/sandbox/load_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/try_catch_distribution.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/try_catch_distribution_expected.js rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/{ => v8}/differential_fuzz/input1.js (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/{ => v8}/differential_fuzz/input2.js (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/{ => v8}/regress/contradictions/input1.js (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/{ => v8}/regress/contradictions/input2.js (100%) create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/v8/regress/mjs_flags/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/verify_db/expected_code_0.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/verify_db/expected_code_1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/verify_db/expected_code_2.js create mode 100755 deps/v8/tools/dev/clean-up-feature-flags-in-tests.py create mode 100755 deps/v8/tools/fix-inl-header-includes.sh create mode 100755 deps/v8/tools/perf-bisect.pl delete mode 100755 deps/v8/tools/release/auto_roll.py create mode 100644 deps/v8/tools/testrunner/outproc/fuzzer.py create mode 100644 deps/v8/tools/testrunner/testdata/testroot7/out/build/d8_mocked.py create mode 100644 deps/v8/tools/testrunner/testdata/testroot7/test/sweet/sweet.status create mode 100644 deps/v8/tools/testrunner/testdata/testroot7/test/sweet/testcfg.py diff --git a/deps/v8/.bazelrc b/deps/v8/.bazelrc index 95bfad4a35c17e..c04d2e11ea8f79 100644 --- a/deps/v8/.bazelrc +++ b/deps/v8/.bazelrc @@ -2,10 +2,14 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +# Enable Bzlmod for every Bazel command +common --enable_bzlmod + # Pass CC, CXX and PATH from the environment build --action_env=CC build --action_env=CXX build --action_env=PATH +build --copt=-std=c++20 # Use Clang compiler build:clang --action_env=BAZEL_COMPILER=clang @@ -17,7 +21,8 @@ build:debug --compilation_mode=dbg build:debug --config=v8_enable_debugging_features build:debug --//:v8_enable_fast_mksnapshot build:debug --//:v8_enable_backtrace -build:debug --//:v8_enable_handle_zapping +build:debug --//:v8_enable_local_handle_zapping +build:debug --//:v8_enable_global_handle_zapping # v8_enable_debugging_features flags build:v8_enable_debugging_features --//:v8_enable_verify_heap diff --git a/deps/v8/.clang-tidy b/deps/v8/.clang-tidy index aa7d3813aa1d2f..fb769d9bf96e0d 100644 --- a/deps/v8/.clang-tidy +++ b/deps/v8/.clang-tidy @@ -9,7 +9,9 @@ modernize-redundant-void-arg, modernize-replace-random-shuffle, modernize-shrink-to-fit, + modernize-type-traits, # modernize-use-auto, + modernize-use-constraints, modernize-use-bool-literals, modernize-use-equals-default, # modernize-use-equals-delete, diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index 6ecb0ebecd7b0d..423eaa77fae43c 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -82,14 +82,21 @@ /third_party/googletest/src/googletest/include/gtest/* !/third_party/googletest/src/googletest/include/gtest/gtest_prod.h !/third_party/highway -/third_party/highway/src +/third_party/highway/src/* +!/third_party/highway/src/hwy !/third_party/inspector_protocol !/third_party/jsoncpp /third_party/jsoncpp/source +!/third_party/llvm-libc +/third_party/llvm-libc/src +!/third_party/rapidhash-v8 !/third_party/re2 /third_party/re2/src -!/third_party/test262-harness +!/third_party/siphash +!/third_party/utf8-decoder !/third_party/v8 +!/third_party/valgrind +!/third_party/vtune !/third_party/wasm-api /tools/builtins-pgo/profiles/* !/tools/builtins-pgo/profiles/.* @@ -103,6 +110,7 @@ /tools/oom_dump/oom_dump /tools/oom_dump/oom_dump.o /tools/protoc_wrapper +/tools/rust /tools/turbolizer/build /tools/turbolizer/.rpt2_cache /tools/turbolizer/deploy @@ -145,3 +153,4 @@ bazel-v8 !/third_party/fp16 /third_party/fp16/src/* !/third_party/fp16/src/include +!/third_party/simdutf diff --git a/deps/v8/.gn b/deps/v8/.gn index afdb6fa1201d0e..b9b11d589b582a 100644 --- a/deps/v8/.gn +++ b/deps/v8/.gn @@ -27,8 +27,9 @@ no_check_targets = [ default_args = { # Disable js dependencies like the closure compiler. enable_js_protobuf = false + # Disable rust dependencies. - enable_rust = false + enable_rust = true } # These are the list of GN files that run exec_script. This whitelist exists diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index cc270445c5600c..e5a0957b3a928e 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -57,8 +57,9 @@ Alexander Botero-Lowry Alexander Karpinsky Alexander Neville Alexandre Vassalotti -Alexey Pavlyutkin +Alexey Pavlyutkin Alexis Campailla +Aliya Minimullina Allan Sandfeld Jensen Amos Lim Andreas Anyuru @@ -120,6 +121,7 @@ Dominic Farolini Douglas Crosher Dusan Milosavljevic Eden Wang +Edoardo Marangoni Elisha Hollander Eric Rannaud Erich Ocean @@ -210,11 +212,13 @@ Maxim Mazurok Maxim Mossienko Md Hasibul Hasan Meir Shpilraien +Meng Tan Michael Lutz Michael Mclaughlin Michael Smith Michaël Zasso Mihir Shah +Mika Fischer Mike Gilbert Mike Pennisi Mikhail Gusarov @@ -268,6 +272,7 @@ Sébastien Doeraene Seo Sanghyeon Shawn Anastasio Shawn Presser +Sho Miyamoto Stefan Penner Stefan Stojanovic Stephan Hartmann @@ -290,6 +295,7 @@ Varun Varada Victor Costan Victor Polevoy Vlad Burlik +Vladimir Kempik Vladimir Krivosheev Vladimir Shutoff Wael Almattar @@ -303,6 +309,7 @@ Wiktor Garbacz Wouter Vermeiren Xiaofang Zou Xiaoyin Liu +Yagiz Nizipli Yanbo Li Yannic Bonenberger Yi Wang @@ -317,6 +324,7 @@ Yuxiang Cao Zac Hansen Zeynep Cankara Zhao Jiazhong +Zhao Qin Zhaojun Meng Zheng Liu Zhongping Wang @@ -325,3 +333,4 @@ Yang Xiang Kotaro Ohsugi Jing Peiyang magic-akari +Ryuhei Shima diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index 1f269f9c149e56..54be2b945d4d23 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -3,7 +3,7 @@ # found in the LICENSE file. load("@bazel_skylib//lib:selects.bzl", "selects") -load("@rules_python//python:defs.bzl", "py_binary") +load("@rules_python//python:defs.bzl", "py_binary", "py_test") load("@v8_python_deps//:requirements.bzl", "requirement") load( "@v8//:bazel/defs.bzl", @@ -68,10 +68,12 @@ load(":bazel/v8-non-pointer-compression.bzl", "v8_binary_non_pointer_compression # v8_control_flow_integrity # v8_enable_sandbox # cppgc_enable_caged_heap +# cppgc_enable_api_checks # cppgc_enable_check_assignments_in_prefinalizers # cppgc_enable_slim_write_barrier # cppgc_enable_object_names # cppgc_enable_pointer_compression +# cppgc_enable_slow_api_checks # cppgc_enable_verify_heap # cppgc_enable_young_generation # v8_enable_zone_compression @@ -83,6 +85,7 @@ load(":bazel/v8-non-pointer-compression.bzl", "v8_binary_non_pointer_compression # v8_enable_javascript_promise_hooks # v8_enable_allocation_folding # v8_allocation_site_tracking +# v8_lower_limits_mode v8_flag(name = "v8_android_log_stdout") @@ -106,7 +109,9 @@ v8_flag(name = "v8_enable_debug_code") v8_flag(name = "v8_enable_disassembler") -v8_flag(name = "v8_enable_handle_zapping") +v8_flag(name = "v8_enable_local_handle_zapping") + +v8_flag(name = "v8_enable_global_handle_zapping") v8_flag(name = "v8_enable_runtime_call_stats") @@ -148,6 +153,8 @@ v8_flag(name = "v8_enable_verify_predictable") v8_flag(name = "v8_enable_test_features") +v8_flag(name = "v8_wasm_random_fuzzers") + v8_flag( name = "v8_enable_maglev", default = True, @@ -187,6 +194,14 @@ selects.config_setting_group( ], ) +selects.config_setting_group( + name = "enable_maglev_riscv", + match_all = [ + ":enable_maglev", + "@v8//bazel/config:v8_target_riscv64", + ], +) + selects.config_setting_group( name = "enable_maglev_arm", match_all = [ @@ -248,6 +263,22 @@ selects.config_setting_group( ], ) +selects.config_setting_group( + name = "webassembly_on_posix", + match_all = [ + "@v8//bazel/config:is_posix", + ":is_v8_enable_webassembly", + ], +) + +selects.config_setting_group( + name = "webassembly_on_windows", + match_all = [ + "@v8//bazel/config:is_windows", + ":is_v8_enable_webassembly", + ], +) + v8_flag( name = "v8_jitless", default = False, @@ -326,10 +357,10 @@ selects.config_setting_group( ], ) -# Enable isolated cage if v8_enable_pointer_compression and +# Enable multiple cages if v8_enable_pointer_compression and # NOT v8_enable_pointer_compression_shared_cage. selects.config_setting_group( - name = "enable_pointer_compression_isolated_cage", + name = "enable_pointer_compression_multiple_cages", match_all = [ ":is_v8_enable_pointer_compression", ":is_not_v8_enable_pointer_compression_shared_cage", @@ -435,7 +466,8 @@ v8_config( "v8_imminent_deprecation_warnings": "V8_IMMINENT_DEPRECATION_WARNINGS", "v8_enable_debug_code": "V8_ENABLE_DEBUG_CODE", "v8_enable_disassembler": "ENABLE_DISASSEMBLER", - "v8_enable_handle_zapping": "ENABLE_HANDLE_ZAPPING", + "v8_enable_global_handle_zapping": "ENABLE_GLOBAL_HANDLE_ZAPPING", + "v8_enable_local_handle_zapping": "ENABLE_LOCAL_HANDLE_ZAPPING", "v8_enable_hugepage": "ENABLE_HUGEPAGE", "v8_enable_future": "V8_ENABLE_FUTURE", "v8_enable_lazy_source_positions": "V8_ENABLE_LAZY_SOURCE_POSITIONS", @@ -460,9 +492,11 @@ v8_config( "GOOGLE3", "V8_ADVANCED_BIGINT_ALGORITHMS", "V8_CONCURRENT_MARKING", + "V8_ENABLE_LEAPTIERING", "V8_ENABLE_SPARKPLUG", "V8_ENABLE_EXTENSIBLE_RO_SNAPSHOT", "V8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA", + "V8_TLS_USED_IN_LIBRARY", ] + select({ "@v8//bazel/config:is_debug": [ "DEBUG", @@ -480,8 +514,7 @@ v8_config( ], "@v8//bazel/config:v8_target_arm64": ["V8_TARGET_ARCH_ARM64"], "@v8//bazel/config:v8_target_s390x": [ - "V8_TARGET_ARCH_S390", - "V8_TARGET_ARCH_S390X", + "V8_TARGET_ARCH_S390X" ], "@v8//bazel/config:v8_target_riscv64": [ # NOTE: Bazel rules for riscv64 weren't tested on a real system. @@ -513,7 +546,7 @@ v8_config( "UNICODE", "_UNICODE", "_CRT_RAND_S", - "_WIN32_WINNT=0x0602", + "_WIN32_WINNT=0x0A00", ], }) + select({ ":is_v8_enable_pointer_compression": [ @@ -525,16 +558,8 @@ v8_config( ":enable_pointer_compression_shared_cage": [ "V8_COMPRESS_POINTERS_IN_SHARED_CAGE", ], - ":enable_pointer_compression_isolated_cage": [ - "V8_COMPRESS_POINTERS_IN_ISOLATE_CAGE", - ], - "//conditions:default": [], - }) + select({ - # Shared RO heap is unconfigurable in bazel. However, we - # still have to make sure that the flag is disabled when - # v8_enable_pointer_compression_shared_cage is set to false. - ":is_v8_enable_pointer_compression_shared_cage": [ - "V8_SHARED_RO_HEAP", + ":enable_pointer_compression_multiple_cages": [ + "V8_COMPRESS_POINTERS_IN_MULTIPLE_CAGES", ], "//conditions:default": [], }) + select({ @@ -576,6 +601,7 @@ v8_config( filegroup( name = "public_header_files", srcs = glob(["include/**/*.h"]), + visibility = ["//visibility:public"], ) filegroup( @@ -612,7 +638,6 @@ filegroup( "include/cppgc/cross-thread-persistent.h", "include/cppgc/custom-space.h", "include/cppgc/default-platform.h", - "include/cppgc/ephemeron-pair.h", "include/cppgc/explicit-management.h", "include/cppgc/garbage-collected.h", "include/cppgc/heap.h", @@ -626,6 +651,7 @@ filegroup( "include/cppgc/internal/caged-heap.h", "include/cppgc/internal/caged-heap-local-data.h", "include/cppgc/internal/compiler-specific.h", + "include/cppgc/internal/conditional-stack-allocated.h", "include/cppgc/internal/finalizer-trait.h", "include/cppgc/internal/gc-info.h", "include/cppgc/internal/logging.h", @@ -667,6 +693,7 @@ filegroup( "include/v8-embedder-state-scope.h", "include/v8-exception.h", "include/v8-extension.h", + "include/v8-external-memory-accounter.h", "include/v8-external.h", "include/v8-fast-api-calls.h", "include/v8-forward.h", @@ -771,8 +798,10 @@ filegroup( "src/base/file-utils.cc", "src/base/file-utils.h", "src/base/flags.h", + "src/base/fpu.cc", + "src/base/fpu.h", "src/base/free_deleter.h", - "src/base/functional.h", + "src/base/hashing.h", "src/base/hashmap.h", "src/base/hashmap-entry.h", "src/base/ieee754.cc", @@ -817,6 +846,7 @@ filegroup( "src/base/platform/mutex.h", "src/base/platform/platform.cc", "src/base/platform/platform.h", + "src/base/platform/platform-posix.h", # Always included by src/execution/isolate.h "src/base/platform/semaphore.cc", "src/base/platform/semaphore.h", "src/base/platform/time.cc", @@ -835,9 +865,10 @@ filegroup( "src/base/string-format.h", "src/base/strings.cc", "src/base/strings.h", + "src/base/strong-alias.h", "src/base/sys-info.cc", "src/base/sys-info.h", - "src/base/template-meta-programming/algorithm.h", + "src/base/template-meta-programming/common.h", "src/base/template-meta-programming/functional.h", "src/base/template-meta-programming/list.h", "src/base/template-meta-programming/string-literal.h", @@ -860,7 +891,6 @@ filegroup( ] + select({ "@v8//bazel/config:is_posix": [ "src/base/platform/platform-posix.cc", - "src/base/platform/platform-posix.h", "src/base/platform/platform-posix-time.cc", "src/base/platform/platform-posix-time.h", ], @@ -883,6 +913,7 @@ filegroup( "@v8//bazel/config:is_windows": [ "src/base/debug/stack_trace_win.cc", "src/base/platform/platform-win32.cc", + "src/base/platform/platform-win32.h", "src/base/win32-headers.h", ], }), @@ -1299,6 +1330,7 @@ filegroup( "src/base/sanitizer/lsan-virtual-address-space.h", "src/base/sanitizer/msan.h", "src/base/sanitizer/tsan.h", + "src/base/sanitizer/ubsan.h", "src/baseline/baseline.cc", "src/baseline/baseline.h", "src/baseline/baseline-assembler.h", @@ -1449,6 +1481,7 @@ filegroup( "src/common/ptr-compr.cc", "src/common/ptr-compr.h", "src/common/ptr-compr-inl.h", + "src/common/thread-local-storage.h", "src/common/segmented-table.h", "src/common/segmented-table-inl.h", "src/common/simd128.h", @@ -1554,7 +1587,7 @@ filegroup( "src/execution/protectors.cc", "src/execution/protectors.h", "src/execution/protectors-inl.h", - "src/execution/shared-mutex-guard-if-off-thread.h", + "src/execution/mutex-guard-if-off-thread.h", "src/execution/simulator.h", "src/execution/simulator-base.cc", "src/execution/simulator-base.h", @@ -1628,6 +1661,8 @@ filegroup( "src/heap/combined-heap.h", "src/heap/concurrent-marking.cc", "src/heap/concurrent-marking.h", + "src/heap/conservative-stack-visitor.h", + "src/heap/conservative-stack-visitor-inl.h", "src/heap/cppgc-js/cpp-heap.cc", "src/heap/cppgc-js/cpp-heap.h", "src/heap/cppgc-js/cpp-marking-state.h", @@ -1674,8 +1709,13 @@ filegroup( "src/heap/heap-controller.cc", "src/heap/heap-controller.h", "src/heap/heap-inl.h", + "src/heap/heap-layout.cc", + "src/heap/heap-layout.h", + "src/heap/heap-layout-inl.h", "src/heap/heap-layout-tracer.cc", "src/heap/heap-layout-tracer.h", + "src/heap/heap-utils.h", + "src/heap/heap-utils-inl.h", "src/heap/heap-verifier.cc", "src/heap/heap-verifier.h", "src/heap/heap-write-barrier.cc", @@ -1695,6 +1735,8 @@ filegroup( "src/heap/large-spaces.h", "src/heap/linear-allocation-area.h", "src/heap/list.h", + "src/heap/live-object-range.h", + "src/heap/live-object-range-inl.h", "src/heap/local-factory.cc", "src/heap/local-factory.h", "src/heap/local-factory-inl.h", @@ -1718,6 +1760,7 @@ filegroup( "src/heap/marking-barrier.cc", "src/heap/marking-barrier.h", "src/heap/marking-barrier-inl.h", + "src/heap/marking-progress-tracker.h", "src/heap/marking-state.h", "src/heap/marking-state-inl.h", "src/heap/marking-visitor.h", @@ -1734,8 +1777,8 @@ filegroup( "src/heap/mutable-page-metadata-inl.h", "src/heap/memory-chunk.cc", "src/heap/memory-chunk.h", + "src/heap/memory-chunk-constants.h", "src/heap/memory-chunk-inl.h", - "src/heap/memory-chunk-layout.cc", "src/heap/memory-chunk-layout.h", "src/heap/memory-measurement.cc", "src/heap/memory-measurement.h", @@ -1751,12 +1794,14 @@ filegroup( "src/heap/object-lock-inl.h", "src/heap/object-stats.cc", "src/heap/object-stats.h", - "src/heap/objects-visiting.cc", - "src/heap/objects-visiting.h", - "src/heap/objects-visiting-inl.h", + "src/heap/heap-visitor.cc", + "src/heap/heap-visitor.h", + "src/heap/heap-visitor-inl.h", "src/heap/page-metadata.cc", "src/heap/page-metadata.h", "src/heap/page-metadata-inl.h", + "src/heap/page-pool.cc", + "src/heap/page-pool.h", "src/heap/paged-spaces.cc", "src/heap/paged-spaces.h", "src/heap/paged-spaces-inl.h", @@ -1766,7 +1811,6 @@ filegroup( "src/heap/pretenuring-handler.cc", "src/heap/pretenuring-handler.h", "src/heap/pretenuring-handler-inl.h", - "src/heap/progress-bar.h", "src/heap/read-only-heap.cc", "src/heap/read-only-heap.h", "src/heap/read-only-heap-inl.h", @@ -1792,6 +1836,8 @@ filegroup( "src/heap/sweeper.h", "src/heap/traced-handles-marking-visitor.cc", "src/heap/traced-handles-marking-visitor.h", + "src/heap/visit-object.cc", + "src/heap/visit-object.h", "src/heap/weak-object-worklists.cc", "src/heap/weak-object-worklists.h", "src/heap/young-generation-marking-visitor.h", @@ -1891,6 +1937,8 @@ filegroup( "src/numbers/conversions.h", "src/numbers/conversions-inl.h", "src/numbers/hash-seed-inl.h", + "src/numbers/ieee754.cc", + "src/numbers/ieee754.h", "src/numbers/integer-literal.h", "src/numbers/integer-literal-inl.h", "src/numbers/math-random.cc", @@ -1911,7 +1959,6 @@ filegroup( "src/objects/backing-store.h", "src/objects/bigint.cc", "src/objects/bigint.h", - "src/objects/bigint-inl.h", "src/objects/bytecode-array.cc", "src/objects/bytecode-array.h", "src/objects/bytecode-array-inl.h", @@ -1919,6 +1966,7 @@ filegroup( "src/objects/call-site-info.h", "src/objects/call-site-info-inl.h", "src/objects/casting.h", + "src/objects/casting-inl.h", "src/objects/cell.h", "src/objects/cell-inl.h", "src/objects/code.cc", @@ -2037,6 +2085,7 @@ filegroup( "src/objects/js-temporal-objects.cc", "src/objects/js-temporal-objects.h", "src/objects/js-temporal-objects-inl.h", + "src/objects/js-weak-refs.cc", "src/objects/js-weak-refs.h", "src/objects/js-weak-refs-inl.h", "src/objects/keys.cc", @@ -2193,8 +2242,8 @@ filegroup( "src/parsing/expression-scope.h", "src/parsing/func-name-inferrer.cc", "src/parsing/func-name-inferrer.h", - "src/parsing/import-assertions.cc", - "src/parsing/import-assertions.h", + "src/parsing/import-attributes.cc", + "src/parsing/import-attributes.h", "src/parsing/keywords-gen.h", "src/parsing/literal-buffer.cc", "src/parsing/literal-buffer.h", @@ -2291,6 +2340,8 @@ filegroup( "src/regexp/regexp-nodes.h", "src/regexp/regexp-parser.cc", "src/regexp/regexp-parser.h", + "src/regexp/regexp-result-vector.cc", + "src/regexp/regexp-result-vector.h", "src/regexp/regexp-stack.cc", "src/regexp/regexp-stack.h", "src/regexp/regexp-utils.cc", @@ -2342,6 +2393,7 @@ filegroup( "src/sandbox/external-pointer-table.cc", "src/sandbox/external-pointer-table.h", "src/sandbox/external-pointer-table-inl.h", + "src/sandbox/cppheap-pointer.h", "src/sandbox/cppheap-pointer-inl.h", "src/sandbox/cppheap-pointer-table.cc", "src/sandbox/cppheap-pointer-table.h", @@ -2352,6 +2404,8 @@ filegroup( "src/sandbox/js-dispatch-table.cc", "src/sandbox/js-dispatch-table.h", "src/sandbox/js-dispatch-table-inl.h", + "src/sandbox/trusted-pointer-scope.cc", + "src/sandbox/trusted-pointer-scope.h", "src/sandbox/trusted-pointer-table.cc", "src/sandbox/trusted-pointer-table.h", "src/sandbox/trusted-pointer-table-inl.h", @@ -2365,12 +2419,6 @@ filegroup( "src/sandbox/indirect-pointer-tag.h", "src/sandbox/indirect-pointer-inl.h", "src/sandbox/code-entrypoint-tag.h", - "src/sandbox/external-buffer.h", - "src/sandbox/external-buffer-tag.h", - "src/sandbox/external-buffer-inl.h", - "src/sandbox/external-buffer-table.cc", - "src/sandbox/external-buffer-table-inl.h", - "src/sandbox/external-buffer-table.h", "src/sandbox/external-entity-table.h", "src/sandbox/external-entity-table-inl.h", "src/sandbox/hardware-support.cc", @@ -2436,6 +2484,7 @@ filegroup( "src/strings/string-builder-inl.h", "src/strings/string-case.cc", "src/strings/string-case.h", + "src/strings/string-hasher.cc", "src/strings/string-hasher.h", "src/strings/string-hasher-inl.h", "src/strings/string-search.h", @@ -2456,13 +2505,11 @@ filegroup( "src/tasks/task-utils.h", "src/temporal/temporal-parser.cc", "src/temporal/temporal-parser.h", - "src/third_party/siphash/halfsiphash.cc", - "src/third_party/siphash/halfsiphash.h", - "src/third_party/utf8-decoder/utf8-decoder.h", "src/torque/runtime-macro-shims.h", "src/tracing/trace-event.cc", "src/tracing/trace-event.h", "src/tracing/trace-event-no-perfetto.h", + "src/tracing/trace-id.h", "src/tracing/traced-value.cc", "src/tracing/traced-value.h", "src/tracing/tracing-category-observer.cc", @@ -2514,6 +2561,10 @@ filegroup( "src/zone/zone-segment.h", "src/zone/zone-type-traits.h", "src/zone/zone-utils.h", + "third_party/rapidhash-v8/rapidhash.h", + "third_party/siphash/halfsiphash.cc", + "third_party/siphash/halfsiphash.h", + "third_party/utf8-decoder/utf8-decoder.h", ":cppgc_base_files", ":generated_bytecode_builtins_list", ":v8_bigint", @@ -2735,10 +2786,16 @@ filegroup( "src/wasm/baseline/ppc/liftoff-assembler-ppc-inl.h", ], }) + select({ - "@v8//bazel/config:is_posix": [ + ":webassembly_on_posix": [ "src/trap-handler/handler-inside-posix.cc", "src/trap-handler/handler-outside-posix.cc", ], + ":webassembly_on_windows": [ + "src/trap-handler/handler-inside-win.cc", + "src/trap-handler/handler-inside-win.h", + "src/trap-handler/handler-outside-win.cc", + "include/v8-wasm-trap-handler-win.h", + ], "//conditions:default": [], }) + select({ "@v8//bazel/config:v8_arm64_simulator": [ @@ -2746,13 +2803,6 @@ filegroup( "src/trap-handler/trap-handler-simulator.h", ], "//conditions:default": [], - }) + select({ - "@v8//bazel/config:is_windows": [ - "src/trap-handler/handler-inside-win.cc", - "src/trap-handler/handler-inside-win.h", - "src/trap-handler/handler-outside-win.cc", - ], - "//conditions:default": [], }) + select({ "@v8//bazel/config:is_windows_64bit": [ "src/diagnostics/unwinding-info-win64.cc", @@ -2765,17 +2815,20 @@ filegroup( "src/maglev/maglev-assembler.h", "src/maglev/maglev-basic-block.h", "src/maglev/maglev-code-gen-state.h", + "src/maglev/maglev-code-gen-state-inl.h", "src/maglev/maglev-code-generator.h", "src/maglev/maglev-compilation-info.h", "src/maglev/maglev-compilation-unit.h", "src/maglev/maglev-compiler.h", "src/maglev/maglev-concurrent-dispatcher.h", + "src/maglev/maglev-deopt-frame-visitor.h", "src/maglev/maglev-graph-builder.h", "src/maglev/maglev-graph-labeller.h", "src/maglev/maglev-graph-printer.h", "src/maglev/maglev-graph-processor.h", "src/maglev/maglev-graph-verifier.h", "src/maglev/maglev-graph.h", + "src/maglev/maglev-inlining.h", "src/maglev/maglev-interpreter-frame-state.h", "src/maglev/maglev-ir-inl.h", "src/maglev/maglev-ir.h", @@ -2817,6 +2870,13 @@ filegroup( "src/maglev/arm64/maglev-ir-arm64.cc", ], "//conditions:default": [], + }) + select({ + ":enable_maglev_riscv": [ + "src/maglev/riscv/maglev-assembler-riscv-inl.h", + "src/maglev/riscv/maglev-assembler-riscv.cc", + "src/maglev/riscv/maglev-ir-riscv.cc", + ], + "//conditions:default": [], }) + select({ ":enable_maglev_arm": [ "src/maglev/arm/maglev-assembler-arm-inl.h", @@ -2841,7 +2901,6 @@ filegroup( "src/debug/debug-wasm-objects-inl.h", "src/runtime/runtime-test-wasm.cc", "src/runtime/runtime-wasm.cc", - "src/third_party/utf8-decoder/generalized-utf8-decoder.h", "src/trap-handler/handler-inside.cc", "src/trap-handler/handler-inside-posix.h", "src/trap-handler/handler-outside.cc", @@ -2877,10 +2936,7 @@ filegroup( "src/wasm/function-body-decoder-impl.h", "src/wasm/function-compiler.cc", "src/wasm/function-compiler.h", - "src/wasm/fuzzing/random-module-generation.cc", "src/wasm/fuzzing/random-module-generation.h", - "src/wasm/graph-builder-interface.cc", - "src/wasm/graph-builder-interface.h", "src/wasm/inlining-tree.h", "src/wasm/jump-table-assembler.cc", "src/wasm/jump-table-assembler.h", @@ -2900,7 +2956,6 @@ filegroup( "src/wasm/object-access.h", "src/wasm/pgo.cc", "src/wasm/pgo.h", - "src/wasm/serialized-signature-inl.h", "src/wasm/signature-hashing.h", "src/wasm/simd-shuffle.cc", "src/wasm/simd-shuffle.h", @@ -2966,6 +3021,7 @@ filegroup( "src/wasm/well-known-imports.cc", "src/wasm/well-known-imports.h", "src/wasm/wrappers.cc", + "third_party/utf8-decoder/generalized-utf8-decoder.h", ], "//conditions:default": [], }) + select({ @@ -2983,6 +3039,11 @@ filegroup( "src/wasm/interpreter/wasm-interpreter-simd.cc", ], "//conditions:default": [], + }) + select({ + ":is_v8_wasm_random_fuzzers": [ + "src/wasm/fuzzing/random-module-generation.cc", + ], + "//conditions:default": [], }), ) @@ -3082,8 +3143,6 @@ filegroup( "src/compiler/backend/unwinding-info-writer.h", "src/compiler/basic-block-instrumentor.cc", "src/compiler/basic-block-instrumentor.h", - "src/compiler/branch-condition-duplicator.cc", - "src/compiler/branch-condition-duplicator.h", "src/compiler/branch-elimination.cc", "src/compiler/branch-elimination.h", "src/compiler/bytecode-analysis.cc", @@ -3097,6 +3156,7 @@ filegroup( "src/compiler/checkpoint-elimination.h", "src/compiler/code-assembler.cc", "src/compiler/code-assembler.h", + "src/compiler/code-assembler-compilation-job.h", "src/compiler/common-node-cache.cc", "src/compiler/common-node-cache.h", "src/compiler/common-operator.cc", @@ -3109,8 +3169,6 @@ filegroup( "src/compiler/compiler-source-position-table.h", "src/compiler/constant-folding-reducer.cc", "src/compiler/constant-folding-reducer.h", - "src/compiler/const-tracking-let-helpers.cc", - "src/compiler/const-tracking-let-helpers.h", "src/compiler/control-equivalence.cc", "src/compiler/control-equivalence.h", "src/compiler/control-path-state.h", @@ -3118,8 +3176,6 @@ filegroup( "src/compiler/csa-load-elimination.h", "src/compiler/dead-code-elimination.cc", "src/compiler/dead-code-elimination.h", - "src/compiler/decompression-optimizer.cc", - "src/compiler/decompression-optimizer.h", "src/compiler/diamond.h", "src/compiler/escape-analysis.cc", "src/compiler/escape-analysis.h", @@ -3135,16 +3191,12 @@ filegroup( "src/compiler/frame-states.h", "src/compiler/functional-list.h", "src/compiler/globals.h", - "src/compiler/graph.cc", - "src/compiler/graph.h", "src/compiler/graph-assembler.cc", "src/compiler/graph-assembler.h", "src/compiler/graph-reducer.cc", "src/compiler/graph-reducer.h", "src/compiler/graph-trimmer.cc", "src/compiler/graph-trimmer.h", - "src/compiler/graph-visualizer.cc", - "src/compiler/graph-visualizer.h", "src/compiler/graph-zone-traits.h", "src/compiler/heap-refs.cc", "src/compiler/heap-refs.h", @@ -3268,6 +3320,14 @@ filegroup( "src/compiler/string-builder-optimizer.h", "src/compiler/turbofan.h", "src/compiler/turbofan-enabled.cc", + "src/compiler/turbofan-graph.cc", + "src/compiler/turbofan-graph.h", + "src/compiler/turbofan-graph-visualizer.cc", + "src/compiler/turbofan-graph-visualizer.h", + "src/compiler/turbofan-typer.cc", + "src/compiler/turbofan-typer.h", + "src/compiler/turbofan-types.cc", + "src/compiler/turbofan-types.h", "src/compiler/turboshaft/access-builder.h", "src/compiler/turboshaft/analyzer-iterator.cc", "src/compiler/turboshaft/analyzer-iterator.h", @@ -3282,7 +3342,6 @@ filegroup( "src/compiler/turboshaft/build-graph-phase.cc", "src/compiler/turboshaft/build-graph-phase.h", "src/compiler/turboshaft/builtin-call-descriptors.h", - "src/compiler/turboshaft/builtin-compiler.cc", "src/compiler/turboshaft/builtin-compiler.h", "src/compiler/turboshaft/csa-optimize-phase.cc", "src/compiler/turboshaft/csa-optimize-phase.h", @@ -3336,8 +3395,8 @@ filegroup( "src/compiler/turboshaft/machine-lowering-phase.h", "src/compiler/turboshaft/machine-lowering-reducer-inl.h", "src/compiler/turboshaft/maglev-early-lowering-reducer-inl.h", - "src/compiler/turboshaft/maglev-graph-building-phase.cc", - "src/compiler/turboshaft/maglev-graph-building-phase.h", + "src/compiler/turboshaft/turbolev-graph-builder.cc", + "src/compiler/turboshaft/turbolev-graph-builder.h", "src/compiler/turboshaft/machine-optimization-reducer.h", "src/compiler/turboshaft/memory-optimization-reducer.cc", "src/compiler/turboshaft/memory-optimization-reducer.h", @@ -3353,10 +3412,6 @@ filegroup( "src/compiler/turboshaft/pipelines.h", "src/compiler/turboshaft/pretenuring-propagation-reducer.cc", "src/compiler/turboshaft/pretenuring-propagation-reducer.h", - "src/compiler/turboshaft/recreate-schedule.cc", - "src/compiler/turboshaft/recreate-schedule.h", - "src/compiler/turboshaft/recreate-schedule-phase.cc", - "src/compiler/turboshaft/recreate-schedule-phase.h", "src/compiler/turboshaft/reducer-traits.h", "src/compiler/turboshaft/register-allocation-phase.h", "src/compiler/turboshaft/representations.cc", @@ -3366,9 +3421,6 @@ filegroup( "src/compiler/turboshaft/select-lowering-reducer.h", "src/compiler/turboshaft/sidetable.cc", "src/compiler/turboshaft/sidetable.h", - "src/compiler/turboshaft/simplified-lowering-phase.cc", - "src/compiler/turboshaft/simplified-lowering-phase.h", - "src/compiler/turboshaft/simplified-lowering-reducer.h", "src/compiler/turboshaft/simplify-tf-loops.cc", "src/compiler/turboshaft/simplify-tf-loops.h", "src/compiler/turboshaft/snapshot-table.h", @@ -3377,6 +3429,8 @@ filegroup( "src/compiler/turboshaft/store-store-elimination-phase.cc", "src/compiler/turboshaft/store-store-elimination-phase.h", "src/compiler/turboshaft/store-store-elimination-reducer-inl.h", + "src/compiler/turboshaft/string-escape-analysis-reducer.cc", + "src/compiler/turboshaft/string-escape-analysis-reducer.h", "src/compiler/turboshaft/string-view.h", "src/compiler/turboshaft/structural-optimization-reducer.h", "src/compiler/turboshaft/tracing.h", @@ -3409,10 +3463,6 @@ filegroup( "src/compiler/type-narrowing-reducer.h", "src/compiler/typed-optimization.cc", "src/compiler/typed-optimization.h", - "src/compiler/typer.cc", - "src/compiler/typer.h", - "src/compiler/types.cc", - "src/compiler/types.h", "src/compiler/use-info.h", "src/compiler/value-numbering-reducer.cc", "src/compiler/value-numbering-reducer.h", @@ -3478,10 +3528,13 @@ filegroup( ":is_v8_enable_webassembly": [ "src/compiler/int64-lowering.cc", "src/compiler/int64-lowering.h", + "src/compiler/turboshaft/growable-stacks-reducer.h", "src/compiler/turboshaft/int64-lowering-phase.cc", "src/compiler/turboshaft/int64-lowering-phase.h", "src/compiler/turboshaft/int64-lowering-reducer.h", "src/compiler/turboshaft/wasm-assembler-helpers.h", + "src/compiler/turboshaft/wasm-debug-memory-lowering-phase.cc", + "src/compiler/turboshaft/wasm-debug-memory-lowering-phase.h", "src/compiler/turboshaft/wasm-gc-optimize-phase.cc", "src/compiler/turboshaft/wasm-gc-optimize-phase.h", "src/compiler/turboshaft/wasm-gc-typed-optimization-reducer.cc", @@ -3497,6 +3550,10 @@ filegroup( "src/compiler/turboshaft/wasm-optimize-phase.h", "src/compiler/turboshaft/wasm-turboshaft-compiler.cc", "src/compiler/turboshaft/wasm-turboshaft-compiler.h", + "src/compiler/turboshaft/wasm-shuffle-reducer.cc", + "src/compiler/turboshaft/wasm-shuffle-reducer.h", + "src/compiler/turboshaft/wasm-simd-phase.cc", + "src/compiler/turboshaft/wasm-simd-phase.h", "src/compiler/wasm-address-reassociation.cc", "src/compiler/wasm-address-reassociation.h", "src/compiler/wasm-call-descriptors.cc", @@ -3513,16 +3570,10 @@ filegroup( "src/compiler/wasm-gc-operator-reducer.h", "src/compiler/wasm-graph-assembler.cc", "src/compiler/wasm-graph-assembler.h", - "src/compiler/wasm-inlining.cc", - "src/compiler/wasm-inlining.h", "src/compiler/wasm-inlining-into-js.cc", "src/compiler/wasm-inlining-into-js.h", "src/compiler/wasm-load-elimination.cc", "src/compiler/wasm-load-elimination.h", - "src/compiler/wasm-loop-peeling.cc", - "src/compiler/wasm-loop-peeling.h", - "src/compiler/wasm-js-lowering.cc", - "src/compiler/wasm-js-lowering.h", "src/compiler/wasm-typer.cc", "src/compiler/wasm-typer.h", ], @@ -3534,6 +3585,8 @@ filegroup( "//conditions:default": [ "src/maglev/maglev-basic-block.h", "src/maglev/maglev-code-gen-state.h", + "src/maglev/maglev-code-gen-state-inl.h", + "src/maglev/maglev-deopt-frame-visitor.h", "src/maglev/maglev-compilation-info.cc", "src/maglev/maglev-compilation-info.h", "src/maglev/maglev-compilation-unit.cc", @@ -3546,6 +3599,7 @@ filegroup( "src/maglev/maglev-graph-printer.h", "src/maglev/maglev-graph-processor.h", "src/maglev/maglev-graph-verifier.h", + "src/maglev/maglev-inlining.h", "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-interpreter-frame-state.h", "src/maglev/maglev-ir.cc", @@ -3626,6 +3680,8 @@ filegroup( "src/codegen/code-stub-assembler.h", "src/codegen/define-code-stub-assembler-macros.inc", "src/codegen/undef-code-stub-assembler-macros.inc", + "src/compiler/turboshaft/builtin-compiler.cc", + "src/compiler/turboshaft/builtin-compiler.h", "src/heap/setup-heap-internal.cc", "src/ic/accessor-assembler.cc", "src/ic/accessor-assembler.h", @@ -3802,31 +3858,12 @@ filegroup( "@v8//bazel/config:is_inline_asm_s390x": ["src/heap/base/asm/s390/push_registers_asm.cc"], "@v8//bazel/config:is_inline_asm_riscv64": ["src/heap/base/asm/riscv64/push_registers_asm.cc"], "@v8//bazel/config:is_inline_asm_ppc64le": ["src/heap/base/asm/ppc/push_registers_asm.cc"], - "@v8//bazel/config:is_msvc_asm_ia32": ["src/heap/base/asm/ia32/push_registers_masm.asm"], + "@v8//bazel/config:is_msvc_asm_ia32": ["src/heap/base/asm/ia32/push_registers_asm.cc"], "@v8//bazel/config:is_msvc_asm_x64": ["src/heap/base/asm/x64/push_registers_masm.asm"], - "@v8//bazel/config:is_msvc_asm_arm64": ["src/heap/base/asm/arm64/push_registers_masm.S"], + "@v8//bazel/config:is_msvc_asm_arm64": ["src/heap/base/asm/arm64/push_registers_asm.cc"], }), ) -v8_library( - name = "lib_fast_float", - srcs = [ - "third_party/fast_float/src/include/fast_float/ascii_number.h", - "third_party/fast_float/src/include/fast_float/bigint.h", - "third_party/fast_float/src/include/fast_float/constexpr_feature_detect.h", - "third_party/fast_float/src/include/fast_float/decimal_to_binary.h", - "third_party/fast_float/src/include/fast_float/digit_comparison.h", - "third_party/fast_float/src/include/fast_float/fast_float.h", - "third_party/fast_float/src/include/fast_float/fast_table.h", - "third_party/fast_float/src/include/fast_float/float_common.h", - "third_party/fast_float/src/include/fast_float/parse_number.h", - ], - hdrs = [ "third_party/fast_float/src/include/fast_float/fast_float.h" ], - includes = [ - "third_party/fast_float/src/include", - ], -) - v8_library( name = "lib_fp16", srcs = ["third_party/fp16/src/include/fp16.h"], @@ -3979,10 +4016,8 @@ filegroup( "third_party/inspector_protocol/crdtp/export.h", "third_party/inspector_protocol/crdtp/find_by_first.h", "third_party/inspector_protocol/crdtp/frontend_channel.h", - "third_party/inspector_protocol/crdtp/glue.h", "third_party/inspector_protocol/crdtp/json.cc", "third_party/inspector_protocol/crdtp/json.h", - "third_party/inspector_protocol/crdtp/maybe.h", "third_party/inspector_protocol/crdtp/parser_handler.h", "third_party/inspector_protocol/crdtp/protocol_core.cc", "third_party/inspector_protocol/crdtp/protocol_core.h", @@ -4135,7 +4170,6 @@ py_binary( "third_party/inspector_protocol/templates/TypeBuilder_h.template", ], imports = ["third_party/inspector_protocol/"], - python_version = "PY3", deps = [ requirement("jinja2"), ], @@ -4272,6 +4306,7 @@ v8_library( ":v8_shared_internal_headers", ], copts = ["-Wno-implicit-fallthrough"], + deps = ["@abseil-cpp//absl/synchronization", "@abseil-cpp//absl/time"], ) cc_library( @@ -4298,10 +4333,15 @@ cc_library( deps = [ ":torque_base_headers", ":v8_libbase", - "//external:absl_optional", ], ) +cc_library( + name = "simdutf", + srcs = ["third_party/simdutf/simdutf.cpp"], + hdrs = ["third_party/simdutf/simdutf.h"], +) + v8_library( name = "v8_libshared", srcs = [ @@ -4330,12 +4370,14 @@ v8_library( ":noicu/generated_torque_definitions", ], deps = [ - ":lib_fast_float", + "//third_party/fast_float/src:fast_float", ":lib_fp16", + ":simdutf", ":v8_libbase", - "//external:absl_btree", - "//external:absl_flat_hash_map", - "//external:absl_flat_hash_set", + "@abseil-cpp//absl/container:btree", + "@abseil-cpp//absl/container:flat_hash_map", + "@abseil-cpp//absl/container:flat_hash_set", + "@highway//:hwy", ], ) @@ -4388,9 +4430,9 @@ alias( v8_library( name = "v8_vtune", srcs = [ - "src/third_party/vtune/v8-vtune.h", - "src/third_party/vtune/vtune-jit.cc", - "src/third_party/vtune/vtune-jit.h", + "third_party/vtune/v8-vtune.h", + "third_party/vtune/vtune-jit.cc", + "third_party/vtune/vtune-jit.h", ], copts = ["-I"], deps = [ @@ -4422,7 +4464,6 @@ v8_binary( srcs = [ "src/regexp/gen-regexp-special-case.cc", "src/regexp/special-case.h", - ":v8_libbase_files", ":v8_shared_internal_headers", ], copts = ["-Wno-implicit-fallthrough"], @@ -4434,7 +4475,7 @@ v8_binary( "UNISTR_FROM_CHAR_EXPLICIT=", ], deps = [ - "//external:absl_optional", + ":v8_libbase", "//external:icu", ], ) @@ -4556,7 +4597,6 @@ py_test( "//testing/pybase", ] + glob(["test/**"]) + glob(["tools/**/*.js"]) + glob(["tools/**/*.mjs"]), main = "tools/run-tests.py", - python_version = "PY3", tags = [ # Disable sanitizers, as they don't work in general in V8. "nosan", @@ -4595,7 +4635,6 @@ py_test( "//testing/pybase", ] + glob(["test/**"]) + glob(["tools/**/*.js"]) + glob(["tools/**/*.mjs"]), main = "tools/run-tests.py", - python_version = "PY3", tags = [ # Disable sanitizers, as they don't work in general in V8. "nosan", diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 87b212921bb8d5..9a2b2cdd94f9b9 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -9,6 +9,7 @@ import("//build/config/dcheck_always_on.gni") import("//build/config/host_byteorder.gni") import("//build/config/mips.gni") import("//build/config/riscv.gni") +import("//build/config/rust.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build_overrides/build.gni") import("//third_party/icu/config.gni") @@ -16,6 +17,14 @@ import("//third_party/icu/config.gni") import("gni/snapshot_toolchain.gni") import("gni/v8.gni") +if (is_clang) { + import("//build/config/clang/clang.gni") +} + +if (is_ios) { + import("//build/config/apple/mobile_config.gni") # For `target_platform`. +} + # Specifies if the target build is a simulator build. Comparing target cpu # with v8 target cpu to not affect simulator builds for making cross-compile # snapshots. @@ -38,9 +47,6 @@ declare_args() { # Sets -DENABLE_SYSTEM_INSTRUMENTATION. Enables OS-dependent event tracing v8_enable_system_instrumentation = (is_win || is_mac) && !v8_use_perfetto - # Sets -DV8_ENABLE_ETW_STACK_WALKING. Enables ETW Stack Walking - v8_enable_etw_stack_walking = is_win - # Sets the GUID for the ETW provider v8_etw_guid = "" @@ -62,7 +68,7 @@ declare_args() { # Allows the embedder to add a custom suffix to the version string. v8_embedder_string = "" - # Sets -dENABLE_DISASSEMBLER. + # Sets -DENABLE_DISASSEMBLER. v8_enable_disassembler = "" # Sets the number of internal fields on promise objects. @@ -74,19 +80,19 @@ declare_args() { # Sets the number of internal fields on array buffer view objects. v8_array_buffer_view_internal_field_count = 0 - # Sets -dENABLE_GDB_JIT_INTERFACE. + # Sets -DENABLE_GDB_JIT_INTERFACE. v8_enable_gdbjit = "" - # Sets -dENABLE_VTUNE_JIT_INTERFACE. + # Sets -DENABLE_VTUNE_JIT_INTERFACE. v8_enable_vtunejit = false - # Sets -dENABLE_VTUNE_TRACEMARK. + # Sets -DENABLE_VTUNE_TRACEMARK. v8_enable_vtunetracemark = false - # Sets -dENABLE_HUGEPAGE + # Sets -DENABLE_HUGEPAGE v8_enable_hugepage = false - # Sets -dV8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION. + # Sets -DV8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION. # # This flag speeds up the performance of fork/execve on Linux systems for # embedders which use it (like Node.js). It works by marking the pages that @@ -97,15 +103,28 @@ declare_args() { # See v8:7381 for more details. v8_enable_private_mapping_fork_optimization = false - # Sets -dENABLE_HANDLE_ZAPPING. + # Sets the default for v8_enable_local_handle_zapping and + # v8_enable_global_handle_zapping. v8_enable_handle_zapping = is_asan || is_debug + # Sets -DENABLE_LOCAL_HANDLE_ZAPPING, which is more expensive than just + # the global handles. By default it is enabled if v8_enable_handle_zapping + # is enabled. + v8_enable_local_handle_zapping = "" + + # Sets -DENABLE_GLOBAL_HANDLE_ZAPPING. By default it is enabled if + # v8_enable_handle_zapping is enabled. + v8_enable_global_handle_zapping = "" + # Enable slow dchecks. v8_enable_slow_dchecks = false # Enable fast mksnapshot runs. v8_enable_fast_mksnapshot = false + # Enable using multiple threads to build builtins in mksnapshot. + v8_enable_concurrent_mksnapshot = true + # Optimize code for Torque executable, even during a debug build. v8_enable_fast_torque = "" @@ -118,16 +137,16 @@ declare_args() { # Allow runtime-enabled code comments (with --code-comments). Enabled by # default in debug builds. - # Sets -dV8_CODE_COMMENTS + # Sets -DV8_CODE_COMMENTS v8_code_comments = "" # Allow runtime-enabled debug code (with --debug-code). Enabled by default in # debug builds. - # Sets -dV8_ENABLE_DEBUG_CODE + # Sets -DV8_ENABLE_DEBUG_CODE v8_enable_debug_code = "" # Enable native counters from the snapshot (impacts performance, sets - # -dV8_SNAPSHOT_NATIVE_CODE_COUNTERS). + # -DV8_SNAPSHOT_NATIVE_CODE_COUNTERS). # This option will generate extra code in the snapshot to increment counters, # as per the --native-code-counters flag. v8_enable_snapshot_native_code_counters = "" @@ -142,24 +161,27 @@ declare_args() { # Enable code-generation-time checking of types in the CodeStubAssembler. v8_enable_verify_csa = false - # Sets -dOBJECT_PRINT. + # Sets -DOBJECT_PRINT. v8_enable_object_print = "" - # Sets -dV8_TRACE_MAPS. + # Sets -DV8_TRACE_MAPS. v8_enable_trace_maps = "" - # Sets -dV8_ENABLE_CHECKS. + # Sets -DV8_ENABLE_CHECKS. v8_enable_v8_checks = "" - # Sets -dV8_TRACE_UNOPTIMIZED. + # Sets -DV8_ENABLE_MEMORY_ACCOUNTING_CHECKS + v8_enable_memory_accounting_checks = "" + + # Sets -DV8_TRACE_UNOPTIMIZED. v8_enable_trace_unoptimized = "" v8_enable_trace_ignition = false v8_enable_trace_baseline_exec = false - # Sets -dV8_TRACE_FEEDBACK_UPDATES. + # Sets -DV8_TRACE_FEEDBACK_UPDATES. v8_enable_trace_feedback_updates = false - # Sets -dV8_ATOMIC_OBJECT_FIELD_WRITES and turns all field write operations + # Sets -DV8_ATOMIC_OBJECT_FIELD_WRITES and turns all field write operations # into relaxed atomic operations. v8_enable_atomic_object_field_writes = "" @@ -167,7 +189,7 @@ declare_args() { # default setting code below. v8_enable_concurrent_marking = true - # Sets -dV8_IGNITION_DISPATCH_COUNTING. + # Sets -DV8_IGNITION_DISPATCH_COUNTING. # Enables counting frequencies of bytecode dispatches. After building in this # configuration, subsequent runs of d8 can output frequencies for each pair # of (current, next) bytecode instructions executed if you specify @@ -176,6 +198,9 @@ declare_args() { # extension function getIgnitionDispatchCounters(). v8_enable_ignition_dispatch_counting = false + # Enable frame elision for builtins. + v8_enable_builtins_frame_elision = true + # Runs mksnapshot with --turbo-profiling. After building in this # configuration, any subsequent run of d8 will output information about usage # of basic blocks in builtins. @@ -192,7 +217,7 @@ declare_args() { # the `--trace-turbo` .json file from `mksnapshot`. v8_log_builtins_block_count_input = "" - # This build flag is used to control whether reorder builtins acoording to + # This build flag is used to control whether reorder builtins according to # the call graph with C3 algorithm based builtin PGO profiling. v8_enable_builtins_reordering = true @@ -219,12 +244,12 @@ declare_args() { v8_enable_test_features = "" # Enable short builtins call instruction sequences by un-embedding builtins. - # Sets -dV8_SHORT_BUILTIN_CALLS + # Sets -DV8_SHORT_BUILTIN_CALLS v8_enable_short_builtin_calls = "" # Enable support for external code range relative to the pointer compression # cage. - # Sets -dV8_EXTERNAL_CODE_SPACE + # Sets -DV8_EXTERNAL_CODE_SPACE v8_enable_external_code_space = "" # With post mortem support enabled, metadata is embedded into libv8 that @@ -259,10 +284,6 @@ declare_args() { # specific hook). v8_check_header_includes = false - # Enable sharing read-only space across isolates. - # Sets -DV8_SHARED_RO_HEAP. - v8_enable_shared_ro_heap = "" - # Enable lazy source positions by default. v8_enable_lazy_source_positions = true @@ -326,8 +347,8 @@ declare_args() { # Sets -DV8_ENABLE_SANDBOX. v8_enable_sandbox = "" - # Explicitly disable leaptiering (on builds where it would otherwise be enabled). - v8_disable_leaptiering = "" + # Enable leaptiering + v8_enable_leaptiering = true # Enable the memory corruption API. Useful for testing the sandbox. # The memory corruption API is only exposed to JavaScript if sandbox testing @@ -354,7 +375,7 @@ declare_args() { # Sets -DV8_DICT_PROPERTY_CONST_TRACKING v8_dict_property_const_tracking = false - # Enable map packing & unpacking (sets -dV8_MAP_PACKING). + # Enable map packing & unpacking (sets -DV8_MAP_PACKING). v8_enable_map_packing = false # Allow for JS promise hooks (instead of just C++). @@ -365,7 +386,7 @@ declare_args() { # The flag enables disabling the feature, to test this data's overhead. v8_enable_continuation_preserved_embedder_data = true - # Enable allocation folding globally (sets -dV8_ALLOCATION_FOLDING). + # Enable allocation folding globally (sets -DV8_ALLOCATION_FOLDING). # When it's disabled, the --turbo-allocation-folding runtime flag will be ignored. v8_enable_allocation_folding = true @@ -389,10 +410,23 @@ declare_args() { # On non-Desktop platforms, enable explicit bounds checks in the Wasm # interpreter, where the bounds checking is done in the instruction handler, - # not using an unhandled exception filter (which also doesn't work with Win-ASAN). + # not using an unhandled exception filter (which also doesn't work with + # Win-ASAN). + # Also enables explicit bounds checks on component builds in platforms other + # than Windows because of a problem with function name mangling for vectorcall + # ABI on ELF (The vectorcall calling convention requires a mangling that + # includes @@, but on ELF an @ indicates that the part after it is the version + # of the symbol, with @@ indicating the default symbol version to link against + # when none is specified by the caller and this causes linker errors). As a + # workaround, we need to disable the vectorcall calling convention for + # component builds on Linux and Mac, which means that we cannot use DrumBrake + # builtins for Load/Store instruction handlers, because of the different + # calling convention. + # Windows component builds are also enabled to support cross-compilation. v8_drumbrake_bounds_checks = (is_win && (is_asan || is_ubsan || is_msan || is_tsan)) || - !(is_win || is_linux || is_mac) || v8_current_cpu != "x64" + !(is_win || is_linux || is_mac) || v8_current_cpu != "x64" || !is_clang || + is_component_build # Enables pointer compression for 8GB heaps. # Sets -DV8_COMPRESS_POINTERS_8GB. @@ -435,12 +469,18 @@ declare_args() { # Enable Turboshaft CSA pipeline. v8_enable_turboshaft_csa = false + # Black allocate objects on separate pages. + v8_enable_black_allocated_pages = "" + # Use sticky mark-bits for separating object generations. v8_enable_sticky_mark_bits = false # Use the experimental TSA-based definition for some builtins. v8_enable_experimental_tsa_builtins = false + # Use the experimental encoding of undefined in double values. + v8_enable_experimental_undefined_double = false + v8_dcheck_always_on = dcheck_always_on # Remote builds require an explicit dependency on icudat, but @@ -448,6 +488,33 @@ declare_args() { # isn't present, which some embedders rely on. This option controls # the explicit dependency and allows the build to complete. v8_depend_on_icu_data_file = icu_use_data_file + + # Some fuzzers depend on fuzzing functionality linked into the v8 library. + # For binary size reasons this functionality is not always available. + v8_wasm_random_fuzzers = "" + + # Experimental testing mode where various limits are artificially set lower. + v8_lower_limits_mode = false + + # Enables the use of partition_alloc as the default allocator for standalone + # V8. This should be used for benchmarking and testing purposes to more + # closely mimic in-browser behavior. + # + # Currently used in d8. + # TODO(399144247,400141120,392817524): Temporarily disabled again because of + # performance regressions in multi-threaded, Zone-allocation heavy workloads, + # e.g., JetStream startup or Wasm eager compilation. + v8_enable_partition_alloc = + false && !build_with_v8_embedder && + !(defined(build_with_node) && build_with_node) && + (v8_target_cpu != "ppc64" && v8_target_cpu != "s390x") + + # V8 uses Chrome's blink-gc clang plugin for checking V8's internal cppgc + # usages. The plugin is not exhaustive but covers most common known pitfalls. + use_cppgc_clang_plugin = true + + # Deinterleaving load support. + v8_enable_wasm_deinterleaved_mem_ops = false } # Derived defaults. @@ -472,6 +539,10 @@ if (v8_enable_test_features == "") { if (v8_enable_v8_checks == "") { v8_enable_v8_checks = v8_enable_debugging_features } +if (v8_enable_memory_accounting_checks == "") { + v8_enable_memory_accounting_checks = + v8_enable_debugging_features || v8_dcheck_always_on +} if (v8_enable_heap_snapshot_verify == "") { v8_enable_heap_snapshot_verify = v8_enable_debugging_features || v8_dcheck_always_on @@ -484,7 +555,7 @@ if (v8_enable_snapshot_code_comments) { v8_code_comments = v8_enable_debugging_features } if (v8_enable_debug_code == "") { - v8_enable_debug_code = v8_enable_debugging_features + v8_enable_debug_code = v8_enable_debugging_features || v8_dcheck_always_on } if (v8_enable_snapshot_native_code_counters == "") { v8_enable_snapshot_native_code_counters = v8_enable_debugging_features @@ -495,14 +566,18 @@ if (v8_enable_drumbrake && v8_enable_webassembly) { is_drumbrake_supported, "DrumBrake is only available on x64, arm64 on Windows, Linux and MacOS.") } +if (v8_enable_black_allocated_pages == "") { + v8_enable_black_allocated_pages = !v8_enable_sticky_mark_bits +} -# Toggle pointer compression for correctness fuzzing when building the -# clang_x64_pointer_compression toolchain. We'll correctness-compare the -# default build with the clang_x64_pointer_compression build. +# Toggle certain build flags for correctness fuzzing when building the +# clang_x64_fuzzer_experiments toolchain. We'll correctness-compare the +# default build with the experiments build. if (v8_multi_arch_build && rebase_path(get_label_info(":d8", "root_out_dir"), root_build_dir) == - "clang_x64_pointer_compression") { + "clang_x64_fuzzer_experiments") { v8_enable_pointer_compression = !v8_enable_pointer_compression + v8_lower_limits_mode = !v8_lower_limits_mode } # Ensure the sandbox is on/off in the same way as pointer compression for @@ -516,21 +591,32 @@ if (v8_enable_pointer_compression_shared_cage == "") { if (v8_enable_pointer_compression_8gb == "") { v8_enable_pointer_compression_8gb = false } +if (v8_enable_local_handle_zapping == "") { + v8_enable_local_handle_zapping = v8_enable_handle_zapping +} +if (v8_enable_global_handle_zapping == "") { + v8_enable_global_handle_zapping = v8_enable_handle_zapping +} if (v8_enable_fast_torque == "") { v8_enable_fast_torque = v8_enable_fast_mksnapshot } +if (v8_enable_concurrent_mksnapshot == "") { + v8_enable_concurrent_mksnapshot = v8_enable_fast_mksnapshot +} if (v8_enable_zone_compression == "") { v8_enable_zone_compression = false } if (v8_enable_short_builtin_calls == "") { v8_enable_short_builtin_calls = - v8_current_cpu == "x64" || v8_current_cpu == "arm64" + v8_current_cpu == "x64" || v8_current_cpu == "arm64" || + v8_current_cpu == "loong64" || v8_current_cpu == "riscv64" } if (v8_enable_external_code_space == "") { v8_enable_external_code_space = v8_enable_pointer_compression && v8_enable_pointer_compression_shared_cage && - (v8_current_cpu == "x64" || v8_current_cpu == "arm64") + (v8_current_cpu == "x64" || v8_current_cpu == "arm64" || + v8_current_cpu == "loong64") } if (v8_enable_sparkplug == "") { v8_enable_sparkplug = !v8_jitless @@ -538,7 +624,8 @@ if (v8_enable_sparkplug == "") { if (v8_enable_maglev == "") { v8_enable_maglev = v8_enable_turbofan && (v8_current_cpu == "arm" || v8_current_cpu == "x64" || - v8_current_cpu == "arm64") + v8_current_cpu == "arm64" || v8_current_cpu == "s390x" || + v8_current_cpu == "riscv64") } assert(v8_enable_turbofan || !v8_enable_maglev, "Maglev is not available when Turbofan is disabled.") @@ -578,10 +665,6 @@ if (v8_enable_short_builtin_calls && # guaranteed to be close enough to embedded builtins. v8_enable_short_builtin_calls = false } -if (v8_enable_shared_ro_heap == "") { - v8_enable_shared_ro_heap = !v8_enable_pointer_compression || - v8_enable_pointer_compression_shared_cage -} if (v8_enable_sandbox == "") { # TODO(saelo, v8:11880) remove dependency on v8_enable_external_code_space @@ -592,10 +675,6 @@ if (v8_enable_sandbox == "") { v8_enable_external_code_space && target_os != "fuchsia" } -if (v8_disable_leaptiering == "") { - v8_disable_leaptiering = false -} - if (v8_enable_static_roots == "") { # Static roots are only valid for builds with pointer compression and a # shared read-only heap. @@ -605,17 +684,13 @@ if (v8_enable_static_roots == "") { # without external code space allocate read only roots at a further # location relative to the cage base. v8_enable_static_roots = - v8_enable_pointer_compression && v8_enable_shared_ro_heap && - v8_enable_pointer_compression_shared_cage && - v8_enable_external_code_space && v8_enable_webassembly && - v8_enable_i18n_support + v8_enable_pointer_compression && v8_enable_external_code_space && + v8_enable_webassembly && v8_enable_i18n_support } assert(!v8_enable_static_roots || - (v8_enable_pointer_compression && v8_enable_shared_ro_heap && - v8_enable_pointer_compression_shared_cage && - v8_enable_external_code_space && v8_enable_webassembly && - v8_enable_i18n_support), + (v8_enable_pointer_compression && v8_enable_external_code_space && + v8_enable_webassembly && v8_enable_i18n_support), "Trying to enable static roots in a configuration that is not supported") assert( @@ -668,19 +743,16 @@ if (v8_enable_webassembly && !target_is_simulator && v8_current_cpu == "x64") { v8_enable_wasm_simd256_revec = true } +if (v8_enable_webassembly && v8_current_cpu == "arm64") { + v8_enable_wasm_deinterleaved_mem_ops = true +} + assert(!v8_disable_write_barriers || v8_enable_single_generation, "Disabling write barriers works only with single generation") assert(v8_current_cpu == "arm64" || !v8_control_flow_integrity, "Control-flow integrity is only supported on arm64") -if (v8_enable_shared_ro_heap && v8_enable_pointer_compression && - !v8_enable_pointer_compression_shared_cage) { - assert( - is_linux || is_chromeos || is_android, - "Sharing read-only heap with pointer compression is only supported on Linux or Android") -} - assert(!v8_enable_map_packing || !v8_enable_pointer_compression, "Map packing does not support pointer compression") @@ -693,12 +765,12 @@ assert(!v8_enable_external_code_space || v8_enable_pointer_compression, assert(!v8_enable_pointer_compression_8gb || v8_enable_pointer_compression, "Pointer compression for 8GB cages requires pointer compression") -assert(!v8_enable_sandbox || v8_enable_pointer_compression_shared_cage, - "The sandbox requires the shared pointer compression cage") - assert(!v8_enable_sandbox || v8_enable_external_code_space, "The sandbox requires the external code space") +assert(v8_enable_leaptiering || !v8_enable_sandbox, + "the sandbox requires leaptiering to be enabled") + assert(!v8_enable_memory_corruption_api || v8_enable_sandbox, "The Memory Corruption API requires the sandbox") @@ -740,10 +812,30 @@ assert(!v8_enable_cet_shadow_stack || (v8_target_cpu == "x64" && target_os == "win"), "CET shadow stack is supported only on x64 Windows") +if (v8_enable_sticky_mark_bits) { + # To support sticky mark bits, pretenured allocations must be allocated from + # a separate free-list and the atomic pause (or the sweeper) must fix up the + # mark bits. + assert(!v8_enable_black_allocated_pages, + "Black allocated pages are not yet supported with sticky mark bits") +} + if (v8_expose_public_symbols == "") { v8_expose_public_symbols = v8_expose_symbols } +# Some fuzzers depend on fuzzing functionality linked into the v8 library. +# For binary size reasons this functionality is not available for official +# builds, therefore these fuzzers do not function there and should be skipped +# instead. +if (v8_wasm_random_fuzzers == "") { + v8_wasm_random_fuzzers = !is_official_build +} + +assert( + !build_with_chromium || !v8_enable_partition_alloc, + "V8 using partition_alloc from Chromium is not implemented at the moment") + v8_random_seed = "314159265" v8_toolset_for_shell = "host" @@ -886,6 +978,7 @@ external_v8_defines = [ "V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT=${v8_array_buffer_view_internal_field_count}", "V8_PROMISE_INTERNAL_FIELD_COUNT=${v8_promise_internal_field_count}", "V8_ENABLE_CHECKS", + "V8_ENABLE_MEMORY_ACCOUNTING_CHECKS", "V8_COMPRESS_POINTERS", "V8_COMPRESS_POINTERS_IN_SHARED_CAGE", "V8_31BIT_SMIS_ON_64BIT_ARCH", @@ -918,6 +1011,9 @@ enabled_external_v8_defines = [ if (v8_enable_v8_checks) { enabled_external_v8_defines += [ "V8_ENABLE_CHECKS" ] } +if (v8_enable_memory_accounting_checks) { + enabled_external_v8_defines += [ "V8_ENABLE_MEMORY_ACCOUNTING_CHECKS" ] +} if (v8_enable_pointer_compression) { enabled_external_v8_defines += [ "V8_COMPRESS_POINTERS" ] if (v8_enable_pointer_compression_shared_cage) { @@ -1002,16 +1098,25 @@ config("v8_header_features") { # List of defines that can appear in externally visible cppgc header files and # that are controlled by args.gn. external_cppgc_defines = [ - "CPPGC_SUPPORTS_OBJECT_NAMES", "CPPGC_CAGED_HEAP", + "CPPGC_ENABLE_API_CHECKS", + "CPPGC_ENABLE_LARGER_CAGE", + "CPPGC_ENABLE_SLOW_API_CHECKS", + "CPPGC_POINTER_COMPRESSION", "CPPGC_SLIM_WRITE_BARRIER", + "CPPGC_SUPPORTS_OBJECT_NAMES", "CPPGC_YOUNG_GENERATION", - "CPPGC_POINTER_COMPRESSION", - "CPPGC_ENABLE_LARGER_CAGE", ] enabled_external_cppgc_defines = [] +if (cppgc_enable_api_checks) { + enabled_external_cppgc_defines += [ "CPPGC_ENABLE_API_CHECKS" ] +} +cppgc_enable_slow_api_checks = v8_enable_slow_dchecks +if (cppgc_enable_slow_api_checks) { + enabled_external_cppgc_defines += [ "CPPGC_ENABLE_SLOW_API_CHECKS" ] +} if (cppgc_enable_object_names) { enabled_external_cppgc_defines += [ "CPPGC_SUPPORTS_OBJECT_NAMES" ] } @@ -1032,9 +1137,6 @@ if (cppgc_enable_young_generation) { if (cppgc_enable_pointer_compression) { enabled_external_cppgc_defines += [ "CPPGC_POINTER_COMPRESSION" ] } -if (cppgc_enable_2gb_cage) { - enabled_external_cppgc_defines += [ "CPPGC_2GB_CAGE" ] -} if (cppgc_enable_larger_cage) { enabled_external_cppgc_defines += [ "CPPGC_ENABLE_LARGER_CAGE" ] } @@ -1143,14 +1245,20 @@ config("features") { if (v8_enable_i18n_support) { defines += [ "V8_INTL_SUPPORT" ] } - if (v8_enable_handle_zapping) { - defines += [ "ENABLE_HANDLE_ZAPPING" ] + if (v8_enable_local_handle_zapping) { + defines += [ "ENABLE_LOCAL_HANDLE_ZAPPING" ] + } + if (v8_enable_global_handle_zapping) { + defines += [ "ENABLE_GLOBAL_HANDLE_ZAPPING" ] } if (v8_code_comments == true) { defines += [ "V8_CODE_COMMENTS" ] } if (v8_enable_debug_code) { defines += [ "V8_ENABLE_DEBUG_CODE" ] + if (v8_enable_debugging_features) { + defines += [ "V8_ENABLE_SLOW_DEBUG_CODE_BY_DEFAULT" ] + } } if (v8_enable_heap_snapshot_verify) { defines += [ "V8_ENABLE_HEAP_SNAPSHOT_VERIFY" ] @@ -1179,9 +1287,6 @@ config("features") { if (v8_use_siphash) { defines += [ "V8_USE_SIPHASH" ] } - if (v8_enable_shared_ro_heap) { - defines += [ "V8_SHARED_RO_HEAP" ] - } if (v8_win64_unwinding_info) { defines += [ "V8_WIN64_UNWINDING_INFO" ] } @@ -1240,6 +1345,7 @@ config("features") { defines += [ "V8_ENABLE_SYSTEM_INSTRUMENTATION" ] } if (v8_enable_etw_stack_walking) { + assert(is_win) defines += [ "V8_ENABLE_ETW_STACK_WALKING" ] } if (v8_etw_guid != "") { @@ -1302,6 +1408,9 @@ config("features") { if (v8_enable_wasm_simd256_revec) { defines += [ "V8_ENABLE_WASM_SIMD256_REVEC" ] } + if (v8_enable_wasm_deinterleaved_mem_ops) { + defines += [ "V8_ENABLE_WASM_DEINTERLEAVED_MEM_OPS" ] + } if (v8_enable_maglev_graph_printer) { defines += [ "V8_ENABLE_MAGLEV_GRAPH_PRINTER" ] } @@ -1317,14 +1426,26 @@ config("features") { if (v8_enable_local_off_stack_check) { defines += [ "V8_ENABLE_LOCAL_OFF_STACK_CHECK" ] } + if (v8_enable_black_allocated_pages) { + defines += [ "V8_ENABLE_BLACK_ALLOCATED_PAGES" ] + } if (v8_enable_sticky_mark_bits) { defines += [ "V8_ENABLE_STICKY_MARK_BITS" ] } if (v8_enable_experimental_tsa_builtins) { defines += [ "V8_ENABLE_EXPERIMENTAL_TSA_BUILTINS" ] } - if (v8_disable_leaptiering) { - defines += [ "V8_DISABLE_LEAPTIERING" ] + if (v8_enable_experimental_undefined_double) { + defines += [ "V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE" ] + } + if (v8_enable_leaptiering) { + defines += [ "V8_ENABLE_LEAPTIERING" ] + } + if (v8_wasm_random_fuzzers) { + defines += [ "V8_WASM_RANDOM_FUZZERS" ] + } + if (v8_lower_limits_mode) { + defines += [ "V8_LOWER_LIMITS_MODE" ] } } @@ -1416,14 +1537,11 @@ config("toolchain") { defines += [ "V8_TARGET_ARCH_LOONG64" ] } - if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { - defines += [ "V8_TARGET_ARCH_S390" ] + if (v8_current_cpu == "s390x") { cflags += [ "-ffp-contract=off" ] - if (v8_current_cpu == "s390x") { - defines += [ "V8_TARGET_ARCH_S390X" ] - } + defines += [ "V8_TARGET_ARCH_S390X" ] if (host_byteorder == "little") { - defines += [ "V8_TARGET_ARCH_S390_LE_SIM" ] + defines += [ "V8_TARGET_ARCH_S390X_LE_SIM" ] } else if (current_os != "zos") { cflags += [ "-march=z196" ] } @@ -1445,10 +1563,22 @@ config("toolchain") { # Under simulator build, compiler will not provide __riscv_xlen. Define here if (v8_current_cpu == "riscv64" || v8_current_cpu == "riscv32") { + if (target_is_simulator) { + defines += [ "_RISCV_TARGET_SIMULATOR" ] + } if (riscv_use_rvv || target_is_simulator) { defines += [ "CAN_USE_RVV_INSTRUCTIONS" ] defines += [ "RVV_VLEN=${riscv_rvv_vlen}" ] } + if (riscv_use_zba) { + defines += [ "__riscv_zba" ] + } + if (riscv_use_zbb) { + defines += [ "__riscv_zbb" ] + } + if (riscv_use_zbs) { + defines += [ "__riscv_zbs" ] + } } if (v8_current_cpu == "riscv64") { defines += [ "V8_TARGET_ARCH_RISCV64" ] @@ -1518,12 +1648,20 @@ config("toolchain") { } if (is_clang) { - cflags += [ - "-Wunreachable-code", - - # TODO(v8:12245): Fix shadowing instances and remove. - "-Wno-shadow", - ] + cflags += [ "-Wunreachable-code" ] + + if ((v8_current_cpu != "x64" && v8_current_cpu != "ia32") || + target_os == "chromeos") { + # On arm/arm64, `pc` and `sp` are register names but are also very often + # used as function parameters, causing shadowing. So, we only enable + # -Wshadow on x64 and ia32. + # + # Use target_os == "chromeos" instead of `is_chromeos` to check for + # ChromeOS because `generate_bytecode_builtins_list` builds using + # `v8_generator_toolchain`, which is the host toolchain and `is_chromeos` + # will be false even when building for ChromeOS. + cflags += [ "-Wno-shadow" ] + } # TODO(fuchsia:127411): Re-enable once FIDL bindings are compatible. if (!is_fuchsia) { @@ -1532,183 +1670,28 @@ config("toolchain") { # warning. cflags += [ "-Wctad-maybe-unsupported" ] } - } - if (is_clang || !is_win) { - cflags += [ - # On clang and gcc, disable warnings about offsetof being used on - # non-standard-layout types. offsetof is only specified for - # standard-layout types, but its behaviour on non-standard-layout types is - # implementation defined (rather than UB), and our supported compilers - # have the expected reasonable behaviour. - "-Wno-invalid-offsetof", - ] - } - - if (is_win) { - cflags += [ - "/wd4245", # Conversion with signed/unsigned mismatch. - "/wd4267", # Conversion with possible loss of data. - "/wd4324", # Padding structure due to alignment. - "/wd4701", # Potentially uninitialized local variable. - "/wd4702", # Unreachable code. - "/wd4703", # Potentially uninitialized local pointer variable. - "/wd4709", # Comma operator within array index expr (bugged). - "/wd4714", # Function marked forceinline not inlined. - - # MSVC assumes that control can get past an exhaustive switch and then - # warns if there's no return there (see https://crbug.com/v8/7658) - "/wd4715", # Not all control paths return a value. - - "/wd4718", # Recursive call has no side-effect. - "/wd4723", # https://crbug.com/v8/7771 - "/wd4724", # https://crbug.com/v8/7771 - "/wd4800", # Forcing value to bool. - ] + if (is_clang && use_cppgc_clang_plugin && clang_use_chrome_plugins) { + # The plugin is built directly into clang, so there's no need to load it + # dynamically. + cflags += [ + "-Xclang", + "-add-plugin", + "-Xclang", + "blink-gc-plugin", + ] + } } - if (!is_clang && is_win) { - cflags += [ - "/wd4506", # Benign "no definition for inline function" - - # Warnings permanently disabled: - - # C4091: 'typedef ': ignored on left of 'X' when no variable is - # declared. - # This happens in a number of Windows headers. Dumb. - "/wd4091", - - # C4127: conditional expression is constant - # This warning can in theory catch dead code and other problems, but - # triggers in far too many desirable cases where the conditional - # expression is either set by macros or corresponds some legitimate - # compile-time constant expression (due to constant template args, - # conditionals comparing the sizes of different types, etc.). Some of - # these can be worked around, but it's not worth it. - "/wd4127", - - # C4251: 'identifier' : class 'type' needs to have dll-interface to be - # used by clients of class 'type2' - # This is necessary for the shared library build. - "/wd4251", - - # C4275: non dll-interface class used as base for dll-interface class - # This points out a potential (but rare) problem with referencing static - # fields of a non-exported base, through the base's non-exported inline - # functions, or directly. The warning is subtle enough that people just - # suppressed it when they saw it, so it's not worth it. - "/wd4275", - - # C4312 is a VS 2015 64-bit warning for integer to larger pointer. - # TODO(brucedawson): fix warnings, crbug.com/554200 - "/wd4312", - - # C4324 warns when padding is added to fulfill alignas requirements, - # but can trigger in benign cases that are difficult to individually - # suppress. - "/wd4324", - - # C4351: new behavior: elements of array 'array' will be default - # initialized - # This is a silly "warning" that basically just alerts you that the - # compiler is going to actually follow the language spec like it's - # supposed to, instead of not following it like old buggy versions did. - # There's absolutely no reason to turn this on. - "/wd4351", - - # C4355: 'this': used in base member initializer list - # It's commonly useful to pass |this| to objects in a class' initializer - # list. While this warning can catch real bugs, most of the time the - # constructors in question don't attempt to call methods on the passed-in - # pointer (until later), and annotating every legit usage of this is - # simply more hassle than the warning is worth. - "/wd4355", - - # C4503: 'identifier': decorated name length exceeded, name was - # truncated - # This only means that some long error messages might have truncated - # identifiers in the presence of lots of templates. It has no effect on - # program correctness and there's no real reason to waste time trying to - # prevent it. - "/wd4503", - - # Warning C4589 says: "Constructor of abstract class ignores - # initializer for virtual base class." Disable this warning because it - # is flaky in VS 2015 RTM. It triggers on compiler generated - # copy-constructors in some cases. - "/wd4589", - - # C4611: interaction between 'function' and C++ object destruction is - # non-portable - # This warning is unavoidable when using e.g. setjmp/longjmp. MSDN - # suggests using exceptions instead of setjmp/longjmp for C++, but - # Chromium code compiles without exception support. We therefore have to - # use setjmp/longjmp for e.g. JPEG decode error handling, which means we - # have to turn off this warning (and be careful about how object - # destruction happens in such cases). - "/wd4611", - - # Warnings to evaluate and possibly fix/reenable later: - - "/wd4100", # Unreferenced formal function parameter. - "/wd4121", # Alignment of a member was sensitive to packing. - "/wd4244", # Conversion: possible loss of data. - "/wd4505", # Unreferenced local function has been removed. - "/wd4510", # Default constructor could not be generated. - "/wd4512", # Assignment operator could not be generated. - "/wd4610", # Class can never be instantiated, constructor required. - "/wd4838", # Narrowing conversion. Doesn't seem to be very useful. - "/wd4995", # 'X': name was marked as #pragma deprecated - "/wd4996", # Deprecated function warning. - - # These are variable shadowing warnings that are new in VS2015. We - # should work through these at some point -- they may be removed from - # the RTM release in the /W4 set. - "/wd4456", - "/wd4457", - "/wd4458", - "/wd4459", - - # All of our compilers support the extensions below. - "/wd4200", # nonstandard extension used: zero-sized array in struct/union - "/wd4201", # nonstandard extension used: nameless struct/union - "/wd4204", # nonstandard extension used : non-constant aggregate - # initializer - - "/wd4221", # nonstandard extension used : 'identifier' : cannot be - # initialized using address of automatic variable - - # http://crbug.com/588506 - Conversion suppressions waiting on Clang - # -Wconversion. - "/wd4245", # 'conversion' : conversion from 'type1' to 'type2', - # signed/unsigned mismatch - - "/wd4267", # 'var' : conversion from 'size_t' to 'type', possible loss of - # data - - "/wd4305", # 'identifier' : truncation from 'type1' to 'type2' - "/wd4389", # 'operator' : signed/unsigned mismatch - - "/wd4702", # unreachable code - - # http://crbug.com/848979 - MSVC is more conservative than Clang with - # regards to variables initialized and consumed in different branches. - "/wd4701", # Potentially uninitialized local variable 'name' used - "/wd4703", # Potentially uninitialized local pointer variable 'name' used - - # http://crbug.com/848979 - Remaining Clang permitted warnings. - "/wd4661", # 'identifier' : no suitable definition provided for explicit - # template instantiation request - - "/wd4706", # assignment within conditional expression - # MSVC is stricter and requires a boolean expression. - - "/wd4715", # 'function' : not all control paths return a value' - # MSVC does not analyze switch (enum) for completeness. - ] - } + cflags += [ + # Disable warnings about offsetof being used on non-standard-layout types. + # offsetof is only specified for standard-layout types, but its behaviour + # on non-standard-layout types is implementation defined (rather than UB), + # and our supported compilers have the expected reasonable behaviour. + "-Wno-invalid-offsetof", + ] - if (!is_clang && !is_win) { + if (!is_clang) { cflags += [ # Disable gcc warnings for optimizations based on the assumption that # signed overflow does not occur. Generates false positives (see @@ -1837,6 +1820,7 @@ if (v8_postmortem_support) { "src/objects/instruction-stream.h", "src/objects/instruction-stream-inl.h", "src/objects/casting.h", + "src/objects/casting-inl.h", "src/objects/code.h", "src/objects/code-inl.h", "src/objects/data-handler.h", @@ -2196,6 +2180,13 @@ template("run_torque") { deps = [ ":torque($toolchain)" ] + if (is_msan) { + configs = [ + "//third_party/instrumented_libs:msan_runtime_libs($host_toolchain)", + ] + deps += [ "//third_party/instrumented_libs:ld-linux($host_toolchain)" ] + } + script = "tools/run.py" sources = torque_files @@ -2435,6 +2426,13 @@ template("run_mksnapshot") { data_deps = [ ":mksnapshot($v8_snapshot_toolchain)" ] } + if (is_msan) { + configs = [ + "//third_party/instrumented_libs:msan_runtime_libs($host_toolchain)", + ] + deps += [ "//third_party/instrumented_libs:ld-linux($host_toolchain)" ] + } + script = "tools/run.py" sources = [] @@ -2515,6 +2513,10 @@ template("run_mksnapshot") { ] } + if (v8_enable_builtins_frame_elision) { + args += [ "--turbo-elide-frames" ] + } + if (v8_enable_builtins_profiling) { args += [ "--turbo-profiling" ] } @@ -2617,6 +2619,15 @@ template("run_mksnapshot") { } } + if (v8_enable_concurrent_mksnapshot) { + args += [ + "--concurrent-builtin-generation", + + # Use all the cores for concurrent builtin generation. + "--concurrent-turbofan-max-threads=0", + ] + } + if (v8_enable_verify_heap) { args += [ "--verify-heap" ] } @@ -2748,16 +2759,11 @@ action("v8_dump_build_config") { mips_use_msa_var = mips_use_msa } - js_shared_memory = - v8_enable_shared_ro_heap && (!v8_enable_pointer_compression || - v8_enable_pointer_compression_shared_cage) && - !v8_disable_write_barriers + js_shared_memory = !v8_disable_write_barriers simd_mips = mips_arch_variant_var == "r6" && mips_use_msa simulator_run = target_cpu != v8_target_cpu use_sanitizer = is_asan || is_cfi || is_msan || is_tsan || is_ubsan - use_leaptiering = v8_enable_sandbox && !v8_disable_leaptiering - # This lists all build-time switches consumed by the test framework. All # switches can be used automatically in the status files as is - no # further files need to be modified. @@ -2812,7 +2818,6 @@ action("v8_dump_build_config") { "pointer_compression_shared_cage=$v8_enable_pointer_compression_shared_cage", "runtime_call_stats=$v8_enable_runtime_call_stats", "sandbox=$v8_enable_sandbox", - "shared_ro_heap=$v8_enable_shared_ro_heap", "simd_mips=$simd_mips", "simulator_run=$simulator_run", "single_generation=$v8_enable_single_generation", @@ -2827,8 +2832,10 @@ action("v8_dump_build_config") { "verify_csa=$v8_enable_verify_csa", "verify_heap=$v8_enable_verify_heap", "verify_predictable=$v8_enable_verify_predictable", + "wasm_random_fuzzers=$v8_wasm_random_fuzzers", "memory_corruption_api=$v8_enable_memory_corruption_api", - "leaptiering=$use_leaptiering", + "leaptiering=$v8_enable_leaptiering", + "lower_limits_mode=$v8_lower_limits_mode", # Please add new switches also in `build_config_content` in `bazel/defs.bzl` # so that the switches also work for tests triggered by bazel. @@ -2862,9 +2869,9 @@ generated_file("v8_generate_features_json") { v8_enable_pointer_compression_shared_cage = v8_enable_pointer_compression_shared_cage v8_enable_sandbox = v8_enable_sandbox - v8_enable_shared_ro_heap = v8_enable_shared_ro_heap v8_enable_short_builtin_calls = v8_enable_short_builtin_calls v8_enable_v8_checks = v8_enable_v8_checks + v8_enable_memory_accounting_checks = v8_enable_memory_accounting_checks v8_enable_webassembly = v8_enable_webassembly v8_enable_zone_compression = v8_enable_zone_compression v8_imminent_deprecation_warnings = v8_imminent_deprecation_warnings @@ -2900,9 +2907,6 @@ v8_source_set("v8_snapshot") { public = [] sources = [ "src/init/setup-isolate-deserialize.cc" ] - if (v8_control_flow_integrity) { - sources += [ "src/deoptimizer/deoptimizer-cfi-builtins.cc" ] - } if (emit_builtins_as_inline_asm) { deps += [ ":asm_to_inline_asm_default" ] sources += [ "$target_gen_dir/embedded.cc" ] @@ -3086,7 +3090,7 @@ v8_source_set("v8_initializers") { ### gcmole(ppc64) ### "src/builtins/ppc/builtins-ppc.cc", ] - } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { + } else if (v8_current_cpu == "s390x") { sources += [ ### gcmole(s390) ### "src/builtins/s390/builtins-s390.cc", @@ -3180,6 +3184,7 @@ v8_header_set("v8_headers") { "include/v8-embedder-state-scope.h", "include/v8-exception.h", "include/v8-extension.h", + "include/v8-external-memory-accounter.h", "include/v8-external.h", "include/v8-fast-api-calls.h", "include/v8-forward.h", @@ -3210,6 +3215,7 @@ v8_header_set("v8_headers") { "include/v8-snapshot.h", "include/v8-statistics.h", "include/v8-template.h", + "include/v8-trace-categories.h", "include/v8-traced-handle.h", "include/v8-typed-array.h", "include/v8-unwinder.h", @@ -3233,6 +3239,7 @@ v8_header_set("v8_headers") { deps = [ ":cppgc_headers", + ":v8_tracing", ":v8_version", ] } @@ -3411,6 +3418,7 @@ v8_header_set("v8_internal_headers") { "src/common/segmented-table-inl.h", "src/common/segmented-table.h", "src/common/simd128.h", + "src/common/thread-local-storage.h", "src/compiler-dispatcher/lazy-compile-dispatcher.h", "src/compiler-dispatcher/optimizing-compile-dispatcher.h", "src/compiler/access-builder.h", @@ -3438,25 +3446,23 @@ v8_header_set("v8_internal_headers") { "src/compiler/backend/spill-placer.h", "src/compiler/backend/unwinding-info-writer.h", "src/compiler/basic-block-instrumentor.h", - "src/compiler/branch-condition-duplicator.h", "src/compiler/branch-elimination.h", "src/compiler/bytecode-analysis.h", "src/compiler/bytecode-graph-builder.h", "src/compiler/bytecode-liveness-map.h", "src/compiler/checkpoint-elimination.h", + "src/compiler/code-assembler-compilation-job.h", "src/compiler/code-assembler.h", "src/compiler/common-node-cache.h", "src/compiler/common-operator-reducer.h", "src/compiler/common-operator.h", "src/compiler/compilation-dependencies.h", "src/compiler/compiler-source-position-table.h", - "src/compiler/const-tracking-let-helpers.h", "src/compiler/constant-folding-reducer.h", "src/compiler/control-equivalence.h", "src/compiler/control-path-state.h", "src/compiler/csa-load-elimination.h", "src/compiler/dead-code-elimination.h", - "src/compiler/decompression-optimizer.h", "src/compiler/diamond.h", "src/compiler/escape-analysis-reducer.h", "src/compiler/escape-analysis.h", @@ -3469,9 +3475,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/graph-assembler.h", "src/compiler/graph-reducer.h", "src/compiler/graph-trimmer.h", - "src/compiler/graph-visualizer.h", "src/compiler/graph-zone-traits.h", - "src/compiler/graph.h", "src/compiler/heap-refs.h", "src/compiler/js-call-reducer.h", "src/compiler/js-context-specialization.h", @@ -3536,6 +3540,10 @@ v8_header_set("v8_internal_headers") { "src/compiler/simplified-operator.h", "src/compiler/state-values-utils.h", "src/compiler/string-builder-optimizer.h", + "src/compiler/turbofan-graph-visualizer.h", + "src/compiler/turbofan-graph.h", + "src/compiler/turbofan-typer.h", + "src/compiler/turbofan-types.h", "src/compiler/turbofan.h", "src/compiler/turboshaft/access-builder.h", "src/compiler/turboshaft/analyzer-iterator.h", @@ -3582,7 +3590,6 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/machine-lowering-reducer-inl.h", "src/compiler/turboshaft/machine-optimization-reducer.h", "src/compiler/turboshaft/maglev-early-lowering-reducer-inl.h", - "src/compiler/turboshaft/maglev-graph-building-phase.h", "src/compiler/turboshaft/memory-optimization-reducer.h", "src/compiler/turboshaft/operation-matcher.h", "src/compiler/turboshaft/operations.h", @@ -3591,8 +3598,6 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/phase.h", "src/compiler/turboshaft/pipelines.h", "src/compiler/turboshaft/pretenuring-propagation-reducer.h", - "src/compiler/turboshaft/recreate-schedule-phase.h", - "src/compiler/turboshaft/recreate-schedule.h", "src/compiler/turboshaft/reducer-traits.h", "src/compiler/turboshaft/register-allocation-phase.h", "src/compiler/turboshaft/representations.h", @@ -3600,17 +3605,17 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/runtime-call-descriptors.h", "src/compiler/turboshaft/select-lowering-reducer.h", "src/compiler/turboshaft/sidetable.h", - "src/compiler/turboshaft/simplified-lowering-phase.h", - "src/compiler/turboshaft/simplified-lowering-reducer.h", "src/compiler/turboshaft/simplify-tf-loops.h", "src/compiler/turboshaft/snapshot-table-opindex.h", "src/compiler/turboshaft/snapshot-table.h", "src/compiler/turboshaft/stack-check-lowering-reducer.h", "src/compiler/turboshaft/store-store-elimination-phase.h", "src/compiler/turboshaft/store-store-elimination-reducer-inl.h", + "src/compiler/turboshaft/string-escape-analysis-reducer.h", "src/compiler/turboshaft/string-view.h", "src/compiler/turboshaft/structural-optimization-reducer.h", "src/compiler/turboshaft/tracing.h", + "src/compiler/turboshaft/turbolev-graph-builder.h", "src/compiler/turboshaft/type-assertions-phase.h", "src/compiler/turboshaft/type-inference-analysis.h", "src/compiler/turboshaft/type-inference-reducer.h", @@ -3630,8 +3635,6 @@ v8_header_set("v8_internal_headers") { "src/compiler/type-cache.h", "src/compiler/type-narrowing-reducer.h", "src/compiler/typed-optimization.h", - "src/compiler/typer.h", - "src/compiler/types.h", "src/compiler/use-info.h", "src/compiler/value-numbering-reducer.h", "src/compiler/verifier.h", @@ -3689,10 +3692,10 @@ v8_header_set("v8_internal_headers") { "src/execution/local-isolate.h", "src/execution/messages.h", "src/execution/microtask-queue.h", + "src/execution/mutex-guard-if-off-thread.h", "src/execution/pointer-authentication.h", "src/execution/protectors-inl.h", "src/execution/protectors.h", - "src/execution/shared-mutex-guard-if-off-thread.h", "src/execution/simulator-base.h", "src/execution/simulator.h", "src/execution/stack-guard.h", @@ -3730,6 +3733,8 @@ v8_header_set("v8_internal_headers") { "src/heap/collection-barrier.h", "src/heap/combined-heap.h", "src/heap/concurrent-marking.h", + "src/heap/conservative-stack-visitor-inl.h", + "src/heap/conservative-stack-visitor.h", "src/heap/cppgc-js/cpp-heap.h", "src/heap/cppgc-js/cpp-marking-state-inl.h", "src/heap/cppgc-js/cpp-marking-state.h", @@ -3758,7 +3763,13 @@ v8_header_set("v8_internal_headers") { "src/heap/heap-allocator.h", "src/heap/heap-controller.h", "src/heap/heap-inl.h", + "src/heap/heap-layout-inl.h", "src/heap/heap-layout-tracer.h", + "src/heap/heap-layout.h", + "src/heap/heap-utils-inl.h", + "src/heap/heap-utils.h", + "src/heap/heap-visitor-inl.h", + "src/heap/heap-visitor.h", "src/heap/heap-write-barrier-inl.h", "src/heap/heap-write-barrier.h", "src/heap/heap.h", @@ -3771,6 +3782,8 @@ v8_header_set("v8_internal_headers") { "src/heap/large-spaces.h", "src/heap/linear-allocation-area.h", "src/heap/list.h", + "src/heap/live-object-range-inl.h", + "src/heap/live-object-range.h", "src/heap/local-factory-inl.h", "src/heap/local-factory.h", "src/heap/local-heap-inl.h", @@ -3783,6 +3796,7 @@ v8_header_set("v8_internal_headers") { "src/heap/marking-barrier-inl.h", "src/heap/marking-barrier.h", "src/heap/marking-inl.h", + "src/heap/marking-progress-tracker.h", "src/heap/marking-state-inl.h", "src/heap/marking-state.h", "src/heap/marking-visitor-inl.h", @@ -3792,6 +3806,7 @@ v8_header_set("v8_internal_headers") { "src/heap/marking.h", "src/heap/memory-allocator.h", "src/heap/memory-balancer.h", + "src/heap/memory-chunk-constants.h", "src/heap/memory-chunk-inl.h", "src/heap/memory-chunk-layout.h", "src/heap/memory-chunk-metadata-inl.h", @@ -3810,9 +3825,8 @@ v8_header_set("v8_internal_headers") { "src/heap/object-lock-inl.h", "src/heap/object-lock.h", "src/heap/object-stats.h", - "src/heap/objects-visiting-inl.h", - "src/heap/objects-visiting.h", "src/heap/page-metadata.h", + "src/heap/page-pool.h", "src/heap/paged-spaces-inl.h", "src/heap/paged-spaces.h", "src/heap/parallel-work-item.h", @@ -3820,7 +3834,6 @@ v8_header_set("v8_internal_headers") { "src/heap/parked-scope.h", "src/heap/pretenuring-handler-inl.h", "src/heap/pretenuring-handler.h", - "src/heap/progress-bar.h", "src/heap/read-only-heap-inl.h", "src/heap/read-only-heap.h", "src/heap/read-only-promotion.h", @@ -3836,6 +3849,7 @@ v8_header_set("v8_internal_headers") { "src/heap/sweeper.h", "src/heap/traced-handles-marking-visitor.h", "src/heap/trusted-range.h", + "src/heap/visit-object.h", "src/heap/weak-object-worklists.h", "src/heap/young-generation-marking-visitor-inl.h", "src/heap/young-generation-marking-visitor.h", @@ -3896,6 +3910,7 @@ v8_header_set("v8_internal_headers") { "src/numbers/conversions-inl.h", "src/numbers/conversions.h", "src/numbers/hash-seed-inl.h", + "src/numbers/ieee754.h", "src/numbers/math-random.h", "src/objects/all-objects-inl.h", "src/objects/allocation-site-inl.h", @@ -3907,7 +3922,6 @@ v8_header_set("v8_internal_headers") { "src/objects/arguments-inl.h", "src/objects/arguments.h", "src/objects/backing-store.h", - "src/objects/bigint-inl.h", "src/objects/bigint.h", "src/objects/call-site-info-inl.h", "src/objects/call-site-info.h", @@ -4123,7 +4137,7 @@ v8_header_set("v8_internal_headers") { "src/objects/waiter-queue-node.h", "src/parsing/expression-scope.h", "src/parsing/func-name-inferrer.h", - "src/parsing/import-assertions.h", + "src/parsing/import-attributes.h", "src/parsing/keywords-gen.h", "src/parsing/literal-buffer.h", "src/parsing/parse-info.h", @@ -4178,6 +4192,7 @@ v8_header_set("v8_internal_headers") { "src/regexp/regexp-macro-assembler.h", "src/regexp/regexp-nodes.h", "src/regexp/regexp-parser.h", + "src/regexp/regexp-result-vector.h", "src/regexp/regexp-stack.h", "src/regexp/regexp-utils.h", "src/regexp/regexp.h", @@ -4200,11 +4215,7 @@ v8_header_set("v8_internal_headers") { "src/sandbox/cppheap-pointer-inl.h", "src/sandbox/cppheap-pointer-table-inl.h", "src/sandbox/cppheap-pointer-table.h", - "src/sandbox/external-buffer-inl.h", - "src/sandbox/external-buffer-table-inl.h", - "src/sandbox/external-buffer-table.h", - "src/sandbox/external-buffer-tag.h", - "src/sandbox/external-buffer.h", + "src/sandbox/cppheap-pointer.h", "src/sandbox/external-entity-table-inl.h", "src/sandbox/external-entity-table.h", "src/sandbox/external-pointer-inl.h", @@ -4224,6 +4235,7 @@ v8_header_set("v8_internal_headers") { "src/sandbox/sandboxed-pointer.h", "src/sandbox/tagged-payload.h", "src/sandbox/testing.h", + "src/sandbox/trusted-pointer-scope.h", "src/sandbox/trusted-pointer-table-inl.h", "src/sandbox/trusted-pointer-table.h", "src/snapshot/code-serializer.h", @@ -4268,11 +4280,11 @@ v8_header_set("v8_internal_headers") { "src/tasks/operations-barrier.h", "src/tasks/task-utils.h", "src/temporal/temporal-parser.h", - "src/third_party/siphash/halfsiphash.h", - "src/third_party/utf8-decoder/utf8-decoder.h", + "src/third_party/rapidhash-v8/rapidhash.h", "src/torque/runtime-macro-shims.h", "src/tracing/trace-event-no-perfetto.h", "src/tracing/trace-event.h", + "src/tracing/trace-id.h", "src/tracing/traced-value.h", "src/tracing/tracing-category-observer.h", "src/utils/address-map.h", @@ -4307,6 +4319,8 @@ v8_header_set("v8_internal_headers") { "src/zone/zone-type-traits.h", "src/zone/zone-utils.h", "src/zone/zone.h", + "third_party/siphash/halfsiphash.h", + "third_party/utf8-decoder/utf8-decoder.h", ] if (v8_enable_snapshot_compression) { @@ -4337,18 +4351,21 @@ v8_header_set("v8_internal_headers") { "src/maglev/maglev-assembler-inl.h", "src/maglev/maglev-assembler.h", "src/maglev/maglev-basic-block.h", + "src/maglev/maglev-code-gen-state-inl.h", "src/maglev/maglev-code-gen-state.h", "src/maglev/maglev-code-generator.h", "src/maglev/maglev-compilation-info.h", "src/maglev/maglev-compilation-unit.h", "src/maglev/maglev-compiler.h", "src/maglev/maglev-concurrent-dispatcher.h", + "src/maglev/maglev-deopt-frame-visitor.h", "src/maglev/maglev-graph-builder.h", "src/maglev/maglev-graph-labeller.h", "src/maglev/maglev-graph-printer.h", "src/maglev/maglev-graph-processor.h", "src/maglev/maglev-graph-verifier.h", "src/maglev/maglev-graph.h", + "src/maglev/maglev-inlining.h", "src/maglev/maglev-interpreter-frame-state.h", "src/maglev/maglev-ir-inl.h", "src/maglev/maglev-ir.h", @@ -4365,6 +4382,8 @@ v8_header_set("v8_internal_headers") { sources += [ "src/maglev/arm/maglev-assembler-arm-inl.h" ] } else if (v8_current_cpu == "arm64") { sources += [ "src/maglev/arm64/maglev-assembler-arm64-inl.h" ] + } else if (v8_current_cpu == "riscv64") { + sources += [ "src/maglev/riscv/maglev-assembler-riscv-inl.h" ] } else if (v8_current_cpu == "x64") { sources += [ "src/maglev/x64/maglev-assembler-x64-inl.h" ] } else if (v8_current_cpu == "s390x") { @@ -4380,9 +4399,11 @@ v8_header_set("v8_internal_headers") { "src/asmjs/asm-scanner.h", "src/asmjs/asm-types.h", "src/compiler/int64-lowering.h", + "src/compiler/turboshaft/growable-stacks-reducer.h", "src/compiler/turboshaft/int64-lowering-phase.h", "src/compiler/turboshaft/int64-lowering-reducer.h", "src/compiler/turboshaft/wasm-assembler-helpers.h", + "src/compiler/turboshaft/wasm-debug-memory-lowering-phase.h", "src/compiler/turboshaft/wasm-gc-optimize-phase.h", "src/compiler/turboshaft/wasm-gc-typed-optimization-reducer.h", "src/compiler/turboshaft/wasm-in-js-inlining-phase.h", @@ -4392,6 +4413,8 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/wasm-lowering-phase.h", "src/compiler/turboshaft/wasm-lowering-reducer.h", "src/compiler/turboshaft/wasm-optimize-phase.h", + "src/compiler/turboshaft/wasm-shuffle-reducer.h", + "src/compiler/turboshaft/wasm-simd-phase.h", "src/compiler/turboshaft/wasm-turboshaft-compiler.h", "src/compiler/wasm-address-reassociation.h", "src/compiler/wasm-call-descriptors.h", @@ -4402,14 +4425,10 @@ v8_header_set("v8_internal_headers") { "src/compiler/wasm-gc-operator-reducer.h", "src/compiler/wasm-graph-assembler.h", "src/compiler/wasm-inlining-into-js.h", - "src/compiler/wasm-inlining.h", - "src/compiler/wasm-js-lowering.h", "src/compiler/wasm-load-elimination.h", - "src/compiler/wasm-loop-peeling.h", "src/compiler/wasm-typer.h", "src/debug/debug-wasm-objects-inl.h", "src/debug/debug-wasm-objects.h", - "src/third_party/utf8-decoder/generalized-utf8-decoder.h", "src/trap-handler/trap-handler-internal.h", "src/trap-handler/trap-handler.h", "src/wasm/baseline/liftoff-assembler-defs.h", @@ -4432,7 +4451,6 @@ v8_header_set("v8_internal_headers") { "src/wasm/function-body-decoder.h", "src/wasm/function-compiler.h", "src/wasm/fuzzing/random-module-generation.h", - "src/wasm/graph-builder-interface.h", "src/wasm/inlining-tree.h", "src/wasm/jump-table-assembler.h", "src/wasm/leb-helper.h", @@ -4445,7 +4463,6 @@ v8_header_set("v8_internal_headers") { "src/wasm/names-provider.h", "src/wasm/object-access.h", "src/wasm/pgo.h", - "src/wasm/serialized-signature-inl.h", "src/wasm/signature-hashing.h", "src/wasm/simd-shuffle.h", "src/wasm/stacks.h", @@ -4486,6 +4503,7 @@ v8_header_set("v8_internal_headers") { "src/wasm/wasm-tier.h", "src/wasm/wasm-value.h", "src/wasm/well-known-imports.h", + "third_party/utf8-decoder/generalized-utf8-decoder.h", ] if (v8_enable_drumbrake) { @@ -4544,10 +4562,6 @@ v8_header_set("v8_internal_headers") { sources += [ "src/execution/pointer-authentication-dummy.h" ] } - if (v8_enable_conservative_stack_scanning) { - sources += [ "src/heap/conservative-stack-visitor.h" ] - } - if (v8_enable_wasm_gdb_remote_debugging) { sources += [ "src/debug/wasm/gdb-server/gdb-remote-util.h", @@ -4608,8 +4622,8 @@ v8_header_set("v8_internal_headers") { "src/compiler/backend/x64/unwinding-info-writer-x64.h", "src/execution/x64/frame-constants-x64.h", "src/regexp/x64/regexp-macro-assembler-x64.h", - "src/third_party/valgrind/valgrind.h", "src/wasm/baseline/x64/liftoff-assembler-x64-inl.h", + "third_party/valgrind/valgrind.h", ] if (is_win) { @@ -4781,7 +4795,7 @@ v8_header_set("v8_internal_headers") { "src/baseline/ppc/baseline-compiler-ppc-inl.h", ] } - } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { + } else if (v8_current_cpu == "s390x") { sources += [ ### gcmole(s390) ### "src/codegen/s390/assembler-s390-inl.h", @@ -4911,7 +4925,10 @@ v8_header_set("v8_internal_headers") { } frameworks = [] - if (is_ios) { + + # BrowserEngineKit only exists on iOS itself, not on tvOS and other + # iOS-derived platforms, so we need to check `target_platform` here. + if (is_ios && target_platform == "iphoneos") { frameworks += [ "BrowserEngineKit.framework" ] } @@ -4953,7 +4970,6 @@ v8_compiler_sources = [ "src/compiler/backend/register-allocator.cc", "src/compiler/backend/spill-placer.cc", "src/compiler/basic-block-instrumentor.cc", - "src/compiler/branch-condition-duplicator.cc", "src/compiler/branch-elimination.cc", "src/compiler/bytecode-analysis.cc", "src/compiler/bytecode-graph-builder.cc", @@ -4966,12 +4982,10 @@ v8_compiler_sources = [ "src/compiler/common-operator.cc", "src/compiler/compilation-dependencies.cc", "src/compiler/compiler-source-position-table.cc", - "src/compiler/const-tracking-let-helpers.cc", "src/compiler/constant-folding-reducer.cc", "src/compiler/control-equivalence.cc", "src/compiler/csa-load-elimination.cc", "src/compiler/dead-code-elimination.cc", - "src/compiler/decompression-optimizer.cc", "src/compiler/escape-analysis-reducer.cc", "src/compiler/escape-analysis.cc", "src/compiler/fast-api-calls.cc", @@ -4981,8 +4995,6 @@ v8_compiler_sources = [ "src/compiler/graph-assembler.cc", "src/compiler/graph-reducer.cc", "src/compiler/graph-trimmer.cc", - "src/compiler/graph-visualizer.cc", - "src/compiler/graph.cc", "src/compiler/heap-refs.cc", "src/compiler/js-call-reducer.cc", "src/compiler/js-context-specialization.cc", @@ -5040,16 +5052,72 @@ v8_compiler_sources = [ "src/compiler/state-values-utils.cc", "src/compiler/string-builder-optimizer.cc", "src/compiler/turbofan-enabled.cc", + "src/compiler/turbofan-graph-visualizer.cc", + "src/compiler/turbofan-graph.cc", + "src/compiler/turbofan-typer.cc", + "src/compiler/turbofan-types.cc", + "src/compiler/turboshaft/analyzer-iterator.cc", + "src/compiler/turboshaft/assembler.cc", + "src/compiler/turboshaft/block-instrumentation-phase.cc", + "src/compiler/turboshaft/block-instrumentation-reducer.cc", + "src/compiler/turboshaft/build-graph-phase.cc", + "src/compiler/turboshaft/code-elimination-and-simplification-phase.cc", + "src/compiler/turboshaft/copying-phase.cc", + "src/compiler/turboshaft/csa-optimize-phase.cc", + "src/compiler/turboshaft/debug-feature-lowering-phase.cc", + "src/compiler/turboshaft/decompression-optimization-phase.cc", + "src/compiler/turboshaft/decompression-optimization.cc", + "src/compiler/turboshaft/graph-builder.cc", + "src/compiler/turboshaft/graph-visualizer.cc", + "src/compiler/turboshaft/graph.cc", + "src/compiler/turboshaft/instruction-selection-phase.cc", + "src/compiler/turboshaft/late-escape-analysis-reducer.cc", + "src/compiler/turboshaft/late-load-elimination-reducer.cc", + "src/compiler/turboshaft/loop-finder.cc", + "src/compiler/turboshaft/loop-peeling-phase.cc", + "src/compiler/turboshaft/loop-unrolling-phase.cc", + "src/compiler/turboshaft/loop-unrolling-reducer.cc", + "src/compiler/turboshaft/machine-lowering-phase.cc", + "src/compiler/turboshaft/memory-optimization-reducer.cc", + "src/compiler/turboshaft/operations.cc", + "src/compiler/turboshaft/optimize-phase.cc", + "src/compiler/turboshaft/phase.cc", + "src/compiler/turboshaft/pipelines.cc", + "src/compiler/turboshaft/pretenuring-propagation-reducer.cc", + "src/compiler/turboshaft/representations.cc", + "src/compiler/turboshaft/sidetable.cc", + "src/compiler/turboshaft/simplify-tf-loops.cc", + "src/compiler/turboshaft/store-store-elimination-phase.cc", + "src/compiler/turboshaft/string-escape-analysis-reducer.cc", + "src/compiler/turboshaft/turbolev-graph-builder.cc", + "src/compiler/turboshaft/type-assertions-phase.cc", + "src/compiler/turboshaft/type-parser.cc", + "src/compiler/turboshaft/typed-optimizations-phase.cc", + "src/compiler/turboshaft/typer.cc", + "src/compiler/turboshaft/types.cc", + "src/compiler/turboshaft/use-map.cc", + "src/compiler/turboshaft/utils.cc", "src/compiler/type-cache.cc", "src/compiler/type-narrowing-reducer.cc", "src/compiler/typed-optimization.cc", - "src/compiler/typer.cc", - "src/compiler/types.cc", "src/compiler/value-numbering-reducer.cc", "src/compiler/verifier.cc", "src/compiler/zone-stats.cc", ] +if (!v8_enable_maglev) { + # When Maglev is not enabled, Turboshaft still needs Maglev's graph builder. + v8_compiler_sources += [ + "src/maglev/maglev-compilation-info.cc", + "src/maglev/maglev-compilation-unit.cc", + "src/maglev/maglev-graph-builder.cc", + "src/maglev/maglev-graph-printer.cc", + "src/maglev/maglev-interpreter-frame-state.cc", + "src/maglev/maglev-ir.cc", + "src/maglev/maglev-phi-representation-selector.cc", + ] +} + if (v8_current_cpu == "x86") { v8_compiler_sources += [ ### gcmole(ia32) ### @@ -5103,7 +5171,7 @@ if (v8_current_cpu == "x86") { "src/compiler/backend/ppc/instruction-selector-ppc.cc", "src/compiler/backend/ppc/unwinding-info-writer-ppc.cc", ] -} else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { +} else if (v8_current_cpu == "s390x") { v8_compiler_sources += [ ### gcmole(s390) ### "src/compiler/backend/s390/code-generator-s390.cc", @@ -5131,11 +5199,14 @@ if (v8_enable_webassembly) { v8_compiler_sources += [ "src/compiler/int64-lowering.cc", "src/compiler/turboshaft/int64-lowering-phase.cc", + "src/compiler/turboshaft/wasm-debug-memory-lowering-phase.cc", "src/compiler/turboshaft/wasm-gc-optimize-phase.cc", "src/compiler/turboshaft/wasm-gc-typed-optimization-reducer.cc", "src/compiler/turboshaft/wasm-in-js-inlining-phase.cc", "src/compiler/turboshaft/wasm-lowering-phase.cc", "src/compiler/turboshaft/wasm-optimize-phase.cc", + "src/compiler/turboshaft/wasm-shuffle-reducer.cc", + "src/compiler/turboshaft/wasm-simd-phase.cc", "src/compiler/turboshaft/wasm-turboshaft-compiler.cc", "src/compiler/wasm-address-reassociation.cc", "src/compiler/wasm-call-descriptors.cc", @@ -5146,10 +5217,7 @@ if (v8_enable_webassembly) { "src/compiler/wasm-gc-operator-reducer.cc", "src/compiler/wasm-graph-assembler.cc", "src/compiler/wasm-inlining-into-js.cc", - "src/compiler/wasm-inlining.cc", - "src/compiler/wasm-js-lowering.cc", "src/compiler/wasm-load-elimination.cc", - "src/compiler/wasm-loop-peeling.cc", "src/compiler/wasm-typer.cc", ] } @@ -5229,86 +5297,6 @@ v8_source_set("v8_compiler") { configs = [ ":internal_config" ] } -# The src/compiler files with default optimization behavior. -v8_source_set("v8_turboshaft") { - visibility = [ ":*" ] # Only targets in this file can depend on this. - - sources = [ - "src/compiler/turboshaft/analyzer-iterator.cc", - "src/compiler/turboshaft/assembler.cc", - "src/compiler/turboshaft/block-instrumentation-phase.cc", - "src/compiler/turboshaft/block-instrumentation-reducer.cc", - "src/compiler/turboshaft/build-graph-phase.cc", - "src/compiler/turboshaft/code-elimination-and-simplification-phase.cc", - "src/compiler/turboshaft/copying-phase.cc", - "src/compiler/turboshaft/csa-optimize-phase.cc", - "src/compiler/turboshaft/debug-feature-lowering-phase.cc", - "src/compiler/turboshaft/decompression-optimization-phase.cc", - "src/compiler/turboshaft/decompression-optimization.cc", - "src/compiler/turboshaft/graph-builder.cc", - "src/compiler/turboshaft/graph-visualizer.cc", - "src/compiler/turboshaft/graph.cc", - "src/compiler/turboshaft/instruction-selection-phase.cc", - "src/compiler/turboshaft/late-escape-analysis-reducer.cc", - "src/compiler/turboshaft/late-load-elimination-reducer.cc", - "src/compiler/turboshaft/loop-finder.cc", - "src/compiler/turboshaft/loop-peeling-phase.cc", - "src/compiler/turboshaft/loop-unrolling-phase.cc", - "src/compiler/turboshaft/loop-unrolling-reducer.cc", - "src/compiler/turboshaft/machine-lowering-phase.cc", - "src/compiler/turboshaft/maglev-graph-building-phase.cc", - "src/compiler/turboshaft/memory-optimization-reducer.cc", - "src/compiler/turboshaft/operations.cc", - "src/compiler/turboshaft/optimize-phase.cc", - "src/compiler/turboshaft/phase.cc", - "src/compiler/turboshaft/pipelines.cc", - "src/compiler/turboshaft/pretenuring-propagation-reducer.cc", - "src/compiler/turboshaft/recreate-schedule-phase.cc", - "src/compiler/turboshaft/recreate-schedule.cc", - "src/compiler/turboshaft/representations.cc", - "src/compiler/turboshaft/sidetable.cc", - "src/compiler/turboshaft/simplified-lowering-phase.cc", - "src/compiler/turboshaft/simplify-tf-loops.cc", - "src/compiler/turboshaft/store-store-elimination-phase.cc", - "src/compiler/turboshaft/type-assertions-phase.cc", - "src/compiler/turboshaft/type-parser.cc", - "src/compiler/turboshaft/typed-optimizations-phase.cc", - "src/compiler/turboshaft/typer.cc", - "src/compiler/turboshaft/types.cc", - "src/compiler/turboshaft/use-map.cc", - "src/compiler/turboshaft/utils.cc", - ] - - if (!v8_enable_maglev) { - # When Maglev is not enabled, Turboshaft still needs Maglev's graph builder. - sources += [ - "src/maglev/maglev-compilation-info.cc", - "src/maglev/maglev-compilation-unit.cc", - "src/maglev/maglev-graph-builder.cc", - "src/maglev/maglev-graph-printer.cc", - "src/maglev/maglev-interpreter-frame-state.cc", - "src/maglev/maglev-ir.cc", - "src/maglev/maglev-phi-representation-selector.cc", - ] - } - - public_deps = [ - ":generate_bytecode_builtins_list", - ":run_torque", - ":v8_internal_headers", - ":v8_maybe_icu", - ":v8_tracing", - ] - - deps = [ - ":v8_base_without_compiler", - ":v8_libbase", - ":v8_shared_internal_headers", - ] - - configs = [ ":internal_config" ] -} - group("v8_compiler_for_mksnapshot") { if ((is_debug && !v8_optimized_debug && v8_enable_fast_mksnapshot) || !v8_enable_turbofan) { @@ -5515,7 +5503,9 @@ v8_source_set("v8_base_without_compiler") { "src/heap/heap-allocator.cc", "src/heap/heap-controller.cc", "src/heap/heap-layout-tracer.cc", + "src/heap/heap-layout.cc", "src/heap/heap-verifier.cc", + "src/heap/heap-visitor.cc", "src/heap/heap-write-barrier.cc", "src/heap/heap.cc", "src/heap/incremental-marking-job.cc", @@ -5533,7 +5523,6 @@ v8_source_set("v8_base_without_compiler") { "src/heap/marking.cc", "src/heap/memory-allocator.cc", "src/heap/memory-balancer.cc", - "src/heap/memory-chunk-layout.cc", "src/heap/memory-chunk-metadata.cc", "src/heap/memory-chunk.cc", "src/heap/memory-measurement.cc", @@ -5543,8 +5532,8 @@ v8_source_set("v8_base_without_compiler") { "src/heap/mutable-page-metadata.cc", "src/heap/new-spaces.cc", "src/heap/object-stats.cc", - "src/heap/objects-visiting.cc", "src/heap/page-metadata.cc", + "src/heap/page-pool.cc", "src/heap/paged-spaces.cc", "src/heap/pretenuring-handler.cc", "src/heap/read-only-heap.cc", @@ -5558,6 +5547,7 @@ v8_source_set("v8_base_without_compiler") { "src/heap/sweeper.cc", "src/heap/traced-handles-marking-visitor.cc", "src/heap/trusted-range.cc", + "src/heap/visit-object.cc", "src/heap/weak-object-worklists.cc", "src/heap/zapping.cc", "src/ic/call-optimization.cc", @@ -5600,6 +5590,7 @@ v8_source_set("v8_base_without_compiler") { "src/logging/runtime-call-stats.cc", "src/logging/tracing-flags.cc", "src/numbers/conversions.cc", + "src/numbers/ieee754.cc", "src/numbers/math-random.cc", "src/objects/abstract-code.cc", "src/objects/backing-store.cc", @@ -5643,6 +5634,7 @@ v8_source_set("v8_base_without_compiler") { "src/objects/js-segments.cc", "src/objects/js-struct.cc", "src/objects/js-temporal-objects.cc", + "src/objects/js-weak-refs.cc", "src/objects/keys.cc", "src/objects/literal-objects.cc", "src/objects/lookup-cache.cc", @@ -5678,7 +5670,7 @@ v8_source_set("v8_base_without_compiler") { "src/objects/visitors.cc", "src/objects/waiter-queue-node.cc", "src/parsing/func-name-inferrer.cc", - "src/parsing/import-assertions.cc", + "src/parsing/import-attributes.cc", "src/parsing/literal-buffer.cc", "src/parsing/parse-info.cc", "src/parsing/parser.cc", @@ -5719,6 +5711,7 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/regexp-macro-assembler-tracer.cc", "src/regexp/regexp-macro-assembler.cc", "src/regexp/regexp-parser.cc", + "src/regexp/regexp-result-vector.cc", "src/regexp/regexp-stack.cc", "src/regexp/regexp-utils.cc", "src/regexp/regexp.cc", @@ -5758,12 +5751,12 @@ v8_source_set("v8_base_without_compiler") { "src/runtime/runtime.cc", "src/sandbox/code-pointer-table.cc", "src/sandbox/cppheap-pointer-table.cc", - "src/sandbox/external-buffer-table.cc", "src/sandbox/external-pointer-table.cc", "src/sandbox/hardware-support.cc", "src/sandbox/js-dispatch-table.cc", "src/sandbox/sandbox.cc", "src/sandbox/testing.cc", + "src/sandbox/trusted-pointer-scope.cc", "src/sandbox/trusted-pointer-table.cc", "src/snapshot/code-serializer.cc", "src/snapshot/context-deserializer.cc", @@ -5788,6 +5781,7 @@ v8_source_set("v8_base_without_compiler") { "src/strings/char-predicates.cc", "src/strings/string-builder.cc", "src/strings/string-case.cc", + "src/strings/string-hasher.cc", "src/strings/string-stream.cc", "src/strings/unicode-decoder.cc", "src/strings/unicode.cc", @@ -5796,7 +5790,6 @@ v8_source_set("v8_base_without_compiler") { "src/tasks/operations-barrier.cc", "src/tasks/task-utils.cc", "src/temporal/temporal-parser.cc", - "src/third_party/siphash/halfsiphash.cc", "src/tracing/trace-event.cc", "src/tracing/traced-value.cc", "src/tracing/tracing-category-observer.cc", @@ -5815,6 +5808,7 @@ v8_source_set("v8_base_without_compiler") { "src/zone/type-stats.cc", "src/zone/zone-segment.cc", "src/zone/zone.cc", + "third_party/siphash/halfsiphash.cc", ] if (v8_enable_snapshot_compression) { @@ -5855,6 +5849,11 @@ v8_source_set("v8_base_without_compiler") { "src/maglev/arm64/maglev-assembler-arm64.cc", "src/maglev/arm64/maglev-ir-arm64.cc", ] + } else if (v8_current_cpu == "riscv64") { + sources += [ + "src/maglev/riscv/maglev-assembler-riscv.cc", + "src/maglev/riscv/maglev-ir-riscv.cc", + ] } else if (v8_current_cpu == "x64") { sources += [ "src/maglev/x64/maglev-assembler-x64.cc", @@ -5899,7 +5898,6 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/constant-expression.cc", "src/wasm/function-body-decoder.cc", "src/wasm/function-compiler.cc", - "src/wasm/graph-builder-interface.cc", "src/wasm/jump-table-assembler.cc", "src/wasm/local-decl-encoder.cc", "src/wasm/module-compiler.cc", @@ -5934,7 +5932,7 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/well-known-imports.cc", "src/wasm/wrappers.cc", ] - if (!is_official_build) { + if (v8_wasm_random_fuzzers) { sources += [ ### gcmole(all) ### "src/wasm/fuzzing/random-module-generation.cc", @@ -5951,10 +5949,6 @@ v8_source_set("v8_base_without_compiler") { } } - if (v8_enable_conservative_stack_scanning) { - sources += [ "src/heap/conservative-stack-visitor.cc" ] - } - if (v8_enable_wasm_gdb_remote_debugging) { sources += [ "src/debug/wasm/gdb-server/gdb-remote-util.cc", @@ -6058,15 +6052,14 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/arm64/regexp-macro-assembler-arm64.cc", ] if (v8_enable_webassembly) { - # Trap handling is enabled on arm64 Mac and Linux and in simulators on - # x64 on Linux, Mac, and Windows. + # Trap handling is enabled on arm64 and x64, on Linux, Mac and Windows. if ((current_cpu == "arm64" && (is_linux || is_chromeos || is_apple)) || (current_cpu == "x64" && (is_linux || is_chromeos || is_mac))) { sources += [ "src/trap-handler/handler-inside-posix.cc", "src/trap-handler/handler-outside-posix.cc", ] - } else if (current_cpu == "x64" && is_win) { + } else if ((current_cpu == "arm64" || current_cpu == "x64") && is_win) { sources += [ "src/trap-handler/handler-inside-win.cc", "src/trap-handler/handler-outside-win.cc", @@ -6139,7 +6132,7 @@ v8_source_set("v8_base_without_compiler") { "src/execution/ppc/simulator-ppc.cc", "src/regexp/ppc/regexp-macro-assembler-ppc.cc", ] - } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { + } else if (v8_current_cpu == "s390x") { sources += [ ### gcmole(s390) ### "src/codegen/s390/assembler-s390.cc", @@ -6226,6 +6219,16 @@ v8_source_set("v8_base_without_compiler") { if (is_win) { if (v8_enable_etw_stack_walking) { sources += [ + "src/diagnostics/etw-debug-win.cc", + "src/diagnostics/etw-debug-win.h", + "src/diagnostics/etw-isolate-capture-state-monitor-win.cc", + "src/diagnostics/etw-isolate-capture-state-monitor-win.h", + "src/diagnostics/etw-isolate-load-script-data-win.cc", + "src/diagnostics/etw-isolate-load-script-data-win.h", + "src/diagnostics/etw-isolate-operations-win.cc", + "src/diagnostics/etw-isolate-operations-win.h", + "src/diagnostics/etw-jit-metadata-win.cc", + "src/diagnostics/etw-jit-metadata-win.h", "src/diagnostics/etw-jit-win.cc", "src/diagnostics/etw-jit-win.h", ] @@ -6248,6 +6251,7 @@ v8_source_set("v8_base_without_compiler") { ":v8_version", "src/inspector:inspector", "//third_party/fast_float", + "//third_party/highway:libhwy", ] public_deps = [ @@ -6258,6 +6262,7 @@ v8_source_set("v8_base_without_compiler") { ":v8_headers", ":v8_internal_headers", ":v8_maybe_icu", + "//third_party/simdutf:simdutf", ] if (v8_fuzzilli) { @@ -6315,8 +6320,7 @@ v8_source_set("v8_base_without_compiler") { # to implement atomic memory access if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el" || v8_current_cpu == "ppc64" || - (current_os != "zos" && - (v8_current_cpu == "s390" || v8_current_cpu == "s390x")) || + (current_os != "zos" && v8_current_cpu == "s390x") || v8_current_cpu == "riscv64" || v8_current_cpu == "riscv32") { if (!is_clang) { libs += [ "atomic" ] @@ -6328,7 +6332,7 @@ v8_source_set("v8_base_without_compiler") { "src/extensions/vtunedomain-support-extension.cc", "src/extensions/vtunedomain-support-extension.h", ] - deps += [ "src/third_party/vtune:v8_vtune_trace_mark" ] + deps += [ "third_party/vtune:v8_vtune_trace_mark" ] } } @@ -6337,10 +6341,6 @@ group("v8_base") { ":v8_base_without_compiler", ":v8_compiler", ] - - if (v8_enable_turbofan) { - public_deps += [ ":v8_turboshaft" ] - } } v8_source_set("torque_base") { @@ -6496,8 +6496,10 @@ v8_component("v8_libbase") { "src/base/file-utils.cc", "src/base/file-utils.h", "src/base/flags.h", + "src/base/fpu.cc", + "src/base/fpu.h", "src/base/free_deleter.h", - "src/base/functional.h", + "src/base/hashing.h", "src/base/hashmap-entry.h", "src/base/hashmap.h", "src/base/ieee754.cc", @@ -6563,14 +6565,16 @@ v8_component("v8_libbase") { "src/base/sanitizer/lsan.h", "src/base/sanitizer/msan.h", "src/base/sanitizer/tsan.h", + "src/base/sanitizer/ubsan.h", "src/base/small-map.h", "src/base/small-vector.h", "src/base/string-format.h", "src/base/strings.cc", "src/base/strings.h", + "src/base/strong-alias.h", "src/base/sys-info.cc", "src/base/sys-info.h", - "src/base/template-meta-programming/algorithm.h", + "src/base/template-meta-programming/common.h", "src/base/template-meta-programming/functional.h", "src/base/template-meta-programming/list.h", "src/base/template-meta-programming/string-literal.h", @@ -6595,6 +6599,8 @@ v8_component("v8_libbase") { deps = [ ":v8_config_headers" ] + public_deps = [ ":v8_abseil" ] + if (current_os == "zos") { public_configs += [ ":zoslib_config" ] deps += [ ":zoslib" ] @@ -6922,41 +6928,31 @@ v8_source_set("v8_heap_base") { "src/heap/base/worklist.cc", ] - if (is_clang || !is_win) { - if (current_cpu == "x64") { - if (is_win) { - # Prefer a masm version with unwind directives. - sources += [ "src/heap/base/asm/x64/push_registers_masm.asm" ] - } else { - sources += [ "src/heap/base/asm/x64/push_registers_asm.cc" ] - } - } else if (current_cpu == "x86") { - sources += [ "src/heap/base/asm/ia32/push_registers_asm.cc" ] - } else if (current_cpu == "arm") { - sources += [ "src/heap/base/asm/arm/push_registers_asm.cc" ] - } else if (current_cpu == "arm64") { - sources += [ "src/heap/base/asm/arm64/push_registers_asm.cc" ] - } else if (current_cpu == "ppc64") { - sources += [ "src/heap/base/asm/ppc/push_registers_asm.cc" ] - } else if (current_os == "zos") { - sources += [ "src/heap/base/asm/zos/push_registers_asm.cc" ] - } else if (current_cpu == "s390x") { - sources += [ "src/heap/base/asm/s390/push_registers_asm.cc" ] - } else if (current_cpu == "mips64el") { - sources += [ "src/heap/base/asm/mips64/push_registers_asm.cc" ] - } else if (current_cpu == "loong64") { - sources += [ "src/heap/base/asm/loong64/push_registers_asm.cc" ] - } else if (current_cpu == "riscv64" || current_cpu == "riscv32") { - sources += [ "src/heap/base/asm/riscv/push_registers_asm.cc" ] - } - } else if (is_win) { - if (current_cpu == "x64") { + if (current_cpu == "x64") { + if (is_win) { + # Prefer a masm version with unwind directives. sources += [ "src/heap/base/asm/x64/push_registers_masm.asm" ] - } else if (current_cpu == "x86") { - sources += [ "src/heap/base/asm/ia32/push_registers_masm.asm" ] - } else if (current_cpu == "arm64") { - sources += [ "src/heap/base/asm/arm64/push_registers_masm.S" ] + } else { + sources += [ "src/heap/base/asm/x64/push_registers_asm.cc" ] } + } else if (current_cpu == "x86") { + sources += [ "src/heap/base/asm/ia32/push_registers_asm.cc" ] + } else if (current_cpu == "arm") { + sources += [ "src/heap/base/asm/arm/push_registers_asm.cc" ] + } else if (current_cpu == "arm64") { + sources += [ "src/heap/base/asm/arm64/push_registers_asm.cc" ] + } else if (current_cpu == "ppc64") { + sources += [ "src/heap/base/asm/ppc/push_registers_asm.cc" ] + } else if (current_os == "zos") { + sources += [ "src/heap/base/asm/zos/push_registers_asm.cc" ] + } else if (current_cpu == "s390x") { + sources += [ "src/heap/base/asm/s390/push_registers_asm.cc" ] + } else if (current_cpu == "mips64el") { + sources += [ "src/heap/base/asm/mips64/push_registers_asm.cc" ] + } else if (current_cpu == "loong64") { + sources += [ "src/heap/base/asm/loong64/push_registers_asm.cc" ] + } else if (current_cpu == "riscv64" || current_cpu == "riscv32") { + sources += [ "src/heap/base/asm/riscv/push_registers_asm.cc" ] } configs = [ ":internal_config" ] @@ -6984,7 +6980,6 @@ v8_header_set("cppgc_headers") { "include/cppgc/cross-thread-persistent.h", "include/cppgc/custom-space.h", "include/cppgc/default-platform.h", - "include/cppgc/ephemeron-pair.h", "include/cppgc/explicit-management.h", "include/cppgc/garbage-collected.h", "include/cppgc/heap-consistency.h", @@ -6996,6 +6991,7 @@ v8_header_set("cppgc_headers") { "include/cppgc/internal/atomic-entry-flag.h", "include/cppgc/internal/base-page-handle.h", "include/cppgc/internal/compiler-specific.h", + "include/cppgc/internal/conditional-stack-allocated.h", "include/cppgc/internal/finalizer-trait.h", "include/cppgc/internal/gc-info.h", "include/cppgc/internal/member-storage.h", @@ -7239,7 +7235,7 @@ if (v8_enable_webassembly) { "//build/win:default_exe_manifest", ] if (v8_enable_vtunejit) { - deps += [ "src/third_party/vtune:v8_vtune" ] + deps += [ "third_party/vtune:v8_vtune" ] } # TODO: v8dll-main.cc equivalent for shared library builds @@ -7309,10 +7305,6 @@ if (current_toolchain == v8_snapshot_toolchain) { "src/snapshot/static-roots-gen.h", ] - if (v8_control_flow_integrity) { - sources += [ "src/deoptimizer/deoptimizer-cfi-empty.cc" ] - } - configs = [ ":internal_config", ":disable_icf", @@ -7327,7 +7319,6 @@ if (current_toolchain == v8_snapshot_toolchain) { ":v8_maybe_icu", ":v8_shared_internal_headers", ":v8_tracing", - ":v8_turboshaft", "//build/win:default_exe_manifest", ] } @@ -7501,7 +7492,7 @@ group("v8_clusterfuzz") { ":d8(//build/toolchain/linux:clang_x64_v8_arm64)", ":d8(//build/toolchain/linux:clang_x86)", ":d8(//build/toolchain/linux:clang_x86_v8_arm)", - ":d8(tools/clusterfuzz/foozzie/toolchain:clang_x64_pointer_compression)", + ":d8(tools/clusterfuzz/foozzie/toolchain:clang_x64_fuzzer_experiments)", ] } } @@ -7561,7 +7552,7 @@ group("v8_fuzzers") { ] if (v8_enable_webassembly) { - if (!is_official_build) { + if (v8_wasm_random_fuzzers) { data_deps += [ ":v8_simple_wasm_compile_all_fuzzer", ":v8_simple_wasm_compile_fuzzer", @@ -7575,9 +7566,21 @@ group("v8_fuzzers") { ":v8_simple_multi_return_fuzzer", ":v8_simple_wasm_async_fuzzer", ":v8_simple_wasm_code_fuzzer", - ":v8_simple_wasm_fuzzer", + ":v8_simple_wasm_module_fuzzer", ":v8_simple_wasm_streaming_fuzzer", ] + if (v8_enable_drumbrake) { + data_deps += [ + ":v8_simple_wasm_fast_interpreter_fuzzer", + ":v8_simple_wasm_interpreter_all_fuzzer", + ":v8_simple_wasm_interpreter_base_fuzzer", + ":v8_simple_wasm_interpreter_code_fuzzer", + ":v8_simple_wasm_interpreter_diff_fuzzer", + ":v8_simple_wasm_interpreter_init_expr_fuzzer", + ":v8_simple_wasm_interpreter_simd_fuzzer", + ":v8_simple_wasmgc_interpreter_fuzzer", + ] + } } } @@ -7733,6 +7736,7 @@ v8_executable("d8") { ":v8_libplatform", ":v8_tracing", "//build/win:default_exe_manifest", + "//third_party/simdutf:simdutf", ] if (is_posix || is_fuchsia) { @@ -7748,11 +7752,16 @@ v8_executable("d8") { defines = [] if (v8_enable_vtunejit) { - deps += [ "src/third_party/vtune:v8_vtune" ] + deps += [ "third_party/vtune:v8_vtune" ] } if (current_os == "zos" && is_component_build) { deps += [ ":zoslib" ] } + + if (v8_enable_partition_alloc) { + defines += [ "V8_ENABLE_PARTITION_ALLOC" ] + deps += [ "//third_party/partition_alloc" ] + } } v8_executable("v8_hello_world") { @@ -7896,6 +7905,73 @@ if (v8_enable_webassembly) { sources = [ "test/fuzzer/multi-return.cc" ] } + if (v8_enable_drumbrake) { + v8_source_set("lib_wasm_interpreter_fuzzer_common") { + sources = [ + "test/fuzzer/wasm/interpreter/interpreter-fuzzer-common.cc", + "test/fuzzer/wasm/interpreter/interpreter-fuzzer-common.h", + ] + + deps = [ + ":v8_internal_headers", + ":wasm_fuzzer_common", + ] + + configs = [ + ":external_config", + ":internal_config_base", + ] + } + + v8_fuzzer("wasm_fast_interpreter_fuzzer") { + sources = [ "test/fuzzer/wasm/interpreter/fast-interpreter.cc" ] + + deps = [ ":lib_wasm_interpreter_fuzzer_common" ] + } + + v8_fuzzer("wasm_interpreter_diff_fuzzer") { + sources = [ "test/fuzzer/wasm/interpreter/interpreter-diff.cc" ] + + deps = [ ":lib_wasm_interpreter_fuzzer_common" ] + } + + v8_fuzzer("wasmgc_interpreter_fuzzer") { + sources = [ "test/fuzzer/wasm/interpreter/interpreter-wasmgc.cc" ] + + deps = [ ":lib_wasm_interpreter_fuzzer_common" ] + } + + v8_fuzzer("wasm_interpreter_init_expr_fuzzer") { + sources = [ "test/fuzzer/wasm/interpreter/interpreter-init-expr.cc" ] + + deps = [ ":lib_wasm_interpreter_fuzzer_common" ] + } + + v8_fuzzer("wasm_interpreter_simd_fuzzer") { + sources = [ "test/fuzzer/wasm/interpreter/interpreter-simd.cc" ] + + deps = [ ":lib_wasm_interpreter_fuzzer_common" ] + } + + v8_fuzzer("wasm_interpreter_all_fuzzer") { + sources = [ "test/fuzzer/wasm/interpreter/interpreter-all.cc" ] + + deps = [ ":lib_wasm_interpreter_fuzzer_common" ] + } + + v8_fuzzer("wasm_interpreter_base_fuzzer") { + sources = [ "test/fuzzer/wasm/interpreter/interpreter-base.cc" ] + + deps = [ ":lib_wasm_interpreter_fuzzer_common" ] + } + + v8_fuzzer("wasm_interpreter_code_fuzzer") { + sources = [ "test/fuzzer/wasm/interpreter/interpreter-code.cc" ] + + deps = [ ":lib_wasm_interpreter_fuzzer_common" ] + } + } + v8_source_set("wasm_test_common") { sources = [ "test/common/flag-utils.h", @@ -7926,8 +8002,8 @@ if (v8_enable_webassembly) { v8_source_set("wasm_fuzzer_common") { sources = [ - "test/fuzzer/wasm-fuzzer-common.cc", - "test/fuzzer/wasm-fuzzer-common.h", + "test/fuzzer/wasm/fuzzer-common.cc", + "test/fuzzer/wasm/fuzzer-common.h", "tools/wasm/mjsunit-module-disassembler-impl.h", ] @@ -7961,66 +8037,62 @@ if (v8_enable_webassembly) { } } - v8_wasm_fuzzer("wasm_fuzzer") { - sources = [ "test/fuzzer/wasm.cc" ] + v8_wasm_fuzzer("wasm_module_fuzzer") { + sources = [ "test/fuzzer/wasm/module.cc" ] } v8_wasm_fuzzer("wasm_async_fuzzer") { - sources = [ "test/fuzzer/wasm-async.cc" ] + sources = [ "test/fuzzer/wasm/async.cc" ] } v8_wasm_fuzzer("wasm_code_fuzzer") { sources = [ "test/common/wasm/test-signatures.h", - "test/fuzzer/wasm-code.cc", + "test/fuzzer/wasm/code.cc", ] } v8_wasm_fuzzer("wasm_streaming_fuzzer") { - sources = [ "test/fuzzer/wasm-streaming.cc" ] + sources = [ "test/fuzzer/wasm/streaming.cc" ] } - # Some fuzzers depend on fuzzing functionality linked into the v8 library. - # For binary size reasons this functionality is not available for official - # builds, therefore these fuzzers do not function there and should be skipped - # instead. - if (!is_official_build) { + if (v8_wasm_random_fuzzers) { v8_wasm_fuzzer("wasm_compile_all_fuzzer") { sources = [ "test/common/wasm/test-signatures.h", - "test/fuzzer/wasm-compile-all.cc", + "test/fuzzer/wasm/compile-all.cc", ] } v8_wasm_fuzzer("wasm_compile_fuzzer") { sources = [ "test/common/wasm/test-signatures.h", - "test/fuzzer/wasm-compile.cc", + "test/fuzzer/wasm/compile.cc", ] } v8_wasm_fuzzer("wasm_compile_simd_fuzzer") { sources = [ "test/common/wasm/test-signatures.h", - "test/fuzzer/wasm-compile-simd.cc", + "test/fuzzer/wasm/compile-simd.cc", ] } v8_wasm_fuzzer("wasm_compile_wasmgc_fuzzer") { sources = [ "test/common/wasm/test-signatures.h", - "test/fuzzer/wasm-compile-wasmgc.cc", + "test/fuzzer/wasm/compile-wasmgc.cc", ] } v8_wasm_fuzzer("wasm_init_expr_fuzzer") { - sources = [ "test/fuzzer/wasm-init-expr.cc" ] + sources = [ "test/fuzzer/wasm/init-expr.cc" ] } v8_wasm_fuzzer("wasm_deopt_fuzzer") { - sources = [ "test/fuzzer/wasm-deopt.cc" ] + sources = [ "test/fuzzer/wasm/deopt.cc" ] } - } # !is_official_build + } # v8_wasm_random_fuzzers } v8_fuzzer("inspector_fuzzer") { @@ -8064,3 +8136,17 @@ if (!build_with_chromium && v8_use_perfetto) { ] } } # if (!build_with_chromium && v8_use_perfetto) + +# GN evaluates each .gn file once per toolchain, so restricting to default +# toolchain will ensure write_file() is called only once. +if (current_toolchain == default_toolchain) { + import("//build/gn_logs.gni") + + # Write debug logs to gn_logs.txt. + _lines = [ + "Generated during 'gn gen' by //BUILD.gn.", + "", + ] + build_gn_logs + + write_file("$root_build_dir/gn_logs.txt", _lines) +} diff --git a/deps/v8/COMMON_OWNERS b/deps/v8/COMMON_OWNERS index acd008e3360eff..741ba62748faa6 100644 --- a/deps/v8/COMMON_OWNERS +++ b/deps/v8/COMMON_OWNERS @@ -5,7 +5,6 @@ bikineev@chromium.org bmeurer@chromium.org cbruni@chromium.org clemensb@chromium.org -danno@chromium.org dinfuehr@chromium.org dlehmann@chromium.org dmercadier@chromium.org diff --git a/deps/v8/DEPS b/deps/v8/DEPS index f4a74a3515ceae..36fb1fc0f2624d 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -27,7 +27,6 @@ vars = { 'checkout_fuchsia_boot_images': "terminal.x64", 'checkout_fuchsia_product_bundles': '"{checkout_fuchsia_boot_images}" != ""', - 'checkout_centipede_deps': False, 'checkout_instrumented_libraries': False, 'checkout_ittapi': False, @@ -46,7 +45,6 @@ vars = { 'checkout_v8_builtins_pgo_profiles': False, 'android_url': 'https://android.googlesource.com', - 'boringssl_url': 'https://boringssl.googlesource.com', 'chromium_url': 'https://chromium.googlesource.com', 'download_gcmole': False, 'download_jsfunfuzz': False, @@ -60,7 +58,7 @@ vars = { 'checkout_fuchsia_no_hooks': False, # reclient CIPD package version - 'reclient_version': 're_client_version:0.163.0.d27158ab-gomaip', + 'reclient_version': 're_client_version:0.177.1.e58c0145-gomaip', # Fetch configuration files required for the 'use_remoteexec' gn arg 'download_remoteexec_cfg': False, @@ -76,27 +74,29 @@ vars = { 'build_with_chromium': False, # GN CIPD package version. - 'gn_version': 'git_revision:20806f79c6b4ba295274e3a589d85db41a02fdaa', + 'gn_version': 'git_revision:6e8e0d6d4a151ab2ed9b4a35366e630c55888444', # ninja CIPD package version # https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja - 'ninja_version': 'version:2@1.12.1.chromium.4', + 'ninja_version': 'version:3@1.12.1.chromium.4', # siso CIPD package version - 'siso_version': 'git_revision:eaee19cf51478b64614e2e8daad77378238a3c6c', - - # luci-go CIPD package version. - 'luci_go': 'git_revision:1aca70b6bf116c1bd8fbf0526c9a89e9be308718', + 'siso_version': 'git_revision:68bdc49e4e23aef066fc652cbdb1b4973aab1a31', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Fuchsia sdk # and whatever else without interference from each other. - 'fuchsia_version': 'version:24.20240913.4.1', + 'fuchsia_version': 'version:27.20250326.5.1', + + # Three lines of non-changing comments so that + # the commit queue can handle CLs rolling partition_alloc_version + # and whatever else without interference from each other. + 'partition_alloc_version': 'ab56923a27b2793f21994589b0c39bc3324ff49f', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_build-tools_version # and whatever else without interference from each other. - 'android_sdk_build-tools_version': 'DxwAZ3hD551Neu6ycuW5CPnXFrdleRBd93oX1eB_m9YC', + 'android_sdk_build-tools_version': 'y3EsZLg4bxPmpW0oYsAHylywNyMnIwPS3kh1VbQLAFAC', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_emulator_version # and whatever else without interference from each other. @@ -112,11 +112,11 @@ vars = { # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_platform-tools_version # and whatever else without interference from each other. - 'android_sdk_platform-tools_version': 'WihaseZR6cojZbkzIqwGhpTp92ztaGfqq8njBU8eTXYC', + 'android_sdk_platform-tools_version': 'mjFmRj7k_XR9yj60pYbr9mG38FyEbU5oWdU56bZQ5cwC', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_platforms_version # and whatever else without interference from each other. - 'android_sdk_platforms_version': 'kIXA-9XuCfOESodXEdOBkW5f1ytrGWdbp3HFp1I8A_0C', + 'android_sdk_platforms_version': '_YHemUrK49JrE7Mctdf5DDNOHu1VKBx_PTcWnZ-cbOAC', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_sources_version # and whatever else without interference from each other. @@ -124,14 +124,14 @@ vars = { # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_tools-lint_version # and whatever else without interference from each other. - 'android_sdk_cmdline-tools_version': 'B4p95sDPpm34K8Cf4JcfTM-iYSglWko9qjWgbT9dxWQC', + 'android_sdk_cmdline-tools_version': 'gekOVsZjseS1w9BXAT3FsoW__ByGDJYS9DgqesiwKYoC', } deps = { 'build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + '4bd877395d215d47c694a8383147eb158fafbbd6', + Var('chromium_url') + '/chromium/src/build.git' + '@' + '451ef881d77fff0b7a8bbfa61934f5e4a35b4c96', 'buildtools': - Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + 'a7a84ac61eae5a8946807265a2fd8bd812daf384', + Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '6f359296daa889aa726f3d05046b9f37be241169', 'buildtools/linux64': { 'packages': [ { @@ -177,15 +177,15 @@ deps = { 'test/mozilla/data': Var('chromium_url') + '/v8/deps/third_party/mozilla-tests.git' + '@' + 'f6c578a10ea707b1a8ab0b88943fe5115ce2b9be', 'test/test262/data': - Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'd62fa93c8f9ce5e687c0bbaa5d2b59670ab2ff60', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'ce7e72d2107f99d165f4259571f10aa75753d997', 'third_party/android_platform': { - 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + '6337c445f9963ec3914e7e0c5787941d07b46509', + 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + '98aee46efb1cc4e09fa0e3ecaa6b19dc258645fa', 'condition': 'checkout_android', }, 'third_party/android_sdk/public': { 'packages': [ { - 'package': 'chromium/third_party/android_sdk/public/build-tools/35.0.0', + 'package': 'chromium/third_party/android_sdk/public/build-tools/36.0.0', 'version': Var('android_sdk_build-tools_version'), }, { @@ -205,7 +205,7 @@ deps = { 'version': Var('android_sdk_platform-tools_version'), }, { - 'package': 'chromium/third_party/android_sdk/public/platforms/android-35', + 'package': 'chromium/third_party/android_sdk/public/platforms/android-36', 'version': Var('android_sdk_platforms_version'), }, { @@ -230,20 +230,12 @@ deps = { 'condition': 'checkout_android', 'dep_type': 'cipd', }, - 'third_party/boringssl': { - 'url': Var('chromium_url') + '/chromium/src/third_party/boringssl.git' + '@' + 'c79987a83ceaf2cf911f7d21bec621ddc90c45cc', - 'condition': "checkout_centipede_deps", - }, - 'third_party/boringssl/src': { - 'url': Var('boringssl_url') + '/boringssl.git' + '@' + '58f3bc83230d2958bb9710bc910972c4f5d382dc', - 'condition': "checkout_centipede_deps", - }, 'third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + '296226a4a0067c8cffeb8831fb87526a8035f3cc', + 'url': Var('chromium_url') + '/catapult.git' + '@' + '5bda0fdab9d93ec9963e2cd858c7b49ad7fec7d4', 'condition': 'checkout_android', }, 'third_party/clang-format/script': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/clang/tools/clang-format.git' + '@' + '3c0acd2d4e73dd911309d9e970ba09d58bf23a62', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/clang/tools/clang-format.git' + '@' + '37f6e68a107df43b7d7e044fd36a13cbae3413f2', 'third_party/colorama/src': { 'url': Var('chromium_url') + '/external/colorama.git' + '@' + '3de9f013df4b470069d03d250224062e8cf15c49', 'condition': 'checkout_android', @@ -253,15 +245,17 @@ deps = { 'condition': 'checkout_android', }, 'third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '22df6f8e622dc3e8df8dc8b5d3e3503b169af78e', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + 'f40ddcd8d51626fb7be3ab3c418b3f3be801623f', 'third_party/fp16/src': Var('chromium_url') + '/external/github.com/Maratyszcza/FP16.git' + '@' + '0a92994d729ff76a58f692d3028ca1b64b145d91', 'third_party/fast_float/src': - Var('chromium_url') + '/external/github.com/fastfloat/fast_float.git' + '@' + '3e57d8dcfb0a04b5a8a26b486b54490a2e9b310f', + Var('chromium_url') + '/external/github.com/fastfloat/fast_float.git' + '@' + 'cb1d42aaa1e14b09e1452cfdef373d051b8c02a4', 'third_party/fuchsia-gn-sdk': { - 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + '5086f6c9e4c6d3295a76fdb5d27209f2d6449c6a', + 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + '3845a68eb4421e64fbdf9f4805b5ac6d73742e08', 'condition': 'checkout_fuchsia', }, + 'third_party/simdutf': + Var('chromium_url') + '/chromium/src/third_party/simdutf' + '@' + '40d1fa26cd5ca221605c974e22c001ca2fb12fde', # Exists for rolling the Fuchsia SDK. Check out of the SDK should always # rely on the hook running |update_sdk.py| script below. 'third_party/fuchsia-sdk/sdk': { @@ -275,23 +269,23 @@ deps = { 'dep_type': 'cipd', }, 'third_party/google_benchmark_chrome': { - 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + 'f049b96d7a50ae19f2748aae7fba7bde705bcd8c', + 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + '917e1208b42fdce63511e401067677ffee3a5c7d', }, 'third_party/google_benchmark_chrome/src': { - 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '344117638c8ff7e239044fd0fa7085839fc03021', + 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '761305ec3b33abf30e08d50eb829e19a802581cc', }, 'third_party/fuzztest': - Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + '69fe98bf87d80fdc773481ae5180c63e431a13a1', + Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + 'df29ed1355d06c486e17fc421767ff01af050ca4', 'third_party/fuzztest/src': - Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + '32eb84a95951fa3a0148fb3e6a1a02f830ded136', + Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + '3c7bc855a4938c5d0d1d07303aa0697c88d33e6c', 'third_party/googletest/src': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '0953a17a4281fc26831da647ad3fcd5e21e6473b', + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '52204f78f94d7512df1f0f3bea1d47437a2c3a58', 'third_party/highway/src': - Var('chromium_url') + '/external/github.com/google/highway.git' + '@' + '8295336dd70f1201d42c22ab5b0861de38cf8fbf', + Var('chromium_url') + '/external/github.com/google/highway.git' + '@' + '00fe003dac355b979f36157f9407c7c46448958e', 'third_party/icu': - Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '9408c6fd4a39e6fef0e1c4077602e1c83b15f3fb', + Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'c9fb4b3a6fb54aa8c20a03bbcaa0a4a985ffd34b', 'third_party/instrumented_libs': { - 'url': Var('chromium_url') + '/chromium/third_party/instrumented_libraries.git' + '@' + 'bb6dbcf2df7a9beb34c3773ef4df161800e3aed9', + 'url': Var('chromium_url') + '/chromium/third_party/instrumented_libraries.git' + '@' + '69015643b3f68dbd438c010439c59adc52cac808', 'condition': 'checkout_instrumented_libraries', }, 'third_party/ittapi': { @@ -301,157 +295,159 @@ deps = { 'condition': "checkout_ittapi or check_v8_header_includes", }, 'third_party/jinja2': - Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '2f6f2ff5e4c1d727377f5e1b9e1903d871f41e74', + Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '5e1ee241ab04b38889f8d517f2da8b3df7cfbd9a', 'third_party/jsoncpp/source': Var('chromium_url') + '/external/github.com/open-source-parsers/jsoncpp.git'+ '@' + '42e892d96e47b1f6e29844cc705e148ec4856448', 'third_party/libc++/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '50ab693ecb611942ce4440d8c9ed707ee65ed5e8', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '449310fe2e37834a7e62972d2a690cade2ef596b', 'third_party/libc++abi/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '29b2e9a0f48688da116692cb04758393053d269c', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '94c5d7a8edc09f0680aee57548c0b5d400c2840d', 'third_party/libunwind/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + 'dc70138c3e68e2f946585f134e20815851e26263', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + 'e2e6f2a67e9420e770b014ce9bba476fa2ab9874', + 'third_party/llvm-libc/src': + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + '188329a7f2118a957efbb3e6219c255e7dba997c', 'third_party/llvm-build/Release+Asserts': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/clang-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '6a30f7bc7c5f0eac02a40a4ec9a1ab906ddff2adacf2c9ff065916047c79f0fb', - 'size_bytes': 52892060, - 'generation': 1726118358890940, + 'object_name': 'Linux_x64/clang-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '790fcc5b04e96882e8227ba7994161ab945c0e096057fc165a0f71e32a7cb061', + 'size_bytes': 54517328, + 'generation': 1742541959624765, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Linux_x64/clang-tidy-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '35e00fc8f58cf7cd30f0ad27c2fdef56b677e287030072c46c0f024d23363ae4', - 'size_bytes': 13283180, - 'generation': 1726118359291453, + 'object_name': 'Linux_x64/clang-tidy-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '6e325d9f62e831bfbae23413a75535a851fd2cdf2f7cf06a5b724e86f72b2df0', + 'size_bytes': 13206280, + 'generation': 1742541959572183, 'condition': 'host_os == "linux" and checkout_clang_tidy', }, { - 'object_name': 'Linux_x64/clangd-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '33e2276976dfeaf387f5ea16651ea591eebe3570a12469f3884c74f8079e88bf', - 'size_bytes': 26305668, - 'generation': 1726118359489734, + 'object_name': 'Linux_x64/clangd-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '95d4146cb0b892db68c55bbb523b30301e538d0f4dc71517612fdee62664b81a', + 'size_bytes': 13566616, + 'generation': 1742541959718102, 'condition': 'host_os == "linux" and checkout_clangd', }, { - 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '426c6bd378848de0817a7695fee821bece9efb51e3ed1d7b750a75bc17bf00eb', - 'size_bytes': 2370472, - 'generation': 1726118360237343, + 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': 'a10c2831ad30275a72f2955e65e62f6af78542f380661443dab4d20c65f203a4', + 'size_bytes': 2299292, + 'generation': 1742541960157221, 'condition': 'host_os == "linux" and checkout_clang_coverage_tools', }, { - 'object_name': 'Linux_x64/llvmobjdump-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': 'e11c3043e76c7c79fe7905861a11c78433c6d796d049f837eda0a2ce118f0793', - 'size_bytes': 5410724, - 'generation': 1726118359908897, + 'object_name': 'Linux_x64/llvmobjdump-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '56a5bb654a4550d332f86a23e38a0495c6187092868af817ecb999bd9de9c8a0', + 'size_bytes': 5429676, + 'generation': 1742541959869492, 'condition': '(checkout_linux or checkout_mac or checkout_android and host_os != "mac")', }, { - 'object_name': 'Mac/clang-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': 'cabfc7ca792ef13d3e665c3a7811f9a76cc39094059c11606cea1724f0394bbc', - 'size_bytes': 47551968, - 'generation': 1726118361528729, + 'object_name': 'Mac/clang-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '330f8c4cdde3095ac54aff772dbf9bbd96a753df58525546931cbd9bb615f793', + 'size_bytes': 51652432, + 'generation': 1742541961981004, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '50a618246d7fd23645640fc50ccb0d4684c1895def378b90963a289f920ea88a', - 'size_bytes': 879508, - 'generation': 1726118377526206, + 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '013f468c65fae6f736cd380791fef892a0fc9fc107516fcae34d1f998eeb081f', + 'size_bytes': 978248, + 'generation': 1742541983231339, 'condition': 'checkout_mac and not host_os == "mac"', }, { - 'object_name': 'Mac/clang-tidy-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '2c325505ea43a8d8a14770890d62aba9af37b397e3063e3fb622cfd51d4706f6', - 'size_bytes': 12884412, - 'generation': 1726118361811669, + 'object_name': 'Mac/clang-tidy-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': 'f29391d18e9fa40774e0386224235890933a8b9eddb9b7eb93d2a4a0867241a1', + 'size_bytes': 13468608, + 'generation': 1742541962672221, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_tidy', }, { - 'object_name': 'Mac/clangd-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '1c1a0965cc95053dec8c649a7b3bb627ad2300ad230eed97b52ee70a8a8edd85', - 'size_bytes': 26553148, - 'generation': 1726118361978146, + 'object_name': 'Mac/clangd-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '06c48661d55a7b465d8fb02be56f8550c34d3962a9d0f8ce19b17bdd37127691', + 'size_bytes': 15012228, + 'generation': 1742541962463652, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clangd', }, { - 'object_name': 'Mac/llvm-code-coverage-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '9259bd27c19ca9662c70ffc2b42c10afb584e7c584470d6e656e164643614b50', - 'size_bytes': 2247028, - 'generation': 1726118362377026, + 'object_name': 'Mac/llvm-code-coverage-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '12f3accae43fa9591bbf28a8e0785b99ff75ed2c84f89518bd5ef5119a2525f0', + 'size_bytes': 2255296, + 'generation': 1742541963013464, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Mac_arm64/clang-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': 'e87eb4caa95c98ef36c40aec5b8cd07a6c4fb8959d3c7e7d452f6ed860c8c2bf', - 'size_bytes': 41352592, - 'generation': 1726118378868177, + 'object_name': 'Mac_arm64/clang-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '49967dab3fa4c5f1ff1fe235059be71727c190ff4ccc80f08d39e1bba4dfed58', + 'size_bytes': 43810156, + 'generation': 1742541984650930, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Mac_arm64/clang-tidy-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': 'fcf8f25a8461db90686d0455bd8f195750a2cdc425cb03c48debe4d3e8bb9299', - 'size_bytes': 11476316, - 'generation': 1726118379144738, + 'object_name': 'Mac_arm64/clang-tidy-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '4f5326253ed3736ec262e8e69d93befadf9473419865240673a2ec883c3614b6', + 'size_bytes': 11607236, + 'generation': 1742541984970894, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_tidy', }, { - 'object_name': 'Mac_arm64/clangd-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': 'cca4049d3362528511ebc603db05189c9bef406a80ae4fead22b1db0a4de83e6', - 'size_bytes': 22679568, - 'generation': 1726118379283835, + 'object_name': 'Mac_arm64/clangd-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': 'b3da417d27ba5afe6c9f612d5808c416a17ed1b28f2acd745e0cd2962a5eeac1', + 'size_bytes': 12000852, + 'generation': 1742541985144552, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clangd', }, { - 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '001e8582de4bc7c434f321b5bacd2b0b45e553f3134cb7d78e1a4f62e2b97ac6', - 'size_bytes': 1969844, - 'generation': 1726118379757221, + 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '78139b473cdf4d43da880b573661a5d28d94a8bcb4dea41607d324301745f28c', + 'size_bytes': 1976480, + 'generation': 1742541985608174, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/clang-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': 'cb416511e6379b7fd3f362f637ebb8a28957d0d2ff2dc6e2d9f4484a381f2885', - 'size_bytes': 44655000, - 'generation': 1726118399720986, + 'object_name': 'Win/clang-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': 'b46fb4a5cbf9c52d0b345fc2d77ad4ac15dfbb45aa494fb49261786c679af44a', + 'size_bytes': 46813332, + 'generation': 1742542010902044, 'condition': 'host_os == "win"', }, { - 'object_name': 'Win/clang-tidy-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '15af2ae61dabdfe0ddbdd48f467b996855ba51d0ef633c5c0ac3c74cdc0d8f2c', - 'size_bytes': 13114928, - 'generation': 1726118400057660, + 'object_name': 'Win/clang-tidy-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '50d527e811ae8543effa2bb5734a1d424d9c497fbf1d96c76d44b6b5ee7f240b', + 'size_bytes': 13233236, + 'generation': 1742542011983982, 'condition': 'host_os == "win" and checkout_clang_tidy', }, { - 'object_name': 'Win/clang-win-runtime-library-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '81d66840357d83ca1a2c85ebca5259a7a86d9e99c77b37727fbaee87ccacf675', - 'size_bytes': 2897452, - 'generation': 1726118416326356, + 'object_name': 'Win/clang-win-runtime-library-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': 'bd2ad1930c0ba7d00364dd344886fd57e16aa070ff1b6a1aade72b58d28e8275', + 'size_bytes': 2474048, + 'generation': 1742542035740788, 'condition': 'checkout_win and not host_os == "win"', }, { - 'object_name': 'Win/clangd-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '1304718c221543b16465a4b6108572fa1ba9f2b75c4e4398bdb01fb983428c10', - 'size_bytes': 25169688, - 'generation': 1726118400193324, + 'object_name': 'Win/clangd-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '06563cfcb24d7196717551dfcda13ed0b97fb9e795dba06007c55ae563e824b0', + 'size_bytes': 13759668, + 'generation': 1742542011820938, 'condition': 'host_os == "win" and checkout_clangd', }, { - 'object_name': 'Win/llvm-code-coverage-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': 'e01b8fbca72fc1cca6988e359d9a0eea8fa5ccbaff8d41deffd62970c7f4fed5', - 'size_bytes': 2382756, - 'generation': 1726118400642803, + 'object_name': 'Win/llvm-code-coverage-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': '7c2fe8784910dc05445cd7f16742e0b2a09a45fb2ba96ddd5f1d8c895ac65d44', + 'size_bytes': 2365956, + 'generation': 1742542013491786, 'condition': 'host_os == "win" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/llvmobjdump-llvmorg-20-init-3847-g69c43468-28.tar.xz', - 'sha256sum': '2f837a21d910ad748666282d0c1da15a438d9aae4fc1bc85dab7313da6dfeb7b', - 'size_bytes': 5439736, - 'generation': 1726118400404099, + 'object_name': 'Win/llvmobjdump-llvmorg-21-init-5118-g52cd27e6-5.tar.xz', + 'sha256sum': 'a07be25cb4d565422b10001ca3595111d40bd42c47b37b41e2fff5708fe82302', + 'size_bytes': 5527784, + 'generation': 1742542012678160, 'condition': 'checkout_linux or checkout_mac or checkout_android and host_os == "win"', }, ], @@ -459,7 +455,7 @@ deps = { 'third_party/logdog/logdog': Var('chromium_url') + '/infra/luci/luci-py/client/libs/logdog' + '@' + '0b2078a90f7a638d576b3a7c407d136f2fb62399', 'third_party/markupsafe': - Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '6638e9b0a79afc2ff7edd9e84b518fe7d5d5fea9', + Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '9f8efc8637f847ab1ba984212598e6fb9cf1b3d4', 'third_party/ninja': { 'packages': [ { @@ -470,16 +466,58 @@ deps = { 'dep_type': 'cipd', 'condition': 'host_cpu != "s390" and host_os != "zos" and host_cpu != "ppc"' }, + 'third_party/partition_alloc': { + 'url': Var('chromium_url') + '/chromium/src/base/allocator/partition_allocator.git@' + Var('partition_alloc_version'), + 'condition': 'not build_with_chromium', + }, 'third_party/perfetto': - Var('android_url') + '/platform/external/perfetto.git' + '@' + '6fc824d618d2f06b5d9cd8655ba0419b6b3b366e', + Var('android_url') + '/platform/external/perfetto.git' + '@' + '40b529923598b739b2892a536a7692eedbed5685', 'third_party/protobuf': - Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + '37bbf271c62d6c01c58c66505b17c7dcf086371a', + Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + 'b714f7890b8b6ad3ff3471d3148b28c2c7bbff90', 'third_party/re2/src': - Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + '6dcd83d60f7944926bfd308cc13979fc53dd69ca', + Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + 'c84a140c93352cdabbfb547c531be34515b12228', 'third_party/requests': { 'url': Var('chromium_url') + '/external/github.com/kennethreitz/requests.git' + '@' + 'c7e0fc087ceeadb8b4c84a0953a422c474093d6d', 'condition': 'checkout_android', }, + 'tools/rust': + Var('chromium_url') + '/chromium/src/tools/rust' + '@' + '7cdd3d9540f3ab428dbcc9ab83c2896c100bcdc5', + 'third_party/rust': + Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + 'ed577320339cd175171e9c96d3d73452ddbcbd98', + 'third_party/rust-toolchain': { + 'dep_type': 'gcs', + 'bucket': 'chromium-browser-clang', + 'objects': [ + { + 'object_name': 'Linux_x64/rust-toolchain-f7b43542838f0a4a6cfdb17fbeadf45002042a77-1-llvmorg-21-init-5118-g52cd27e6.tar.xz', + 'sha256sum': '213ffcc751ba5f5a4e15fc0dbcbdb94aa7dbc4b6cddd3605121cd26ff8a8b359', + 'size_bytes': 118223072, + 'generation': 1741985831167267, + 'condition': 'host_os == "linux"', + }, + { + 'object_name': 'Mac/rust-toolchain-f7b43542838f0a4a6cfdb17fbeadf45002042a77-1-llvmorg-21-init-5118-g52cd27e6.tar.xz', + 'sha256sum': 'f5ad2fe26336a87713ffcad9e06ae4c1ecb4773ae496a33450a7091c5eec560c', + 'size_bytes': 111168208, + 'generation': 1741985832885972, + 'condition': 'host_os == "mac" and host_cpu == "x64"', + }, + { + 'object_name': 'Mac_arm64/rust-toolchain-f7b43542838f0a4a6cfdb17fbeadf45002042a77-1-llvmorg-21-init-5118-g52cd27e6.tar.xz', + 'sha256sum': 'fac3586c08239bbb8fd192a7ba5deaa9ae62f6fde2c1d665953f87176467a156', + 'size_bytes': 100534232, + 'generation': 1741985834191792, + 'condition': 'host_os == "mac" and host_cpu == "arm64"', + }, + { + 'object_name': 'Win/rust-toolchain-f7b43542838f0a4a6cfdb17fbeadf45002042a77-1-llvmorg-21-init-5118-g52cd27e6.tar.xz', + 'sha256sum': '7b41e74c9b45ca97ca65279c605e6af878de5682fe574d1f1860d9da9b3a5909', + 'size_bytes': 180896336, + 'generation': 1741985835535129, + 'condition': 'host_os == "win"', + }, + ], + }, 'third_party/siso': { 'packages': [ { @@ -491,27 +529,13 @@ deps = { 'condition': 'not build_with_chromium and host_cpu != "s390" and host_os != "zos" and host_cpu != "ppc"', }, 'third_party/zlib': - Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + 'fa9f14143c7938e6a1d18443900efee7a1e5e669', + Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '788cb3c270e8700b425c7bdca1f9ce6b0c1400a9', 'tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'e47c184ec52d50c7aa2a99cd3bd26ebcafaa94b9', - 'tools/luci-go': { - 'packages': [ - { - 'package': 'infra/tools/luci/isolate/${{platform}}', - 'version': Var('luci_go'), - }, - { - 'package': 'infra/tools/luci/swarming/${{platform}}', - 'version': Var('luci_go'), - }, - ], - 'condition': 'host_cpu != "s390" and host_os != "zos" and host_os != "aix"', - 'dep_type': 'cipd', - }, + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '0078c27c43cae91e96bb28d8a4407045966e0542', 'tools/protoc_wrapper': Var('chromium_url') + '/chromium/src/tools/protoc_wrapper.git' + '@' + 'dbcbea90c20ae1ece442d8ef64e61c7b10e2b013', 'third_party/abseil-cpp': { - 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '1f7e21e34c3807a8841c9562cfc8b3213eb50bfc', + 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '3fbb10e80d80e3430224b75add53c47c7a711612', 'condition': 'not build_with_chromium', }, 'third_party/zoslib': { @@ -524,12 +548,15 @@ include_rules = [ # Everybody can use some things. '+include', '+unicode', - '+third_party/fdlibm', - '+third_party/ittapi/include', '+third_party/fast_float/src/include', + '+third_party/fdlibm', '+third_party/fp16/src/include', - '+third_party/v8/codegen', '+third_party/fuzztest', + '+third_party/ittapi/include', + '+third_party/simdutf', + '+third_party/v8/codegen', + '+third_party/vtune', + '+hwy/highway.h', # Abseil features are allow-listed. Please use your best judgement when adding # to this set -- if in doubt, email v8-dev@. For general guidance, refer to # the Chromium guidelines (though note that some requirements in V8 may be @@ -538,9 +565,9 @@ include_rules = [ '+absl/container/flat_hash_map.h', '+absl/container/flat_hash_set.h', '+absl/container/btree_map.h', - '+absl/types/optional.h', - '+absl/types/variant.h', '+absl/status', + '+absl/synchronization/mutex.h', + '+absl/time/time.h', # Some abseil features are explicitly banned. '-absl/types/any.h', # Requires RTTI. '-absl/types/flags', # Requires RTTI. @@ -755,16 +782,6 @@ hooks = [ '--quiet', ], }, - { - # Clean up build dirs for crbug.com/1337238. - # After a libc++ roll and revert, .ninja_deps would get into a state - # that breaks Ninja on Windows. - # TODO(crbug.com/1337238): Remove in a month or so. - 'name': 'del_ninja_deps_cache', - 'pattern': '.', - 'condition': 'host_os == "win"', - 'action': ['python3', 'build/del_ninja_deps_cache.py'], - }, # Configure remote exec cfg files { 'name': 'download_and_configure_reclient_cfgs', diff --git a/deps/v8/DIR_METADATA b/deps/v8/DIR_METADATA index 72c04a4d913880..bd04d34c15a77c 100644 --- a/deps/v8/DIR_METADATA +++ b/deps/v8/DIR_METADATA @@ -9,4 +9,7 @@ monorail { component: "Blink>JavaScript" } -team_email: "v8-dev@googlegroups.com" \ No newline at end of file +team_email: "v8-dev@googlegroups.com" +buganizer_public: { + component_id: 1456824 +} diff --git a/deps/v8/ENG_REVIEW_OWNERS b/deps/v8/ENG_REVIEW_OWNERS index 27a979ebaf9d9e..d601572c0b16d3 100644 --- a/deps/v8/ENG_REVIEW_OWNERS +++ b/deps/v8/ENG_REVIEW_OWNERS @@ -3,9 +3,8 @@ # directories. adamk@chromium.org -danno@chromium.org gdeepti@chromium.org -hpayer@chromium.org +hpayer@chromium.org #{LAST_RESORT_SUGGESTION} leszeks@chromium.org mlippautz@chromium.org syg@chromium.org diff --git a/deps/v8/LICENSE b/deps/v8/LICENSE index f665c480d2c169..9898b2d4833bfe 100644 --- a/deps/v8/LICENSE +++ b/deps/v8/LICENSE @@ -19,7 +19,7 @@ are: This code is copyrighted by Sun Microsystems Inc. and released under a 3-clause BSD license. - - Valgrind client API header, located at src/third_party/valgrind/valgrind.h + - Valgrind client API header, located at third_party/valgrind/valgrind.h This is released under the BSD license. - The Wasm C/C++ API headers, located at third_party/wasm-api/wasm.{h,hh} @@ -30,7 +30,7 @@ are: These libraries have their own licenses; we recommend you read them, as their terms may differ from the terms below. -Further license information can be found in LICENSE files located in +Further license information can be found in LICENSE files located in sub-directories. Copyright 2014, the V8 project authors. All rights reserved. diff --git a/deps/v8/MODULE.bazel b/deps/v8/MODULE.bazel new file mode 100644 index 00000000000000..21e089505f101c --- /dev/null +++ b/deps/v8/MODULE.bazel @@ -0,0 +1,19 @@ +module( + name = "v8", + version = "0.0.0", +) + +bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "rules_python", version = "1.0.0") +bazel_dep(name = "platforms", version = "0.0.11") +bazel_dep(name = "abseil-cpp", version = "20240722.0.bcr.2") +bazel_dep(name = "highway", version = "1.2.0") + +pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") +pip.parse( + hub_name = "v8_python_deps", + python_version = "3.11", + requirements_lock = "//:bazel/requirements.txt", + extra_pip_args = ["--require-hashes"], +) +use_repo(pip, "v8_python_deps") diff --git a/deps/v8/OWNERS b/deps/v8/OWNERS index c25282ec9089b1..e252b5a2fa648b 100644 --- a/deps/v8/OWNERS +++ b/deps/v8/OWNERS @@ -12,9 +12,9 @@ per-file BUILD.bazel=file:COMMON_OWNERS per-file BUILD.gn=file:COMMON_OWNERS per-file DEPS=file:COMMON_OWNERS per-file INFRA_OWNERS=file:INFRA_OWNERS +per-file MODULE.bazel=file:COMMON_OWNERS per-file PRESUBMIT.py=file:INFRA_OWNERS per-file WATCHLISTS=file:COMMON_OWNERS -per-file WORKSPACE=file:COMMON_OWNERS # Needed by the auto_tag builder per-file WATCHLISTS=v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index 5318df8fc473a9..8ec4e97bf0dbfc 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -361,6 +361,51 @@ def FilterFile(affected_file): return [] +def _CheckInlineHeadersIncludeNonInlineHeadersFirst(input_api, output_api): + """Checks that the first include in each inline header ("*-inl.h") is the + non-inl counterpart of that header, if that file exists.""" + file_inclusion_pattern = r'.+-inl\.h' + include_error = ( + 'The first include of an -inl.h header should be the non-inl counterpart.' + ) + + def FilterFile(affected_file): + files_to_skip = _EXCLUDED_PATHS + input_api.DEFAULT_FILES_TO_SKIP + ( + # Exclude macro-assembler--inl.h headers because they have special + # include rules (arch-specific macro assembler headers must be included + # via the general macro-assembler.h). + r'src[\\\/]codegen[\\\/].*[\\\/]macro-assembler-.*-inl\.h',) + return input_api.FilterSourceFile( + affected_file, + files_to_check=(file_inclusion_pattern,), + files_to_skip=files_to_skip) + + to_non_inl = lambda filename: filename[:-len("-inl.h")] + ".h" + problems = [] + for f in input_api.AffectedSourceFiles(FilterFile): + if not os.path.isfile(to_non_inl(f.AbsoluteLocalPath())): + continue + non_inl_header = to_non_inl(f.LocalPath()) + first_include = None + for line in f.NewContents(): + if line.startswith('#include '): + first_include = line + break + expected_include = f'#include "{non_inl_header}"' + if first_include is None: + problems.append(f'{f.LocalPath()}: should include {non_inl_header}\n' + ' found no includes in the file.') + elif not first_include.startswith(expected_include): + problems.append( + f'{f.LocalPath()}: should include {non_inl_header} first\n' + f' found: {first_include}') + + if problems: + return [output_api.PresubmitError(include_error, problems)] + else: + return [] + + def _CheckNoProductionCodeUsingTestOnlyFunctions(input_api, output_api): """Attempts to prevent use of functions intended only for testing in non-testing code. For now this is just a best-effort implementation @@ -426,20 +471,21 @@ def _CommonChecks(input_api, output_api): # with the canned PanProjectChecks. Need to make sure that the checks all # pass on all existing files. checks = [ - input_api.canned_checks.CheckOwnersFormat, - input_api.canned_checks.CheckOwners, - _CheckCommitMessageBugEntry, - input_api.canned_checks.CheckPatchFormatted, - _CheckGenderNeutralInLicenses, - _V8PresubmitChecks, - _CheckUnwantedDependencies, - _CheckNoProductionCodeUsingTestOnlyFunctions, - _CheckHeadersHaveIncludeGuards, - _CheckNoInlineHeaderIncludesInNormalHeaders, - _CheckJSONFiles, - _CheckNoexceptAnnotations, - _RunTestsWithVPythonSpec, - _CheckPythonLiterals, + input_api.canned_checks.CheckOwnersFormat, + input_api.canned_checks.CheckOwners, + _CheckCommitMessageBugEntry, + input_api.canned_checks.CheckPatchFormatted, + _CheckGenderNeutralInLicenses, + _V8PresubmitChecks, + _CheckUnwantedDependencies, + _CheckNoProductionCodeUsingTestOnlyFunctions, + _CheckHeadersHaveIncludeGuards, + _CheckNoInlineHeaderIncludesInNormalHeaders, + _CheckInlineHeadersIncludeNonInlineHeadersFirst, + _CheckJSONFiles, + _CheckNoexceptAnnotations, + _RunTestsWithVPythonSpec, + _CheckPythonLiterals, ] return sum([check(input_api, output_api) for check in checks], []) diff --git a/deps/v8/WATCHLISTS b/deps/v8/WATCHLISTS index efde42b36b00c1..0e9e78b120c9eb 100644 --- a/deps/v8/WATCHLISTS +++ b/deps/v8/WATCHLISTS @@ -51,7 +51,7 @@ 'baseline': { 'filepath': 'src/baseline/', }, - 'feature_shipping_status': { + 'flags': { 'filepath': 'src/flags/flag-definitions.h', }, 'heap_changes': { @@ -128,8 +128,8 @@ 'leszeks+watch@chromium.org', 'verwaest+watch@chromium.org', ], - 'feature_shipping_status': [ - 'saelo+watch@chromium.org', + 'flags': [ + 'v8-flag-updates@chromium.org', ], 'heap_changes': [ 'hpayer@chromium.org', diff --git a/deps/v8/WORKSPACE b/deps/v8/WORKSPACE deleted file mode 100644 index 8692e456b9a87f..00000000000000 --- a/deps/v8/WORKSPACE +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright 2021 the V8 project authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -workspace(name = "v8") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - -http_archive( - name = "bazel_skylib", - sha256 = "1c531376ac7e5a180e0237938a2536de0c54d93f5c278634818e0efc952dd56c", - urls = [ - "https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz", - "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz", - ], -) - -load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace") - -bazel_skylib_workspace() - -http_archive( - name = "rules_python", - sha256 = "a30abdfc7126d497a7698c29c46ea9901c6392d6ed315171a6df5ce433aa4502", - strip_prefix = "rules_python-0.6.0", - url = "https://github.com/bazelbuild/rules_python/archive/0.6.0.tar.gz", -) - -load("@rules_python//python:pip.bzl", "pip_install") - -pip_install( - name = "v8_python_deps", - extra_pip_args = ["--require-hashes"], - requirements = "//:bazel/requirements.txt", -) - -local_repository( - name = "com_google_absl", - path = "third_party/abseil-cpp", -) - -bind( - name = "absl_optional", - actual = "@com_google_absl//absl/types:optional" -) - -bind( - name = "absl_btree", - actual = "@com_google_absl//absl/container:btree" -) - -bind( - name = "absl_flat_hash_map", - actual = "@com_google_absl//absl/container:flat_hash_map" -) - -bind( - name = "absl_flat_hash_set", - actual = "@com_google_absl//absl/container:flat_hash_set" -) - -new_local_repository( - name = "com_googlesource_chromium_icu", - build_file = ":bazel/BUILD.icu", - path = "third_party/icu", -) - -bind( - name = "icu", - actual = "@com_googlesource_chromium_icu//:icu", -) - -http_archive( - name = "intel_ittapi", - add_prefix = "third_party/ittapi", - build_file = "@//:bazel/BUILD.ittapi", - sha256 = "36c42d3f2446ddfaa2d7dfa02dfaa79615933f1a68a72d7e4f1d70de7b56e2c9", - strip_prefix = "ittapi-3.24.0", - url = "https://github.com/intel/ittapi/archive/refs/tags/v3.24.0.tar.gz", -) - -bind( - name = "ittapi", - actual = "@intel_ittapi//:lib_ittapi", -) diff --git a/deps/v8/bazel/defs.bzl b/deps/v8/bazel/defs.bzl index ba1716d9ad466a..fbd942ba765fe0 100644 --- a/deps/v8/bazel/defs.bzl +++ b/deps/v8/bazel/defs.bzl @@ -98,7 +98,7 @@ def _default_args(): "UNICODE", "_UNICODE", "_CRT_RAND_S", - "_WIN32_WINNT=0x0602", # Override bazel default to Windows 8 + "_WIN32_WINNT=0x0A00", # Override bazel default to Windows 10 ], "//conditions:default": [], }), @@ -124,6 +124,7 @@ def _default_args(): "@v8//bazel/config:is_clang": [ "-Wno-invalid-offsetof", "-Wno-deprecated-this-capture", + "-Wno-deprecated-declarations", "-std=c++20", ], "@v8//bazel/config:is_gcc": [ @@ -176,7 +177,7 @@ def _default_args(): "Advapi32.lib", ], "@v8//bazel/config:is_macos": ["-pthread"], - "//conditions:default": ["-Wl,--no-as-needed -ldl -pthread"], + "//conditions:default": ["-Wl,--no-as-needed -ldl -latomic -pthread"], }) + select({ ":should_add_rdynamic": ["-rdynamic"], "//conditions:default": [], @@ -316,7 +317,11 @@ def v8_library( # split the set of outputs by using OutputGroupInfo, that way we do not need to # run the torque generator twice. def _torque_files_impl(ctx): - v8root = "." + # Allow building V8 as a dependency: workspace_root points to external/v8 + # when building V8 from a different repository and empty otherwise. + v8root = ctx.label.workspace_root + if v8root == "": + v8root = "." # Arguments args = [] @@ -432,7 +437,7 @@ def _v8_target_cpu_transition_impl(settings, "armeabi-v7a": "arm32", "s390x": "s390x", "riscv64": "riscv64", - "ppc": "ppc64le", + "ppc64": "ppc64le", } v8_target_cpu = mapping[settings["//command_line_option:cpu"]] return {"@v8//bazel/config:v8_target_cpu": v8_target_cpu} @@ -495,6 +500,7 @@ def v8_mksnapshot(name, args, suffix = ""): suffix = suffix, target_os = select({ "@v8//bazel/config:is_macos": "mac", + "@v8//bazel/config:is_windows": "win", "//conditions:default": "", }), ) @@ -506,6 +512,7 @@ def v8_mksnapshot(name, args, suffix = ""): suffix = suffix, target_os = select({ "@v8//bazel/config:is_macos": "mac", + "@v8//bazel/config:is_windows": "win", "//conditions:default": "", }), ) @@ -535,6 +542,7 @@ def build_config_content(cpu, icu): ("arch", arch), ("asan", "false"), ("atomic_object_field_writes", "false"), + ("cet_shadow_stack", "false"), ("cfi", "false"), ("clang_coverage", "false"), ("clang", "true"), @@ -564,6 +572,7 @@ def build_config_content(cpu, icu): ("leaptiering", "true"), ("lite_mode", "false"), ("local_off_stack_check", "false"), + ("lower_limits_mode", "false"), ("memory_corruption_api", "false"), ("mips_arch_variant", '""'), ("mips_use_msa", "false"), @@ -588,6 +597,7 @@ def build_config_content(cpu, icu): ("verify_csa", "false"), ("verify_heap", "false"), ("verify_predictable", "false"), + ("wasm_random_fuzzers", "false"), ("write_barriers", "false"), ]) diff --git a/deps/v8/build_overrides/partition_alloc.gni b/deps/v8/build_overrides/partition_alloc.gni new file mode 100644 index 00000000000000..33a094d4c9f67a --- /dev/null +++ b/deps/v8/build_overrides/partition_alloc.gni @@ -0,0 +1,47 @@ +# Copyright 2025 The V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Import into partition_alloc, some required variable definitions. +import("//build/config/compiler/compiler.gni") +import("//build/config/dcheck_always_on.gni") +import("//build/config/sanitizers/sanitizers.gni") + +# partition_alloc is performance critical and it should generally be optimized +# for speed, even in debug mode. +partition_alloc_remove_configs = + [ "//build/config/compiler:default_optimization" ] +partition_alloc_add_configs = [ "//build/config/compiler:optimize_speed" ] + +partition_alloc_enable_arc_config = "//build/config/compiler:enable_arc" + +# MSVC's cl.exe compiler is not supported. +_supported_compiler = is_clang || !is_win + +# Windows: debug CRT is not yet compatible with the allocator shim. +# https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/free-dbg +_supported_build_type = !is_win || (!is_component_build && !is_debug) + +_supported_platform = + is_android || is_chromeos || is_fuchsia || is_linux || is_mac || is_win + +# Sanitizers are already replacing the allocator with their own. We shouldn't +# enable partition_alloc when this happens +_use_sanitizer = is_asan || is_cfi || is_msan || is_tsan || is_ubsan + +_supported = _supported_compiler && _supported_build_type && + _supported_platform && !_use_sanitizer + +use_partition_alloc_as_malloc_default = _supported +use_allocator_shim_default = _supported +enable_backup_ref_ptr_support_default = _supported +put_ref_count_in_previous_slot_default = true +enable_backup_ref_ptr_slow_checks_default = false +enable_dangling_raw_ptr_checks_default = _supported +assert_cpp20_default = true + +# V8 doesn't use raw_ptr, so it doesn't really matter. Still, it has to be +# defined, so we take the configuration used by v8. +raw_ptr_zero_on_construct_default = true +raw_ptr_zero_on_move_default = true +raw_ptr_zero_on_destruct_default = false diff --git a/deps/v8/gni/release_branch_toggle.gni b/deps/v8/gni/release_branch_toggle.gni index da60c2433bcd1a..5a8fe8bb5c55af 100644 --- a/deps/v8/gni/release_branch_toggle.gni +++ b/deps/v8/gni/release_branch_toggle.gni @@ -3,8 +3,5 @@ # found in the LICENSE file. declare_args() { - # TODO(liviurau): Remove old name after Chromium config update - # https://crbug.com/1476977. - is_on_release_branch = false v8_is_on_release_branch = true -} \ No newline at end of file +} diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index 09c3e7adec40a9..bf265b293d8147 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -13,6 +13,10 @@ import("//build_overrides/build.gni") import("release_branch_toggle.gni") import("split_static_library.gni") +if (is_ios) { + import("//build/config/apple/mobile_config.gni") # For `target_platform`. +} + declare_args() { # Includes files needed for correctness fuzzing. v8_correctness_fuzzer = false @@ -75,12 +79,19 @@ declare_args() { # Sets -DV8_LITE_MODE. v8_enable_lite_mode = false - # iOS executable code pages is in 17.4 SDK. We - # use target_os == "ios" here because it isn't equivalent - # to is_ios (is_ios is based on host_os). + # We use target_os == "ios" here because it isn't equivalent to is_ios + # (is_ios is based on host_os). if (target_os == "ios") { - # TODO(dtapuska): Change this to an assert. - v8_enable_lite_mode = ios_deployment_target != "17.4" + if (target_platform == "iphoneos") { + # iOS executable code pages is in 17.4 SDK. + # TODO(dtapuska): Change this to an assert. + v8_enable_lite_mode = ios_deployment_target != "17.4" + } else if (target_platform == "tvos") { + # tvOS runs in single process mode and is not allowed to use JIT. + # TODO(crbug.com/394710095): Enable the v8 lite mode to run v8 with the + # jitless mode on tvOS. + v8_enable_lite_mode = true + } } # Enable the Turbofan compiler. @@ -102,10 +113,7 @@ declare_args() { v8_enable_wasm_simd256_revec = false # Enable runtime call stats. - # TODO(liviurau): Remove old name after Chromium config update - # https://crbug.com/1476977. - v8_enable_runtime_call_stats = - !(is_on_release_branch || v8_is_on_release_branch) + v8_enable_runtime_call_stats = !v8_is_on_release_branch # Add fuzzilli fuzzer support. v8_fuzzilli = false @@ -128,6 +136,12 @@ declare_args() { cppgc_is_standalone = false + # Enables certain checks on API level functionality. + cppgc_enable_api_checks = is_debug || dcheck_always_on + + # Enable slow checks on API level functionality. + cppgc_enable_slow_api_checks = false + # Enable object names in cppgc for profiling purposes. cppgc_enable_object_names = is_chrome_for_testing @@ -143,12 +157,9 @@ declare_args() { # Enable pointer compression in cppgc. cppgc_enable_pointer_compression = false - # Enable 2gb cage for fast compression/decompression. Currently disabled - # due to an increased number of OOMs. - cppgc_enable_2gb_cage = false - # Enable support for larger cages, up to 16GB. - cppgc_enable_larger_cage = true + # iOS cannot mmap above 8GB, so use the smaller cage. + cppgc_enable_larger_cage = !is_ios # Enable advanced BigInt algorithms, costing about 10-30 KB binary size # depending on platform. Disabled on Android to save binary size. @@ -179,6 +190,9 @@ declare_args() { # (experimental). # TODO(sroettger): enable by default once we have bot support for testing. v8_enable_memory_sealing = false + + # Sets -DV8_ENABLE_ETW_STACK_WALKING. Enables ETW Stack Walking + v8_enable_etw_stack_walking = is_win } if (v8_use_external_startup_data == "") { @@ -218,7 +232,8 @@ assert(!(v8_enable_webassembly && v8_enable_lite_mode), if (v8_enable_pointer_compression == "") { v8_enable_pointer_compression = - v8_current_cpu == "arm64" || v8_current_cpu == "x64" + v8_current_cpu == "arm64" || v8_current_cpu == "x64" || + v8_current_cpu == "loong64" } # The Wasm interpreter is currently supported only on arm64 and x64, on diff --git a/deps/v8/include/DEPS b/deps/v8/include/DEPS index 21ce3d964593c8..cf5c54a1f3407f 100644 --- a/deps/v8/include/DEPS +++ b/deps/v8/include/DEPS @@ -5,6 +5,8 @@ include_rules = [ # Used by v8-cppgc.h to bridge to cppgc. "+cppgc/custom-space.h", "+cppgc/heap-statistics.h", + "+cppgc/internal/conditional-stack-allocated.h", "+cppgc/internal/write-barrier.h", "+cppgc/visitor.h", + "+perfetto", ] diff --git a/deps/v8/include/DIR_METADATA b/deps/v8/include/DIR_METADATA index a27ea1b53a3f53..d65ff2a39e5763 100644 --- a/deps/v8/include/DIR_METADATA +++ b/deps/v8/include/DIR_METADATA @@ -8,4 +8,7 @@ monorail { component: "Blink>JavaScript>API" -} \ No newline at end of file +} +buganizer_public: { + component_id: 1456124 +} diff --git a/deps/v8/include/OWNERS b/deps/v8/include/OWNERS index 9a2d99e8758559..be9fad30ae3e56 100644 --- a/deps/v8/include/OWNERS +++ b/deps/v8/include/OWNERS @@ -14,6 +14,8 @@ per-file js_protocol.pdl=file:../src/inspector/OWNERS per-file v8-inspector*=file:../src/inspector/OWNERS per-file v8-inspector*=file:../src/inspector/OWNERS +per-file v8-profiler.h=file:../src/profiler/OWNERS + # Needed by the auto_tag builder per-file v8-version.h=v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com diff --git a/deps/v8/include/cppgc/allocation.h b/deps/v8/include/cppgc/allocation.h index cdd3fd48f1fae6..3e70eff0ddf62c 100644 --- a/deps/v8/include/cppgc/allocation.h +++ b/deps/v8/include/cppgc/allocation.h @@ -44,8 +44,7 @@ class AllocationHandle; namespace internal { -// Similar to C++17 std::align_val_t; -enum class AlignVal : size_t {}; +using AlignVal = std::align_val_t; class MakeGarbageCollectedTraitInternal { protected: diff --git a/deps/v8/include/cppgc/ephemeron-pair.h b/deps/v8/include/cppgc/ephemeron-pair.h deleted file mode 100644 index e16cf1f0aa2acc..00000000000000 --- a/deps/v8/include/cppgc/ephemeron-pair.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2020 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef INCLUDE_CPPGC_EPHEMERON_PAIR_H_ -#define INCLUDE_CPPGC_EPHEMERON_PAIR_H_ - -#include "cppgc/liveness-broker.h" -#include "cppgc/member.h" - -namespace cppgc { - -/** - * An ephemeron pair is used to conditionally retain an object. - * The `value` will be kept alive only if the `key` is alive. - */ -template -struct EphemeronPair { - EphemeronPair(K* k, V* v) : key(k), value(v) {} - WeakMember key; - Member value; - - void ClearValueIfKeyIsDead(const LivenessBroker& broker) { - if (!broker.IsHeapObjectAlive(key)) value = nullptr; - } -}; - -} // namespace cppgc - -#endif // INCLUDE_CPPGC_EPHEMERON_PAIR_H_ diff --git a/deps/v8/include/cppgc/internal/api-constants.h b/deps/v8/include/cppgc/internal/api-constants.h index 8a0bb082fb9b20..f3b0d8571d3b9d 100644 --- a/deps/v8/include/cppgc/internal/api-constants.h +++ b/deps/v8/include/cppgc/internal/api-constants.h @@ -33,16 +33,6 @@ static constexpr uint16_t kFullyConstructedBitMask = uint16_t{1}; static constexpr size_t kPageSizeBits = 17; static constexpr size_t kPageSize = size_t{1} << kPageSizeBits; -#if defined(V8_HOST_ARCH_ARM64) && defined(V8_OS_DARWIN) -constexpr size_t kGuardPageSize = 0; -#elif defined(V8_HOST_ARCH_PPC64) -constexpr size_t kGuardPageSize = 0; -#elif defined(V8_HOST_ARCH_LOONG64) || defined(V8_HOST_ARCH_MIPS64) -constexpr size_t kGuardPageSize = 0; -#else -constexpr size_t kGuardPageSize = 4096; -#endif - static constexpr size_t kLargeObjectSizeThreshold = kPageSize / 2; #if defined(CPPGC_POINTER_COMPRESSION) @@ -54,12 +44,6 @@ constexpr unsigned kPointerCompressionShift = 1; #endif // !defined(CPPGC_POINTER_COMPRESSION) #if defined(CPPGC_CAGED_HEAP) -#if defined(CPPGC_2GB_CAGE) -constexpr size_t kCagedHeapDefaultReservationSize = - static_cast(2) * kGB; -constexpr size_t kCagedHeapMaxReservationSize = - kCagedHeapDefaultReservationSize; -#else // !defined(CPPGC_2GB_CAGE) constexpr size_t kCagedHeapDefaultReservationSize = static_cast(4) * kGB; #if defined(CPPGC_POINTER_COMPRESSION) @@ -69,7 +53,6 @@ constexpr size_t kCagedHeapMaxReservationSize = constexpr size_t kCagedHeapMaxReservationSize = kCagedHeapDefaultReservationSize; #endif // !defined(CPPGC_POINTER_COMPRESSION) -#endif // !defined(CPPGC_2GB_CAGE) constexpr size_t kCagedHeapReservationAlignment = kCagedHeapMaxReservationSize; #endif // defined(CPPGC_CAGED_HEAP) diff --git a/deps/v8/include/cppgc/internal/base-page-handle.h b/deps/v8/include/cppgc/internal/base-page-handle.h index 9c6907555e21d4..a5308dc343c15d 100644 --- a/deps/v8/include/cppgc/internal/base-page-handle.h +++ b/deps/v8/include/cppgc/internal/base-page-handle.h @@ -19,9 +19,7 @@ class BasePageHandle { public: static V8_INLINE BasePageHandle* FromPayload(void* payload) { return reinterpret_cast( - (reinterpret_cast(payload) & - ~(api_constants::kPageSize - 1)) + - api_constants::kGuardPageSize); + reinterpret_cast(payload) & ~(api_constants::kPageSize - 1)); } static V8_INLINE const BasePageHandle* FromPayload(const void* payload) { return FromPayload(const_cast(payload)); @@ -33,7 +31,7 @@ class BasePageHandle { protected: explicit BasePageHandle(HeapHandle& heap_handle) : heap_handle_(heap_handle) { CPPGC_DCHECK(reinterpret_cast(this) % api_constants::kPageSize == - api_constants::kGuardPageSize); + 0); } HeapHandle& heap_handle_; diff --git a/deps/v8/include/cppgc/internal/caged-heap-local-data.h b/deps/v8/include/cppgc/internal/caged-heap-local-data.h index 1eb87dfb538955..ad717d74426aae 100644 --- a/deps/v8/include/cppgc/internal/caged-heap-local-data.h +++ b/deps/v8/include/cppgc/internal/caged-heap-local-data.h @@ -77,11 +77,7 @@ class V8_EXPORT AgeTable final { __builtin_ctz(static_cast(kCardSizeInBytes)); #else //! V8_HAS_BUILTIN_CTZ // Hardcode and check with assert. -#if defined(CPPGC_2GB_CAGE) - 11; -#else // !defined(CPPGC_2GB_CAGE) 12; -#endif // !defined(CPPGC_2GB_CAGE) #endif // !V8_HAS_BUILTIN_CTZ static_assert((1 << kGranularityBits) == kCardSizeInBytes); const size_t entry = offset >> kGranularityBits; diff --git a/deps/v8/include/cppgc/internal/caged-heap.h b/deps/v8/include/cppgc/internal/caged-heap.h index 0c987a95447cc6..46fb529f633928 100644 --- a/deps/v8/include/cppgc/internal/caged-heap.h +++ b/deps/v8/include/cppgc/internal/caged-heap.h @@ -32,16 +32,12 @@ class V8_EXPORT CagedHeapBase { } V8_INLINE static bool AreWithinCage(const void* addr1, const void* addr2) { -#if defined(CPPGC_2GB_CAGE) - static constexpr size_t kHeapBaseShift = sizeof(uint32_t) * CHAR_BIT - 1; -#else //! defined(CPPGC_2GB_CAGE) #if defined(CPPGC_POINTER_COMPRESSION) static constexpr size_t kHeapBaseShift = 31 + api_constants::kPointerCompressionShift; #else // !defined(CPPGC_POINTER_COMPRESSION) static constexpr size_t kHeapBaseShift = sizeof(uint32_t) * CHAR_BIT; #endif // !defined(CPPGC_POINTER_COMPRESSION) -#endif //! defined(CPPGC_2GB_CAGE) static_assert((static_cast(1) << kHeapBaseShift) == api_constants::kCagedHeapMaxReservationSize); CPPGC_DCHECK(g_heap_base_); diff --git a/deps/v8/include/cppgc/internal/conditional-stack-allocated.h b/deps/v8/include/cppgc/internal/conditional-stack-allocated.h new file mode 100644 index 00000000000000..21c89378fd57da --- /dev/null +++ b/deps/v8/include/cppgc/internal/conditional-stack-allocated.h @@ -0,0 +1,41 @@ +// Copyright 2025 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef INCLUDE_CPPGC_INTERNAL_CONDITIONAL_STACK_ALLOCATED_H_ +#define INCLUDE_CPPGC_INTERNAL_CONDITIONAL_STACK_ALLOCATED_H_ + +#include + +#include "cppgc/macros.h" // NOLINT(build/include_directory) +#include "cppgc/type-traits.h" // NOLINT(build/include_directory) + +namespace cppgc { +namespace internal { + +// Base class that is marked as stack allocated if T is either marked as stack +// allocated or a traceable type. +template +class ConditionalStackAllocatedBase; + +template +concept RequiresStackAllocated = + !std::is_void_v && + (cppgc::IsStackAllocatedType || cppgc::internal::IsTraceableV || + cppgc::IsGarbageCollectedOrMixinTypeV); + +template + requires(RequiresStackAllocated) +class ConditionalStackAllocatedBase { + public: + CPPGC_STACK_ALLOCATED(); +}; + +template + requires(!RequiresStackAllocated) +class ConditionalStackAllocatedBase {}; + +} // namespace internal +} // namespace cppgc + +#endif // INCLUDE_CPPGC_INTERNAL_CONDITIONAL_STACK_ALLOCATED_H_ diff --git a/deps/v8/include/cppgc/internal/logging.h b/deps/v8/include/cppgc/internal/logging.h index 3a279fe0bef839..2129e85f2406e0 100644 --- a/deps/v8/include/cppgc/internal/logging.h +++ b/deps/v8/include/cppgc/internal/logging.h @@ -20,18 +20,18 @@ FatalImpl(const char*, const SourceLocation& = SourceLocation::Current()); template struct EatParams {}; -#if defined(DEBUG) +#ifdef CPPGC_ENABLE_API_CHECKS #define CPPGC_DCHECK_MSG(condition, message) \ do { \ if (V8_UNLIKELY(!(condition))) { \ ::cppgc::internal::DCheckImpl(message); \ } \ } while (false) -#else // !defined(DEBUG) +#else // !CPPGC_ENABLE_API_CHECKS #define CPPGC_DCHECK_MSG(condition, message) \ (static_cast(::cppgc::internal::EatParams(condition), message)>{})) -#endif // !defined(DEBUG) +#endif // !CPPGC_ENABLE_API_CHECKS #define CPPGC_DCHECK(condition) CPPGC_DCHECK_MSG(condition, #condition) diff --git a/deps/v8/include/cppgc/internal/member-storage.h b/deps/v8/include/cppgc/internal/member-storage.h index 2b5bfec4ed5cc1..f862740db65c65 100644 --- a/deps/v8/include/cppgc/internal/member-storage.h +++ b/deps/v8/include/cppgc/internal/member-storage.h @@ -10,6 +10,7 @@ #include #include "cppgc/internal/api-constants.h" +#include "cppgc/internal/caged-heap.h" #include "cppgc/internal/logging.h" #include "cppgc/sentinel-pointer.h" #include "v8config.h" // NOLINT(build/include_directory) @@ -71,11 +72,17 @@ class V8_EXPORT CageBaseGlobal final { class V8_TRIVIAL_ABI CompressedPointer final { public: + struct AtomicInitializerTag {}; + using IntegralType = uint32_t; static constexpr auto kWriteBarrierSlotType = WriteBarrierSlotType::kCompressed; V8_INLINE CompressedPointer() : value_(0u) {} + V8_INLINE explicit CompressedPointer(const void* value, + AtomicInitializerTag) { + StoreAtomic(value); + } V8_INLINE explicit CompressedPointer(const void* ptr) : value_(Compress(ptr)) {} V8_INLINE explicit CompressedPointer(std::nullptr_t) : value_(0u) {} @@ -139,17 +146,12 @@ class V8_TRIVIAL_ABI CompressedPointer final { CPPGC_DCHECK( (reinterpret_cast(ptr) & kPointerCompressionShiftMask) == 0); -#if defined(CPPGC_2GB_CAGE) - // Truncate the pointer. - auto compressed = - static_cast(reinterpret_cast(ptr)); -#else // !defined(CPPGC_2GB_CAGE) const auto uptr = reinterpret_cast(ptr); // Shift the pointer and truncate. auto compressed = static_cast( uptr >> api_constants::kPointerCompressionShift); -#endif // !defined(CPPGC_2GB_CAGE) - // Normal compressed pointers must have the MSB set. + // Normal compressed pointers must have the MSB set. This is guaranteed by + // the cage alignment. CPPGC_DCHECK((!compressed || compressed == kCompressedSentinel) || (compressed & (1 << 31))); return compressed; @@ -164,43 +166,77 @@ class V8_TRIVIAL_ABI CompressedPointer final { static V8_INLINE void* Decompress(IntegralType ptr, uintptr_t base) { CPPGC_DCHECK(CageBaseGlobal::IsSet()); CPPGC_DCHECK(base == CageBaseGlobal::Get()); - // Treat compressed pointer as signed and cast it to uint64_t, which will - // sign-extend it. -#if defined(CPPGC_2GB_CAGE) - const uint64_t mask = static_cast(static_cast(ptr)); -#else // !defined(CPPGC_2GB_CAGE) - // Then, shift the result. It's important to shift the unsigned - // value, as otherwise it would result in undefined behavior. + // Sign-extend compressed pointer to full width. This ensure that normal + // pointers have only 1s in the base part of the address. It's also + // important to shift the unsigned value, as otherwise it would result in + // undefined behavior. const uint64_t mask = static_cast(static_cast(ptr)) << api_constants::kPointerCompressionShift; -#endif // !defined(CPPGC_2GB_CAGE) + // Set the base part of the address for normal compressed pointers. Note + // that nullptr and the sentinel value do not have 1s in the base part and + // remain as-is in this operation. return reinterpret_cast(mask & base); } + // For a given memory `address`, this method iterates all possible pointers + // that can be reasonably recovered with the current compression scheme and + // passes them to `callback`. + template + static V8_INLINE void VisitPossiblePointers(const void* address, + Callback callback); + private: -#if defined(CPPGC_2GB_CAGE) - static constexpr IntegralType kCompressedSentinel = - SentinelPointer::kSentinelValue; -#else // !defined(CPPGC_2GB_CAGE) static constexpr IntegralType kCompressedSentinel = SentinelPointer::kSentinelValue >> api_constants::kPointerCompressionShift; -#endif // !defined(CPPGC_2GB_CAGE) // All constructors initialize `value_`. Do not add a default value here as it // results in a non-atomic write on some builds, even when the atomic version // of the constructor is used. IntegralType value_; }; +template +// static +void CompressedPointer::VisitPossiblePointers(const void* address, + Callback callback) { + const uintptr_t base = CageBaseGlobal::Get(); + CPPGC_DCHECK(base); + // We may have random compressed pointers on stack (e.g. due to inlined + // collections). These could be present in both halfwords. + const uint32_t compressed_low = + static_cast(reinterpret_cast(address)); + callback(CompressedPointer::Decompress(compressed_low, base)); + const uint32_t compressed_high = static_cast( + reinterpret_cast(address) >> (sizeof(uint32_t) * CHAR_BIT)); + callback(CompressedPointer::Decompress(compressed_high, base)); + // Iterate possible intermediate values, see `Decompress()`. The intermediate + // value of decompressing is a 64-bit value where 35 bits are the offset. We + // don't assume sign extension is stored and recover that part. + // + // Note that this case conveniently also recovers the full pointer. + static constexpr uintptr_t kBitForIntermediateValue = + (sizeof(uint32_t) * CHAR_BIT) + api_constants::kPointerCompressionShift; + static constexpr uintptr_t kSignExtensionMask = + ~((uintptr_t{1} << kBitForIntermediateValue) - 1); + const uintptr_t intermediate_sign_extended = + reinterpret_cast(address) | kSignExtensionMask; + callback(reinterpret_cast(intermediate_sign_extended & base)); +} + #endif // defined(CPPGC_POINTER_COMPRESSION) class V8_TRIVIAL_ABI RawPointer final { public: + struct AtomicInitializerTag {}; + using IntegralType = uintptr_t; static constexpr auto kWriteBarrierSlotType = WriteBarrierSlotType::kUncompressed; V8_INLINE RawPointer() : ptr_(nullptr) {} + V8_INLINE explicit RawPointer(const void* ptr, AtomicInitializerTag) { + StoreAtomic(ptr); + } V8_INLINE explicit RawPointer(const void* ptr) : ptr_(ptr) {} V8_INLINE const void* Load() const { return ptr_; } @@ -243,6 +279,13 @@ class V8_TRIVIAL_ABI RawPointer final { return a.ptr_ >= b.ptr_; } + template + static V8_INLINE void VisitPossiblePointers(const void* address, + Callback callback) { + // Pass along the full pointer. + return callback(const_cast(address)); + } + private: // All constructors initialize `ptr_`. Do not add a default value here as it // results in a non-atomic write on some builds, even when the atomic version diff --git a/deps/v8/include/cppgc/internal/persistent-node.h b/deps/v8/include/cppgc/internal/persistent-node.h index d22692a768c49f..413ddd9189b049 100644 --- a/deps/v8/include/cppgc/internal/persistent-node.h +++ b/deps/v8/include/cppgc/internal/persistent-node.h @@ -18,6 +18,7 @@ namespace internal { class CrossThreadPersistentRegion; class FatalOutOfMemoryHandler; +class HeapBase; class RootVisitor; // PersistentNode represents a variant of two states: @@ -133,10 +134,14 @@ class V8_EXPORT PersistentRegionBase { }; // Variant of PersistentRegionBase that checks whether the allocation and -// freeing happens only on the thread that created the region. +// freeing happens only on the thread that created the heap. class V8_EXPORT PersistentRegion final : public PersistentRegionBase { public: - explicit PersistentRegion(const FatalOutOfMemoryHandler&); + V8_INLINE PersistentRegion(const HeapBase& heap, + const FatalOutOfMemoryHandler& oom_handler) + : PersistentRegionBase(oom_handler), heap_(heap) { + CPPGC_DCHECK(IsCreationThread()); + } // Clears Persistent fields to avoid stale pointers after heap teardown. ~PersistentRegion() = default; @@ -161,7 +166,7 @@ class V8_EXPORT PersistentRegion final : public PersistentRegionBase { private: bool IsCreationThread(); - int creation_thread_id_; + const HeapBase& heap_; }; // CrossThreadPersistent uses PersistentRegionBase but protects it using this diff --git a/deps/v8/include/cppgc/internal/pointer-policies.h b/deps/v8/include/cppgc/internal/pointer-policies.h index 06fa884f49f34b..bba484237da466 100644 --- a/deps/v8/include/cppgc/internal/pointer-policies.h +++ b/deps/v8/include/cppgc/internal/pointer-policies.h @@ -28,13 +28,19 @@ class WeakMemberTag; class UntracedMemberTag; struct DijkstraWriteBarrierPolicy { - V8_INLINE static void InitializingBarrier(const void*, const void*) { // Since in initializing writes the source object is always white, having no // barrier doesn't break the tri-color invariant. - } + V8_INLINE static void InitializingBarrier(const void*, const void*) {} + V8_INLINE static void InitializingBarrier(const void*, RawPointer storage) { + } +#if defined(CPPGC_POINTER_COMPRESSION) + V8_INLINE static void InitializingBarrier(const void*, + CompressedPointer storage) {} +#endif - template - V8_INLINE static void AssigningBarrier(const void* slot, const void* value) { + template + V8_INLINE static void AssigningBarrier(const void* slot, + const void* value) { #ifdef CPPGC_SLIM_WRITE_BARRIER if (V8_UNLIKELY(WriteBarrier::IsEnabled())) WriteBarrier::CombinedWriteBarrierSlow(slot); @@ -44,7 +50,7 @@ struct DijkstraWriteBarrierPolicy { WriteBarrier::GetWriteBarrierType(slot, value, params); WriteBarrier(type, params, slot, value); #endif // !CPPGC_SLIM_WRITE_BARRIER - } + } template V8_INLINE static void AssigningBarrier(const void* slot, RawPointer storage) { @@ -101,6 +107,11 @@ struct DijkstraWriteBarrierPolicy { struct NoWriteBarrierPolicy { V8_INLINE static void InitializingBarrier(const void*, const void*) {} + V8_INLINE static void InitializingBarrier(const void*, RawPointer storage) {} +#if defined(CPPGC_POINTER_COMPRESSION) + V8_INLINE static void InitializingBarrier(const void*, + CompressedPointer storage) {} +#endif template V8_INLINE static void AssigningBarrier(const void*, const void*) {} template @@ -119,10 +130,29 @@ template class V8_EXPORT SameThreadEnabledCheckingPolicy : private SameThreadEnabledCheckingPolicyBase { protected: + template + V8_INLINE void CheckPointer(RawPointer raw_pointer) { + if (raw_pointer.IsCleared() || raw_pointer.IsSentinel()) { + return; + } + CheckPointersImplTrampoline::Call( + this, static_cast(raw_pointer.Load())); + } +#if defined(CPPGC_POINTER_COMPRESSION) + template + V8_INLINE void CheckPointer(CompressedPointer compressed_pointer) { + if (compressed_pointer.IsCleared() || compressed_pointer.IsSentinel()) { + return; + } + CheckPointersImplTrampoline::Call( + this, static_cast(compressed_pointer.Load())); + } +#endif template void CheckPointer(const T* ptr) { - if (!ptr || (kSentinelPointer == ptr)) return; - + if (!ptr || (kSentinelPointer == ptr)) { + return; + } CheckPointersImplTrampoline::Call(this, ptr); } @@ -145,20 +175,27 @@ class V8_EXPORT SameThreadEnabledCheckingPolicy class DisabledCheckingPolicy { protected: - V8_INLINE void CheckPointer(const void*) {} + template + V8_INLINE void CheckPointer(T*) {} + template + V8_INLINE void CheckPointer(RawPointer) {} +#if defined(CPPGC_POINTER_COMPRESSION) + template + V8_INLINE void CheckPointer(CompressedPointer) {} +#endif }; -#ifdef DEBUG +#ifdef CPPGC_ENABLE_SLOW_API_CHECKS // Off heap members are not connected to object graph and thus cannot ressurect // dead objects. using DefaultMemberCheckingPolicy = SameThreadEnabledCheckingPolicy; using DefaultPersistentCheckingPolicy = SameThreadEnabledCheckingPolicy; -#else // !DEBUG +#else // !CPPGC_ENABLE_SLOW_API_CHECKS using DefaultMemberCheckingPolicy = DisabledCheckingPolicy; using DefaultPersistentCheckingPolicy = DisabledCheckingPolicy; -#endif // !DEBUG +#endif // !CPPGC_ENABLE_SLOW_API_CHECKS // For CT(W)P neither marking information (for value), nor objectstart bitmap // (for slot) are guaranteed to be present because there's no synchronization // between heaps after marking. diff --git a/deps/v8/include/cppgc/macros.h b/deps/v8/include/cppgc/macros.h index a9ac22d7af0d0b..10a6f8eba8e47a 100644 --- a/deps/v8/include/cppgc/macros.h +++ b/deps/v8/include/cppgc/macros.h @@ -11,10 +11,18 @@ namespace cppgc { +#define CPPGC_DISALLOW_NEW() \ + public: \ + using IsDisallowNewMarker CPPGC_UNUSED = int; \ + void* operator new(size_t, void* location) { return location; } \ + void* operator new(size_t) = delete; \ + static_assert(true, "Force semicolon.") + // Use CPPGC_STACK_ALLOCATED if the object is only stack allocated. // Add the CPPGC_STACK_ALLOCATED_IGNORE annotation on a case-by-case basis when // enforcement of CPPGC_STACK_ALLOCATED should be suppressed. #if defined(__clang__) + #define CPPGC_STACK_ALLOCATED() \ public: \ using IsStackAllocatedTypeMarker CPPGC_UNUSED = int; \ @@ -23,13 +31,26 @@ namespace cppgc { void* operator new(size_t) = delete; \ void* operator new(size_t, void*) = delete; \ static_assert(true, "Force semicolon.") + #define CPPGC_STACK_ALLOCATED_IGNORE(bug_or_reason) \ __attribute__((annotate("stack_allocated_ignore"))) + +#define CPPGC_PLUGIN_IGNORE(bug_or_reason) \ + __attribute__((annotate("blink_gc_plugin_ignore"), \ + annotate("stack_allocated_ignore"))) + #else // !defined(__clang__) + #define CPPGC_STACK_ALLOCATED() static_assert(true, "Force semicolon.") #define CPPGC_STACK_ALLOCATED_IGNORE(bug_or_reason) +#define CPPGC_PLUGIN_IGNORE(bug_or_reason) + #endif // !defined(__clang__) +template +concept IsStackAllocatedType = + requires { typename T::IsStackAllocatedTypeMarker; }; + } // namespace cppgc #endif // INCLUDE_CPPGC_MACROS_H_ diff --git a/deps/v8/include/cppgc/member.h b/deps/v8/include/cppgc/member.h index 457f163bc78eab..c82688d582a8d8 100644 --- a/deps/v8/include/cppgc/member.h +++ b/deps/v8/include/cppgc/member.h @@ -38,9 +38,8 @@ class V8_TRIVIAL_ABI MemberBase { V8_INLINE MemberBase() = default; V8_INLINE explicit MemberBase(const void* value) : raw_(value) {} - V8_INLINE MemberBase(const void* value, AtomicInitializerTag) { - SetRawAtomic(value); - } + V8_INLINE MemberBase(const void* value, AtomicInitializerTag) + : raw_(value, typename RawStorage::AtomicInitializerTag{}) {} V8_INLINE explicit MemberBase(RawStorage raw) : raw_(raw) {} V8_INLINE explicit MemberBase(std::nullptr_t) : raw_(nullptr) {} @@ -87,7 +86,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, V8_INLINE BasicMember(SentinelPointer s) : Base(s) {} // NOLINT V8_INLINE BasicMember(T* raw) : Base(raw) { // NOLINT InitializingWriteBarrier(raw); - this->CheckPointer(Get()); + CheckPointer(raw); } V8_INLINE BasicMember(T& raw) // NOLINT : BasicMember(&raw) {} @@ -103,7 +102,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, V8_INLINE BasicMember(T* raw, AtomicInitializerTag atomic) : Base(raw, atomic) { InitializingWriteBarrier(raw); - this->CheckPointer(Get()); + CheckPointer(raw); } V8_INLINE BasicMember(T& raw, AtomicInitializerTag atomic) : BasicMember(&raw, atomic) {} @@ -117,7 +116,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, // need to be adjusted. template >* = nullptr> + std::enable_if_t>* = nullptr> V8_INLINE BasicMember( // NOLINT const BasicMember& other) @@ -125,7 +124,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, template >* = nullptr> + std::enable_if_t>* = nullptr> V8_INLINE BasicMember( // NOLINT const BasicMember& other) @@ -142,7 +141,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, // need to be adjusted. template >* = nullptr> + std::enable_if_t>* = nullptr> V8_INLINE BasicMember( BasicMember&& other) noexcept @@ -152,7 +151,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, template >* = nullptr> + std::enable_if_t>* = nullptr> V8_INLINE BasicMember( BasicMember&& other) noexcept @@ -183,10 +182,10 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, V8_INLINE BasicMember& operator=( const BasicMember& other) { - if constexpr (internal::IsDecayedSameV) { + if constexpr (IsDecayedSameV) { return operator=(other.GetRawStorage()); } else { - static_assert(internal::IsStrictlyBaseOfV); + static_assert(IsStrictlyBaseOfV); return operator=(other.Get()); } } @@ -206,10 +205,10 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, V8_INLINE BasicMember& operator=( BasicMember&& other) noexcept { - if constexpr (internal::IsDecayedSameV) { + if constexpr (IsDecayedSameV) { operator=(other.GetRawStorage()); } else { - static_assert(internal::IsStrictlyBaseOfV); + static_assert(IsStrictlyBaseOfV); operator=(other.Get()); } other.Clear(); @@ -231,7 +230,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, V8_INLINE BasicMember& operator=(T* other) { Base::SetRawAtomic(other); AssigningWriteBarrier(other); - this->CheckPointer(Get()); + CheckPointer(other); return *this; } @@ -270,9 +269,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, return static_cast(const_cast(Base::GetRaw())); } - V8_INLINE void Clear() { - Base::SetRawStorageAtomic(RawStorage{}); - } + V8_INLINE void Clear() { Base::SetRawStorageAtomic(RawStorage{}); } V8_INLINE T* Release() { T* result = Get(); @@ -284,20 +281,18 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, return reinterpret_cast(Base::GetRawSlot()); } - V8_INLINE RawStorage GetRawStorage() const { - return Base::GetRawStorage(); - } + V8_INLINE RawStorage GetRawStorage() const { return Base::GetRawStorage(); } private: V8_INLINE explicit BasicMember(RawStorage raw) : Base(raw) { - InitializingWriteBarrier(Get()); - this->CheckPointer(Get()); + InitializingWriteBarrier(); + CheckPointer(); } V8_INLINE BasicMember& operator=(RawStorage other) { Base::SetRawStorageAtomic(other); AssigningWriteBarrier(); - this->CheckPointer(Get()); + CheckPointer(); return *this; } @@ -308,6 +303,10 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, V8_INLINE void InitializingWriteBarrier(T* value) const { WriteBarrierPolicy::InitializingBarrier(Base::GetRawSlot(), value); } + V8_INLINE void InitializingWriteBarrier() const { + WriteBarrierPolicy::InitializingBarrier(Base::GetRawSlot(), + Base::GetRawStorage()); + } V8_INLINE void AssigningWriteBarrier(T* value) const { WriteBarrierPolicy::template AssigningBarrier< StorageType::kWriteBarrierSlotType>(Base::GetRawSlot(), value); @@ -317,6 +316,12 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, StorageType::kWriteBarrierSlotType>(Base::GetRawSlot(), Base::GetRawStorage()); } + V8_INLINE void CheckPointer(T* value) { + CheckingPolicy::template CheckPointer(value); + } + V8_INLINE void CheckPointer() { + CheckingPolicy::template CheckPointer(Base::GetRawStorage()); + } V8_INLINE void ClearFromGC() const { Base::ClearFromGC(); } @@ -341,12 +346,11 @@ V8_INLINE bool operator==( StorageType>& member1, const BasicMember& member2) { - if constexpr (internal::IsDecayedSameV) { + if constexpr (IsDecayedSameV) { // Check compressed pointers if types are the same. return member1.GetRawStorage() == member2.GetRawStorage(); } else { - static_assert(internal::IsStrictlyBaseOfV || - internal::IsStrictlyBaseOfV); + static_assert(IsStrictlyBaseOfV || IsStrictlyBaseOfV); // Otherwise, check decompressed pointers. return member1.Get() == member2.Get(); } @@ -372,12 +376,12 @@ V8_INLINE bool operator==( StorageType>& member, U* raw) { // Never allow comparison with erased pointers. - static_assert(!internal::IsDecayedSameV); + static_assert(!IsDecayedSameV); - if constexpr (internal::IsDecayedSameV) { + if constexpr (IsDecayedSameV) { // Check compressed pointers if types are the same. return member.GetRawStorage() == StorageType(raw); - } else if constexpr (internal::IsStrictlyBaseOfV) { + } else if constexpr (IsStrictlyBaseOfV) { // Cast the raw pointer to T, which may adjust the pointer. return member.GetRawStorage() == StorageType(static_cast(raw)); } else { @@ -494,7 +498,7 @@ V8_INLINE bool operator<( const BasicMember& member2) { static_assert( - internal::IsDecayedSameV, + IsDecayedSameV, "Comparison works only for same pointer type modulo cv-qualifiers"); return member1.GetRawStorage() < member2.GetRawStorage(); } @@ -509,7 +513,7 @@ V8_INLINE bool operator<=( const BasicMember& member2) { static_assert( - internal::IsDecayedSameV, + IsDecayedSameV, "Comparison works only for same pointer type modulo cv-qualifiers"); return member1.GetRawStorage() <= member2.GetRawStorage(); } @@ -524,7 +528,7 @@ V8_INLINE bool operator>( const BasicMember& member2) { static_assert( - internal::IsDecayedSameV, + IsDecayedSameV, "Comparison works only for same pointer type modulo cv-qualifiers"); return member1.GetRawStorage() > member2.GetRawStorage(); } @@ -539,16 +543,15 @@ V8_INLINE bool operator>=( const BasicMember& member2) { static_assert( - internal::IsDecayedSameV, + IsDecayedSameV, "Comparison works only for same pointer type modulo cv-qualifiers"); return member1.GetRawStorage() >= member2.GetRawStorage(); } template -struct IsWeak> - : std::true_type {}; +struct IsWeak> : std::true_type {}; } // namespace internal @@ -626,4 +629,35 @@ static constexpr size_t kSizeofCompressedMember = } // namespace cppgc +// Mark `BasicMember` and `T*` as having a common reference type of `T*` (the +// type to which both can be converted or bound). This makes them satisfy +// `std::equality_comparable`, which allows usage like the following: +// ``` +// HeapVector> v; +// T* e; +// auto it = std::ranges::find(v, e); +// ``` +// Without this, the `find()` call above would fail to compile with an error +// about being unable to invoke `std::ranges::equal_to()`. +template typename TQ, template typename UQ> +struct std::basic_common_reference< + cppgc::internal::BasicMember, + T*, TQ, UQ> { + using type = T*; +}; + +template typename TQ, template typename UQ> +struct std::basic_common_reference< + T*, + cppgc::internal::BasicMember, + TQ, UQ> { + using type = T*; +}; + #endif // INCLUDE_CPPGC_MEMBER_H_ diff --git a/deps/v8/include/cppgc/name-provider.h b/deps/v8/include/cppgc/name-provider.h index ec512441472d47..849176fde0fc45 100644 --- a/deps/v8/include/cppgc/name-provider.h +++ b/deps/v8/include/cppgc/name-provider.h @@ -55,6 +55,9 @@ class V8_EXPORT NameProvider { * Specifies a name for the garbage-collected object. Such names will never * be hidden, as they are explicitly specified by the user of this API. * + * Implementations of this function must not allocate garbage-collected + * objects or otherwise modify the cppgc heap. + * * V8 may call this function while generating a heap snapshot or at other * times. If V8 is currently generating a heap snapshot (according to * HeapProfiler::IsTakingSnapshot), then the returned string must stay alive diff --git a/deps/v8/include/cppgc/platform.h b/deps/v8/include/cppgc/platform.h index a5eccfa80fe812..917fa25e064c56 100644 --- a/deps/v8/include/cppgc/platform.h +++ b/deps/v8/include/cppgc/platform.h @@ -136,6 +136,8 @@ class V8_EXPORT Platform { virtual TracingController* GetTracingController(); }; +V8_EXPORT bool IsInitialized(); + /** * Process-global initialization of the garbage collector. Must be called before * creating a Heap. diff --git a/deps/v8/include/cppgc/type-traits.h b/deps/v8/include/cppgc/type-traits.h index c595deca7f2520..1685c31dfda5ec 100644 --- a/deps/v8/include/cppgc/type-traits.h +++ b/deps/v8/include/cppgc/type-traits.h @@ -9,6 +9,7 @@ // against Oilpan types without including any other parts. #include #include +#include namespace cppgc { diff --git a/deps/v8/include/cppgc/visitor.h b/deps/v8/include/cppgc/visitor.h index 1d6b39a14fd16a..e0b1d19beb35ac 100644 --- a/deps/v8/include/cppgc/visitor.h +++ b/deps/v8/include/cppgc/visitor.h @@ -8,12 +8,12 @@ #include #include "cppgc/custom-space.h" -#include "cppgc/ephemeron-pair.h" #include "cppgc/garbage-collected.h" #include "cppgc/internal/logging.h" #include "cppgc/internal/member-storage.h" #include "cppgc/internal/pointer-policies.h" #include "cppgc/liveness-broker.h" +#include "cppgc/macros.h" #include "cppgc/member.h" #include "cppgc/sentinel-pointer.h" #include "cppgc/source-location.h" @@ -36,6 +36,25 @@ class VisitorFactory; using WeakCallback = void (*)(const LivenessBroker&, const void*); +/** + * An ephemeron pair is used to conditionally retain an object. + * The `value` will be kept alive only if the `key` is alive. + */ +template +struct EphemeronPair { + CPPGC_DISALLOW_NEW(); + + EphemeronPair(K* k, V* v) : key(k), value(v) {} + WeakMember key; + Member value; + + void ClearValueIfKeyIsDead(const LivenessBroker& broker) { + if (!broker.IsHeapObjectAlive(key)) value = nullptr; + } + + void Trace(Visitor* visitor) const; +}; + /** * Visitor passed to trace methods. All managed pointers must have called the * Visitor's trace method on them. @@ -436,6 +455,11 @@ class V8_EXPORT Visitor { friend class internal::VisitorBase; }; +template +void EphemeronPair::Trace(Visitor* visitor) const { + visitor->TraceEphemeron(key, value); +} + namespace internal { class V8_EXPORT RootVisitor { diff --git a/deps/v8/include/js_protocol.pdl b/deps/v8/include/js_protocol.pdl index 8dad9c98de9f6e..e33cdae701a128 100644 --- a/deps/v8/include/js_protocol.pdl +++ b/deps/v8/include/js_protocol.pdl @@ -369,6 +369,14 @@ domain Debugger # call stacks (default). integer maxDepth + # Replace previous blackbox execution contexts with passed ones. Forces backend to skip + # stepping/pausing in scripts in these execution contexts. VM will try to leave blackboxed script by + # performing 'step in' several times, finally resorting to 'step out' if unsuccessful. + experimental command setBlackboxExecutionContexts + parameters + # Array of execution context unique ids for the debugger to ignore. + array of string uniqueIds + # Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in # scripts with url matching one of the patterns. VM will try to leave blackboxed script by # performing 'step in' several times, finally resorting to 'step out' if unsuccessful. @@ -376,6 +384,8 @@ domain Debugger parameters # Array of regexps that will be used to check script url for blackbox state. array of string patterns + # If true, also ignore scripts with no source url. + optional boolean skipAnonymous # Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted # scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. @@ -554,7 +564,8 @@ domain Debugger experimental optional array of LocationRange skipList # Fired when breakpoint is resolved to an actual script and location. - event breakpointResolved + # Deprecated in favor of `resolvedBreakpoints` in the `scriptParsed` event. + deprecated event breakpointResolved parameters # Breakpoint unique identifier. BreakpointId breakpointId @@ -606,13 +617,19 @@ domain Debugger properties # Type of the debug symbols. enum type - None SourceMap EmbeddedDWARF ExternalDWARF # URL of the external symbol source. optional string externalURL + type ResolvedBreakpoint extends object + properties + # Breakpoint unique identifier. + BreakpointId breakpointId + # Actual breakpoint location. + Location location + # Fired when virtual machine fails to parse the script. event scriptFailedToParse parameters @@ -632,6 +649,8 @@ domain Debugger Runtime.ExecutionContextId executionContextId # Content hash of the script, SHA-256. string hash + # For Wasm modules, the content of the `build_id` custom section. + string buildId # Embedder-specific auxiliary data likely matching {isDefault: boolean, type: 'default'|'isolated'|'worker', frameId: string} optional object executionContextAuxData # URL of source map associated with script (if any). @@ -671,6 +690,8 @@ domain Debugger Runtime.ExecutionContextId executionContextId # Content hash of the script, SHA-256. string hash + # For Wasm modules, the content of the `build_id` custom section. + string buildId # Embedder-specific auxiliary data likely matching {isDefault: boolean, type: 'default'|'isolated'|'worker', frameId: string} optional object executionContextAuxData # True, if this script is generated as a result of the live edit operation. @@ -689,10 +710,14 @@ domain Debugger experimental optional integer codeOffset # The language of the script. experimental optional Debugger.ScriptLanguage scriptLanguage - # If the scriptLanguage is WebASsembly, the source of debug symbols for the module. - experimental optional Debugger.DebugSymbols debugSymbols + # If the scriptLanguage is WebAssembly, the source of debug symbols for the module. + experimental optional array of Debugger.DebugSymbols debugSymbols # The name the embedder supplied for this script. experimental optional string embedderName + # The list of set breakpoints in this script if calls to `setBreakpointByUrl` + # matches this script's URL or hash. Clients that use this list can ignore the + # `breakpointResolved` event. They are equivalent. + experimental optional array of ResolvedBreakpoint resolvedBreakpoints experimental domain HeapProfiler depends on Runtime @@ -1547,10 +1572,14 @@ domain Runtime # It is the total usage of the corresponding isolate not scoped to a particular Runtime. experimental command getHeapUsage returns - # Used heap size in bytes. + # Used JavaScript heap size in bytes. number usedSize - # Allocated heap size in bytes. + # Allocated JavaScript heap size in bytes. number totalSize + # Used size in bytes in the embedder's garbage-collected heap. + number embedderHeapUsedSize + # Size in bytes of backing storage for array buffers and external strings. + number backingStorageSize # Returns properties of a given object. Object group of the result is inherited from the target # object. diff --git a/deps/v8/include/libplatform/libplatform-export.h b/deps/v8/include/libplatform/libplatform-export.h index 15618434977d93..285db86ab42cc4 100644 --- a/deps/v8/include/libplatform/libplatform-export.h +++ b/deps/v8/include/libplatform/libplatform-export.h @@ -18,11 +18,11 @@ #else // defined(_WIN32) // Setup for Linux shared library export. -#ifdef BUILDING_V8_PLATFORM_SHARED +#if defined(BUILDING_V8_PLATFORM_SHARED) || USING_V8_PLATFORM_SHARED #define V8_PLATFORM_EXPORT __attribute__((visibility("default"))) #else #define V8_PLATFORM_EXPORT -#endif +#endif // defined(BUILDING_V8_PLATFORM_SHARED) || ... #endif // defined(_WIN32) diff --git a/deps/v8/include/libplatform/v8-tracing.h b/deps/v8/include/libplatform/v8-tracing.h index 6039a9c520b6a3..2271729240b9cb 100644 --- a/deps/v8/include/libplatform/v8-tracing.h +++ b/deps/v8/include/libplatform/v8-tracing.h @@ -6,7 +6,6 @@ #define V8_LIBPLATFORM_V8_TRACING_H_ #include -#include #include #include #include diff --git a/deps/v8/include/v8-array-buffer.h b/deps/v8/include/v8-array-buffer.h index 0a3d8170f68214..1d93457628cf0c 100644 --- a/deps/v8/include/v8-array-buffer.h +++ b/deps/v8/include/v8-array-buffer.h @@ -10,13 +10,20 @@ #include #include "v8-local-handle.h" // NOLINT(build/include_directory) +#include "v8-memory-span.h" // NOLINT(build/include_directory) #include "v8-object.h" // NOLINT(build/include_directory) +#include "v8-platform.h" // NOLINT(build/include_directory) #include "v8config.h" // NOLINT(build/include_directory) namespace v8 { class SharedArrayBuffer; +#if defined(V8_COMPRESS_POINTERS) && \ + !defined(V8_COMPRESS_POINTERS_IN_SHARED_CAGE) +class IsolateGroup; +#endif + #ifndef V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT // Defined using gn arg `v8_array_buffer_internal_field_count`. #define V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT 2 @@ -24,6 +31,7 @@ class SharedArrayBuffer; enum class ArrayBufferCreationMode { kInternalized, kExternalized }; enum class BackingStoreInitializationMode { kZeroInitialized, kUninitialized }; +enum class BackingStoreOnFailureMode { kReturnNull, kOutOfMemory }; /** * A wrapper around the backing store (i.e. the raw memory) of an array buffer. @@ -83,18 +91,6 @@ class V8_EXPORT BackingStore : public v8::internal::BackingStoreBase { */ void operator delete(void* ptr) { ::operator delete(ptr); } - /** - * Wrapper around ArrayBuffer::Allocator::Reallocate that preserves IsShared. - * Assumes that the backing_store was allocated by the ArrayBuffer allocator - * of the given isolate. - */ - V8_DEPRECATED( - "Reallocate is unsafe, please do not use. Please allocate a new " - "BackingStore and copy instead.") - static std::unique_ptr Reallocate( - v8::Isolate* isolate, std::unique_ptr backing_store, - size_t byte_length); - /** * This callback is used only if the memory block for a BackingStore cannot be * allocated with an ArrayBuffer::Allocator. In such cases the destructor of @@ -172,21 +168,13 @@ class V8_EXPORT ArrayBuffer : public Object { virtual void Free(void* data, size_t length) = 0; /** - * Reallocate the memory block of size |old_length| to a memory block of - * size |new_length| by expanding, contracting, or copying the existing - * memory block. If |new_length| > |old_length|, then the new part of - * the memory must be initialized to zeros. Return nullptr if reallocation - * is not successful. - * - * The caller guarantees that the memory block was previously allocated - * using Allocate or AllocateUninitialized. - * - * The default implementation allocates a new block and copies data. + * Returns a size_t that determines the largest ArrayBuffer that can be + * allocated. Override if your Allocator is more restrictive than the + * default. Will only be called once, and the value returned will be + * cached. + * Should not return a value that is larger than kMaxByteLength. */ - V8_DEPRECATED( - "Reallocate is unsafe, please do not use. Please allocate new memory " - "and copy instead.") - virtual void* Reallocate(void* data, size_t old_length, size_t new_length); + virtual size_t MaxAllocationSize() const { return kMaxByteLength; } /** * ArrayBuffer allocation mode. kNormal is a malloc/free style allocation, @@ -195,11 +183,37 @@ class V8_EXPORT ArrayBuffer : public Object { */ enum class AllocationMode { kNormal, kReservation }; + /** + * Returns page allocator used by this Allocator instance. + * + * When the sandbox used by Allocator it is expected that this returns + * sandbox's page allocator. + * Otherwise, it should return system page allocator. + */ + virtual PageAllocator* GetPageAllocator() { return nullptr; } + +#if defined(V8_COMPRESS_POINTERS) && \ + !defined(V8_COMPRESS_POINTERS_IN_SHARED_CAGE) /** * Convenience allocator. * * When the sandbox is enabled, this allocator will allocate its backing - * memory inside the sandbox. Otherwise, it will rely on malloc/free. + * memory inside the sandbox that belongs to passed isolate group. + * Otherwise, it will rely on malloc/free. + * + * Caller takes ownership, i.e. the returned object needs to be freed using + * |delete allocator| once it is no longer in use. + */ + static Allocator* NewDefaultAllocator(const IsolateGroup& group); +#endif // defined(V8_COMPRESS_POINTERS) && + // !defined(V8_COMPRESS_POINTERS_IN_SHARED_CAGE) + + /** + * Convenience allocator. + * + * When the sandbox is enabled, this allocator will allocate its backing + * memory inside the default global sandbox. Otherwise, it will rely on + * malloc/free. * * Caller takes ownership, i.e. the returned object needs to be freed using * |delete allocator| once it is no longer in use. @@ -217,6 +231,18 @@ class V8_EXPORT ArrayBuffer : public Object { */ size_t MaxByteLength() const; + /** + * Attempt to create a new ArrayBuffer. Allocate |byte_length| bytes. + * Allocated memory will be owned by a created ArrayBuffer and + * will be deallocated when it is garbage-collected, + * unless the object is externalized. If allocation fails, the Maybe + * returned will be empty. + */ + static MaybeLocal MaybeNew( + Isolate* isolate, size_t byte_length, + BackingStoreInitializationMode initialization_mode = + BackingStoreInitializationMode::kZeroInitialized); + /** * Create a new ArrayBuffer. Allocate |byte_length| bytes, which are either * zero-initialized or uninitialized. Allocated memory will be owned by a @@ -246,17 +272,25 @@ class V8_EXPORT ArrayBuffer : public Object { /** * Returns a new standalone BackingStore that is allocated using the array * buffer allocator of the isolate. The allocation can either be zero - * intialized, or uninitialized. The result can be later passed to + * initialized, or uninitialized. The result can be later passed to * ArrayBuffer::New. * * If the allocator returns nullptr, then the function may cause GCs in the - * given isolate and re-try the allocation. If GCs do not help, then the + * given isolate and re-try the allocation. + * + * If GCs do not help and on_failure is kOutOfMemory, then the * function will crash with an out-of-memory error. + * + * Otherwise if GCs do not help (or the allocation is too large for GCs to + * help) and on_failure is kReturnNull, then a null result is returned. */ static std::unique_ptr NewBackingStore( Isolate* isolate, size_t byte_length, BackingStoreInitializationMode initialization_mode = - BackingStoreInitializationMode::kZeroInitialized); + BackingStoreInitializationMode::kZeroInitialized, + BackingStoreOnFailureMode on_failure = + BackingStoreOnFailureMode::kOutOfMemory); + /** * Returns a new standalone BackingStore that takes over the ownership of * the given buffer. The destructor of the BackingStore invokes the given @@ -354,9 +388,21 @@ class V8_EXPORT ArrayBuffer : public Object { V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT; static constexpr int kEmbedderFieldCount = kInternalFieldCount; +#if V8_ENABLE_SANDBOX + static constexpr size_t kMaxByteLength = + internal::kMaxSafeBufferSizeForSandbox; +#elif V8_HOST_ARCH_32_BIT + static constexpr size_t kMaxByteLength = std::numeric_limits::max(); +#else + // The maximum safe integer (2^53 - 1). + static constexpr size_t kMaxByteLength = + static_cast((uint64_t{1} << 53) - 1); +#endif + private: ArrayBuffer(); static void CheckCast(Value* obj); + friend class TypedArray; }; #ifndef V8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT @@ -394,6 +440,16 @@ class V8_EXPORT ArrayBufferView : public Object { */ size_t CopyContents(void* dest, size_t byte_length); + /** + * Returns the contents of the ArrayBufferView's buffer as a MemorySpan. If + * the contents are on the V8 heap, they get copied into `storage`. Otherwise + * a view into the off-heap backing store is returned. The provided storage + * should be at least as large as the maximum on-heap size of a TypedArray, + * was defined in gn with `typed_array_max_size_in_heap`. The default value is + * 64 bytes. + */ + v8::MemorySpan GetContents(v8::MemorySpan storage); + /** * Returns true if ArrayBufferView's backing ArrayBuffer has already been * allocated. @@ -463,6 +519,18 @@ class V8_EXPORT SharedArrayBuffer : public Object { BackingStoreInitializationMode initialization_mode = BackingStoreInitializationMode::kZeroInitialized); + /** + * Create a new SharedArrayBuffer. Allocate |byte_length| bytes, which are + * either zero-initialized or uninitialized. Allocated memory will be owned by + * a created SharedArrayBuffer and will be deallocated when it is + * garbage-collected, unless the object is externalized. If allocation + * fails, the Maybe returned will be empty. + */ + static MaybeLocal MaybeNew( + Isolate* isolate, size_t byte_length, + BackingStoreInitializationMode initialization_mode = + BackingStoreInitializationMode::kZeroInitialized); + /** * Create a new SharedArrayBuffer with an existing backing store. * The created array keeps a reference to the backing store until the array @@ -481,17 +549,26 @@ class V8_EXPORT SharedArrayBuffer : public Object { /** * Returns a new standalone BackingStore that is allocated using the array * buffer allocator of the isolate. The allocation can either be zero - * intialized, or uninitialized. The result can be later passed to + * initialized, or uninitialized. The result can be later passed to * SharedArrayBuffer::New. * * If the allocator returns nullptr, then the function may cause GCs in the - * given isolate and re-try the allocation. If GCs do not help, then the - * function will crash with an out-of-memory error. + * given isolate and re-try the allocation. + * + * If on_failure is kOutOfMemory and GCs do not help, then the function will + * crash with an out-of-memory error. + * + * Otherwise, if on_failure is kReturnNull and GCs do not help (or the + * byte_length is so large that the allocation cannot succeed), then a null + * result is returned. */ static std::unique_ptr NewBackingStore( Isolate* isolate, size_t byte_length, BackingStoreInitializationMode initialization_mode = - BackingStoreInitializationMode::kZeroInitialized); + BackingStoreInitializationMode::kZeroInitialized, + BackingStoreOnFailureMode on_failure = + BackingStoreOnFailureMode::kOutOfMemory); + /** * Returns a new standalone BackingStore that takes over the ownership of * the given buffer. The destructor of the BackingStore invokes the given diff --git a/deps/v8/include/v8-callbacks.h b/deps/v8/include/v8-callbacks.h index 567b36faf63ddb..db5ec8304092b6 100644 --- a/deps/v8/include/v8-callbacks.h +++ b/deps/v8/include/v8-callbacks.h @@ -129,7 +129,9 @@ struct JitCodeEvent { enum JitCodeEventOptions { kJitCodeEventDefault = 0, // Generate callbacks for already existent code. - kJitCodeEventEnumExisting = 1 + kJitCodeEventEnumExisting = 1, + + kLastJitCodeEventOption = kJitCodeEventEnumExisting }; /** @@ -188,6 +190,9 @@ using GCCallback = void (*)(GCType type, GCCallbackFlags flags); using InterruptCallback = void (*)(Isolate* isolate, void* data); +using PrintCurrentStackTraceFilterCallback = + bool (*)(Isolate* isolate, Local script_name); + /** * This callback is invoked when the heap size is close to the heap limit and * V8 is likely to abort with out-of-memory error. @@ -369,6 +374,47 @@ using HostImportModuleDynamicallyCallback = MaybeLocal (*)( Local resource_name, Local specifier, Local import_attributes); +/** + * HostImportModuleWithPhaseDynamicallyCallback is called when we + * require the embedder to load a module with a specific phase. This is used + * as part of the dynamic import syntax. + * + * The referrer contains metadata about the script/module that calls + * import. + * + * The specifier is the name of the module that should be imported. + * + * The phase is the phase of the import requested. + * + * The import_attributes are import attributes for this request in the form: + * [key1, value1, key2, value2, ...] where the keys and values are of type + * v8::String. Note, unlike the FixedArray passed to ResolveModuleCallback and + * returned from ModuleRequest::GetImportAttributes(), this array does not + * contain the source Locations of the attributes. + * + * The Promise returned from this function is forwarded to userland + * JavaScript. The embedder must resolve this promise according to the phase + * requested: + * - For ModuleImportPhase::kSource, the promise must be resolved with a + * compiled ModuleSource object, or rejected with a SyntaxError if the + * module does not support source representation. + * - For ModuleImportPhase::kEvaluation, the promise must be resolved with a + * ModuleNamespace object of a module that has been compiled, instantiated, + * and evaluated. + * + * In case of an exception, the embedder must reject this promise with the + * exception. If the promise creation itself fails (e.g. due to stack + * overflow), the embedder must propagate that exception by returning an empty + * MaybeLocal. + * + * This callback is still experimental and is only invoked for source phase + * imports. + */ +using HostImportModuleWithPhaseDynamicallyCallback = MaybeLocal (*)( + Local context, Local host_defined_options, + Local resource_name, Local specifier, + ModuleImportPhase phase, Local import_attributes); + /** * Callback for requesting a compile hint for a function from the embedder. The * first parameter is the position of the function in source code and the second @@ -404,6 +450,14 @@ using HostInitializeImportMetaObjectCallback = void (*)(Local context, using HostCreateShadowRealmContextCallback = MaybeLocal (*)(Local initiator_context); +/** + * IsJSApiWrapperNativeErrorCallback is called on an JSApiWrapper object to + * determine if Error.isError should return true or false. For instance, in an + * HTML embedder, DOMExceptions return true when passed to Error.isError. + */ +using IsJSApiWrapperNativeErrorCallback = bool (*)(Isolate* isolate, + Local obj); + /** * PrepareStackTraceCallback is called when the stack property of an error is * first accessed. The return value will be used as the stack value. If this @@ -444,14 +498,26 @@ using PrepareStackTraceCallback = MaybeLocal (*)(Local context, * with a list of regular expressions that should match the document URL * in order to enable ETW tracing: * { - * "version": "1.0", + * "version": "2.0", * "filtered_urls": [ * "https:\/\/.*\.chromium\.org\/.*", "https://v8.dev/";, "..." - * ] + * ], + * "trace_interpreter_frames": true * } */ + using FilterETWSessionByURLCallback = bool (*)(Local context, const std::string& etw_filter_payload); + +struct FilterETWSessionByURLResult { + // If true, enable ETW tracing for the current isolate. + bool enable_etw_tracing; + + // If true, also enables ETW tracing for interpreter stack frames. + bool trace_interpreter_frames; +}; +using FilterETWSessionByURL2Callback = FilterETWSessionByURLResult (*)( + Local context, const std::string& etw_filter_payload); #endif // V8_OS_WIN } // namespace v8 diff --git a/deps/v8/include/v8-context.h b/deps/v8/include/v8-context.h index 0861d66493bd2d..43dadadeabff59 100644 --- a/deps/v8/include/v8-context.h +++ b/deps/v8/include/v8-context.h @@ -427,7 +427,8 @@ class V8_EXPORT Context : public Data { static void CheckCast(Data* obj); - internal::Address* GetDataFromSnapshotOnce(size_t index); + internal::ValueHelper::InternalRepresentationType GetDataFromSnapshotOnce( + size_t index); Local SlowGetEmbedderData(int index); void* SlowGetAlignedPointerFromEmbedderData(int index); }; @@ -497,10 +498,10 @@ void* Context::GetAlignedPointerFromEmbedderData(int index) { template MaybeLocal Context::GetDataFromSnapshotOnce(size_t index) { - if (auto slot = GetDataFromSnapshotOnce(index); slot) { - internal::PerformCastCheck( - internal::ValueHelper::SlotAsValue(slot)); - return Local::FromSlot(slot); + if (auto repr = GetDataFromSnapshotOnce(index); + repr != internal::ValueHelper::kEmpty) { + internal::PerformCastCheck(internal::ValueHelper::ReprAsValue(repr)); + return Local::FromRepr(repr); } return {}; } diff --git a/deps/v8/include/v8-cppgc.h b/deps/v8/include/v8-cppgc.h index 6ebae86c97f3b5..aa3813b95ab2f1 100644 --- a/deps/v8/include/v8-cppgc.h +++ b/deps/v8/include/v8-cppgc.h @@ -87,6 +87,7 @@ class V8_EXPORT CppHeap { * * After this call, object allocation is prohibited. */ + V8_DEPRECATED("Terminate gets automatically called in the CppHeap destructor") void Terminate(); /** @@ -101,7 +102,7 @@ class V8_EXPORT CppHeap { /** * Collects statistics for the given spaces and reports them to the receiver. * - * \param custom_spaces a collection of custom space indicies. + * \param custom_spaces a collection of custom space indices. * \param receiver an object that gets the results. */ void CollectCustomSpaceStatisticsAtLastGC( diff --git a/deps/v8/include/v8-data.h b/deps/v8/include/v8-data.h index fc4dea92f3d8cc..3093d7f34d146d 100644 --- a/deps/v8/include/v8-data.h +++ b/deps/v8/include/v8-data.h @@ -27,6 +27,11 @@ class V8_EXPORT Data { */ bool IsModule() const; + /** + * Returns true if this data is a |v8::ModuleRequest|. + */ + bool IsModuleRequest() const; + /** * Returns tru if this data is a |v8::FixedArray| */ diff --git a/deps/v8/include/v8-debug.h b/deps/v8/include/v8-debug.h index 52255f3700cb73..23b392c7dca0b1 100644 --- a/deps/v8/include/v8-debug.h +++ b/deps/v8/include/v8-debug.h @@ -42,6 +42,12 @@ class V8_EXPORT StackFrame { */ int GetColumn() const { return GetLocation().GetColumnNumber() + 1; } + /** + * Returns zero based source position (character offset) for the associated + * function. + */ + int GetSourcePosition() const; + /** * Returns the id of the script for the function for this StackFrame. * This method will return Message::kNoScriptIdInfo if it is unable to @@ -130,6 +136,11 @@ class V8_EXPORT StackTrace { kDetailed = kOverview | kIsEval | kIsConstructor | kScriptNameOrSourceURL }; + /** + * Returns the (unique) ID of this stack trace. + */ + int GetID() const; + /** * Returns a StackFrame at a particular index. */ diff --git a/deps/v8/include/v8-embedder-heap.h b/deps/v8/include/v8-embedder-heap.h index 7cc9aa0e637b75..929b3c396ed2f8 100644 --- a/deps/v8/include/v8-embedder-heap.h +++ b/deps/v8/include/v8-embedder-heap.h @@ -21,37 +21,10 @@ class Value; */ class V8_EXPORT EmbedderRootsHandler { public: - enum class RootHandling { - kQueryEmbedderForNonDroppableReferences, - kDontQueryEmbedderForAnyReference, - }; - virtual ~EmbedderRootsHandler() = default; EmbedderRootsHandler() = default; - V8_DEPRECATED("Use the default constructor instead.") - explicit EmbedderRootsHandler(RootHandling default_traced_reference_handling) - : default_traced_reference_handling_(default_traced_reference_handling) {} - - /** - * Returns true if the |TracedReference| handle should be considered as root - * for the currently running non-tracing garbage collection and false - * otherwise. The default implementation will keep all |TracedReference| - * references as roots. - * - * If this returns false, then V8 may decide that the object referred to by - * such a handle is reclaimed. In that case, V8 calls |ResetRoot()| for the - * |TracedReference|. - * - * Note that the `handle` is different from the handle that the embedder holds - * for retaining the object. - * - * The concrete implementations must be thread-safe. - */ - V8_DEPRECATED("Use TracedReferenceHandling::kDroppable instead.") - virtual bool IsRoot(const v8::TracedReference& handle) = 0; - /** * Used in combination with |IsRoot|. Called by V8 when an * object that is backed by a handle is reclaimed by a non-tracing garbage @@ -69,14 +42,10 @@ class V8_EXPORT EmbedderRootsHandler { * |false| is returned, |ResetRoot()| will be recalled for the same handle. */ virtual bool TryResetRoot(const v8::TracedReference& handle) { - ResetRoot(handle); - return true; + return false; } private: - const RootHandling default_traced_reference_handling_ = - RootHandling::kDontQueryEmbedderForAnyReference; - friend class internal::TracedHandles; }; diff --git a/deps/v8/include/v8-exception.h b/deps/v8/include/v8-exception.h index a7f49b6c71b43c..5441a0ab6a403c 100644 --- a/deps/v8/include/v8-exception.h +++ b/deps/v8/include/v8-exception.h @@ -45,6 +45,8 @@ class V8_EXPORT Exception { Local options = {}); static Local WasmRuntimeError(Local message, Local options = {}); + static Local WasmSuspendError(Local message, + Local options = {}); static Local Error(Local message, Local options = {}); /** diff --git a/deps/v8/include/v8-external-memory-accounter.h b/deps/v8/include/v8-external-memory-accounter.h new file mode 100644 index 00000000000000..70df8f4a89dbd5 --- /dev/null +++ b/deps/v8/include/v8-external-memory-accounter.h @@ -0,0 +1,60 @@ +// Copyright 2024 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef INCLUDE_EXTERNAL_MEMORY_ACCOUNTER_H_ +#define INCLUDE_EXTERNAL_MEMORY_ACCOUNTER_H_ + +#include + +#include "v8-isolate.h" + +namespace v8 { + +/** + * This class is used to give V8 an indication of the amount of externally + * allocated memory that is kept alive by JavaScript objects. V8 uses this to + * decide when to perform garbage collections. Registering externally allocated + * memory will trigger garbage collections more often than it would otherwise in + * an attempt to garbage collect the JavaScript objects that keep the externally + * allocated memory alive. Instances of ExternalMemoryAccounter check that the + * reported external memory is back to 0 on destruction. + */ +class V8_EXPORT ExternalMemoryAccounter { + public: + /** + * Returns the amount of external memory registered for `isolate`. + */ + static int64_t GetTotalAmountOfExternalAllocatedMemoryForTesting( + const Isolate* isolate); + + ExternalMemoryAccounter() = default; + ~ExternalMemoryAccounter(); + ExternalMemoryAccounter(ExternalMemoryAccounter&&); + ExternalMemoryAccounter& operator=(ExternalMemoryAccounter&&); + ExternalMemoryAccounter(const ExternalMemoryAccounter&) = delete; + ExternalMemoryAccounter& operator=(const ExternalMemoryAccounter&) = delete; + + /** + * Reports an increase of `size` bytes of external memory. + */ + void Increase(Isolate* isolate, size_t size); + /** + * Reports an update of `delta` bytes of external memory. + */ + void Update(Isolate* isolate, int64_t delta); + /** + * Reports an decrease of `size` bytes of external memory. + */ + void Decrease(Isolate* isolate, size_t size); + + private: +#ifdef V8_ENABLE_MEMORY_ACCOUNTING_CHECKS + size_t amount_of_external_memory_ = 0; + v8::Isolate* isolate_ = nullptr; +#endif +}; + +} // namespace v8 + +#endif // INCLUDE_EXTERNAL_MEMORY_ACCOUNTER_H_ diff --git a/deps/v8/include/v8-fast-api-calls.h b/deps/v8/include/v8-fast-api-calls.h index 18466688cf90cb..4ffaf2d44a50fd 100644 --- a/deps/v8/include/v8-fast-api-calls.h +++ b/deps/v8/include/v8-fast-api-calls.h @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef INCLUDE_V8_FAST_API_CALLS_H_ +#define INCLUDE_V8_FAST_API_CALLS_H_ + /** * This file provides additional API on top of the default one for making * API calls, which come from embedder C++ functions. The functions are being @@ -216,9 +219,6 @@ * associated SlowCallback. */ -#ifndef INCLUDE_V8_FAST_API_CALLS_H_ -#define INCLUDE_V8_FAST_API_CALLS_H_ - #include #include @@ -235,6 +235,7 @@ namespace v8 { class Isolate; +START_ALLOW_USE_DEPRECATED() class CTypeInfo { public: enum class Type : uint8_t { @@ -268,11 +269,11 @@ class CTypeInfo { // than any valid Type enum. static constexpr Type kCallbackOptionsType = Type(255); - enum class SequenceType : uint8_t { + enum class V8_DEPRECATE_SOON( + "There is no special support in V8 anymore, there is no need to" + "use a SequenceType") SequenceType : uint8_t { kScalar, kIsSequence, // sequence - kIsTypedArray, // TypedArray of T or any ArrayBufferView if T - // is void kIsArrayBuffer // ArrayBuffer }; @@ -284,9 +285,12 @@ class CTypeInfo { kIsRestrictedBit = 1 << 3, // T must be float or double }; - explicit constexpr CTypeInfo( - Type type, SequenceType sequence_type = SequenceType::kScalar, - Flags flags = Flags::kNone) + explicit constexpr CTypeInfo(Type type, Flags flags = Flags::kNone) + : type_(type), sequence_type_(SequenceType::kScalar), flags_(flags) {} + + V8_DEPRECATE_SOON("Use CTypeInfo(Type, Flags) instead") + constexpr CTypeInfo(Type type, SequenceType sequence_type, + Flags flags = Flags::kNone) : type_(type), sequence_type_(sequence_type), flags_(flags) {} typedef uint32_t Identifier; @@ -301,6 +305,7 @@ class CTypeInfo { } constexpr Type GetType() const { return type_; } + V8_DEPRECATE_SOON("Use the constant SequenceType::kScalar instead") constexpr SequenceType GetSequenceType() const { return sequence_type_; } constexpr Flags GetFlags() const { return flags_; } @@ -324,69 +329,7 @@ class CTypeInfo { SequenceType sequence_type_; Flags flags_; }; - -struct FastApiTypedArrayBase { - public: - // Returns the length in number of elements. - size_t V8_EXPORT length() const { return length_; } - // Checks whether the given index is within the bounds of the collection. - void V8_EXPORT ValidateIndex(size_t index) const; - - protected: - size_t length_ = 0; -}; - -template -struct V8_DEPRECATE_SOON( - "When an API function expects a TypedArray as a parameter, the type in the " - "signature should be `v8::Local` instead of " - "FastApiTypedArray<>. The API function then has to type-check the " - "parameter and convert it to a `v8::Local(reinterpret_cast(data_) + index), - sizeof(T)); - return tmp; - } - - bool getStorageIfAligned(T** elements) const { - if (reinterpret_cast(data_) % alignof(T) != 0) { - return false; - } - *elements = reinterpret_cast(data_); - return true; - } - - private: - // This pointer should include the typed array offset applied. - // It's not guaranteed that it's aligned to sizeof(T), it's only - // guaranteed that it's 4-byte aligned, so for 8-byte types we need to - // provide a special implementation for reading from it, which hides - // the possibly unaligned read in the `get` method. - void* data_; -}; - -// Any TypedArray. It uses kTypedArrayBit with base type void -// Overloaded args of ArrayBufferView and TypedArray are not supported -// (for now) because the generic “any†ArrayBufferView doesn’t have its -// own instance type. It could be supported if we specify that -// TypedArray always has precedence over the generic ArrayBufferView, -// but this complicates overload resolution. -struct FastApiArrayBufferView { - void* data; - size_t byte_length; -}; - -struct FastApiArrayBuffer { - void* data; - size_t byte_length; -}; +END_ALLOW_USE_DEPRECATED() struct FastOneByteString { const char* data; @@ -493,40 +436,6 @@ class V8_EXPORT CFunction { enum class OverloadResolution { kImpossible, kAtRuntime, kAtCompileTime }; - // Returns whether an overload between this and the given CFunction can - // be resolved at runtime by the RTTI available for the arguments or at - // compile time for functions with different number of arguments. - OverloadResolution GetOverloadResolution(const CFunction* other) { - // Runtime overload resolution can only deal with functions with the - // same number of arguments. Functions with different arity are handled - // by compile time overload resolution though. - if (ArgumentCount() != other->ArgumentCount()) { - return OverloadResolution::kAtCompileTime; - } - - // The functions can only differ by a single argument position. - int diff_index = -1; - for (unsigned int i = 0; i < ArgumentCount(); ++i) { - if (ArgumentInfo(i).GetSequenceType() != - other->ArgumentInfo(i).GetSequenceType()) { - if (diff_index >= 0) { - return OverloadResolution::kImpossible; - } - diff_index = i; - - // We only support overload resolution between sequence types. - if (ArgumentInfo(i).GetSequenceType() == - CTypeInfo::SequenceType::kScalar || - other->ArgumentInfo(i).GetSequenceType() == - CTypeInfo::SequenceType::kScalar) { - return OverloadResolution::kImpossible; - } - } - } - - return OverloadResolution::kAtRuntime; - } - template static CFunction Make(F* func, CFunctionInfo::Int64Representation int64_rep = @@ -656,9 +565,6 @@ struct TypeInfoHelper { } \ \ static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \ - static constexpr CTypeInfo::SequenceType SequenceType() { \ - return CTypeInfo::SequenceType::kScalar; \ - } \ }; template @@ -687,6 +593,7 @@ struct CTypeInfoTraits {}; V(void, kVoid) \ V(v8::Local, kV8Value) \ V(v8::Local, kV8Value) \ + V(v8::Local, kV8Value) \ V(AnyCType, kAny) // ApiObject was a temporary solution to wrap the pointer to the v8::Value. @@ -699,52 +606,8 @@ PRIMITIVE_C_TYPES(DEFINE_TYPE_INFO_TRAITS) #undef PRIMITIVE_C_TYPES #undef ALL_C_TYPES -#define SPECIALIZE_GET_TYPE_INFO_HELPER_FOR_TA(T, Enum) \ - template <> \ - struct TypeInfoHelper&> { \ - static constexpr CTypeInfo::Flags Flags() { \ - return CTypeInfo::Flags::kNone; \ - } \ - \ - static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::Enum; } \ - static constexpr CTypeInfo::SequenceType SequenceType() { \ - return CTypeInfo::SequenceType::kIsTypedArray; \ - } \ - }; - -#define TYPED_ARRAY_C_TYPES(V) \ - V(uint8_t, kUint8) \ - V(int32_t, kInt32) \ - V(uint32_t, kUint32) \ - V(int64_t, kInt64) \ - V(uint64_t, kUint64) \ - V(float, kFloat32) \ - V(double, kFloat64) - -TYPED_ARRAY_C_TYPES(SPECIALIZE_GET_TYPE_INFO_HELPER_FOR_TA) - #undef TYPED_ARRAY_C_TYPES -template <> -struct TypeInfoHelper> { - static constexpr CTypeInfo::Flags Flags() { return CTypeInfo::Flags::kNone; } - - static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::kVoid; } - static constexpr CTypeInfo::SequenceType SequenceType() { - return CTypeInfo::SequenceType::kIsSequence; - } -}; - -template <> -struct TypeInfoHelper> { - static constexpr CTypeInfo::Flags Flags() { return CTypeInfo::Flags::kNone; } - - static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::kUint32; } - static constexpr CTypeInfo::SequenceType SequenceType() { - return CTypeInfo::SequenceType::kIsTypedArray; - } -}; - template <> struct TypeInfoHelper { static constexpr CTypeInfo::Flags Flags() { return CTypeInfo::Flags::kNone; } @@ -752,9 +615,6 @@ struct TypeInfoHelper { static constexpr CTypeInfo::Type Type() { return CTypeInfo::kCallbackOptionsType; } - static constexpr CTypeInfo::SequenceType SequenceType() { - return CTypeInfo::SequenceType::kScalar; - } }; template <> @@ -764,9 +624,6 @@ struct TypeInfoHelper { static constexpr CTypeInfo::Type Type() { return CTypeInfo::Type::kSeqOneByteString; } - static constexpr CTypeInfo::SequenceType SequenceType() { - return CTypeInfo::SequenceType::kScalar; - } }; #define STATIC_ASSERT_IMPLIES(COND, ASSERTION, MSG) \ @@ -783,14 +640,7 @@ class V8_EXPORT CTypeInfoBuilder { constexpr CTypeInfo::Flags kFlags = MergeFlags(internal::TypeInfoHelper::Flags(), Flags...); constexpr CTypeInfo::Type kType = internal::TypeInfoHelper::Type(); - constexpr CTypeInfo::SequenceType kSequenceType = - internal::TypeInfoHelper::SequenceType(); - STATIC_ASSERT_IMPLIES( - uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kAllowSharedBit), - (kSequenceType == CTypeInfo::SequenceType::kIsTypedArray || - kSequenceType == CTypeInfo::SequenceType::kIsArrayBuffer), - "kAllowSharedBit is only allowed for TypedArrays and ArrayBuffers."); STATIC_ASSERT_IMPLIES( uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kEnforceRangeBit), CTypeInfo::IsIntegralType(kType), @@ -803,17 +653,9 @@ class V8_EXPORT CTypeInfoBuilder { uint8_t(kFlags) & uint8_t(CTypeInfo::Flags::kIsRestrictedBit), CTypeInfo::IsFloatingPointType(kType), "kIsRestrictedBit is only allowed for floating point types."); - STATIC_ASSERT_IMPLIES(kSequenceType == CTypeInfo::SequenceType::kIsSequence, - kType == CTypeInfo::Type::kVoid, - "Sequences are only supported from void type."); - STATIC_ASSERT_IMPLIES( - kSequenceType == CTypeInfo::SequenceType::kIsTypedArray, - CTypeInfo::IsPrimitive(kType) || kType == CTypeInfo::Type::kVoid, - "TypedArrays are only supported from primitive types or void."); // Return the same type with the merged flags. - return CTypeInfo(internal::TypeInfoHelper::Type(), - internal::TypeInfoHelper::SequenceType(), kFlags); + return CTypeInfo(internal::TypeInfoHelper::Type(), kFlags); } private: diff --git a/deps/v8/include/v8-function-callback.h b/deps/v8/include/v8-function-callback.h index 9ff4c59588df8a..09213431c9200d 100644 --- a/deps/v8/include/v8-function-callback.h +++ b/deps/v8/include/v8-function-callback.h @@ -126,23 +126,6 @@ class FunctionCallbackInfo { V8_INLINE Local operator[](int i) const; /** Returns the receiver. This corresponds to the "this" value. */ V8_INLINE Local This() const; - /** - * If the callback was created without a Signature, this is the same - * value as This(). If there is a signature, and the signature didn't match - * This() but one of its hidden prototypes, this will be the respective - * hidden prototype. - * - * Note that this is not the prototype of This() on which the accessor - * referencing this callback was found (which in V8 internally is often - * referred to as holder [sic]). - */ - V8_DEPRECATED( - "V8 will stop providing access to hidden prototype (i.e. " - "JSGlobalObject). Use This() instead. \n" - "DO NOT try to workaround this by accessing JSGlobalObject via " - "v8::Object::GetPrototype() - it'll be deprecated soon too. \n" - "See http://crbug.com/333672197. ") - V8_INLINE Local Holder() const; /** For construct calls, this returns the "new.target" value. */ V8_INLINE Local NewTarget() const; /** Indicates whether this is a regular call or a construct call. */ @@ -154,18 +137,16 @@ class FunctionCallbackInfo { /** The ReturnValue for the call. */ V8_INLINE ReturnValue GetReturnValue() const; - // This is a temporary replacement for Holder() added just for the purpose - // of testing the deprecated Holder() machinery until it's removed for real. - // DO NOT use it. - V8_INLINE Local HolderSoonToBeDeprecated() const; - private: friend class internal::FunctionCallbackArguments; friend class internal::CustomArguments; friend class debug::ConsoleCallArguments; friend void internal::PrintFunctionCallbackInfo(void*); - static constexpr int kHolderIndex = 0; + // TODO(ishell, http://crbug.com/326505377): in case of non-constructor + // call, don't pass kNewTarget and kUnused. Add IsConstructCall flag to + // kIsolate field. + static constexpr int kUnusedIndex = 0; static constexpr int kIsolateIndex = 1; static constexpr int kContextIndex = 2; static constexpr int kReturnValueIndex = 3; @@ -649,16 +630,6 @@ Local FunctionCallbackInfo::This() const { return Local::FromSlot(values_ + kThisValuesIndex); } -template -Local FunctionCallbackInfo::HolderSoonToBeDeprecated() const { - return Local::FromSlot(&implicit_args_[kHolderIndex]); -} - -template -Local FunctionCallbackInfo::Holder() const { - return HolderSoonToBeDeprecated(); -} - template Local FunctionCallbackInfo::NewTarget() const { return Local::FromSlot(&implicit_args_[kNewTargetIndex]); diff --git a/deps/v8/include/v8-function.h b/deps/v8/include/v8-function.h index d28d4b50087c13..9ee77596cd3796 100644 --- a/deps/v8/include/v8-function.h +++ b/deps/v8/include/v8-function.h @@ -18,6 +18,7 @@ namespace v8 { class Context; +class Location; class UnboundScript; /** @@ -88,6 +89,12 @@ class V8_EXPORT Function : public Object { */ int GetScriptColumnNumber() const; + /** + * Returns zero based line and column number of function body, else returns + * {-1, -1}. + */ + Location GetScriptLocation() const; + /** * Returns zero based start position (character offset) of function body and * kLineOffsetNotFound if no information available. diff --git a/deps/v8/include/v8-handle-base.h b/deps/v8/include/v8-handle-base.h index 3075441e997910..9149f8fb0fe1c2 100644 --- a/deps/v8/include/v8-handle-base.h +++ b/deps/v8/include/v8-handle-base.h @@ -43,7 +43,11 @@ class V8_TRIVIAL_ABI StackAllocated : public StackAllocated { no_checking_tag tag) : StackAllocated(other, tag) {} +#ifdef ENABLE_SLOW_DCHECKS V8_EXPORT void VerifyOnStack() const; +#else + V8_INLINE V8_EXPORT void VerifyOnStack() const {} +#endif }; /** @@ -86,6 +90,16 @@ class IndirectHandleBase { return internal::ValueHelper::SlotAsValue(slot()); } +#ifdef V8_ENABLE_DIRECT_HANDLE + V8_INLINE internal::ValueHelper::InternalRepresentationType repr() const { + return location_ ? *location_ : internal::ValueHelper::kEmpty; + } +#else + V8_INLINE internal::ValueHelper::InternalRepresentationType repr() const { + return location_; + } +#endif // V8_ENABLE_DIRECT_HANDLE + private: internal::Address* location_ = nullptr; }; @@ -126,6 +140,10 @@ class DirectHandleBase { return reinterpret_cast(ptr_); } + V8_INLINE internal::ValueHelper::InternalRepresentationType repr() const { + return ptr_; + } + private: internal::Address ptr_ = internal::ValueHelper::kEmpty; }; diff --git a/deps/v8/include/v8-initialization.h b/deps/v8/include/v8-initialization.h index c3984668bb1100..46a21a02cbcdd6 100644 --- a/deps/v8/include/v8-initialization.h +++ b/deps/v8/include/v8-initialization.h @@ -112,11 +112,18 @@ class V8_EXPORT V8 { const bool kV8TargetOsIsAndroid = false; #endif +#ifdef V8_ENABLE_CHECKS + const bool kV8EnableChecks = true; +#else + const bool kV8EnableChecks = false; +#endif + const int kBuildConfiguration = (internal::PointerCompressionIsEnabled() ? kPointerCompression : 0) | (internal::SmiValuesAre31Bits() ? k31BitSmis : 0) | (internal::SandboxIsEnabled() ? kSandbox : 0) | - (kV8TargetOsIsAndroid ? kTargetOsIsAndroid : 0); + (kV8TargetOsIsAndroid ? kTargetOsIsAndroid : 0) | + (kV8EnableChecks ? kEnableChecks : 0); return Initialize(kBuildConfiguration); } @@ -288,6 +295,7 @@ class V8_EXPORT V8 { k31BitSmis = 1 << 1, kSandbox = 1 << 2, kTargetOsIsAndroid = 1 << 3, + kEnableChecks = 1 << 4, }; /** diff --git a/deps/v8/include/v8-inspector.h b/deps/v8/include/v8-inspector.h index 89bb0bbd539b28..7236a372342c04 100644 --- a/deps/v8/include/v8-inspector.h +++ b/deps/v8/include/v8-inspector.h @@ -139,6 +139,7 @@ struct V8_EXPORT V8StackFrame { StringView functionName; int lineNumber; int columnNumber; + int scriptId; }; class V8_EXPORT V8StackTrace { @@ -297,12 +298,14 @@ class V8_EXPORT V8InspectorClient { return v8::MaybeLocal(); } - virtual void consoleTime(v8::Isolate* isolate, v8::Local label); + virtual void consoleTime(v8::Isolate* isolate, v8::Local label) {} virtual void consoleTimeEnd(v8::Isolate* isolate, - v8::Local label); + v8::Local label) {} virtual void consoleTimeStamp(v8::Isolate* isolate, - v8::Local label); - + v8::Local label) {} + virtual void consoleTimeStampWithArgs( + v8::Isolate* isolate, v8::Local label, + const v8::LocalVector& args) {} virtual void consoleClear(int contextGroupId) {} virtual double currentTimeMS() { return 0; } typedef void (*TimerCallback)(void*); @@ -361,6 +364,7 @@ class V8_EXPORT V8Inspector { virtual void resetContextGroup(int contextGroupId) = 0; virtual v8::MaybeLocal contextById(int contextId) = 0; virtual V8DebuggerId uniqueDebuggerId(int contextId) = 0; + virtual uint64_t isolateId() = 0; // Various instrumentation. virtual void idleStarted() = 0; diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h index a13db2bd74ad4b..5487adec2b5874 100644 --- a/deps/v8/include/v8-internal.h +++ b/deps/v8/include/v8-internal.h @@ -44,7 +44,10 @@ class Isolate; namespace internal { class Heap; +class LocalHeap; class Isolate; +class IsolateGroup; +class LocalIsolate; typedef uintptr_t Address; static constexpr Address kNullAddress = 0; @@ -160,15 +163,15 @@ struct SmiTagging<8> { std::is_signed_v>* = nullptr> V8_INLINE static constexpr bool IsValidSmi(T value) { // To be representable as a long smi, the value must be a 32-bit integer. - return (value == static_cast(value)); + return std::numeric_limits::min() <= value && + value <= std::numeric_limits::max(); } template && std::is_unsigned_v>* = nullptr> V8_INLINE static constexpr bool IsValidSmi(T value) { - return (static_cast(value) == - static_cast(static_cast(value))); + return value <= std::numeric_limits::max(); } }; @@ -234,10 +237,6 @@ using SandboxedPointer_t = Address; // virtual address space for userspace. As such, limit the sandbox to 128GB (a // quarter of the total available address space). constexpr size_t kSandboxSizeLog2 = 37; // 128 GB -#elif defined(V8_TARGET_ARCH_LOONG64) -// Some Linux distros on LoongArch64 configured with only 40 bits of virtual -// address space for userspace. Limit the sandbox to 256GB here. -constexpr size_t kSandboxSizeLog2 = 38; // 256 GB #else // Everywhere else use a 1TB sandbox. constexpr size_t kSandboxSizeLog2 = 40; // 1 TB @@ -258,9 +257,12 @@ constexpr size_t kSandboxAlignment = kPtrComprCageBaseAlignment; constexpr uint64_t kSandboxedPointerShift = 64 - kSandboxSizeLog2; // Size of the guard regions surrounding the sandbox. This assumes a worst-case -// scenario of a 32-bit unsigned index used to access an array of 64-bit -// values. -constexpr size_t kSandboxGuardRegionSize = 32ULL * GB; +// scenario of a 32-bit unsigned index used to access an array of 64-bit values +// with an additional 4GB (compressed pointer) offset. In particular, accesses +// to TypedArrays are effectively computed as +// `entry_pointer = array->base + array->offset + index * array->element_size`. +// See also https://crbug.com/40070746 for more details. +constexpr size_t kSandboxGuardRegionSize = 32ULL * GB + 4ULL * GB; static_assert((kSandboxGuardRegionSize % kSandboxAlignment) == 0, "The size of the guard regions around the sandbox must be a " @@ -335,6 +337,16 @@ constexpr size_t kMaxExternalPointers = 0; #endif // V8_COMPRESS_POINTERS +constexpr uint64_t kExternalPointerMarkBit = 1ULL << 48; +constexpr uint64_t kExternalPointerTagShift = 49; +constexpr uint64_t kExternalPointerTagMask = 0x00fe000000000000ULL; +constexpr uint64_t kExternalPointerShiftedTagMask = + kExternalPointerTagMask >> kExternalPointerTagShift; +static_assert(kExternalPointerShiftedTagMask << kExternalPointerTagShift == + kExternalPointerTagMask); +constexpr uint64_t kExternalPointerTagAndMarkbitMask = 0x00ff000000000000ULL; +constexpr uint64_t kExternalPointerPayloadMask = 0xff00ffffffffffffULL; + // A ExternalPointerHandle represents a (opaque) reference to an external // pointer that can be stored inside the sandbox. A ExternalPointerHandle has // meaning only in combination with an (active) Isolate as it references an @@ -403,47 +415,89 @@ constexpr size_t kMaxCppHeapPointers = 0; #endif // V8_COMPRESS_POINTERS -// See `ExternalPointerHandle` for the main documentation. The difference to -// `ExternalPointerHandle` is that the handle always refers to a -// (external pointer, size) tuple. The handles are used in combination with a -// dedicated external buffer table (EBT). -using ExternalBufferHandle = uint32_t; +// Generic tag range struct to represent ranges of type tags. +// +// When referencing external objects via pointer tables, type tags are +// frequently necessary to guarantee type safety for the external objects. When +// support for subtyping is necessary, range-based type checks are used in +// which all subtypes of a given supertype use contiguous tags. This struct can +// then be used to represent such a type range. +// +// As an example, consider the following type hierarchy: +// +// A F +// / \ +// B E +// / \ +// C D +// +// A potential type id assignment for range-based type checks is +// {A: 0, B: 1, C: 2, D: 3, E: 4, F: 5}. With that, the type check for type A +// would check for the range [A, E], while the check for B would check range +// [B, D], and for F it would simply check [F, F]. +// +// In addition, there is an option for performance tweaks: if the size of the +// type range corresponding to a supertype is a power of two and starts at a +// power of two (e.g. [0x100, 0x13f]), then the compiler can often optimize +// the type check to use even fewer instructions (essentially replace a AND + +// SUB with a single AND). +// +template +struct TagRange { + static_assert(std::is_enum_v && + std::is_same_v, uint16_t>, + "Tag parameter must be an enum with base type uint16_t"); + + // Construct the inclusive tag range [first, last]. + constexpr TagRange(Tag first, Tag last) : first(first), last(last) {} + + // Construct a tag range consisting of a single tag. + // + // A single tag is always implicitly convertible to a tag range. This greatly + // increases readability as most of the time, the exact tag of a field is + // known and so no tag range needs to explicitly be created for it. + constexpr TagRange(Tag tag) // NOLINT(runtime/explicit) + : first(tag), last(tag) {} + + // Construct an empty tag range. + constexpr TagRange() : TagRange(static_cast(0)) {} + + // A tag range is considered empty if it only contains the null tag. + constexpr bool IsEmpty() const { return first == 0 && last == 0; } + + constexpr size_t Size() const { + if (IsEmpty()) { + return 0; + } else { + return last - first + 1; + } + } -// ExternalBuffer point to buffer located outside the sandbox. When the V8 -// sandbox is enabled, these are stored on heap as ExternalBufferHandles, -// otherwise they are simply raw pointers. -#ifdef V8_ENABLE_SANDBOX -using ExternalBuffer_t = ExternalBufferHandle; -#else -using ExternalBuffer_t = Address; -#endif + constexpr bool Contains(Tag tag) const { + // Need to perform the math with uint32_t. Otherwise, the uint16_ts would + // be promoted to (signed) int, allowing the compiler to (wrongly) assume + // that an underflow cannot happen as that would be undefined behavior. + return static_cast(tag) - first <= + static_cast(last) - first; + } -#ifdef V8_TARGET_OS_ANDROID -// The size of the virtual memory reservation for the external buffer table. -// As with the external pointer table, a maximum table size in combination with -// shifted indices allows omitting bounds checks. -constexpr size_t kExternalBufferTableReservationSize = 64 * MB; + constexpr bool Contains(TagRange tag_range) const { + return tag_range.first >= first && tag_range.last <= last; + } -// The external buffer handles are stores shifted to the left by this amount -// to guarantee that they are smaller than the maximum table size. -constexpr uint32_t kExternalBufferHandleShift = 10; -#else -constexpr size_t kExternalBufferTableReservationSize = 128 * MB; -constexpr uint32_t kExternalBufferHandleShift = 9; -#endif // V8_TARGET_OS_ANDROID + constexpr bool operator==(const TagRange other) const { + return first == other.first && last == other.last; + } -// A null handle always references an entry that contains nullptr. -constexpr ExternalBufferHandle kNullExternalBufferHandle = 0; - -// The maximum number of entries in an external buffer table. -constexpr int kExternalBufferTableEntrySize = 16; -constexpr int kExternalBufferTableEntrySizeLog2 = 4; -constexpr size_t kMaxExternalBufferPointers = - kExternalBufferTableReservationSize / kExternalBufferTableEntrySize; -static_assert((1 << (32 - kExternalBufferHandleShift)) == - kMaxExternalBufferPointers, - "kExternalBufferTableReservationSize and " - "kExternalBufferHandleShift don't match"); + constexpr size_t hash_value() const { + static_assert(std::is_same_v, uint16_t>); + return (static_cast(first) << 16) | last; + } + + // Internally we represent tag ranges as half-open ranges [first, last). + const Tag first; + const Tag last; +}; // // External Pointers. @@ -452,41 +506,12 @@ static_assert((1 << (32 - kExternalBufferHandleShift)) == // pointer table and are referenced from HeapObjects through an index (a // "handle"). When stored in the table, the pointers are tagged with per-type // tags to prevent type confusion attacks between different external objects. -// Besides type information bits, these tags also contain the GC marking bit -// which indicates whether the pointer table entry is currently alive. When a -// pointer is written into the table, the tag is ORed into the top bits. When -// that pointer is later loaded from the table, it is ANDed with the inverse of -// the expected tag. If the expected and actual type differ, this will leave -// some of the top bits of the pointer set, rendering the pointer inaccessible. -// The AND operation also removes the GC marking bit from the pointer. // -// The tags are constructed such that UNTAG(TAG(0, T1), T2) != 0 for any two -// (distinct) tags T1 and T2. In practice, this is achieved by generating tags -// that all have the same number of zeroes and ones but different bit patterns. -// With N type tag bits, this allows for (N choose N/2) possible type tags. -// Besides the type tag bits, the tags also have the GC marking bit set so that -// the marking bit is automatically set when a pointer is written into the -// external pointer table (in which case it is clearly alive) and is cleared -// when the pointer is loaded. The exception to this is the free entry tag, -// which doesn't have the mark bit set, as the entry is not alive. This -// construction allows performing the type check and removing GC marking bits -// from the pointer in one efficient operation (bitwise AND). The number of -// available bits is limited in the following way: on x64, bits [47, 64) are -// generally available for tagging (userspace has 47 address bits available). -// On Arm64, userspace typically has a 40 or 48 bit address space. However, due -// to top-byte ignore (TBI) and memory tagging (MTE), the top byte is unusable -// for type checks as type-check failures would go unnoticed or collide with -// MTE bits. Some bits of the top byte can, however, still be used for the GC -// marking bit. The bits available for the type tags are therefore limited to -// [48, 56), i.e. (8 choose 4) = 70 different types. -// The following options exist to increase the number of possible types: -// - Using multiple ExternalPointerTables since tags can safely be reused -// across different tables -// - Using "extended" type checks, where additional type information is stored -// either in an adjacent pointer table entry or at the pointed-to location -// - Using a different tagging scheme, for example based on XOR which would -// allow for 2**8 different tags but require a separate operation to remove -// the marking bit +// When loading an external pointer, a range of allowed tags can be specified. +// This way, type hierarchies can be supported. The main requirement for that +// is that all (transitive) child classes of a given parent class have type ids +// in the same range, and that there are no unrelated types in that range. For +// more details about how to assign type tags to types, see the TagRange class. // // The external pointer sandboxing mechanism ensures that every access to an // external pointer field will result in a valid pointer of the expected type @@ -515,167 +540,136 @@ static_assert((1 << (32 - kExternalBufferHandleShift)) == // for this purpose, instead of using the ExternalPointer accessors one needs to // use ExternalPointerHandles directly and use them to access the pointers in an // ExternalPointerTable. -constexpr uint64_t kExternalPointerMarkBit = 1ULL << 62; -constexpr uint64_t kExternalPointerTagMask = 0x40ff000000000000; -constexpr uint64_t kExternalPointerTagMaskWithoutMarkBit = 0xff000000000000; -constexpr uint64_t kExternalPointerTagShift = 48; - -// All possible 8-bit type tags. -// These are sorted so that tags can be grouped together and it can efficiently -// be checked if a tag belongs to a given group. See for example the -// IsSharedExternalPointerType routine. -constexpr uint64_t kAllTagsForAndBasedTypeChecking[] = { - 0b00001111, 0b00010111, 0b00011011, 0b00011101, 0b00011110, 0b00100111, - 0b00101011, 0b00101101, 0b00101110, 0b00110011, 0b00110101, 0b00110110, - 0b00111001, 0b00111010, 0b00111100, 0b01000111, 0b01001011, 0b01001101, - 0b01001110, 0b01010011, 0b01010101, 0b01010110, 0b01011001, 0b01011010, - 0b01011100, 0b01100011, 0b01100101, 0b01100110, 0b01101001, 0b01101010, - 0b01101100, 0b01110001, 0b01110010, 0b01110100, 0b01111000, 0b10000111, - 0b10001011, 0b10001101, 0b10001110, 0b10010011, 0b10010101, 0b10010110, - 0b10011001, 0b10011010, 0b10011100, 0b10100011, 0b10100101, 0b10100110, - 0b10101001, 0b10101010, 0b10101100, 0b10110001, 0b10110010, 0b10110100, - 0b10111000, 0b11000011, 0b11000101, 0b11000110, 0b11001001, 0b11001010, - 0b11001100, 0b11010001, 0b11010010, 0b11010100, 0b11011000, 0b11100001, - 0b11100010, 0b11100100, 0b11101000, 0b11110000}; - -#define TAG(i) \ - ((kAllTagsForAndBasedTypeChecking[i] << kExternalPointerTagShift) | \ - kExternalPointerMarkBit) - -// clang-format off - -// When adding new tags, please ensure that the code using these tags is -// "substitution-safe", i.e. still operate safely if external pointers of the -// same type are swapped by an attacker. See comment above for more details. - -// Shared external pointers are owned by the shared Isolate and stored in the -// shared external pointer table associated with that Isolate, where they can -// be accessed from multiple threads at the same time. The objects referenced -// in this way must therefore always be thread-safe. -#define SHARED_EXTERNAL_POINTER_TAGS(V) \ - V(kFirstSharedTag, TAG(0)) \ - V(kWaiterQueueNodeTag, TAG(0)) \ - V(kExternalStringResourceTag, TAG(1)) \ - V(kExternalStringResourceDataTag, TAG(2)) \ - V(kLastSharedTag, TAG(2)) - // Leave some space in the tag range here for future shared tags. - -// External pointers using these tags are kept in a per-Isolate external -// pointer table and can only be accessed when this Isolate is active. -#define PER_ISOLATE_EXTERNAL_POINTER_TAGS(V) \ - V(kNativeContextMicrotaskQueueTag, TAG(5)) \ - V(kEmbedderDataSlotPayloadTag, TAG(6)) \ -/* This tag essentially stands for a `void*` pointer in the V8 API, and */ \ -/* it is the Embedder's responsibility to ensure type safety (against */ \ -/* substitution) and lifetime validity of these objects. */ \ - V(kExternalObjectValueTag, TAG(7)) \ - V(kFunctionTemplateInfoCallbackTag, TAG(8)) \ - V(kAccessorInfoGetterTag, TAG(9)) \ - V(kAccessorInfoSetterTag, TAG(10)) \ - V(kWasmInternalFunctionCallTargetTag, TAG(11)) \ - V(kWasmTypeInfoNativeTypeTag, TAG(12)) \ - V(kWasmExportedFunctionDataSignatureTag, TAG(13)) \ - V(kWasmContinuationJmpbufTag, TAG(14)) \ - V(kWasmStackMemoryTag, TAG(15)) \ - V(kWasmIndirectFunctionTargetTag, TAG(16)) \ - /* Foreigns */ \ - V(kGenericForeignTag, TAG(20)) \ - V(kApiNamedPropertyQueryCallbackTag, TAG(21)) \ - V(kApiNamedPropertyGetterCallbackTag, TAG(22)) \ - V(kApiNamedPropertySetterCallbackTag, TAG(23)) \ - V(kApiNamedPropertyDescriptorCallbackTag, TAG(24)) \ - V(kApiNamedPropertyDefinerCallbackTag, TAG(25)) \ - V(kApiNamedPropertyDeleterCallbackTag, TAG(26)) \ - V(kApiIndexedPropertyQueryCallbackTag, TAG(27)) \ - V(kApiIndexedPropertyGetterCallbackTag, TAG(28)) \ - V(kApiIndexedPropertySetterCallbackTag, TAG(29)) \ - V(kApiIndexedPropertyDescriptorCallbackTag, TAG(30)) \ - V(kApiIndexedPropertyDefinerCallbackTag, TAG(31)) \ - V(kApiIndexedPropertyDeleterCallbackTag, TAG(32)) \ - V(kApiIndexedPropertyEnumeratorCallbackTag, TAG(33)) \ - V(kApiAccessCheckCallbackTag, TAG(34)) \ - V(kApiAbortScriptExecutionCallbackTag, TAG(35)) \ - V(kSyntheticModuleTag, TAG(36)) \ - V(kMicrotaskCallbackTag, TAG(37)) \ - V(kMicrotaskCallbackDataTag, TAG(38)) \ - V(kCFunctionTag, TAG(39)) \ - V(kCFunctionInfoTag, TAG(40)) \ - V(kMessageListenerTag, TAG(41)) \ - V(kWaiterQueueForeignTag, TAG(42)) \ - /* Managed */ \ - V(kFirstManagedResourceTag, TAG(50)) \ - V(kGenericManagedTag, TAG(50)) \ - V(kWasmWasmStreamingTag, TAG(51)) \ - V(kWasmFuncDataTag, TAG(52)) \ - V(kWasmManagedDataTag, TAG(53)) \ - V(kWasmNativeModuleTag, TAG(54)) \ - V(kIcuBreakIteratorTag, TAG(55)) \ - V(kIcuUnicodeStringTag, TAG(56)) \ - V(kIcuListFormatterTag, TAG(57)) \ - V(kIcuLocaleTag, TAG(58)) \ - V(kIcuSimpleDateFormatTag, TAG(59)) \ - V(kIcuDateIntervalFormatTag, TAG(60)) \ - V(kIcuRelativeDateTimeFormatterTag, TAG(61)) \ - V(kIcuLocalizedNumberFormatterTag, TAG(62)) \ - V(kIcuPluralRulesTag, TAG(63)) \ - V(kIcuCollatorTag, TAG(64)) \ - V(kDisplayNamesInternalTag, TAG(65)) \ - /* External resources whose lifetime is tied to */ \ - /* their entry in the external pointer table but */ \ - /* which are not referenced via a Managed */ \ - V(kArrayBufferExtensionTag, TAG(66)) \ - V(kLastManagedResourceTag, TAG(66)) \ - -// All external pointer tags. -#define ALL_EXTERNAL_POINTER_TAGS(V) \ - SHARED_EXTERNAL_POINTER_TAGS(V) \ - PER_ISOLATE_EXTERNAL_POINTER_TAGS(V) - -#define EXTERNAL_POINTER_TAG_ENUM(Name, Tag) Name = Tag, -#define MAKE_TAG(HasMarkBit, TypeTag) \ - ((static_cast(TypeTag) << kExternalPointerTagShift) | \ - (HasMarkBit ? kExternalPointerMarkBit : 0)) -enum ExternalPointerTag : uint64_t { - // Empty tag value. Mostly used as placeholder. - kExternalPointerNullTag = MAKE_TAG(1, 0b00000000), - // External pointer tag that will match any external pointer. Use with care! - kAnyExternalPointerTag = MAKE_TAG(1, 0b11111111), - // External pointer tag that will match any external pointer in a Foreign. - // Use with care! If desired, this could be made more fine-granular. - kAnyForeignTag = kAnyExternalPointerTag, - // The free entry tag has all type bits set so every type check with a - // different type fails. It also doesn't have the mark bit set as free - // entries are (by definition) not alive. - kExternalPointerFreeEntryTag = MAKE_TAG(0, 0b11111111), - // Evacuation entries are used during external pointer table compaction. - kExternalPointerEvacuationEntryTag = MAKE_TAG(1, 0b11111110), - // Tag for zapped/invalidated entries. Those are considered to no longer be - // in use and so have the marking bit cleared. - kExternalPointerZappedEntryTag = MAKE_TAG(0, 0b11111101), - - ALL_EXTERNAL_POINTER_TAGS(EXTERNAL_POINTER_TAG_ENUM) +// +// The tag is currently in practice limited to 15 bits since it needs to fit +// together with a marking bit into the unused parts of a pointer. +enum ExternalPointerTag : uint16_t { + kFirstExternalPointerTag = 0, + kExternalPointerNullTag = 0, + + // When adding new tags, please ensure that the code using these tags is + // "substitution-safe", i.e. still operate safely if external pointers of the + // same type are swapped by an attacker. See comment above for more details. + + // Shared external pointers are owned by the shared Isolate and stored in the + // shared external pointer table associated with that Isolate, where they can + // be accessed from multiple threads at the same time. The objects referenced + // in this way must therefore always be thread-safe. + kFirstSharedExternalPointerTag, + kWaiterQueueNodeTag = kFirstSharedExternalPointerTag, + kExternalStringResourceTag, + kExternalStringResourceDataTag, + kLastSharedExternalPointerTag = kExternalStringResourceDataTag, + + // External pointers using these tags are kept in a per-Isolate external + // pointer table and can only be accessed when this Isolate is active. + kNativeContextMicrotaskQueueTag, + kEmbedderDataSlotPayloadTag, + // This tag essentially stands for a `void*` pointer in the V8 API, and it is + // the Embedder's responsibility to ensure type safety (against substitution) + // and lifetime validity of these objects. + kExternalObjectValueTag, + kFirstMaybeReadOnlyExternalPointerTag, + kFunctionTemplateInfoCallbackTag = kFirstMaybeReadOnlyExternalPointerTag, + kAccessorInfoGetterTag, + kAccessorInfoSetterTag, + kLastMaybeReadOnlyExternalPointerTag = kAccessorInfoSetterTag, + kWasmInternalFunctionCallTargetTag, + kWasmTypeInfoNativeTypeTag, + kWasmExportedFunctionDataSignatureTag, + kWasmStackMemoryTag, + kWasmIndirectFunctionTargetTag, + + // Foreigns + kFirstForeignExternalPointerTag, + kGenericForeignTag = kFirstForeignExternalPointerTag, + kApiNamedPropertyQueryCallbackTag, + kApiNamedPropertyGetterCallbackTag, + kApiNamedPropertySetterCallbackTag, + kApiNamedPropertyDescriptorCallbackTag, + kApiNamedPropertyDefinerCallbackTag, + kApiNamedPropertyDeleterCallbackTag, + kApiIndexedPropertyQueryCallbackTag, + kApiIndexedPropertyGetterCallbackTag, + kApiIndexedPropertySetterCallbackTag, + kApiIndexedPropertyDescriptorCallbackTag, + kApiIndexedPropertyDefinerCallbackTag, + kApiIndexedPropertyDeleterCallbackTag, + kApiIndexedPropertyEnumeratorCallbackTag, + kApiAccessCheckCallbackTag, + kApiAbortScriptExecutionCallbackTag, + kSyntheticModuleTag, + kMicrotaskCallbackTag, + kMicrotaskCallbackDataTag, + kCFunctionTag, + kCFunctionInfoTag, + kMessageListenerTag, + kWaiterQueueForeignTag, + + // Managed + kFirstManagedResourceTag, + kFirstManagedExternalPointerTag = kFirstManagedResourceTag, + kGenericManagedTag = kFirstManagedExternalPointerTag, + kWasmWasmStreamingTag, + kWasmFuncDataTag, + kWasmManagedDataTag, + kWasmNativeModuleTag, + kIcuBreakIteratorTag, + kIcuUnicodeStringTag, + kIcuListFormatterTag, + kIcuLocaleTag, + kIcuSimpleDateFormatTag, + kIcuDateIntervalFormatTag, + kIcuRelativeDateTimeFormatterTag, + kIcuLocalizedNumberFormatterTag, + kIcuPluralRulesTag, + kIcuCollatorTag, + kDisplayNamesInternalTag, + kD8WorkerTag, + kD8ModuleEmbedderDataTag, + kLastForeignExternalPointerTag = kD8ModuleEmbedderDataTag, + kLastManagedExternalPointerTag = kLastForeignExternalPointerTag, + // External resources whose lifetime is tied to their entry in the external + // pointer table but which are not referenced via a Managed + kArrayBufferExtensionTag, + kLastManagedResourceTag = kArrayBufferExtensionTag, + + kExternalPointerZappedEntryTag = 0x7d, + kExternalPointerEvacuationEntryTag = 0x7e, + kExternalPointerFreeEntryTag = 0x7f, + // The tags are limited to 7 bits, so the last tag is 0x7f. + kLastExternalPointerTag = 0x7f, }; -#undef MAKE_TAG -#undef TAG -#undef EXTERNAL_POINTER_TAG_ENUM - -// clang-format on +using ExternalPointerTagRange = TagRange; + +constexpr ExternalPointerTagRange kAnyExternalPointerTagRange( + kFirstExternalPointerTag, kLastExternalPointerTag); +constexpr ExternalPointerTagRange kAnySharedExternalPointerTagRange( + kFirstSharedExternalPointerTag, kLastSharedExternalPointerTag); +constexpr ExternalPointerTagRange kAnyForeignExternalPointerTagRange( + kFirstForeignExternalPointerTag, kLastForeignExternalPointerTag); +constexpr ExternalPointerTagRange kAnyManagedExternalPointerTagRange( + kFirstManagedExternalPointerTag, kLastManagedExternalPointerTag); +constexpr ExternalPointerTagRange kAnyMaybeReadOnlyExternalPointerTagRange( + kFirstMaybeReadOnlyExternalPointerTag, + kLastMaybeReadOnlyExternalPointerTag); +constexpr ExternalPointerTagRange kAnyManagedResourceExternalPointerTag( + kFirstManagedResourceTag, kLastManagedResourceTag); // True if the external pointer must be accessed from the shared isolate's // external pointer table. V8_INLINE static constexpr bool IsSharedExternalPointerType( - ExternalPointerTag tag) { - return tag >= kFirstSharedTag && tag <= kLastSharedTag; + ExternalPointerTagRange tag_range) { + return kAnySharedExternalPointerTagRange.Contains(tag_range); } // True if the external pointer may live in a read-only object, in which case // the table entry will be in the shared read-only segment of the external // pointer table. V8_INLINE static constexpr bool IsMaybeReadOnlyExternalPointerType( - ExternalPointerTag tag) { - return tag == kAccessorInfoGetterTag || tag == kAccessorInfoSetterTag || - tag == kFunctionTemplateInfoCallbackTag; + ExternalPointerTagRange tag_range) { + return kAnyMaybeReadOnlyExternalPointerTagRange.Contains(tag_range); } // True if the external pointer references an external object whose lifetime is @@ -683,26 +677,23 @@ V8_INLINE static constexpr bool IsMaybeReadOnlyExternalPointerType( // In this case, the entry in the ExternalPointerTable always points to an // object derived from ExternalPointerTable::ManagedResource. V8_INLINE static constexpr bool IsManagedExternalPointerType( - ExternalPointerTag tag) { - return tag >= kFirstManagedResourceTag && tag <= kLastManagedResourceTag; + ExternalPointerTagRange tag_range) { + return kAnyManagedResourceExternalPointerTag.Contains(tag_range); } -// Sanity checks. -#define CHECK_SHARED_EXTERNAL_POINTER_TAGS(Tag, ...) \ - static_assert(IsSharedExternalPointerType(Tag)); -#define CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS(Tag, ...) \ - static_assert(!IsSharedExternalPointerType(Tag)); - -SHARED_EXTERNAL_POINTER_TAGS(CHECK_SHARED_EXTERNAL_POINTER_TAGS) -PER_ISOLATE_EXTERNAL_POINTER_TAGS(CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS) - -#undef CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS -#undef CHECK_SHARED_EXTERNAL_POINTER_TAGS - -#undef SHARED_EXTERNAL_POINTER_TAGS -#undef EXTERNAL_POINTER_TAGS +// When an external poiner field can contain the null external pointer handle, +// the type checking mechanism needs to also check for null. +// TODO(saelo): this is mostly a temporary workaround to introduce range-based +// type checks. In the future, we should either (a) change the type tagging +// scheme so that null always passes or (b) (more likely) introduce dedicated +// null entries for those tags that need them (similar to other well-known +// empty value constants such as the empty fixed array). +V8_INLINE static constexpr bool ExternalPointerCanBeEmpty( + ExternalPointerTagRange tag_range) { + return tag_range.Contains(kArrayBufferExtensionTag) || + tag_range.Contains(kEmbedderDataSlotPayloadTag); +} -// // Indirect Pointers. // // When the sandbox is enabled, indirect pointers are used to reference @@ -746,7 +737,7 @@ using TrustedPointerHandle = IndirectPointerHandle; // shifted indices allows omitting bounds checks. constexpr size_t kTrustedPointerTableReservationSize = 64 * MB; -// The trusted pointer handles are stores shifted to the left by this amount +// The trusted pointer handles are stored shifted to the left by this amount // to guarantee that they are smaller than the maximum table size. constexpr uint32_t kTrustedPointerHandleShift = 9; @@ -822,29 +813,6 @@ constexpr bool kAllCodeObjectsLiveInTrustedSpace = kRuntimeGeneratedCodeObjectsLiveInTrustedSpace && kBuiltinCodeObjectsLiveInTrustedSpace; -// -// JavaScript Dispatch Table -// -// A JSDispatchHandle represents a 32-bit index into a JSDispatchTable. -using JSDispatchHandle = uint32_t; - -constexpr JSDispatchHandle kNullJSDispatchHandle = 0; - -// The size of the virtual memory reservation for the JSDispatchTable. -// As with the other tables, a maximum table size in combination with shifted -// indices allows omitting bounds checks. -constexpr size_t kJSDispatchTableReservationSize = 128 * MB; -constexpr uint32_t kJSDispatchHandleShift = 9; - -// The maximum number of entries in a JSDispatchTable. -constexpr int kJSDispatchTableEntrySize = 16; -constexpr int kJSDispatchTableEntrySizeLog2 = 4; -constexpr size_t kMaxJSDispatchEntries = - kJSDispatchTableReservationSize / kJSDispatchTableEntrySize; -static_assert((1 << (32 - kJSDispatchHandleShift)) == kMaxJSDispatchEntries, - "kJSDispatchTableReservationSize and kJSDispatchEntryHandleShift " - "don't match"); - // {obj} must be the raw tagged pointer representation of a HeapObject // that's guaranteed to never be in ReadOnlySpace. V8_EXPORT internal::Isolate* IsolateFromNeverReadOnlySpaceObject(Address obj); @@ -902,6 +870,7 @@ class Internals { static const int kNumberOfBooleanFlags = 6; static const int kErrorMessageParamSize = 1; static const int kTablesAlignmentPaddingSize = 1; + static const int kRegExpStaticResultOffsetsVectorSize = kApiSystemPointerSize; static const int kBuiltinTier0EntryTableSize = 7 * kApiSystemPointerSize; static const int kBuiltinTier0TableSize = 7 * kApiSystemPointerSize; static const int kLinearAllocationAreaSize = 3 * kApiSystemPointerSize; @@ -912,7 +881,6 @@ class Internals { // ExternalPointerTable and TrustedPointerTable layout guarantees. static const int kExternalPointerTableBasePointerOffset = 0; static const int kExternalPointerTableSize = 2 * kApiSystemPointerSize; - static const int kExternalBufferTableSize = 2 * kApiSystemPointerSize; static const int kTrustedPointerTableSize = 2 * kApiSystemPointerSize; static const int kTrustedPointerTableBasePointerOffset = 0; @@ -924,9 +892,9 @@ class Internals { kIsolateStackGuardOffset + kStackGuardSize; static const int kErrorMessageParamOffset = kVariousBooleanFlagsOffset + kNumberOfBooleanFlags; - static const int kBuiltinTier0EntryTableOffset = kErrorMessageParamOffset + - kErrorMessageParamSize + - kTablesAlignmentPaddingSize; + static const int kBuiltinTier0EntryTableOffset = + kErrorMessageParamOffset + kErrorMessageParamSize + + kTablesAlignmentPaddingSize + kRegExpStaticResultOffsetsVectorSize; static const int kBuiltinTier0TableOffset = kBuiltinTier0EntryTableOffset + kBuiltinTier0EntryTableSize; static const int kNewAllocationInfoOffset = @@ -935,14 +903,15 @@ class Internals { kNewAllocationInfoOffset + kLinearAllocationAreaSize; static const int kFastCCallAlignmentPaddingSize = - kApiSystemPointerSize == 8 ? 0 : kApiSystemPointerSize; - static const int kIsolateFastCCallCallerFpOffset = + kApiSystemPointerSize == 8 ? 5 * kApiSystemPointerSize + : 1 * kApiSystemPointerSize; + static const int kIsolateFastCCallCallerPcOffset = kOldAllocationInfoOffset + kLinearAllocationAreaSize + kFastCCallAlignmentPaddingSize; - static const int kIsolateFastCCallCallerPcOffset = - kIsolateFastCCallCallerFpOffset + kApiSystemPointerSize; - static const int kIsolateFastApiCallTargetOffset = + static const int kIsolateFastCCallCallerFpOffset = kIsolateFastCCallCallerPcOffset + kApiSystemPointerSize; + static const int kIsolateFastApiCallTargetOffset = + kIsolateFastCCallCallerFpOffset + kApiSystemPointerSize; static const int kIsolateLongTaskStatsCounterOffset = kIsolateFastApiCallTargetOffset + kApiSystemPointerSize; static const int kIsolateThreadLocalTopOffset = @@ -963,8 +932,14 @@ class Internals { kIsolateCppHeapPointerTableOffset + kExternalPointerTableSize; static const int kIsolateTrustedPointerTableOffset = kIsolateTrustedCageBaseOffset + kApiSystemPointerSize; - static const int kIsolateApiCallbackThunkArgumentOffset = + static const int kIsolateSharedTrustedPointerTableAddressOffset = kIsolateTrustedPointerTableOffset + kTrustedPointerTableSize; + static const int kIsolateTrustedPointerPublishingScopeOffset = + kIsolateSharedTrustedPointerTableAddressOffset + kApiSystemPointerSize; + static const int kIsolateCodePointerTableBaseAddressOffset = + kIsolateTrustedPointerPublishingScopeOffset + kApiSystemPointerSize; + static const int kIsolateApiCallbackThunkArgumentOffset = + kIsolateCodePointerTableBaseAddressOffset + kApiSystemPointerSize; #else static const int kIsolateApiCallbackThunkArgumentOffset = kIsolateCppHeapPointerTableOffset + kExternalPointerTableSize; @@ -973,8 +948,10 @@ class Internals { static const int kIsolateApiCallbackThunkArgumentOffset = kIsolateEmbedderDataOffset + kNumIsolateDataSlots * kApiSystemPointerSize; #endif // V8_COMPRESS_POINTERS - static const int kContinuationPreservedEmbedderDataOffset = + static const int kIsolateRegexpExecVectorArgumentOffset = kIsolateApiCallbackThunkArgumentOffset + kApiSystemPointerSize; + static const int kContinuationPreservedEmbedderDataOffset = + kIsolateRegexpExecVectorArgumentOffset + kApiSystemPointerSize; static const int kIsolateRootsOffset = kContinuationPreservedEmbedderDataOffset + kApiSystemPointerSize; @@ -986,12 +963,12 @@ class Internals { // These constants are copied from static-roots.h and guarded by static asserts. #define EXPORTED_STATIC_ROOTS_PTR_LIST(V) \ - V(UndefinedValue, 0x69) \ - V(NullValue, 0x85) \ - V(TrueValue, 0xc9) \ - V(FalseValue, 0xad) \ - V(EmptyString, 0xa1) \ - V(TheHoleValue, 0x791) + V(UndefinedValue, 0x11) \ + V(NullValue, 0x2d) \ + V(TrueValue, 0x71) \ + V(FalseValue, 0x55) \ + V(EmptyString, 0x49) \ + V(TheHoleValue, 0x761) using Tagged_t = uint32_t; struct StaticReadOnlyRoot { @@ -1001,7 +978,7 @@ class Internals { // Use 0 for kStringMapLowerBound since string maps are the first maps. static constexpr Tagged_t kStringMapLowerBound = 0; - static constexpr Tagged_t kStringMapUpperBound = 0x47d; + static constexpr Tagged_t kStringMapUpperBound = 0x425; #define PLUSONE(...) +1 static constexpr size_t kNumberOfExportedStaticRoots = @@ -1047,7 +1024,7 @@ class Internals { // Soft limit for AdjustAmountofExternalAllocatedMemory. Trigger an // incremental GC once the external memory reaches this limit. - static constexpr int kExternalAllocationSoftLimit = 64 * 1024 * 1024; + static constexpr size_t kExternalAllocationSoftLimit = 64 * 1024 * 1024; #ifdef V8_MAP_PACKING static const uintptr_t kMapWordMetadataMask = 0xffffULL << 48; @@ -1289,15 +1266,15 @@ class Internals { #endif } - template + template V8_INLINE static Address ReadExternalPointerField(v8::Isolate* isolate, Address heap_object_ptr, int offset) { #ifdef V8_ENABLE_SANDBOX - static_assert(tag != kExternalPointerNullTag); - // See src/sandbox/external-pointer-table-inl.h. Logic duplicated here so + static_assert(!tag_range.IsEmpty()); + // See src/sandbox/external-pointer-table.h. Logic duplicated here so // it can be inlined and doesn't require an additional call. - Address* table = IsSharedExternalPointerType(tag) + Address* table = IsSharedExternalPointerType(tag_range) ? GetSharedExternalPointerTableBase(isolate) : GetExternalPointerTableBase(isolate); internal::ExternalPointerHandle handle = @@ -1306,7 +1283,14 @@ class Internals { std::atomic
* ptr = reinterpret_cast*>(&table[index]); Address entry = std::atomic_load_explicit(ptr, std::memory_order_relaxed); - return entry & ~tag; + ExternalPointerTag actual_tag = static_cast( + (entry & kExternalPointerTagMask) >> kExternalPointerTagShift); + if (V8_LIKELY(tag_range.Contains(actual_tag))) { + return entry & kExternalPointerPayloadMask; + } else { + return 0; + } + return entry; #else return ReadRawField
(heap_object_ptr, offset); #endif // V8_ENABLE_SANDBOX @@ -1360,7 +1344,7 @@ class BackingStoreBase {}; // The maximum value in enum GarbageCollectionReason, defined in heap.h. // This is needed for histograms sampling garbage collection reasons. -constexpr int kGarbageCollectionReasonMaxValue = 27; +constexpr int kGarbageCollectionReasonMaxValue = 29; // Base class for the address block allocator compatible with standard // containers, which registers its allocated range as strong roots. @@ -1377,7 +1361,10 @@ class V8_EXPORT StrongRootAllocatorBase { protected: explicit StrongRootAllocatorBase(Heap* heap) : heap_(heap) {} + explicit StrongRootAllocatorBase(LocalHeap* heap); explicit StrongRootAllocatorBase(Isolate* isolate); + explicit StrongRootAllocatorBase(v8::Isolate* isolate); + explicit StrongRootAllocatorBase(LocalIsolate* isolate); // Allocate/deallocate a range of n elements of type internal::Address. Address* allocate_impl(size_t n); @@ -1397,9 +1384,8 @@ class StrongRootAllocator : private std::allocator { public: using value_type = T; - explicit StrongRootAllocator(Heap* heap) {} - explicit StrongRootAllocator(Isolate* isolate) {} - explicit StrongRootAllocator(v8::Isolate* isolate) {} + template + explicit StrongRootAllocator(HeapOrIsolateT*) {} template StrongRootAllocator(const StrongRootAllocator& other) noexcept {} @@ -1430,7 +1416,7 @@ struct MaybeDefineIteratorConcept {}; template struct MaybeDefineIteratorConcept< Iterator, std::enable_if_t>> { - using iterator_concept = Iterator::iterator_concept; + using iterator_concept = typename Iterator::iterator_concept; }; // Otherwise fall back to `std::iterator_traits` if possible. template @@ -1443,7 +1429,8 @@ struct MaybeDefineIteratorConcept< // TODO(pkasting): Add this unconditionally after dropping support for old // libstdc++ versions. #if __has_include() - using iterator_concept = std::iterator_traits::iterator_concept; + using iterator_concept = + typename std::iterator_traits::iterator_concept; #endif }; @@ -1492,7 +1479,11 @@ class WrappedIterator : public MaybeDefineIteratorConcept { [[nodiscard]] constexpr reference operator*() const noexcept { return *it_; } [[nodiscard]] constexpr pointer operator->() const noexcept { - return it_.operator->(); + if constexpr (std::is_pointer_v) { + return it_; + } else { + return it_.operator->(); + } } template @@ -1623,16 +1614,25 @@ class WrappedIterator : public MaybeDefineIteratorConcept { // whether direct local support is enabled. class ValueHelper final { public: + // ValueHelper::InternalRepresentationType is an abstract type that + // corresponds to the internal representation of v8::Local and essentially + // to what T* really is (these two are always in sync). This type is used in + // methods like GetDataFromSnapshotOnce that need access to a handle's + // internal representation. In particular, if `x` is a `v8::Local`, then + // `v8::Local::FromRepr(x.repr())` gives exactly the same handle as `x`. #ifdef V8_ENABLE_DIRECT_HANDLE static constexpr Address kTaggedNullAddress = 1; - static constexpr Address kEmpty = kTaggedNullAddress; + + using InternalRepresentationType = internal::Address; + static constexpr InternalRepresentationType kEmpty = kTaggedNullAddress; #else - static constexpr Address kEmpty = kNullAddress; + using InternalRepresentationType = internal::Address*; + static constexpr InternalRepresentationType kEmpty = nullptr; #endif // V8_ENABLE_DIRECT_HANDLE template V8_INLINE static bool IsEmpty(T* value) { - return reinterpret_cast
(value) == kEmpty; + return ValueAsRepr(value) == kEmpty; } // Returns a handle's "value" for all kinds of abstract handles. For Local, @@ -1659,6 +1659,16 @@ class ValueHelper final { return *reinterpret_cast(slot); } + template + V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) { + return reinterpret_cast(value); + } + + template + V8_INLINE static T* ReprAsValue(InternalRepresentationType repr) { + return reinterpret_cast(repr); + } + #else // !V8_ENABLE_DIRECT_HANDLE template @@ -1671,6 +1681,17 @@ class ValueHelper final { return reinterpret_cast(slot); } + template + V8_INLINE static InternalRepresentationType ValueAsRepr(const T* value) { + return const_cast( + reinterpret_cast(value)); + } + + template + V8_INLINE static T* ReprAsValue(InternalRepresentationType repr) { + return reinterpret_cast(repr); + } + #endif // V8_ENABLE_DIRECT_HANDLE }; diff --git a/deps/v8/include/v8-isolate.h b/deps/v8/include/v8-isolate.h index 54571391fb8227..49bb46aee3dbb2 100644 --- a/deps/v8/include/v8-isolate.h +++ b/deps/v8/include/v8-isolate.h @@ -164,28 +164,6 @@ class V8_EXPORT ResourceConstraints { uint32_t* stack_limit_ = nullptr; }; -/** - * Option flags passed to the SetRAILMode function. - * See documentation https://developers.google.com/web/tools/chrome-devtools/ - * profile/evaluate-performance/rail - */ -enum RAILMode : unsigned { - // Response performance mode: In this mode very low virtual machine latency - // is provided. V8 will try to avoid JavaScript execution interruptions. - // Throughput may be throttled. - PERFORMANCE_RESPONSE, - // Animation performance mode: In this mode low virtual machine latency is - // provided. V8 will try to avoid as many JavaScript execution interruptions - // as possible. Throughput may be throttled. This is the default mode. - PERFORMANCE_ANIMATION, - // Idle performance mode: The embedder is idle. V8 can complete deferred work - // in this mode. - PERFORMANCE_IDLE, - // Load performance mode: In this mode high throughput is provided. V8 may - // turn off latency optimizations. - PERFORMANCE_LOAD -}; - /** * Memory pressure level for the MemoryPressureNotification. * kNone hints V8 that there is no memory pressure. @@ -196,11 +174,95 @@ enum RAILMode : unsigned { */ enum class MemoryPressureLevel { kNone, kModerate, kCritical }; +/** + * Signal for dependants of contexts. Useful for + * `ContextDisposedNotification()` to implement different strategies. + */ +enum class ContextDependants { + /** Context has no dependants. These are usually top-level contexts. */ + kNoDependants, + /** Context has some dependants, i.e., it may depend on other contexts. This + is usually the case for inner contexts. */ + kSomeDependants +}; + /** * Indicator for the stack state. */ using StackState = cppgc::EmbedderStackState; +/** + * The set of V8 isolates in a process is partitioned into groups. Each group + * has its own sandbox (if V8 was configured with support for the sandbox) and + * pointer-compression cage (if configured with pointer compression). + * + * By default, all isolates are placed in the same group. This is the most + * efficient configuration in terms of speed and memory use. However, with + * pointer compression enabled, total heap usage of isolates in a group + * cannot exceed 4 GB, not counting array buffers and other off-heap storage. + * Using multiple isolate groups can allow embedders to allocate more than 4GB + * of objects with pointer compression enabled, if the embedder's use case can + * span multiple isolates. + * + * Creating an isolate group reserves a range of virtual memory addresses. A + * group's memory mapping will be released when the last isolate in the group is + * disposed, and there are no more live IsolateGroup objects that refer to it. + * + * Note that Isolate groups are reference counted, and + * the IsolateGroup type is a reference to one. + * + * Note that it's not going to be possible to pass shared JS objects + * across IsolateGroup boundary. + * + */ +class V8_EXPORT IsolateGroup { + public: + /** + * Get the default isolate group. If this V8's build configuration only + * supports a single group, this is a reference to that single group. + * Otherwise this is a group like any other, distinguished only + * in that it is the first group. + */ + static IsolateGroup GetDefault(); + + /** + * Return true if new isolate groups can be created at run-time, or false if + * all isolates must be in the same group. + */ + static bool CanCreateNewGroups(); + + /** + * Create a new isolate group. If this V8's build configuration only supports + * a single group, abort. + */ + static IsolateGroup Create(); + + IsolateGroup(IsolateGroup&& other); + IsolateGroup& operator=(IsolateGroup&& other); + + IsolateGroup(const IsolateGroup&); + IsolateGroup& operator=(const IsolateGroup&); + + ~IsolateGroup(); + + bool operator==(const IsolateGroup& other) const { + return isolate_group_ == other.isolate_group_; + } + + bool operator!=(const IsolateGroup& other) const { + return !operator==(other); + } + + private: + friend class Isolate; + friend class ArrayBuffer::Allocator; + + // The isolate_group pointer should be already acquired. + explicit IsolateGroup(internal::IsolateGroup*&& isolate_group); + + internal::IsolateGroup* isolate_group_; +}; + /** * Isolate represents an isolated instance of the V8 engine. V8 isolates have * completely separate states. Objects from one isolate must not be used in @@ -524,7 +586,7 @@ class V8_EXPORT Isolate { kDurationFormat = 117, kInvalidatedNumberStringNotRegexpLikeProtector = 118, kOBSOLETE_RegExpUnicodeSetIncompatibilitiesWithUnicodeMode = 119, - kImportAssertionDeprecatedSyntax = 120, + kOBSOLETE_ImportAssertionDeprecatedSyntax = 120, kLocaleInfoObsoletedGetters = 121, kLocaleInfoFunctions = 122, kCompileHintsMagicAll = 123, @@ -549,6 +611,29 @@ class V8_EXPORT Isolate { kDocumentAllLegacyConstruct = 142, kConsoleContext = 143, kWasmImportedStringsUtf8 = 144, + kResizableArrayBuffer = 145, + kGrowableSharedArrayBuffer = 146, + kArrayByCopy = 147, + kArrayFromAsync = 148, + kIteratorMethods = 149, + kPromiseAny = 150, + kSetMethods = 151, + kArrayFindLast = 152, + kArrayGroup = 153, + kArrayBufferTransfer = 154, + kPromiseWithResolvers = 155, + kAtomicsWaitAsync = 156, + kExtendingNonExtensibleWithPrivate = 157, + kPromiseTry = 158, + kStringReplaceAll = 159, + kStringWellFormed = 160, + kWeakReferences = 161, + kErrorIsError = 162, + kInvalidatedTypedArrayLengthLookupChainProtector = 163, + kRegExpEscape = 164, + kFloat16Array = 165, + kExplicitResourceManagement = 166, + kWasmBranchHinting = 167, // If you add new values here, you'll also need to update Chromium's: // web_feature.mojom, use_counter_callback.cc, and enums.xml. V8 changes to @@ -589,9 +674,9 @@ class V8_EXPORT Isolate { * currently entered isolate. * * Only Isolate::GetData() and Isolate::SetData(), which access the - * embedder-controlled parts of the isolate, are allowed to be called on the - * uninitialized isolate. To initialize the isolate, call - * `Isolate::Initialize()` or initialize a `SnapshotCreator`. + * embedder-controlled parts of the isolate, as well as Isolate::GetGroup(), + * are allowed to be called on the uninitialized isolate. To initialize the + * isolate, call `Isolate::Initialize()` or initialize a `SnapshotCreator`. * * When an isolate is no longer used its resources should be freed * by calling Dispose(). Using the delete operator is not allowed. @@ -599,6 +684,12 @@ class V8_EXPORT Isolate { * V8::Initialize() must have run prior to this. */ static Isolate* Allocate(); + static Isolate* Allocate(const IsolateGroup& group); + + /** + * Return the group for this isolate. + */ + IsolateGroup GetGroup() const; /** * Initialize an Isolate previously allocated by Isolate::Allocate(). @@ -615,6 +706,7 @@ class V8_EXPORT Isolate { * V8::Initialize() must have run prior to this. */ static Isolate* New(const CreateParams& params); + static Isolate* New(const IsolateGroup& group, const CreateParams& params); /** * Returns the entered isolate for the current thread or NULL in @@ -672,6 +764,18 @@ class V8_EXPORT Isolate { void SetHostImportModuleDynamicallyCallback( HostImportModuleDynamicallyCallback callback); + /** + * This specifies the callback called by the upcoming dynamic + * import() and import.source() language feature to load modules. + * + * This API is experimental and is expected to be changed or removed in the + * future. The callback is currently only called when for source-phase + * imports. Evaluation-phase imports use the existing + * HostImportModuleDynamicallyCallback callback. + */ + void SetHostImportModuleWithPhaseDynamicallyCallback( + HostImportModuleWithPhaseDynamicallyCallback callback); + /** * This specifies the callback called by the upcoming import.meta * language feature to retrieve host-defined meta data for a module. @@ -686,6 +790,14 @@ class V8_EXPORT Isolate { void SetHostCreateShadowRealmContextCallback( HostCreateShadowRealmContextCallback callback); + /** + * Set the callback that checks whether a Error.isError should return true for + * a JSApiWrapper object, i.e. whether it represents a native JS error. For + * example, in an HTML embedder, DOMExceptions are considered native errors. + */ + void SetIsJSApiWrapperNativeErrorCallback( + IsJSApiWrapperNativeErrorCallback callback); + /** * This specifies the callback called when the stack property of Error * is accessed. @@ -701,7 +813,10 @@ class V8_EXPORT Isolate { /** * This specifies the callback called when an ETW tracing session starts. */ + V8_DEPRECATE_SOON("Use SetFilterETWSessionByURL2Callback instead") void SetFilterETWSessionByURLCallback(FilterETWSessionByURLCallback callback); + void SetFilterETWSessionByURL2Callback( + FilterETWSessionByURL2Callback callback); #endif // V8_OS_WIN /** @@ -720,6 +835,14 @@ class V8_EXPORT Isolate { */ void SetBatterySaverMode(bool battery_saver_mode_enabled); + /** + * Optional request from the embedder to tune v8 towards memory efficiency + * rather than speed if `memory_saver_mode_enabled` is true, because the + * embedder is in memory saver mode. If false, the correct tuning is left + * to v8 to decide. + */ + void SetMemorySaverMode(bool memory_saver_mode_enabled); + /** * Drop non-essential caches. Should only be called from testing code. * The method can potentially block for a long time and does not necessarily @@ -887,18 +1010,13 @@ class V8_EXPORT Isolate { size_t frames_limit, SampleInfo* sample_info); /** - * Adjusts the amount of registered external memory. Used to give V8 an - * indication of the amount of externally allocated memory that is kept alive - * by JavaScript objects. V8 uses this to decide when to perform global - * garbage collections. Registering externally allocated memory will trigger - * global garbage collections more often than it would otherwise in an attempt - * to garbage collect the JavaScript objects that keep the externally - * allocated memory alive. + * Adjusts the amount of registered external memory. * * \param change_in_bytes the change in externally allocated memory that is * kept alive by JavaScript objects. * \returns the adjusted value. */ + V8_DEPRECATE_SOON("Use ExternalMemoryAccounter instead.") int64_t AdjustAmountOfExternalAllocatedMemory(int64_t change_in_bytes); /** @@ -963,6 +1081,14 @@ class V8_EXPORT Isolate { */ Local ThrowException(Local exception); + /** + * Returns true if an exception was thrown but not processed yet by an + * exception handler on JavaScript side or by v8::TryCatch handler. + * + * This is an experimental feature and may still change significantly. + */ + bool HasPendingException(); + using GCCallback = void (*)(Isolate* isolate, GCType type, GCCallbackFlags flags); using GCCallbackWithData = void (*)(Isolate* isolate, GCType type, @@ -1046,28 +1172,14 @@ class V8_EXPORT Isolate { */ void SetEmbedderRootsHandler(EmbedderRootsHandler* handler); - /** - * Attaches a managed C++ heap as an extension to the JavaScript heap. The - * embedder maintains ownership of the CppHeap. At most one C++ heap can be - * attached to V8. - * - * Multi-threaded use requires the use of v8::Locker/v8::Unlocker, see - * CppHeap. - * - * If a CppHeap is set via CreateParams, then this call is a noop. - */ - V8_DEPRECATE_SOON( - "Set the heap on Isolate creation using CreateParams instead.") - void AttachCppHeap(CppHeap*); + using ReleaseCppHeapCallback = void (*)(std::unique_ptr); /** - * Detaches a managed C++ heap if one was attached using `AttachCppHeap()`. - * - * If a CppHeap is set via CreateParams, then this call is a noop. + * Sets a callback on the isolate that gets called when the CppHeap gets + * detached. The callback can then either take ownership of the CppHeap, or + * the CppHeap gets deallocated. */ - V8_DEPRECATE_SOON( - "Set the heap on Isolate creation using CreateParams instead.") - void DetachCppHeap(); + void SetReleaseCppHeapCallbackForTesting(ReleaseCppHeapCallback callback); /** * \returns the C++ heap managed by V8. Only available if such a heap has been @@ -1075,85 +1187,6 @@ class V8_EXPORT Isolate { */ CppHeap* GetCppHeap() const; - /** - * Use for |AtomicsWaitCallback| to indicate the type of event it receives. - */ - enum class AtomicsWaitEvent { - /** Indicates that this call is happening before waiting. */ - kStartWait, - /** `Atomics.wait()` finished because of an `Atomics.wake()` call. */ - kWokenUp, - /** `Atomics.wait()` finished because it timed out. */ - kTimedOut, - /** `Atomics.wait()` was interrupted through |TerminateExecution()|. */ - kTerminatedExecution, - /** `Atomics.wait()` was stopped through |AtomicsWaitWakeHandle|. */ - kAPIStopped, - /** `Atomics.wait()` did not wait, as the initial condition was not met. */ - kNotEqual - }; - - /** - * Passed to |AtomicsWaitCallback| as a means of stopping an ongoing - * `Atomics.wait` call. - */ - class V8_EXPORT AtomicsWaitWakeHandle { - public: - /** - * Stop this `Atomics.wait()` call and call the |AtomicsWaitCallback| - * with |kAPIStopped|. - * - * This function may be called from another thread. The caller has to ensure - * through proper synchronization that it is not called after - * the finishing |AtomicsWaitCallback|. - * - * Note that the ECMAScript specification does not plan for the possibility - * of wakeups that are neither coming from a timeout or an `Atomics.wake()` - * call, so this may invalidate assumptions made by existing code. - * The embedder may accordingly wish to schedule an exception in the - * finishing |AtomicsWaitCallback|. - */ - void Wake(); - }; - - /** - * Embedder callback for `Atomics.wait()` that can be added through - * |SetAtomicsWaitCallback|. - * - * This will be called just before starting to wait with the |event| value - * |kStartWait| and after finishing waiting with one of the other - * values of |AtomicsWaitEvent| inside of an `Atomics.wait()` call. - * - * |array_buffer| will refer to the underlying SharedArrayBuffer, - * |offset_in_bytes| to the location of the waited-on memory address inside - * the SharedArrayBuffer. - * - * |value| and |timeout_in_ms| will be the values passed to - * the `Atomics.wait()` call. If no timeout was used, |timeout_in_ms| - * will be `INFINITY`. - * - * In the |kStartWait| callback, |stop_handle| will be an object that - * is only valid until the corresponding finishing callback and that - * can be used to stop the wait process while it is happening. - * - * This callback may schedule exceptions, *unless* |event| is equal to - * |kTerminatedExecution|. - */ - using AtomicsWaitCallback = void (*)(AtomicsWaitEvent event, - Local array_buffer, - size_t offset_in_bytes, int64_t value, - double timeout_in_ms, - AtomicsWaitWakeHandle* stop_handle, - void* data); - - /** - * Set a new |AtomicsWaitCallback|. This overrides an earlier - * |AtomicsWaitCallback|, if there was any. If |callback| is nullptr, - * this unsets the callback. |data| will be passed to the callback - * as its last parameter. - */ - void SetAtomicsWaitCallback(AtomicsWaitCallback callback, void* data); - using GetExternallyAllocatedMemoryInBytesCallback = size_t (*)(); /** @@ -1398,8 +1431,18 @@ class V8_EXPORT Isolate { * The optional parameter |dependant_context| specifies whether the disposed * context was depending on state from other contexts or not. */ + V8_DEPRECATE_SOON("Use version that passes ContextDependants.") int ContextDisposedNotification(bool dependant_context = true); + /** + * Optional notification that a context has been disposed. V8 uses these + * notifications to guide heuristics on e.g. GC or compilers. + * + * \param dependants A signal on whether this context possibly had any + * dependants. + */ + void ContextDisposedNotification(ContextDependants dependants); + /** * Optional notification that the isolate switched to the foreground. * V8 uses these notifications to guide heuristics. @@ -1421,18 +1464,26 @@ class V8_EXPORT Isolate { void SetPriority(Priority priority); /** - * Optional notification to tell V8 the current performance requirements - * of the embedder based on RAIL. + * Optional notification to tell V8 whether the embedder is currently loading + * resources. If the embedder uses this notification, it should call + * SetIsLoading(true) when loading starts and SetIsLoading(false) when it + * ends. + * It's valid to call SetIsLoading(true) again while loading, which will + * update the timestamp when V8 considers the load started. Calling + * SetIsLoading(false) while not loading does nothing. * V8 uses these notifications to guide heuristics. * This is an unfinished experimental feature. Semantics and implementation * may change frequently. */ - void SetRAILMode(RAILMode rail_mode); + void SetIsLoading(bool is_loading); /** - * Update load start time of the RAIL mode + * Optional notification to tell V8 whether the embedder is currently frozen. + * V8 uses these notifications to guide heuristics. + * This is an unfinished experimental feature. Semantics and implementation + * may change frequently. */ - void UpdateLoadStartTime(); + void Freeze(bool is_frozen); /** * Optional notification to tell V8 the current isolate is used for debugging @@ -1665,14 +1716,6 @@ class V8_EXPORT Isolate { bool capture, int frame_limit = 10, StackTrace::StackTraceOptions options = StackTrace::kOverview); - /** - * Iterates through all external resources referenced from current isolate - * heap. GC is not invoked prior to iterating, therefore there is no - * guarantee that visited objects are still alive. - */ - V8_DEPRECATED("Will be removed without replacement. crbug.com/v8/14172") - void VisitExternalResources(ExternalResourceVisitor* visitor); - /** * Check if this isolate is in use. * True if at least one thread Enter'ed this isolate. @@ -1731,6 +1774,11 @@ class V8_EXPORT Isolate { */ std::string GetDefaultLocale(); + /** + * Returns the hash seed for that isolate, for testing purposes. + */ + uint64_t GetHashSeed(); + Isolate() = delete; ~Isolate() = delete; Isolate(const Isolate&) = delete; @@ -1745,8 +1793,11 @@ class V8_EXPORT Isolate { private: template friend class PersistentValueMapBase; + friend class ExternalMemoryAccounter; - internal::Address* GetDataFromSnapshotOnce(size_t index); + internal::ValueHelper::InternalRepresentationType GetDataFromSnapshotOnce( + size_t index); + int64_t AdjustAmountOfExternalAllocatedMemoryImpl(int64_t change_in_bytes); void HandleExternalMemoryInterrupt(); }; @@ -1767,10 +1818,10 @@ uint32_t Isolate::GetNumberOfDataSlots() { template MaybeLocal Isolate::GetDataFromSnapshotOnce(size_t index) { - if (auto slot = GetDataFromSnapshotOnce(index); slot) { - internal::PerformCastCheck( - internal::ValueHelper::SlotAsValue(slot)); - return Local::FromSlot(slot); + if (auto repr = GetDataFromSnapshotOnce(index); + repr != internal::ValueHelper::kEmpty) { + internal::PerformCastCheck(internal::ValueHelper::ReprAsValue(repr)); + return Local::FromRepr(repr); } return {}; } diff --git a/deps/v8/include/v8-local-handle.h b/deps/v8/include/v8-local-handle.h index ef110a083dc3d6..dce757465c25be 100644 --- a/deps/v8/include/v8-local-handle.h +++ b/deps/v8/include/v8-local-handle.h @@ -179,8 +179,14 @@ class LocalBase : public api_internal::DirectHandleBase { } V8_INLINE static LocalBase FromSlot(internal::Address* slot) { + if (slot == nullptr) return LocalBase(); return LocalBase(*slot); } + + V8_INLINE static LocalBase FromRepr( + internal::ValueHelper::InternalRepresentationType repr) { + return LocalBase(repr); + } }; #else // !V8_ENABLE_DIRECT_HANDLE @@ -213,6 +219,11 @@ class LocalBase : public api_internal::IndirectHandleBase { V8_INLINE static LocalBase FromSlot(internal::Address* slot) { return LocalBase(slot); } + + V8_INLINE static LocalBase FromRepr( + internal::ValueHelper::InternalRepresentationType repr) { + return LocalBase(repr); + } }; #endif // V8_ENABLE_DIRECT_HANDLE @@ -255,17 +266,19 @@ class V8_TRIVIAL_ABI Local : public LocalBase, #endif { public: + /** + * Default constructor: Returns an empty handle. + */ V8_INLINE Local() = default; + /** + * Constructor for handling automatic up casting. + * Ex. Local can be passed when Local is expected but not + * the other way round. + */ template - V8_INLINE Local(Local that) : LocalBase(that) { - /** - * This check fails when trying to convert between incompatible - * handles. For example, converting from a Local to a - * Local. - */ - static_assert(std::is_base_of::value, "type check"); - } + requires std::is_base_of_v + V8_INLINE Local(Local that) : LocalBase(that) {} V8_INLINE T* operator->() const { return this->template value(); } @@ -305,7 +318,7 @@ class V8_TRIVIAL_ABI Local : public LocalBase, /** * Cast a handle to a subclass, e.g. Local to Local. * This is only valid if the handle actually refers to a value of the - * target type. + * target type or if the handle is empty. */ template V8_INLINE static Local Cast(Local that) { @@ -321,7 +334,7 @@ class V8_TRIVIAL_ABI Local : public LocalBase, /** * Calling this is equivalent to Local::Cast(). * In particular, this is only valid if the handle actually refers to a value - * of the target type. + * of the target type or if the handle is empty. */ template V8_INLINE Local As() const { @@ -396,6 +409,11 @@ class V8_TRIVIAL_ABI Local : public LocalBase, V8_INLINE explicit Local(const LocalBase& other) : LocalBase(other) {} + V8_INLINE static Local FromRepr( + internal::ValueHelper::InternalRepresentationType repr) { + return Local(LocalBase::FromRepr(repr)); + } + V8_INLINE static Local FromSlot(internal::Address* slot) { return Local(LocalBase::FromSlot(slot)); } @@ -434,8 +452,9 @@ class V8_TRIVIAL_ABI LocalUnchecked : public Local { #if defined(V8_ENABLE_LOCAL_OFF_STACK_CHECK) && V8_HAS_ATTRIBUTE_TRIVIAL_ABI // In this case, the check is also enforced in the copy constructor and we // need to suppress it. - LocalUnchecked(const LocalUnchecked& other) - : Local(other, Local::do_not_check) noexcept {} + LocalUnchecked( + const LocalUnchecked& other) noexcept // NOLINT(runtime/explicit) + : Local(other, Local::do_not_check) {} LocalUnchecked& operator=(const LocalUnchecked&) noexcept = default; #endif @@ -455,11 +474,9 @@ class StrongRootAllocator> : public StrongRootAllocatorBase { static_assert(std::is_standard_layout_v); static_assert(sizeof(value_type) == sizeof(Address)); - explicit StrongRootAllocator(Heap* heap) : StrongRootAllocatorBase(heap) {} - explicit StrongRootAllocator(Isolate* isolate) - : StrongRootAllocatorBase(isolate) {} - explicit StrongRootAllocator(v8::Isolate* isolate) - : StrongRootAllocatorBase(reinterpret_cast(isolate)) {} + template + explicit StrongRootAllocator(HeapOrIsolateT* heap_or_isolate) + : StrongRootAllocatorBase(heap_or_isolate) {} template StrongRootAllocator(const StrongRootAllocator& other) noexcept : StrongRootAllocatorBase(other) {} @@ -565,7 +582,11 @@ class LocalVector { void push_back(const Local& x) { backing_.push_back(x); } void pop_back() { backing_.pop_back(); } - void emplace_back(const Local& x) { backing_.emplace_back(x); } + + template + void emplace_back(Args&&... args) { + backing_.push_back(value_type{std::forward(args)...}); + } void clear() noexcept { backing_.clear(); } void resize(size_t n) { backing_.resize(n); } @@ -613,9 +634,22 @@ using Handle = Local; template class MaybeLocal { public: - V8_INLINE MaybeLocal() : local_() {} + /** + * Default constructor: Returns an empty handle. + */ + V8_INLINE MaybeLocal() = default; + /** + * Implicitly construct MaybeLocal from Local. + */ template + requires std::is_base_of_v V8_INLINE MaybeLocal(Local that) : local_(that) {} + /** + * Implicitly up-cast MaybeLocal to MaybeLocal if T is a base of S. + */ + template + requires std::is_base_of_v + V8_INLINE MaybeLocal(MaybeLocal that) : local_(that.local_) {} V8_INLINE bool IsEmpty() const { return local_.IsEmpty(); } @@ -650,23 +684,17 @@ class MaybeLocal { /** * Cast a handle to a subclass, e.g. MaybeLocal to MaybeLocal. * This is only valid if the handle actually refers to a value of the target - * type. + * type or if the handle is empty. */ template V8_INLINE static MaybeLocal Cast(MaybeLocal that) { -#ifdef V8_ENABLE_CHECKS - // If we're going to perform the type check then we have to check - // that the handle isn't empty before doing the checked cast. - if (that.IsEmpty()) return MaybeLocal(); - T::Cast(that.local_.template value()); -#endif - return MaybeLocal(that.local_); + return MaybeLocal{Local::Cast(that.local_)}; } /** * Calling this is equivalent to MaybeLocal::Cast(). * In particular, this is only valid if the handle actually refers to a value - * of the target type. + * of the target type or if the handle is empty. */ template V8_INLINE MaybeLocal As() const { diff --git a/deps/v8/include/v8-maybe.h b/deps/v8/include/v8-maybe.h index 8d3aeabe02af45..c4d17453a279ab 100644 --- a/deps/v8/include/v8-maybe.h +++ b/deps/v8/include/v8-maybe.h @@ -8,6 +8,7 @@ #include #include +#include "cppgc/internal/conditional-stack-allocated.h" // NOLINT(build/include_directory) #include "v8-internal.h" // NOLINT(build/include_directory) #include "v8config.h" // NOLINT(build/include_directory) @@ -29,7 +30,7 @@ V8_EXPORT void FromJustIsNothing(); * "Nothing" value is returned. */ template -class Maybe { +class Maybe : public cppgc::internal::ConditionalStackAllocatedBase { public: V8_INLINE bool IsNothing() const { return !has_value_; } V8_INLINE bool IsJust() const { return has_value_; } diff --git a/deps/v8/include/v8-memory-span.h b/deps/v8/include/v8-memory-span.h index 7556b20fa949cb..5916cdfe06bb5e 100644 --- a/deps/v8/include/v8-memory-span.h +++ b/deps/v8/include/v8-memory-span.h @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -229,7 +230,7 @@ class V8_EXPORT MemorySpan { constexpr Iterator& operator+=(difference_type rhs) { ptr_ += rhs; - return this; + return *this; } [[nodiscard]] friend constexpr Iterator operator+(Iterator lhs, @@ -245,7 +246,7 @@ class V8_EXPORT MemorySpan { constexpr Iterator& operator-=(difference_type rhs) { ptr_ -= rhs; - return this; + return *this; } [[nodiscard]] friend constexpr Iterator operator-(Iterator lhs, diff --git a/deps/v8/include/v8-message.h b/deps/v8/include/v8-message.h index 9f933358792f0d..b50898530cf95e 100644 --- a/deps/v8/include/v8-message.h +++ b/deps/v8/include/v8-message.h @@ -9,6 +9,7 @@ #include +#include "v8-callbacks.h" // NOLINT(build/include_directory) #include "v8-local-handle.h" // NOLINT(build/include_directory) #include "v8-maybe.h" // NOLINT(build/include_directory) #include "v8-primitive.h" // NOLINT(build/include_directory) @@ -185,7 +186,14 @@ class V8_EXPORT Message { bool IsSharedCrossOrigin() const; bool IsOpaque() const; - static void PrintCurrentStackTrace(Isolate* isolate, std::ostream& out); + /** + * If provided, the callback can be used to selectively include + * or redact frames based on their script names. (true to include a frame) + */ + static void PrintCurrentStackTrace( + Isolate* isolate, std::ostream& out, + PrintCurrentStackTraceFilterCallback should_include_frame_callback = + nullptr); static const int kNoLineNumberInfo = 0; static const int kNoColumnInfo = 0; diff --git a/deps/v8/include/v8-metrics.h b/deps/v8/include/v8-metrics.h index 9e77744bb29d68..bf19dead0e6120 100644 --- a/deps/v8/include/v8-metrics.h +++ b/deps/v8/include/v8-metrics.h @@ -8,9 +8,11 @@ #include #include +#include #include #include "v8-internal.h" // NOLINT(build/include_directory) +#include "v8-isolate.h" // NOLINT(build/include_directory) #include "v8-local-handle.h" // NOLINT(build/include_directory) #include "v8config.h" // NOLINT(build/include_directory) @@ -37,6 +39,10 @@ struct GarbageCollectionSizes { struct GarbageCollectionFullCycle { int reason = -1; + // The priority of the isolate during the GC cycle. A nullopt value denotes a + // mixed priority cycle, meaning the Isolate's priority was changed while the + // cycle was in progress. + std::optional priority = std::nullopt; GarbageCollectionPhases total; GarbageCollectionPhases total_cpp; GarbageCollectionPhases main_thread; @@ -86,6 +92,10 @@ using GarbageCollectionFullMainThreadBatchedIncrementalSweep = struct GarbageCollectionYoungCycle { int reason = -1; + // The priority of the isolate during the GC cycle. A nullopt value denotes a + // mixed priority cycle, meaning the Isolate's priority was changed while the + // cycle was in progress. + std::optional priority = std::nullopt; int64_t total_wall_clock_duration_in_us = -1; int64_t main_thread_wall_clock_duration_in_us = -1; double collection_rate_in_percent = -1.0; diff --git a/deps/v8/include/v8-object.h b/deps/v8/include/v8-object.h index 71a6c2c9c14911..3e57ae8efe33f3 100644 --- a/deps/v8/include/v8-object.h +++ b/deps/v8/include/v8-object.h @@ -704,6 +704,7 @@ class V8_EXPORT Object : public Value { * Prefer using version with Isolate parameter. */ MaybeLocal GetCreationContext(v8::Isolate* isolate); + V8_DEPRECATE_SOON("Use the version with the isolate argument.") MaybeLocal GetCreationContext(); /** @@ -712,13 +713,17 @@ class V8_EXPORT Object : public Value { * Prefer using version with Isolate parameter. **/ Local GetCreationContextChecked(v8::Isolate* isolate); + V8_DEPRECATE_SOON("Use the version with the isolate argument.") Local GetCreationContextChecked(); /** Same as above, but works for Persistents */ V8_INLINE static MaybeLocal GetCreationContext( - const PersistentBase& object) { - return object.template value()->GetCreationContext(); + v8::Isolate* isolate, const PersistentBase& object) { + return object.template value()->GetCreationContext(isolate); } + V8_DEPRECATE_SOON("Use the version with the isolate argument.") + V8_INLINE static MaybeLocal GetCreationContext( + const PersistentBase& object); /** * Gets the context in which the object was created (see GetCreationContext()) diff --git a/deps/v8/include/v8-persistent-handle.h b/deps/v8/include/v8-persistent-handle.h index 3067cb775fc7a8..6abe29d4ab782f 100644 --- a/deps/v8/include/v8-persistent-handle.h +++ b/deps/v8/include/v8-persistent-handle.h @@ -46,7 +46,11 @@ class Eternal : public api_internal::IndirectHandleBase { public: V8_INLINE Eternal() = default; + /** + * Constructor for handling automatic up casting. + */ template + requires(std::is_base_of_v) V8_INLINE Eternal(Isolate* isolate, Local handle) { Set(isolate, handle); } @@ -59,8 +63,8 @@ class Eternal : public api_internal::IndirectHandleBase { } template + requires(std::is_base_of_v) void Set(Isolate* isolate, Local handle) { - static_assert(std::is_base_of::value, "type check"); slot() = api_internal::Eternalize(isolate, *handle.template UnsafeAs()); } @@ -251,28 +255,26 @@ class Persistent : public PersistentBase { V8_INLINE Persistent() = default; /** - * Construct a Persistent from a Local. + * Construct a Persistent from a Local with automatic up casting. * When the Local is non-empty, a new storage cell is created * pointing to the same object, and no flags are set. */ template + requires(std::is_base_of_v) V8_INLINE Persistent(Isolate* isolate, Local that) : PersistentBase( - PersistentBase::New(isolate, that.template value())) { - static_assert(std::is_base_of::value, "type check"); - } + PersistentBase::New(isolate, that.template value())) {} /** - * Construct a Persistent from a Persistent. + * Construct a Persistent from a Persistent with automatic up casting. * When the Persistent is non-empty, a new storage cell is created * pointing to the same object, and no flags are set. */ template + requires(std::is_base_of_v) V8_INLINE Persistent(Isolate* isolate, const Persistent& that) : PersistentBase( - PersistentBase::New(isolate, that.template value())) { - static_assert(std::is_base_of::value, "type check"); - } + PersistentBase::New(isolate, that.template value())) {} /** * The copy constructors and assignment operator create a Persistent @@ -352,28 +354,26 @@ class Global : public PersistentBase { V8_INLINE Global() = default; /** - * Construct a Global from a Local. + * Construct a Global from a Local with automatic up casting. * When the Local is non-empty, a new storage cell is created * pointing to the same object, and no flags are set. */ template + requires(std::is_base_of_v) V8_INLINE Global(Isolate* isolate, Local that) : PersistentBase( - PersistentBase::New(isolate, that.template value())) { - static_assert(std::is_base_of::value, "type check"); - } + PersistentBase::New(isolate, that.template value())) {} /** - * Construct a Global from a PersistentBase. + * Construct a Global from a PersistentBase with automatic up casting. * When the Persistent is non-empty, a new storage cell is created * pointing to the same object, and no flags are set. */ template + requires(std::is_base_of_v) V8_INLINE Global(Isolate* isolate, const PersistentBase& that) : PersistentBase( - PersistentBase::New(isolate, that.template value())) { - static_assert(std::is_base_of::value, "type check"); - } + PersistentBase::New(isolate, that.template value())) {} /** * Move constructor. diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index a3a939729c9b14..cecc217a62bbdb 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -1063,7 +1063,7 @@ class Platform { * Allows the embedder to manage memory page allocations. * Returning nullptr will cause V8 to use the default page allocator. */ - virtual PageAllocator* GetPageAllocator() = 0; + virtual PageAllocator* GetPageAllocator() { return nullptr; } /** * Allows the embedder to provide an allocator that uses per-thread memory @@ -1116,6 +1116,7 @@ class Platform { * Embedders should override PostTaskOnWorkerThreadImpl() instead of * CallOnWorkerThread(). */ + V8_DEPRECATE_SOON("Use PostTaskOnWorkerThread instead.") void CallOnWorkerThread( std::unique_ptr task, const SourceLocation& location = SourceLocation::Current()) { @@ -1129,6 +1130,7 @@ class Platform { * Embedders should override PostTaskOnWorkerThreadImpl() instead of * CallBlockingTaskOnWorkerThread(). */ + V8_DEPRECATE_SOON("Use PostTaskOnWorkerThread instead.") void CallBlockingTaskOnWorkerThread( std::unique_ptr task, const SourceLocation& location = SourceLocation::Current()) { @@ -1143,6 +1145,7 @@ class Platform { * Embedders should override PostTaskOnWorkerThreadImpl() instead of * CallLowPriorityTaskOnWorkerThread(). */ + V8_DEPRECATE_SOON("Use PostTaskOnWorkerThread instead.") void CallLowPriorityTaskOnWorkerThread( std::unique_ptr task, const SourceLocation& location = SourceLocation::Current()) { @@ -1158,6 +1161,7 @@ class Platform { * Embedders should override PostDelayedTaskOnWorkerThreadImpl() instead of * CallDelayedOnWorkerThread(). */ + V8_DEPRECATE_SOON("Use PostDelayedTaskOnWorkerThread instead.") void CallDelayedOnWorkerThread( std::unique_ptr task, double delay_in_seconds, const SourceLocation& location = SourceLocation::Current()) { @@ -1166,6 +1170,31 @@ class Platform { location); } + /** + * Schedules a task to be invoked on a worker thread. + * Embedders should override PostTaskOnWorkerThreadImpl() instead of + * PostTaskOnWorkerThread(). + */ + void PostTaskOnWorkerThread( + TaskPriority priority, std::unique_ptr task, + const SourceLocation& location = SourceLocation::Current()) { + PostTaskOnWorkerThreadImpl(priority, std::move(task), location); + } + + /** + * Schedules a task to be invoked on a worker thread after |delay_in_seconds| + * expires. + * Embedders should override PostDelayedTaskOnWorkerThreadImpl() instead of + * PostDelayedTaskOnWorkerThread(). + */ + void PostDelayedTaskOnWorkerThread( + TaskPriority priority, std::unique_ptr task, + double delay_in_seconds, + const SourceLocation& location = SourceLocation::Current()) { + PostDelayedTaskOnWorkerThreadImpl(priority, std::move(task), + delay_in_seconds, location); + } + /** * Returns true if idle tasks are enabled for the given |isolate|. */ diff --git a/deps/v8/include/v8-primitive.h b/deps/v8/include/v8-primitive.h index 426bb379099e26..f966ed55674841 100644 --- a/deps/v8/include/v8-primitive.h +++ b/deps/v8/include/v8-primitive.h @@ -140,8 +140,14 @@ class V8_EXPORT String : public Name { * Returns the number of bytes in the UTF-8 encoded * representation of this string. */ + V8_DEPRECATED("Use Utf8LengthV2 instead.") int Utf8Length(Isolate* isolate) const; + /** + * Returns the number of bytes needed for the Utf8 encoding of this string. + */ + size_t Utf8LengthV2(Isolate* isolate) const; + /** * Returns whether this string is known to contain only one byte data, * i.e. ISO-8859-1 code points. @@ -194,15 +200,72 @@ class V8_EXPORT String : public Name { }; // 16-bit character codes. + V8_DEPRECATED("Use WriteV2 instead.") int Write(Isolate* isolate, uint16_t* buffer, int start = 0, int length = -1, int options = NO_OPTIONS) const; // One byte characters. + V8_DEPRECATED("Use WriteOneByteV2 instead.") int WriteOneByte(Isolate* isolate, uint8_t* buffer, int start = 0, int length = -1, int options = NO_OPTIONS) const; // UTF-8 encoded characters. + V8_DEPRECATED("Use WriteUtf8V2 instead.") int WriteUtf8(Isolate* isolate, char* buffer, int length = -1, int* nchars_ref = nullptr, int options = NO_OPTIONS) const; + struct WriteFlags { + enum { + kNone = 0, + // Indicates that the output string should be null-terminated. In that + // case, the output buffer must include sufficient space for the + // additional null character. + kNullTerminate = 1, + // Used by WriteUtf8 to replace orphan surrogate code units with the + // unicode replacement character. Needs to be set to guarantee valid UTF-8 + // output. + kReplaceInvalidUtf8 = 2 + }; + }; + + /** + * Write the contents of the string to an external buffer. + * + * Copies length characters into the output buffer starting at offset. The + * output buffer must have sufficient space for all characters and the null + * terminator if null termination is requested through the flags. + * + * \param offset The position within the string at which copying begins. + * \param length The number of characters to copy from the string. + * \param buffer The buffer into which the string will be copied. + * \param flags Various flags that influence the behavior of this operation. + */ + void WriteV2(Isolate* isolate, uint32_t offset, uint32_t length, + uint16_t* buffer, int flags = WriteFlags::kNone) const; + void WriteOneByteV2(Isolate* isolate, uint32_t offset, uint32_t length, + uint8_t* buffer, int flags = WriteFlags::kNone) const; + + /** + * Encode the contents of the string as Utf8 into an external buffer. + * + * Encodes the characters of this string as Utf8 and writes them into the + * output buffer until either all characters were encoded or the buffer is + * full. Will not write partial UTF-8 sequences, preferring to stop before + * the end of the buffer. If null termination is requested, the output buffer + * will always be null terminated even if not all characters fit. In that + * case, the capacity must be at least one. The required size of the output + * buffer can be determined using Utf8Length(). + * + * \param buffer The buffer into which the string will be written. + * \param capacity The number of bytes available in the output buffer. + * \param flags Various flags that influence the behavior of this operation. + * \param processed_characters_return The number of processed characters from + * the buffer. + * \return The number of bytes copied to the buffer including the null + * terminator (if written). + */ + size_t WriteUtf8V2(Isolate* isolate, char* buffer, size_t capacity, + int flags = WriteFlags::kNone, + size_t* processed_characters_return = nullptr) const; + /** * A zero length string. */ @@ -240,6 +303,44 @@ class V8_EXPORT String : public Name { */ virtual bool IsCacheable() const { return true; } + /** + * Internally V8 will call this Unaccount method when the external string + * resource should be unaccounted for. This method can be overridden in + * subclasses to control how allocated external bytes are accounted. + */ + virtual void Unaccount(Isolate* isolate) {} + + /** + * Returns an estimate of the memory occupied by this external string, to be + * used by V8 when producing a heap snapshot. If this function returns + * kDefaultMemoryEstimate, then V8 will estimate the external size based on + * the string length. This function should return only memory that is + * uniquely owned by this resource. If the resource has shared ownership of + * a secondary allocation, it can report that memory by implementing + * EstimateSharedMemoryUsage. + */ + virtual size_t EstimateMemoryUsage() const { + return kDefaultMemoryEstimate; + } + static constexpr size_t kDefaultMemoryEstimate = static_cast(-1); + + class V8_EXPORT SharedMemoryUsageRecorder { + public: + /** + * Record that a shared allocation at the given location has the given + * size. + */ + virtual void RecordSharedMemoryUsage(const void* location, + size_t size) = 0; + }; + + /** + * Estimates memory that this string resource may share with other string + * resources, to be used by V8 when producing a heap snapshot. + */ + virtual void EstimateSharedMemoryUsage( + SharedMemoryUsageRecorder* recorder) const {} + // Disallow copying and assigning. ExternalStringResourceBase(const ExternalStringResourceBase&) = delete; void operator=(const ExternalStringResourceBase&) = delete; @@ -474,8 +575,20 @@ class V8_EXPORT String : public Name { * The string is not modified if the operation fails. See NewExternal for * information on the lifetime of the resource. */ + V8_DEPRECATE_SOON("Use the version with the isolate argument instead.") bool MakeExternal(ExternalStringResource* resource); + /** + * Associate an external string resource with this string by transforming it + * in place so that existing references to this string in the JavaScript heap + * will use the external string resource. The external string resource's + * character contents need to be equivalent to this string. + * Returns true if the string has been changed to be an external string. + * The string is not modified if the operation fails. See NewExternal for + * information on the lifetime of the resource. + */ + bool MakeExternal(Isolate* isolate, ExternalStringResource* resource); + /** * Creates a new external string using the one-byte data defined in the given * resource. When the external string is no longer live on V8's heap the @@ -496,8 +609,20 @@ class V8_EXPORT String : public Name { * The string is not modified if the operation fails. See NewExternal for * information on the lifetime of the resource. */ + V8_DEPRECATE_SOON("Use the version with the isolate argument instead.") bool MakeExternal(ExternalOneByteStringResource* resource); + /** + * Associate an external string resource with this string by transforming it + * in place so that existing references to this string in the JavaScript heap + * will use the external string resource. The external string resource's + * character contents need to be equivalent to this string. + * Returns true if the string has been changed to be an external string. + * The string is not modified if the operation fails. See NewExternal for + * information on the lifetime of the resource. + */ + bool MakeExternal(Isolate* isolate, ExternalOneByteStringResource* resource); + /** * Returns true if this string can be made external, given the encoding for * the external string resource. @@ -527,7 +652,7 @@ class V8_EXPORT String : public Name { ~Utf8Value(); char* operator*() { return str_; } const char* operator*() const { return str_; } - int length() const { return length_; } + size_t length() const { return length_; } // Disallow copying and assigning. Utf8Value(const Utf8Value&) = delete; @@ -535,7 +660,7 @@ class V8_EXPORT String : public Name { private: char* str_; - int length_; + size_t length_; }; /** @@ -557,7 +682,7 @@ class V8_EXPORT String : public Name { ~Value(); uint16_t* operator*() { return str_; } const uint16_t* operator*() const { return str_; } - int length() const { return length_; } + uint32_t length() const { return length_; } // Disallow copying and assigning. Value(const Value&) = delete; @@ -565,7 +690,7 @@ class V8_EXPORT String : public Name { private: uint16_t* str_; - int length_; + uint32_t length_; }; /** @@ -594,7 +719,7 @@ class V8_EXPORT String : public Name { #endif return data16_; } - int length() const { return length_; } + uint32_t length() const { return length_; } bool is_one_byte() const { return is_one_byte_; } // Disallow copying and assigning. @@ -609,7 +734,7 @@ class V8_EXPORT String : public Name { const uint8_t* data8_; const uint16_t* data16_; }; - int length_; + uint32_t length_; bool is_one_byte_; // Avoid exposing the internal DisallowGarbageCollection scope. alignas(internal::Internals:: diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index d6741aec760827..9581cdb2dbe4ee 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -418,8 +418,11 @@ class V8_EXPORT CpuProfiler { * Synchronously collect current stack sample in all profilers attached to * the |isolate|. The call does not affect number of ticks recorded for * the current top node. + * |trace_id| is an optional identifier set to the collected sample. + * this is useful to associate the sample with a trace event. */ - static void CollectSample(Isolate* isolate); + static void CollectSample( + Isolate* isolate, const std::optional trace_id = std::nullopt); /** * Disposes the CPU profiler object. @@ -937,6 +940,15 @@ class V8_EXPORT EmbedderGraph { */ virtual void AddEdge(Node* from, Node* to, const char* name = nullptr) = 0; + /** + * Adds a count of bytes that are not associated with any particular Node. + * An embedder may use this to represent the size of nodes which were omitted + * from this EmbedderGraph despite being retained by the graph, or other + * overhead costs. This number will contribute to the total size in a heap + * snapshot, without being represented in the object graph. + */ + virtual void AddNativeSize(size_t size) {} + virtual ~EmbedderGraph() = default; }; diff --git a/deps/v8/include/v8-proxy.h b/deps/v8/include/v8-proxy.h index a08db8805c62c0..f66b56ddbc75f9 100644 --- a/deps/v8/include/v8-proxy.h +++ b/deps/v8/include/v8-proxy.h @@ -1,4 +1,3 @@ - // Copyright 2021 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. diff --git a/deps/v8/include/v8-regexp.h b/deps/v8/include/v8-regexp.h index 135977bfbb85ee..d1253d276a5785 100644 --- a/deps/v8/include/v8-regexp.h +++ b/deps/v8/include/v8-regexp.h @@ -1,4 +1,3 @@ - // Copyright 2021 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. diff --git a/deps/v8/include/v8-sandbox.h b/deps/v8/include/v8-sandbox.h index 6e93d4ae62167c..857caea3076e00 100644 --- a/deps/v8/include/v8-sandbox.h +++ b/deps/v8/include/v8-sandbox.h @@ -23,15 +23,14 @@ namespace v8 { * type check for a supertype must succeed for any subtype. * * The tag is currently in practice limited to 15 bits since it needs to fit - * together with a marking bit into the unused parts of a pointer (the top 16 - * bits). + * together with a marking bit into the unused parts of a pointer. */ enum class CppHeapPointerTag : uint16_t { kFirstTag = 0, kNullTag = 0, /** - * The lower type ids are reserved for the embedder to assign. For that, the + * The lower type ids are reserved for the embedder to assign. For that, the * main requirement is that all (transitive) child classes of a given parent * class have type ids in the same range, and that there are no unrelated * types in that range. For example, given the following type hierarchy: @@ -67,6 +66,7 @@ enum class CppHeapPointerTag : uint16_t { // against supertypes, which cover a range of types (their subtypes). // Both the lower- and the upper bound are inclusive. In other words, this // struct represents the range [lower_bound, upper_bound]. +// TODO(saelo): reuse internal::TagRange here. struct CppHeapPointerTagRange { constexpr CppHeapPointerTagRange(CppHeapPointerTag lower, CppHeapPointerTag upper) diff --git a/deps/v8/include/v8-script.h b/deps/v8/include/v8-script.h index 9d3556e222253a..9d47b751f271eb 100644 --- a/deps/v8/include/v8-script.h +++ b/deps/v8/include/v8-script.h @@ -155,7 +155,7 @@ class V8_EXPORT ModuleRequest : public Data { */ Local GetImportAttributes() const; - V8_DEPRECATE_SOON("Use GetImportAttributes instead") + V8_DEPRECATED("Use GetImportAttributes instead") Local GetImportAssertions() const { return GetImportAttributes(); } @@ -273,6 +273,13 @@ class V8_EXPORT Module : public Data { */ bool IsGraphAsync() const; + /** + * Returns whether this module is individually asynchronous (for example, + * if it's a Source Text Module Record containing a top-level await). + * See [[HasTLA]] in https://tc39.es/ecma262/#sec-cyclic-module-records + */ + bool HasTopLevelAwait() const; + /** * Returns whether the module is a SourceTextModule. */ @@ -670,6 +677,7 @@ class V8_EXPORT ScriptCompiler { kProduceCompileHints = 1 << 2, kConsumeCompileHints = 1 << 3, kFollowCompileHintsMagicComment = 1 << 4, + kFollowCompileHintsPerFunctionMagicComment = 1 << 5, }; static inline bool CompileOptionsIsValid(CompileOptions compile_options) { @@ -710,7 +718,8 @@ class V8_EXPORT ScriptCompiler { kNoCacheBecausePacScript, kNoCacheBecauseInDocumentWrite, kNoCacheBecauseResourceWithNoCacheHandler, - kNoCacheBecauseDeferredProduceCodeCache + kNoCacheBecauseDeferredProduceCodeCache, + kNoCacheBecauseStaticCodeCache, }; /** diff --git a/deps/v8/include/v8-source-location.h b/deps/v8/include/v8-source-location.h index 92216ef2fa6152..eb307099c5f922 100644 --- a/deps/v8/include/v8-source-location.h +++ b/deps/v8/include/v8-source-location.h @@ -76,7 +76,12 @@ class V8_EXPORT SourceLocation final { * * \returns a human-readable string representing source location information. */ - std::string ToString() const; + std::string ToString() const { + if (!file_) { + return {}; + } + return std::string(function_) + "@" + file_ + ":" + std::to_string(line_); + } private: constexpr SourceLocation(const char* function, const char* file, size_t line) diff --git a/deps/v8/include/v8-template.h b/deps/v8/include/v8-template.h index 93b9428572641c..297a45d1fe64c7 100644 --- a/deps/v8/include/v8-template.h +++ b/deps/v8/include/v8-template.h @@ -701,6 +701,14 @@ class V8_EXPORT FunctionTemplate : public Template { */ bool IsLeafTemplateForApiObject(v8::Local value) const; + /** + * Checks if the object can be promoted to read only space, seals it and + * prepares for promotion. + * + * This is an experimental feature and may still change significantly. + */ + void SealAndPrepareForPromotionToReadOnly(); + V8_INLINE static FunctionTemplate* Cast(Data* data); private: diff --git a/deps/v8/include/v8-trace-categories.h b/deps/v8/include/v8-trace-categories.h new file mode 100644 index 00000000000000..aaa0ae586f287c --- /dev/null +++ b/deps/v8/include/v8-trace-categories.h @@ -0,0 +1,23 @@ +// Copyright 2025 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef INCLUDE_V8_TRACE_CATEGORIES_H_ +#define INCLUDE_V8_TRACE_CATEGORIES_H_ + +#if defined(V8_USE_PERFETTO) + +#include "perfetto/tracing/track_event.h" +#include "v8config.h" + +namespace v8 { + +// Returns the perfeto TrackEventCategoryRegistry for v8 tracing categories. +V8_EXPORT const perfetto::internal::TrackEventCategoryRegistry& +GetTrackEventCategoryRegistry(); + +} // namespace v8 + +#endif // defined(V8_USE_PERFETTO) + +#endif // INCLUDE_V8_TRACE_CATEGORIES_H_ diff --git a/deps/v8/include/v8-typed-array.h b/deps/v8/include/v8-typed-array.h index 66e21f470acb7e..0451b1294cd105 100644 --- a/deps/v8/include/v8-typed-array.h +++ b/deps/v8/include/v8-typed-array.h @@ -23,15 +23,11 @@ class V8_EXPORT TypedArray : public ArrayBufferView { * The largest supported typed array byte size. Each subclass defines a * type-specific kMaxLength for the maximum length that can be passed to New. */ -#if V8_ENABLE_SANDBOX - static constexpr size_t kMaxByteLength = - internal::kMaxSafeBufferSizeForSandbox; -#elif V8_HOST_ARCH_32_BIT - static constexpr size_t kMaxByteLength = std::numeric_limits::max(); -#else - // The maximum safe integer (2^53 - 1). - static constexpr size_t kMaxByteLength = - static_cast((uint64_t{1} << 53) - 1); + static constexpr size_t kMaxByteLength = ArrayBuffer::kMaxByteLength; + +#ifdef V8_ENABLE_SANDBOX + static_assert(v8::TypedArray::kMaxByteLength <= + v8::internal::kMaxSafeBufferSizeForSandbox); #endif /** @@ -253,10 +249,10 @@ class V8_EXPORT Int32Array : public TypedArray { * An instance of Float16Array constructor. */ class V8_EXPORT Float16Array : public TypedArray { + public: static constexpr size_t kMaxLength = TypedArray::kMaxByteLength / sizeof(uint16_t); - public: static Local New(Local array_buffer, size_t byte_offset, size_t length); static Local New(Local shared_array_buffer, diff --git a/deps/v8/include/v8-unwinder-state.h b/deps/v8/include/v8-unwinder-state.h index 235211e3abeb2b..084692f3a4d5f8 100644 --- a/deps/v8/include/v8-unwinder-state.h +++ b/deps/v8/include/v8-unwinder-state.h @@ -19,7 +19,7 @@ struct CalleeSavedRegisters { }; #elif V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 || \ V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_PPC64 || V8_TARGET_ARCH_RISCV64 || \ - V8_TARGET_ARCH_S390 || V8_TARGET_ARCH_LOONG64 || V8_TARGET_ARCH_RISCV32 + V8_TARGET_ARCH_S390X || V8_TARGET_ARCH_LOONG64 || V8_TARGET_ARCH_RISCV32 struct CalleeSavedRegisters {}; #else #error Target architecture was not detected as supported by v8 diff --git a/deps/v8/include/v8-value-serializer-version.h b/deps/v8/include/v8-value-serializer-version.h index 25eb19ca757d89..256980ade09b53 100644 --- a/deps/v8/include/v8-value-serializer-version.h +++ b/deps/v8/include/v8-value-serializer-version.h @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef INCLUDE_V8_VALUE_SERIALIZER_VERSION_H_ +#define INCLUDE_V8_VALUE_SERIALIZER_VERSION_H_ + /** * Compile-time constants. * @@ -10,9 +13,6 @@ * to V8. */ -#ifndef INCLUDE_V8_VALUE_SERIALIZER_VERSION_H_ -#define INCLUDE_V8_VALUE_SERIALIZER_VERSION_H_ - #include namespace v8 { diff --git a/deps/v8/include/v8-value.h b/deps/v8/include/v8-value.h index 656b5719eff748..c2fd021ed23ff6 100644 --- a/deps/v8/include/v8-value.h +++ b/deps/v8/include/v8-value.h @@ -346,6 +346,11 @@ class V8_EXPORT Value : public Data { */ bool IsWasmMemoryObject() const; + /** + * Returns true if this value is a WasmMemoryMapDescriptor. + */ + bool IsWasmMemoryMapDescriptor() const; + /** * Returns true if this value is a WasmModuleObject. */ @@ -361,6 +366,11 @@ class V8_EXPORT Value : public Data { */ bool IsModuleNamespaceObject() const; + /** + * Returns true if the value is a primitive. + */ + bool IsPrimitive() const; + /** * Perform `ToPrimitive(value)` as specified in: * https://tc39.es/ecma262/#sec-toprimitive. @@ -462,6 +472,14 @@ class V8_EXPORT Value : public Data { Maybe InstanceOf(Local context, Local object); + /** + * Get the hash of this value. The hash is not guaranteed to be + * unique. For |Object| and |Name| instances the result is equal to + * |GetIdentityHash|. Hashes are not guaranteed to be stable across + * different isolates or processes. + */ + uint32_t GetHash(); + private: V8_INLINE bool QuickIsUndefined() const; V8_INLINE bool QuickIsNull() const; diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 4750214ffe3f3d..ab3c154cd18422 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -9,9 +9,9 @@ // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. #define V8_MAJOR_VERSION 13 -#define V8_MINOR_VERSION 0 -#define V8_BUILD_NUMBER 245 -#define V8_PATCH_LEVEL 25 +#define V8_MINOR_VERSION 6 +#define V8_BUILD_NUMBER 233 +#define V8_PATCH_LEVEL 6 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/include/v8-wasm.h b/deps/v8/include/v8-wasm.h index f8e406c737e1cf..3afaab9aa00830 100644 --- a/deps/v8/include/v8-wasm.h +++ b/deps/v8/include/v8-wasm.h @@ -199,6 +199,30 @@ class V8_EXPORT WasmStreaming final { std::unique_ptr impl_; }; +/** + * The V8 interface for a WebAssembly memory map descriptor. This is an + * experimental feature that may change and be removed without further + * communication. + */ +class V8_EXPORT WasmMemoryMapDescriptor : public Object { + public: + WasmMemoryMapDescriptor() = delete; + + V8_INLINE static WasmMemoryMapDescriptor* Cast(Value* value) { +#ifdef V8_ENABLE_CHECKS + CheckCast(value); +#endif + return static_cast(value); + } + + using WasmFileDescriptor = int32_t; + + static Local New(Isolate* isolate, + WasmFileDescriptor fd); + + private: + static void CheckCast(Value* object); +}; } // namespace v8 #endif // INCLUDE_V8_WASM_H_ diff --git a/deps/v8/include/v8-weak-callback-info.h b/deps/v8/include/v8-weak-callback-info.h index df4dcb8eb9644c..ad2ae1f451764e 100644 --- a/deps/v8/include/v8-weak-callback-info.h +++ b/deps/v8/include/v8-weak-callback-info.h @@ -5,6 +5,9 @@ #ifndef INCLUDE_V8_WEAK_CALLBACK_INFO_H_ #define INCLUDE_V8_WEAK_CALLBACK_INFO_H_ +#include + +#include "cppgc/internal/conditional-stack-allocated.h" // NOLINT(build/include_directory) #include "v8config.h" // NOLINT(build/include_directory) namespace v8 { @@ -15,11 +18,12 @@ namespace api_internal { V8_EXPORT void InternalFieldOutOfBounds(int index); } // namespace api_internal -static const int kInternalFieldsInWeakCallback = 2; -static const int kEmbedderFieldsInWeakCallback = 2; +static constexpr int kInternalFieldsInWeakCallback = 2; +static constexpr int kEmbedderFieldsInWeakCallback = 2; template -class WeakCallbackInfo { +class WeakCallbackInfo + : public cppgc::internal::ConditionalStackAllocatedBase { public: using Callback = void (*)(const WeakCallbackInfo& data); @@ -27,21 +31,25 @@ class WeakCallbackInfo { void* embedder_fields[kEmbedderFieldsInWeakCallback], Callback* callback) : isolate_(isolate), parameter_(parameter), callback_(callback) { - for (int i = 0; i < kEmbedderFieldsInWeakCallback; ++i) { - embedder_fields_[i] = embedder_fields[i]; - } + memcpy(embedder_fields_, embedder_fields, + sizeof(embedder_fields[0]) * kEmbedderFieldsInWeakCallback); } V8_INLINE Isolate* GetIsolate() const { return isolate_; } V8_INLINE T* GetParameter() const { return parameter_; } V8_INLINE void* GetInternalField(int index) const; - // When first called, the embedder MUST Reset() the Global which triggered the - // callback. The Global itself is unusable for anything else. No v8 other api - // calls may be called in the first callback. Should additional work be - // required, the embedder must set a second pass callback, which will be - // called after all the initial callbacks are processed. - // Calling SetSecondPassCallback on the second pass will immediately crash. + /** + * When a weak callback is first invoked the embedders _must_ Reset() the + * handle which triggered the callback. The handle itself is unusable for + * anything else. No other V8 API calls may be called in the first callback. + * Additional work requires scheduling a second invocation via + * `SetSecondPassCallback()` which will be called some time after all the + * initial callbacks are processed. + * + * The second pass callback is prohibited from executing JavaScript. Embedders + * should schedule another callback in case this is required. + */ void SetSecondPassCallback(Callback callback) const { *callback_ = callback; } private: diff --git a/deps/v8/include/v8.h b/deps/v8/include/v8.h index 1067d3eb243efb..cc23d207aea614 100644 --- a/deps/v8/include/v8.h +++ b/deps/v8/include/v8.h @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef INCLUDE_V8_H_ +#define INCLUDE_V8_H_ + /** \mainpage V8 API Reference Guide * * V8 is Google's open source JavaScript engine. @@ -12,9 +15,6 @@ * For other documentation see https://v8.dev/. */ -#ifndef INCLUDE_V8_H_ -#define INCLUDE_V8_H_ - #include #include diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index 008abc0beceb77..02721dda97f0d3 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -371,6 +371,7 @@ path. Add it with -I to the command line # define V8_HAS_ATTRIBUTE_UNUSED (__has_attribute(unused)) # define V8_HAS_ATTRIBUTE_USED (__has_attribute(used)) # define V8_HAS_ATTRIBUTE_RETAIN (__has_attribute(retain)) +# define V8_HAS_ATTRIBUTE_OPTNONE (__has_attribute(optnone)) // Support for the "preserve_most" attribute is limited: // - 32-bit platforms do not implement it, // - component builds fail because _dl_runtime_resolve clobbers registers, @@ -499,6 +500,16 @@ path. Add it with -I to the command line # define V8_INLINE inline #endif +// A macro to force better inlining of calls in a statement. Don't bother for +// debug builds. +// Use like: +// V8_INLINE_STATEMENT foo = bar(); // Will force inlining the bar() call. +#if !defined(DEBUG) && defined(__clang__) && V8_HAS_ATTRIBUTE_ALWAYS_INLINE +# define V8_INLINE_STATEMENT [[clang::always_inline]] +#else +# define V8_INLINE_STATEMENT +#endif + #if V8_HAS_BUILTIN_ASSUME #ifdef DEBUG // In debug mode, check assumptions in addition to adding annotations. @@ -581,15 +592,11 @@ path. Add it with -I to the command line // functions. // Use like: // V8_NOINLINE V8_PRESERVE_MOST void UnlikelyMethod(); -#if V8_OS_WIN -# define V8_PRESERVE_MOST -#else #if V8_HAS_ATTRIBUTE_PRESERVE_MOST # define V8_PRESERVE_MOST __attribute__((preserve_most)) #else # define V8_PRESERVE_MOST /* NOT SUPPORTED */ #endif -#endif // A macro (V8_DEPRECATED) to mark classes or functions as deprecated. @@ -681,7 +688,7 @@ path. Add it with -I to the command line // V8_NODISCARD Foo() { ... }; // [[nodiscard]] comes in C++17 but supported in clang with -std >= c++11. #if V8_HAS_CPP_ATTRIBUTE_NODISCARD -#define V8_NODISCARD +#define V8_NODISCARD [[nodiscard]] #else #define V8_NODISCARD /* NOT SUPPORTED */ #endif @@ -787,15 +794,11 @@ V8 shared library set USING_V8_SHARED. #else // V8_OS_WIN // Setup for Linux shared library export. -#if V8_HAS_ATTRIBUTE_VISIBILITY -# ifdef BUILDING_V8_SHARED -# define V8_EXPORT __attribute__ ((visibility("default"))) -# else -# define V8_EXPORT -# endif +#if V8_HAS_ATTRIBUTE_VISIBILITY && (defined(BUILDING_V8_SHARED) || USING_V8_SHARED) +# define V8_EXPORT __attribute__((visibility("default"))) #else # define V8_EXPORT -#endif +# endif // V8_HAS_ATTRIBUTE_VISIBILITY && ... #endif // V8_OS_WIN @@ -833,13 +836,9 @@ V8 shared library set USING_V8_SHARED. #elif defined(__PPC64__) || defined(_ARCH_PPC64) #define V8_HOST_ARCH_PPC64 1 #define V8_HOST_ARCH_64_BIT 1 -#elif defined(__s390__) || defined(__s390x__) -#define V8_HOST_ARCH_S390 1 -#if defined(__s390x__) +#elif defined(__s390x__) +#define V8_HOST_ARCH_S390X 1 #define V8_HOST_ARCH_64_BIT 1 -#else -#define V8_HOST_ARCH_32_BIT 1 -#endif #elif defined(__riscv) || defined(__riscv__) #if __riscv_xlen == 64 #define V8_HOST_ARCH_RISCV64 1 @@ -861,7 +860,7 @@ V8 shared library set USING_V8_SHARED. // compiler. #if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM && \ !V8_TARGET_ARCH_ARM64 && !V8_TARGET_ARCH_MIPS64 && \ - !V8_TARGET_ARCH_PPC64 && !V8_TARGET_ARCH_S390 && \ + !V8_TARGET_ARCH_PPC64 && !V8_TARGET_ARCH_S390X && \ !V8_TARGET_ARCH_RISCV64 && !V8_TARGET_ARCH_LOONG64 && \ !V8_TARGET_ARCH_RISCV32 #if defined(_M_X64) || defined(__x86_64__) @@ -878,11 +877,8 @@ V8 shared library set USING_V8_SHARED. #define V8_TARGET_ARCH_LOONG64 1 #elif defined(_ARCH_PPC64) #define V8_TARGET_ARCH_PPC64 1 -#elif defined(__s390__) -#define V8_TARGET_ARCH_S390 1 -#if defined(__s390x__) +#elif defined(__s390x__) #define V8_TARGET_ARCH_S390X 1 -#endif #elif defined(__riscv) || defined(__riscv__) #if __riscv_xlen == 64 #define V8_TARGET_ARCH_RISCV64 1 @@ -917,12 +913,8 @@ V8 shared library set USING_V8_SHARED. #define V8_TARGET_ARCH_64_BIT 1 #elif V8_TARGET_ARCH_PPC64 #define V8_TARGET_ARCH_64_BIT 1 -#elif V8_TARGET_ARCH_S390 -#if V8_TARGET_ARCH_S390X +#elif V8_TARGET_ARCH_S390X #define V8_TARGET_ARCH_64_BIT 1 -#else -#define V8_TARGET_ARCH_32_BIT 1 -#endif #elif V8_TARGET_ARCH_RISCV64 #define V8_TARGET_ARCH_64_BIT 1 #elif V8_TARGET_ARCH_RISCV32 @@ -985,8 +977,8 @@ V8 shared library set USING_V8_SHARED. #else #define V8_TARGET_LITTLE_ENDIAN 1 #endif -#elif V8_TARGET_ARCH_S390 -#if V8_TARGET_ARCH_S390_LE_SIM +#elif V8_TARGET_ARCH_S390X +#if V8_TARGET_ARCH_S390X_LE_SIM #define V8_TARGET_LITTLE_ENDIAN 1 #else #define V8_TARGET_BIG_ENDIAN 1 diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index ce26b4df0a1c91..c80bacd91c586e 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -72,7 +72,6 @@ 'V8 Linux64 - debug builder': 'debug_x64', 'V8 Linux64 - no leaptiering - debug builder': 'debug_x64_no_leaptiering', 'V8 Linux64 - no shared cage - debug builder': 'debug_x64_no_shared_cage', - 'V8 Linux64 - external code space - debug - builder': 'debug_x64_external_code_space', 'V8 Linux64 - custom snapshot - debug builder': 'debug_x64_custom', 'V8 Linux64 - internal snapshot - builder': 'release_x64_internal', 'V8 Linux64 - debug - header includes - builder': 'debug_x64_header_includes', @@ -87,16 +86,15 @@ 'V8 Win32 - builder (reclient)': 'release_x86_minimal_symbols_reclient', 'V8 Win32 - builder (reclient compare)': 'release_x86_minimal_symbols_reclient', 'V8 Win32 - debug builder': 'debug_x86_minimal_symbols', - 'V8 Win32 - msvc - debug builder': 'debug_x86_msvc', # TODO(machenbach): Remove after switching to x64 on infra side. 'V8 Win64 ASAN - builder': 'release_x64_asan_no_lsan', + 'V8 Win64 - CET shadow stack - builder': 'release_x64_cet_shadow_stack', 'V8 Win64 - builder': 'release_x64_minimal_symbols', 'V8 Win64 - builder (reclient)': 'release_x64_minimal_symbols_reclient', 'V8 Win64 - builder (reclient compare)': 'release_x64_minimal_symbols_reclient', 'V8 Win64 - dev image': 'release_x64_minimal_symbols', 'V8 Win64 - debug builder': 'debug_x64_minimal_symbols', 'V8 Win64 - drumbrake - debug builder': 'debug_x64_drumbrake', - 'V8 Win64 - msvc - builder': 'release_x64_msvc', # Mac. 'V8 Mac64 - builder': 'release_x64', 'V8 Mac64 - debug builder': 'debug_x64', @@ -118,7 +116,6 @@ # FYI. 'V8 iOS - sim - builder': 'release_x64_ios_simulator', 'V8 Linux64 - arm64 - builder': 'release_arm64', - 'V8 Linux64 - arm64 - no pointer compression - builder': 'release_arm64_no_pointer_compression', 'V8 Linux64 - arm64 - debug builder': 'debug_arm64', 'V8 Linux64 - arm64 - sim - no pointer compression - builder': 'release_simulate_arm64_no_pointer_compression', @@ -142,6 +139,7 @@ 'V8 Linux64 UBSan - builder': 'release_x64_ubsan', 'V8 Linux - vtunejit': 'debug_x86_vtunejit', 'V8 Linux64 - Fuzzilli - builder': 'release_x64_fuzzilli', + 'V8 Linux64 - lower limits - builder': 'release_x64_lower_limits', 'V8 Linux64 - predictable - builder': 'release_x64_predictable', 'V8 Linux64 - verify builtins': 'release_x64_verify_builtins', 'V8 Linux64 - verify deterministic': 'release_x64_verify_deterministic', @@ -233,6 +231,7 @@ 'V8 Linux - arm64 - sim - builder': 'release_simulate_arm64_gcmole', 'V8 Linux - arm64 - sim - debug builder': 'debug_simulate_arm64', 'V8 Linux - arm64 - sim - gc stress - builder': 'debug_simulate_arm64', + 'V8 Linux64 - arm64 - no pointer compression - builder': 'release_arm64_no_pointer_compression', 'V8 Linux64 - arm64 - no wasm - debug builder': 'debug_arm64_webassembly_disabled', # Mips. 'V8 Linux - mips64el - sim - builder': 'release_simulate_mips64el', @@ -250,8 +249,9 @@ 'v8_android_arm_compile_rel': 'release_android_arm', 'v8_android_arm_verify_deterministic_dbg': 'debug_android_arm_verify_deterministic', 'v8_android_arm64_compile_dbg': 'debug_android_arm64', - 'v8_android_arm64_n5x_compile_rel': 'release_android_arm64', 'v8_android_arm64_d8_compile_rel': 'release_android_arm64', + 'v8_android_arm64_n5x_compile_rel': 'release_android_arm64', + 'v8_android_arm64_p7_compile_rel': 'release_android_arm64', 'v8_fuchsia_compile_rel': 'release_x64_fuchsia_trybot', 'v8_ios_simulator': 'release_x64_ios_simulator', 'v8_linux_compile_rel': 'release_x86_gcmole_trybot', @@ -281,7 +281,6 @@ 'v8_linux64_no_sandbox_compile_dbg': 'debug_x64_no_sandbox', 'v8_linux64_dict_tracking_compile_dbg': 'debug_x64_dict_tracking_trybot', 'v8_linux64_disable_runtime_call_stats_compile_rel': 'release_x64_disable_runtime_call_stats', - 'v8_linux64_external_code_space_compile_dbg': 'debug_x64_external_code_space', 'v8_linux64_css_compile_dbg': 'debug_x64_conservative_stack_scanning', 'v8_linux64_gc_stress_custom_snapshot_compile_dbg': 'debug_x64_trybot_custom', 'v8_linux64_gc_stress_compile_dbg': 'debug_x64_trybot', @@ -300,6 +299,7 @@ 'v8_linux64_no_sandbox_compile_rel': 'release_x64_no_sandbox', 'v8_linux64_official_compile_rel': 'official_x64_on_release_branch', 'v8_linux64_predictable_compile_rel': 'release_x64_predictable', + 'v8_linux64_pku_compile_dbg': 'debug_x64', 'v8_linux64_pku_compile_rel': 'release_x64', 'v8_linux64_shared_compile_rel': 'release_x64_shared_verify_heap', 'v8_linux64_single_generation_compile_dbg': 'debug_x64_single_generation', @@ -312,6 +312,7 @@ 'v8_linux64_cfi_compile_rel': 'release_x64_cfi', 'v8_linux64_fuzzilli_compile_rel': 'release_x64_fuzzilli', 'v8_linux64_loong64_compile_rel': 'release_simulate_loong64', + 'v8_linux64_lower_limits_compile_rel': 'release_x64_lower_limits', 'v8_linux64_msan_compile_rel': 'release_simulate_arm64_msan_minimal_symbols', 'v8_linux_riscv32_compile_rel': 'release_simulate_riscv32', 'v8_linux64_riscv64_compile_rel': 'release_simulate_riscv64', @@ -330,13 +331,12 @@ # TODO(machenbach): Remove after switching to x64 on infra side. 'v8_win_compile_dbg': 'debug_x86_trybot', 'v8_win_compile_rel': 'release_x86_trybot', - 'v8_win_msvc_light_compile_dbg': 'debug_x86_msvc', 'v8_win64_asan_compile_rel': 'release_x64_asan_no_lsan', - 'v8_win64_msvc_light_compile_rel': 'release_x64_msvc', + 'v8_win64_cet_shadow_stack_compile_rel': 'release_x64_cet_shadow_stack', 'v8_win64_compile_dbg': 'debug_x64_minimal_symbols', 'v8_win64_drumbrake_compile_dbg': 'debug_x64_drumbrake', - 'v8_win64_msvc_compile_rel': 'release_x64_msvc', 'v8_win64_compile_rel': 'release_x64_trybot', + 'v8_win64_nodcheck_compile_rel': 'release_x64_minimal_symbols', 'v8_mac_arm64_compile_rel': 'release_arm64', 'v8_mac_arm64_compile_dbg': 'debug_arm64', 'v8_mac_arm64_full_compile_dbg': 'full_debug_arm64', @@ -358,6 +358,7 @@ 'v8_linux_arm64_compile_dbg': 'debug_simulate_arm64', 'v8_linux_arm64_gc_stress_compile_dbg': 'debug_simulate_arm64', 'v8_linux_mips64el_compile_rel': 'release_simulate_mips64el', + 'v8_numfuzz_asan_compile_rel': 'release_x64_asan_symbolized_verify_heap_turboshaft_csa', 'v8_numfuzz_compile_rel': 'release_x64', 'v8_numfuzz_compile_dbg': 'debug_x64', 'v8_numfuzz_tsan_compile_rel': 'release_x64_tsan', @@ -593,7 +594,7 @@ 'release_bot', 'x64', 'asan', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_heap', 'v8_enable_turboshaft_csa'], 'release_x64_sandbox_testing_turboshaft_csa': [ - 'release_bot', 'x64', 'symbolized', 'v8_enable_memory_corruption_api', + 'release_bot', 'x64', 'symbolized', 'backtrace', 'v8_enable_memory_corruption_api', 'v8_enable_turboshaft_csa'], 'release_x64_asan_sandbox_testing_turboshaft_csa': [ 'release_bot', 'x64', 'asan', 'symbolized', @@ -601,6 +602,8 @@ 'release_x64_asan_symbolized_verify_heap_turboshaft_csa': [ 'release_bot', 'x64', 'asan', 'lsan', 'symbolized', 'v8_verify_heap', 'v8_enable_turboshaft_csa'], + 'release_x64_cet_shadow_stack': [ + 'release_bot', 'x64', 'cet_shadow_stack'], 'release_x64_cfi': [ 'release_bot', 'x64', 'cfi'], 'release_x64_cfi_clusterfuzz_turboshaft_csa': [ @@ -612,8 +615,6 @@ 'v8_verify_heap', 'v8_verify_csa', 'fuzzilli'], 'release_x64_gcmole': [ 'release_bot', 'x64', 'gcmole'], - 'release_x64_msvc': [ - 'release_bot_no_reclient', 'x64', 'minimal_symbols', 'msvc'], 'release_x64_correctness_fuzzer_turboshaft_csa' : [ 'release_bot', 'x64', 'v8_correctness_fuzzer', 'v8_enable_turboshaft_csa'], @@ -629,6 +630,8 @@ 'release_bot', 'x64', 'ios_simulator'], 'release_x64_internal': [ 'release_bot', 'x64', 'v8_snapshot_internal'], + 'release_x64_lower_limits': [ + 'release_bot', 'x64', 'v8_lower_limits_mode'], 'release_x64_minimal_symbols': [ 'release_bot', 'x64', 'minimal_symbols'], 'release_x64_minimal_symbols_reclient': [ @@ -700,8 +703,6 @@ 'debug_bot', 'x64', 'v8_snapshot_custom'], 'debug_x64_drumbrake': [ 'debug_bot', 'x64', 'v8_enable_drumbrake'], - 'debug_x64_external_code_space': [ - 'debug_bot', 'x64', 'external_code_space'], 'debug_x64_fuchsia': [ 'debug_bot', 'x64', 'fuchsia'], 'debug_x64_gcc': [ @@ -745,8 +746,6 @@ 'debug_bot', 'x86', 'asan', 'lsan', 'v8_enable_turboshaft_csa'], 'debug_x86_minimal_symbols': [ 'debug_bot', 'x86', 'minimal_symbols'], - 'debug_x86_msvc': [ - 'debug_bot_no_reclient', 'x86', 'minimal_symbols', 'msvc'], 'debug_x86_no_i18n': [ 'debug_bot', 'x86', 'v8_no_i18n'], 'debug_x86_trybot': [ @@ -829,6 +828,10 @@ 'gn_args': 'v8_enable_builtins_optimization=true', }, + 'cet_shadow_stack': { + 'gn_args': 'v8_enable_cet_shadow_stack=true', + }, + 'cfi': { 'mixins': ['v8_enable_test_features'], 'gn_args': ('is_cfi=true use_cfi_cast=true use_cfi_icall=true ' @@ -896,10 +899,6 @@ 'gn_args': 'chrome_pgo_phase=0', }, - 'external_code_space': { - 'gn_args': 'v8_enable_external_code_space=true', - }, - 'fuchsia': { 'gn_args': 'target_os="fuchsia"', }, @@ -922,7 +921,8 @@ }, 'ios_simulator': { - 'gn_args': 'target_cpu="x64" target_os="ios" use_blink=true', + 'gn_args': 'target_cpu="x64" target_os="ios" ' + 'target_environment="simulator" use_blink=true', }, 'lld': { @@ -948,10 +948,6 @@ 'gn_args': 'is_msan=true msan_track_origins=0 instrumented_libraries_release="noble"', }, - 'msvc': { - 'gn_args': 'is_clang=false', - }, - 'no_custom_libcxx': { 'gn_args': 'use_custom_libcxx=false', }, @@ -980,6 +976,10 @@ 'gn_args': 'is_debug=false dcheck_always_on=false', }, + 'backtrace': { + 'gn_args': 'v8_enable_backtrace=true', + }, + 'release_bot': { 'mixins': ['release', 'static', 'reclient', 'v8_enable_google_benchmark'], }, @@ -1082,7 +1082,7 @@ }, 'v8_disable_leaptiering': { - 'gn_args': 'v8_disable_leaptiering=true', + 'gn_args': 'v8_enable_leaptiering=false v8_enable_sandbox=false', }, 'v8_disable_runtime_call_stats': { @@ -1136,7 +1136,9 @@ 'gn_args': 'v8_enable_pointer_compression=true', }, 'v8_disable_pointer_compression_shared_cage': { - 'gn_args': 'v8_enable_pointer_compression_shared_cage=false', + 'gn_args': 'v8_enable_pointer_compression_shared_cage=false ' + 'v8_enable_sandbox = true ' + 'v8_enable_external_code_space = true', }, 'v8_enable_single_generation': { 'gn_args': 'v8_enable_single_generation=true ' @@ -1173,6 +1175,10 @@ 'gn_args': 'v8_is_on_release_branch=true', }, + 'v8_lower_limits_mode': { + 'gn_args': 'v8_lower_limits_mode=true', + }, + 'v8_optimized_debug': { # This is the default in gn for debug. }, diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl index 1afe45582fefbb..8bc7b6c49b49ef 100644 --- a/deps/v8/infra/testing/builders.pyl +++ b/deps/v8/infra/testing/builders.pyl @@ -44,22 +44,16 @@ {'name': 'v8testing', 'variant': 'default', 'shards': 4}, ], }, - ############################################################################## - # Fuchsia - 'v8_fuchsia_rel': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-22.04', - }, - 'tests': [ - {'name': 'fuchsia-unittests'}, - ], - }, - 'V8 Fuchsia': { + 'v8_android_arm64_p7_rel': { 'swarming_dimensions' : { - 'os': 'Ubuntu-22.04', + 'device_os': 'AP2A.240705.004', + 'device_type': 'panther', + 'os': 'Android', }, 'tests': [ - {'name': 'fuchsia-unittests'}, + {'name': 'mozilla', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 12}, + {'name': 'v8testing', 'variant': 'default', 'shards': 4}, ], }, ############################################################################## @@ -431,20 +425,25 @@ {'name': 'v8testing', 'shards': 5}, {'name': 'v8testing', 'variant': 'extra', 'shards': 5}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, {'name': 'v8testing', 'variant': 'stress_concurrent_allocation'}, {'name': 'v8testing', 'variant': 'stress_concurrent_inlining'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, # Code serializer. {'name': 'benchmarks', 'variant': 'code_serializer', 'shards': 1}, {'name': 'd8testing', 'variant': 'code_serializer', 'shards': 1}, {'name': 'mozilla', 'variant': 'code_serializer', 'shards': 1}, - {'name': 'test262', 'variant': 'code_serializer', 'shards': 3}, + {'name': 'test262', 'variant': 'code_serializer', 'shards': 5}, # GC stress { 'name': 'd8testing', @@ -452,6 +451,9 @@ 'test_args': ['--gc-stress'], 'shards': 7, }, + # Jit fuzzing. + {'name': 'mjsunit', 'variant': 'jit_fuzzing'}, + {'name': 'mjsunit', 'variant': 'jit_fuzzing_maglev'}, ], }, 'v8_linux64_dict_tracking_dbg': { @@ -471,15 +473,6 @@ {'name': 'v8testing'}, ], }, - 'v8_linux64_external_code_space_dbg': { - 'swarming_dimensions' : { - 'cpu': 'x86-64-avx2', - 'os': 'Ubuntu-22.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 3}, - ], - }, 'v8_linux64_fuzzilli_rel': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -515,7 +508,7 @@ { 'name': 'mjsunit', 'test_args': ['--gc-stress', '--no-harness'], - 'shards': 3, + 'shards': 5, }, ], }, @@ -544,6 +537,18 @@ 'test_args': ['--gc-stress'], 'shards': 2 }, + { + 'name': 'mjsunit', + 'variant': 'conservative_pinning', + 'test_args': ['--gc-stress'], + 'shards': 2 + }, + { + 'name': 'mjsunit', + 'variant': 'precise_pinning', + 'test_args': ['--gc-stress'], + 'shards': 2 + }, ], }, 'v8_linux64_gcc_rel': { @@ -562,6 +567,14 @@ {'name': 'v8testing'}, ], }, + 'v8_linux64_lower_limits_rel': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + }, + 'tests': [ + {'name': 'v8testing'}, + ], + }, 'v8_linux64_minor_mc_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64-avx2', @@ -605,12 +618,17 @@ {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'v8_linux64_perfetto_dbg': { @@ -626,7 +644,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 3}, + {'name': 'v8testing', 'shards': 5}, ], }, 'v8_linux64_no_shared_cage_dbg': { @@ -634,7 +652,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 3}, + {'name': 'v8testing', 'shards': 5}, ], }, 'v8_linux64_no_pointer_compression_rel': { @@ -663,6 +681,16 @@ {'name': 'v8testing', 'shards': 2}, ], }, + 'v8_linux64_pku_dbg': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + 'cpu': 'x86-64-avx2', + 'pool': 'v8.tests', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default'}, + ], + }, 'v8_linux64_pku_rel': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -708,20 +736,25 @@ {'name': 'benchmarks', 'shards': 1}, {'name': 'mozilla', 'shards': 1}, {'name': 'optimize_for_size'}, - {'name': 'test262', 'shards': 4}, - {'name': 'test262', 'variant': 'extra', 'shards': 4}, + {'name': 'test262', 'shards': 6}, + {'name': 'test262', 'variant': 'extra', 'shards': 6}, {'name': 'v8initializers'}, {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'slow_path'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, # Code serializer. {'name': 'benchmarks', 'variant': 'code_serializer', 'shards': 1}, {'name': 'd8testing', 'variant': 'code_serializer', 'shards': 1}, @@ -776,6 +809,8 @@ {'name': 'v8testing', 'variant': 'slow_path', 'shards': 2}, {'name': 'v8testing', 'variant': 'stress_concurrent_allocation', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms', 'shards': 2}, + {'name': 'v8testing', 'variant': 'conservative_pinning', 'shards': 2}, + {'name': 'v8testing', 'variant': 'precise_pinning', 'shards': 2}, ], }, 'v8_linux64_tsan_dbg': { @@ -945,6 +980,16 @@ {'name': 'v8testing', 'shards': 5}, ], }, + 'v8_win64_cet_shadow_stack_rel': { + 'swarming_dimensions' : { + 'os': 'Windows-11', + 'cpu': 'x86-64-Sapphire_Rapids_GCE', + 'pool': 'v8.tests', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default'}, + ], + }, 'v8_win64_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64', @@ -956,6 +1001,8 @@ {'name': 'v8testing', 'shards': 4}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'v8_win64_drumbrake_dbg': { @@ -968,7 +1015,7 @@ {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, ], }, - 'v8_win64_msvc_rel': { + 'v8_win64_nodcheck_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', 'os': 'Windows-10-19045', @@ -977,6 +1024,10 @@ {'name': 'mozilla'}, {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 2}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, + {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'v8_win64_rel': { @@ -990,6 +1041,8 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, ############################################################################## @@ -1014,6 +1067,8 @@ {'name': 'v8testing', 'shards': 6}, {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'v8_mac_arm64_gc_stress_dbg': { @@ -1045,6 +1100,8 @@ {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'v8_mac_arm64_rel': { @@ -1055,12 +1112,17 @@ }, 'tests': [ {'name': 'v8testing'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'v8_mac_arm64_dbg': { @@ -1071,12 +1133,17 @@ }, 'tests': [ {'name': 'v8testing'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'v8_mac_arm64_full_dbg': { @@ -1087,12 +1154,17 @@ }, 'tests': [ {'name': 'v8testing'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'v8_mac_arm64_no_pointer_compression_dbg': { @@ -1294,7 +1366,7 @@ 'name': 'v8testing', 'suffix': 'noavx', 'test_args': ['--extra-flags', '--noenable-avx'], - 'shards': 2 + 'shards': 3 }, ], }, @@ -1303,7 +1375,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'variant': 'default', 'shards': 6}, + {'name': 'v8testing', 'variant': 'default', 'shards': 7}, ], }, 'V8 Linux - gc stress': { @@ -1360,7 +1432,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, ], }, 'V8 Linux PGO instrumentation - builder' : { @@ -1394,13 +1466,18 @@ {'name': 'v8testing', 'variant': 'assert_types'}, {'name': 'v8testing', 'variant': 'extra'}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, # Noavx. { 'name': 'mozilla', @@ -1478,7 +1555,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'mjsunit', 'test_args': ['--no-harness']}, + {'name': 'mjsunit', 'test_args': ['--no-harness'], 'shards': 2}, ], }, 'V8 Linux64 - debug': { @@ -1492,21 +1569,26 @@ {'name': 'mozilla'}, {'name': 'mozilla', 'variant': 'extra'}, {'name': 'optimize_for_size'}, - {'name': 'test262', 'shards': 7}, + {'name': 'test262', 'shards': 9}, {'name': 'test262', 'variant': 'extra', 'shards': 7}, - {'name': 'v8testing', 'shards': 2}, + {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'slow_path'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, {'name': 'v8testing', 'variant': 'stress_concurrent_allocation'}, {'name': 'v8testing', 'variant': 'stress_concurrent_inlining', 'shards': 2}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, # Noavx. { 'name': 'mozilla', @@ -1524,13 +1606,16 @@ 'name': 'v8testing', 'suffix': 'noavx', 'test_args': ['--extra-flags', '--noenable-avx'], - 'shards': 2 + 'shards': 3 }, # Code serializer. {'name': 'benchmarks', 'variant': 'code_serializer', 'shards': 1}, {'name': 'd8testing', 'variant': 'code_serializer', 'shards': 1}, {'name': 'mozilla', 'variant': 'code_serializer', 'shards': 1}, - {'name': 'test262', 'variant': 'code_serializer', 'shards': 2}, + {'name': 'test262', 'variant': 'code_serializer', 'shards': 3}, + # Jit fuzzing. + {'name': 'mjsunit', 'variant': 'jit_fuzzing'}, + {'name': 'mjsunit', 'variant': 'jit_fuzzing_maglev'}, ], }, 'V8 Linux64 - minor mc - debug': { @@ -1608,15 +1693,6 @@ {'name': 'v8testing', 'shards': 3}, ], }, - 'V8 Linux64 - external code space - debug': { - 'swarming_dimensions' : { - 'cpu': 'x86-64-avx2', - 'os': 'Ubuntu-22.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 3}, - ], - }, 'V8 Linux64 - fyi': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -1647,6 +1723,16 @@ {'name': 'v8testing', 'variant': 'default'}, ], }, + 'V8 Linux64 - PKU - debug': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + 'cpu': 'x86-64-avx2', + 'pool': 'v8.tests', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default'}, + ], + }, 'V8 Linux64 gcc': { 'swarming_dimensions' : { 'os': 'Ubuntu-20.04', @@ -1692,6 +1778,18 @@ 'test_args': ['--gc-stress'], 'shards': 2 }, + { + 'name': 'mjsunit', + 'variant': 'conservative_pinning', + 'test_args': ['--gc-stress'], + 'shards': 2 + }, + { + 'name': 'mjsunit', + 'variant': 'precise_pinning', + 'test_args': ['--gc-stress'], + 'shards': 2 + }, ], }, 'V8 Linux64 - internal snapshot': { @@ -1702,12 +1800,20 @@ {'name': 'v8testing'}, ], }, + 'V8 Linux64 - lower limits': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + }, + 'tests': [ + {'name': 'v8testing'}, + ], + }, 'V8 Linux64 - no leaptiering - debug': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 2}, + {'name': 'v8testing', 'shards': 5}, ], }, 'V8 Linux64 - no shared cage - debug': { @@ -1746,7 +1852,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 2}, + {'name': 'v8testing', 'shards': 3}, ], }, 'V8 Linux64 - sandbox testing': { @@ -1815,7 +1921,7 @@ { 'name': 'mjsunit', 'test_args': ['--gc-stress', '--no-harness'], - 'shards': 3, + 'shards': 5, }, ], }, @@ -1840,6 +1946,8 @@ {'name': 'v8testing', 'variant': 'slow_path', 'shards': 2}, {'name': 'v8testing', 'variant': 'stress_concurrent_allocation', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms', 'shards': 2}, + {'name': 'v8testing', 'variant': 'conservative_pinning', 'shards': 2}, + {'name': 'v8testing', 'variant': 'precise_pinning', 'shards': 2}, ], }, 'V8 Linux64 TSAN - debug': { @@ -1849,7 +1957,7 @@ 'tests': [ {'name': 'benchmarks', 'shards': 2}, {'name': 'mozilla', 'shards': 4}, - {'name': 'test262', 'variant': 'default', 'shards': 5}, + {'name': 'test262', 'variant': 'default', 'shards': 6}, {'name': 'v8testing', 'shards': 12}, {'name': 'v8testing', 'variant': 'extra', 'shards': 12}, ], @@ -1926,6 +2034,8 @@ {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'V8 Mac64 - debug': { @@ -1939,6 +2049,8 @@ {'name': 'v8testing', 'shards': 6}, {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'V8 Mac64 ASAN': { @@ -1968,12 +2080,17 @@ 'tests': [ {'name': 'v8testing'}, {'name': 'v8testing', 'variant': 'extra'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'V8 Mac - arm64 - release': { @@ -1985,12 +2102,17 @@ 'tests': [ {'name': 'v8testing'}, {'name': 'v8testing', 'variant': 'extra'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'V8 Mac - arm64 - debug': { @@ -2002,12 +2124,17 @@ 'tests': [ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, {'name': 'v8testing', 'variant': 'maglev_future'}, {'name': 'v8testing', 'variant': 'stress_maglev'}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, + {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'V8 Mac - arm64 - no pointer compression debug': { @@ -2061,6 +2188,18 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, + ], + }, + 'V8 Win64 - CET shadow stack': { + 'swarming_dimensions' : { + 'os': 'Windows-11', + 'cpu': 'x86-64-Sapphire_Rapids_GCE', + 'pool': 'v8.tests', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default'}, ], }, 'V8 Win64 - debug': { @@ -2073,6 +2212,8 @@ {'name': 'v8testing', 'shards': 4}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, + {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, 'V8 Win64 - drumbrake - debug': { @@ -2090,16 +2231,6 @@ {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, ], }, - 'V8 Win64 - msvc': { - 'swarming_dimensions': { - 'os': 'Windows-10-19045', - }, - 'tests': [ - {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default', 'shards': 2}, - {'name': 'v8testing', 'shards': 2}, - ], - }, 'V8 Win64 ASAN': { 'swarming_dimensions': { 'os': 'Windows-10-19045', @@ -2130,6 +2261,18 @@ {'name': 'v8testing', 'variant': 'default', 'shards': 4}, ], }, + 'V8 Android Arm64 - P7': { + 'swarming_dimensions': { + 'device_os': 'AP2A.240705.004', + 'device_type': 'panther', + 'os': 'Android', + }, + 'tests': [ + {'name': 'mozilla', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 12}, + {'name': 'v8testing', 'variant': 'default', 'shards': 4}, + ], + }, 'V8 Linux - arm - sim': { 'swarming_dimensions': { 'os': 'Ubuntu-22.04', @@ -2139,6 +2282,7 @@ {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 6}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, + {'name': 'v8testing', 'variant': 'turbolev'}, # Armv8-a. { 'name': 'mozilla', @@ -2190,6 +2334,7 @@ {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 10}, {'name': 'v8testing', 'variant': 'extra', 'shards': 10}, + {'name': 'v8testing', 'variant': 'turbolev'}, # Armv8-a. { 'name': 'mozilla', @@ -2442,6 +2587,66 @@ }, ], }, + 'V8 NumFuzz - ASAN': { + 'swarming_dimensions': { + 'os': 'Ubuntu-22.04', + }, + 'swarming_task_attrs': { + 'expiration': 13800, + 'hard_timeout': 4200, + 'priority': 35, + }, + 'tests': [ + {'name': 'd8testing_random_gc', 'shards': 2}, + { + 'name': 'numfuzz', + 'suffix': 'marking', + 'test_args': ['--total-timeout-sec=2100', '--stress-marking=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'delay', + 'test_args': ['--total-timeout-sec=2100', '--stress-delay-tasks=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'interrupt', + 'test_args': ['--total-timeout-sec=2100', '--stress-interrupt-budget=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'threads', + 'test_args': ['--total-timeout-sec=2100', '--stress-thread-pool-size=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'stack', + 'test_args': ['--total-timeout-sec=2100', '--stress-stack-size=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'combined', + 'test_args': [ + '--total-timeout-sec=2100', + '--stress-delay-tasks=4', + '--stress-deopt=2', + '--stress-compaction=2', + '--stress-gc=4', + '--stress-marking=4', + '--stress-scavenge=4', + '--stress-thread-pool-size=2', + '--stress-stack-size=1', + '--stress-interrupt-budget=1', + ], + 'shards': 4 + }, + { + 'name': 'numfuzz', + 'suffix': 'scavenge', + 'test_args': ['--total-timeout-sec=2100', '--stress-scavenge=1'] + }, + ], + }, 'V8 NumFuzz - TSAN': { 'swarming_dimensions': { 'os': 'Ubuntu-22.04', @@ -2586,6 +2791,59 @@ }, ], }, + 'v8_numfuzz_asan_rel': { + 'swarming_dimensions': { + 'os': 'Ubuntu-22.04', + }, + 'tests': [ + { + 'name': 'numfuzz', + 'suffix': 'marking', + 'test_args': ['--total-timeout-sec=900', '--stress-marking=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'delay', + 'test_args': ['--total-timeout-sec=900', '--stress-delay-tasks=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'interrupt', + 'test_args': ['--total-timeout-sec=900', '--stress-interrupt-budget=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'threads', + 'test_args': ['--total-timeout-sec=900', '--stress-thread-pool-size=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'stack', + 'test_args': ['--total-timeout-sec=900', '--stress-stack-size=1'] + }, + { + 'name': 'numfuzz', + 'suffix': 'combined', + 'test_args': [ + '--total-timeout-sec=900', + '--stress-delay-tasks=4', + '--stress-deopt=2', + '--stress-compaction=2', + '--stress-gc=4', + '--stress-marking=4', + '--stress-scavenge=4', + '--stress-thread-pool-size=2', + '--stress-stack-size=1', + '--stress-interrupt-budget=1', + ], + }, + { + 'name': 'numfuzz', + 'suffix': 'scavenge', + 'test_args': ['--total-timeout-sec=900', '--stress-scavenge=1'] + }, + ], + }, 'v8_numfuzz_tsan_rel': { 'swarming_dimensions': { 'os': 'Ubuntu-22.04', diff --git a/deps/v8/pyrightconfig.json b/deps/v8/pyrightconfig.json new file mode 100644 index 00000000000000..eac5d8f4376896 --- /dev/null +++ b/deps/v8/pyrightconfig.json @@ -0,0 +1,4 @@ +{ + "include": ["tools"], + "exclude": ["tools/gcmole/bootstrap"] +} diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS index 8cd950b5d1f5ea..b4ad130ef2e487 100644 --- a/deps/v8/src/DEPS +++ b/deps/v8/src/DEPS @@ -16,8 +16,10 @@ include_rules = [ "+src/compiler/wasm-compiler.h", "-src/flags/flags-impl.h", "-src/heap", + "+src/heap/memory-chunk-constants.h", "+src/heap/memory-chunk-metadata.h", "+src/heap/code-range.h", + "+src/heap/read-only-spaces.h", "+src/heap/trusted-range.h", "+src/heap/combined-heap.h", "+src/heap/factory.h", @@ -29,6 +31,8 @@ include_rules = [ "+src/heap/heap.h", "+src/heap/heap-verifier.h", "+src/heap/heap-inl.h", + "+src/heap/heap-layout-inl.h", + "+src/heap/heap-layout.h", "+src/heap/heap-write-barrier-inl.h", "+src/heap/heap-write-barrier.h", "+src/heap/local-factory-inl.h", @@ -41,6 +45,7 @@ include_rules = [ "+src/heap/mutable-page-metadata-inl.h", "+src/heap/memory-chunk.h", "+src/heap/page-metadata-inl.h", + "+src/heap/page-pool.h", "+src/heap/paged-spaces-inl.h", "+src/heap/parked-scope-inl.h", "+src/heap/parked-scope.h", @@ -50,6 +55,7 @@ include_rules = [ "+src/heap/safepoint.h", "+src/heap/base/stack.h", "+src/heap/conservative-stack-visitor.h", + "+src/heap/visit-object.h", "-src/inspector", "-src/interpreter", "+src/interpreter/bytecode-array-iterator.h", @@ -67,6 +73,7 @@ include_rules = [ "-src/regexp", "+src/regexp/regexp.h", "+src/regexp/regexp-flags.h", + "+src/regexp/regexp-result-vector.h", "+src/regexp/regexp-stack.h", "+src/regexp/regexp-utils.h", "+src/tracing/trace-event-no-perfetto.h", @@ -81,11 +88,6 @@ include_rules = [ "+builtins-generated", "+torque-generated", "+starboard", - # Using cppgc inside v8 is not (yet) allowed. - "-include/cppgc", - "+include/cppgc/common.h", - "+include/cppgc/platform.h", - "+include/cppgc/source-location.h", ] specific_include_rules = { @@ -121,7 +123,13 @@ specific_include_rules = { "+src/heap/factory-base.h", "+src/heap/local-factory.h", ], + "setup-builtins-internal\.cc": [ + "+src/compiler/pipeline.h", + ], "snapshot\.cc": [ "+src/heap/read-only-promotion.h", ], + "string-hasher-inl\.h": [ + "+third_party/rapidhash-v8/rapidhash.h", + ] } diff --git a/deps/v8/src/api/DIR_METADATA b/deps/v8/src/api/DIR_METADATA index a27ea1b53a3f53..d65ff2a39e5763 100644 --- a/deps/v8/src/api/DIR_METADATA +++ b/deps/v8/src/api/DIR_METADATA @@ -8,4 +8,7 @@ monorail { component: "Blink>JavaScript>API" -} \ No newline at end of file +} +buganizer_public: { + component_id: 1456124 +} diff --git a/deps/v8/src/api/api-arguments-inl.h b/deps/v8/src/api/api-arguments-inl.h index 651c13dcf2caf5..86b1c75d15612d 100644 --- a/deps/v8/src/api/api-arguments-inl.h +++ b/deps/v8/src/api/api-arguments-inl.h @@ -6,6 +6,8 @@ #define V8_API_API_ARGUMENTS_INL_H_ #include "src/api/api-arguments.h" +// Include the non-inl header before the rest of the headers. + #include "src/api/api-inl.h" #include "src/debug/debug.h" #include "src/execution/vm-state-inl.h" @@ -42,10 +44,6 @@ inline Tagged PropertyCallbackArguments::receiver() const { return *slot_at(T::kThisIndex); } -inline Tagged FunctionCallbackArguments::holder() const { - return Cast(*slot_at(T::kHolderIndex)); -} - #define DCHECK_NAME_COMPATIBLE(interceptor, name) \ DCHECK(interceptor->is_named()); \ DCHECK(!name->IsPrivate()); \ @@ -76,7 +74,7 @@ inline Tagged FunctionCallbackArguments::holder() const { ExternalCallbackScope call_scope(ISOLATE, FUNCTION_ADDR(F), \ EXCEPTION_CONTEXT, &callback_info); -Handle FunctionCallbackArguments::CallOrConstruct( +DirectHandle FunctionCallbackArguments::CallOrConstruct( Tagged function, bool is_construct) { Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kFunctionCallback); @@ -149,16 +147,17 @@ Maybe PropertyCallbackArguments::GetBooleanReturnValue( // ------------------------------------------------------------------------- // Named Interceptor callbacks. -Handle PropertyCallbackArguments::CallNamedEnumerator( - Handle interceptor) { +DirectHandle +PropertyCallbackArguments::CallNamedEnumerator( + DirectHandle interceptor) { DCHECK(interceptor->is_named()); RCS_SCOPE(isolate(), RuntimeCallCounterId::kNamedEnumeratorCallback); return CallPropertyEnumerator(interceptor); } // TODO(ishell): return std::optional. -Handle PropertyCallbackArguments::CallNamedQuery( - Handle interceptor, Handle name) { +DirectHandle PropertyCallbackArguments::CallNamedQuery( + DirectHandle interceptor, DirectHandle name) { DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedQueryCallback); @@ -174,8 +173,8 @@ Handle PropertyCallbackArguments::CallNamedQuery( return GetReturnValue(isolate); } -Handle PropertyCallbackArguments::CallNamedGetter( - Handle interceptor, Handle name) { +DirectHandle PropertyCallbackArguments::CallNamedGetter( + DirectHandle interceptor, DirectHandle name) { DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedGetterCallback); @@ -192,7 +191,7 @@ Handle PropertyCallbackArguments::CallNamedGetter( } Handle PropertyCallbackArguments::CallNamedDescriptor( - Handle interceptor, Handle name) { + DirectHandle interceptor, DirectHandle name) { DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedDescriptorCallback); @@ -210,8 +209,8 @@ Handle PropertyCallbackArguments::CallNamedDescriptor( } v8::Intercepted PropertyCallbackArguments::CallNamedSetter( - DirectHandle interceptor, Handle name, - Handle value) { + DirectHandle interceptor, DirectHandle name, + DirectHandle value) { DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedSetterCallback); @@ -220,7 +219,7 @@ v8::Intercepted PropertyCallbackArguments::CallNamedSetter( NamedPropertySetterCallback f = ToCData( isolate, interceptor->setter()); - Handle has_side_effects; + DirectHandle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, void, has_side_effects, ExceptionContext::kNamedSetter); v8::Intercepted intercepted = @@ -229,7 +228,7 @@ v8::Intercepted PropertyCallbackArguments::CallNamedSetter( } v8::Intercepted PropertyCallbackArguments::CallNamedDefiner( - DirectHandle interceptor, Handle name, + DirectHandle interceptor, DirectHandle name, const v8::PropertyDescriptor& desc) { DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); @@ -239,7 +238,7 @@ v8::Intercepted PropertyCallbackArguments::CallNamedDefiner( NamedPropertyDefinerCallback f = ToCData( isolate, interceptor->definer()); - Handle has_side_effects; + DirectHandle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, void, has_side_effects, ExceptionContext::kNamedDefiner); v8::Intercepted intercepted = @@ -248,7 +247,7 @@ v8::Intercepted PropertyCallbackArguments::CallNamedDefiner( } v8::Intercepted PropertyCallbackArguments::CallNamedDeleter( - DirectHandle interceptor, Handle name) { + DirectHandle interceptor, DirectHandle name) { DCHECK_NAME_COMPATIBLE(interceptor, name); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedDeleterCallback); @@ -257,7 +256,7 @@ v8::Intercepted PropertyCallbackArguments::CallNamedDeleter( NamedPropertyDeleterCallback f = ToCData( isolate, interceptor->deleter()); - Handle has_side_effects; + DirectHandle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Boolean, has_side_effects, ExceptionContext::kNamedDeleter); v8::Intercepted intercepted = f(v8::Utils::ToLocal(name), callback_info); @@ -267,16 +266,17 @@ v8::Intercepted PropertyCallbackArguments::CallNamedDeleter( // ------------------------------------------------------------------------- // Indexed Interceptor callbacks. -Handle PropertyCallbackArguments::CallIndexedEnumerator( - Handle interceptor) { +DirectHandle +PropertyCallbackArguments::CallIndexedEnumerator( + DirectHandle interceptor) { DCHECK(!interceptor->is_named()); RCS_SCOPE(isolate(), RuntimeCallCounterId::kIndexedEnumeratorCallback); return CallPropertyEnumerator(interceptor); } // TODO(ishell): return std::optional. -Handle PropertyCallbackArguments::CallIndexedQuery( - Handle interceptor, uint32_t index) { +DirectHandle PropertyCallbackArguments::CallIndexedQuery( + DirectHandle interceptor, uint32_t index) { DCHECK(!interceptor->is_named()); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kIndexedQueryCallback); @@ -294,8 +294,8 @@ Handle PropertyCallbackArguments::CallIndexedQuery( return GetReturnValue(isolate); } -Handle PropertyCallbackArguments::CallIndexedGetter( - Handle interceptor, uint32_t index) { +DirectHandle PropertyCallbackArguments::CallIndexedGetter( + DirectHandle interceptor, uint32_t index) { DCHECK(!interceptor->is_named()); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedGetterCallback); @@ -314,7 +314,7 @@ Handle PropertyCallbackArguments::CallIndexedGetter( } Handle PropertyCallbackArguments::CallIndexedDescriptor( - Handle interceptor, uint32_t index) { + DirectHandle interceptor, uint32_t index) { DCHECK(!interceptor->is_named()); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kIndexedDescriptorCallback); @@ -334,7 +334,7 @@ Handle PropertyCallbackArguments::CallIndexedDescriptor( v8::Intercepted PropertyCallbackArguments::CallIndexedSetter( DirectHandle interceptor, uint32_t index, - Handle value) { + DirectHandle value) { DCHECK(!interceptor->is_named()); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kIndexedSetterCallback); @@ -345,7 +345,7 @@ v8::Intercepted PropertyCallbackArguments::CallIndexedSetter( ToCData(isolate, interceptor->setter()); - Handle has_side_effects; + DirectHandle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, void, has_side_effects, ExceptionContext::kIndexedSetter); v8::Intercepted intercepted = @@ -366,7 +366,7 @@ v8::Intercepted PropertyCallbackArguments::CallIndexedDefiner( ToCData(isolate, interceptor->definer()); - Handle has_side_effects; + DirectHandle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, void, has_side_effects, ExceptionContext::kIndexedDefiner); v8::Intercepted intercepted = f(index, desc, callback_info); @@ -374,7 +374,7 @@ v8::Intercepted PropertyCallbackArguments::CallIndexedDefiner( } v8::Intercepted PropertyCallbackArguments::CallIndexedDeleter( - Handle interceptor, uint32_t index) { + DirectHandle interceptor, uint32_t index) { DCHECK(!interceptor->is_named()); Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kIndexedDeleterCallback); @@ -391,8 +391,9 @@ v8::Intercepted PropertyCallbackArguments::CallIndexedDeleter( return intercepted; } -Handle PropertyCallbackArguments::CallPropertyEnumerator( - Handle interceptor) { +DirectHandle +PropertyCallbackArguments::CallPropertyEnumerator( + DirectHandle interceptor) { // Named and indexed enumerator callbacks have same signatures. static_assert(std::is_same::value); @@ -410,7 +411,7 @@ Handle PropertyCallbackArguments::CallPropertyEnumerator( PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Array, interceptor, ExceptionContext::kNamedEnumerator); f(callback_info); - Handle result = GetReturnValue(isolate); + DirectHandle result = GetReturnValue(isolate); DCHECK(IsUndefined(*result) || IsJSObject(*result)); return Cast(result); } @@ -418,8 +419,8 @@ Handle PropertyCallbackArguments::CallPropertyEnumerator( // ------------------------------------------------------------------------- // Accessors -Handle PropertyCallbackArguments::CallAccessorGetter( - DirectHandle info, Handle name) { +DirectHandle PropertyCallbackArguments::CallAccessorGetter( + DirectHandle info, DirectHandle name) { Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kAccessorGetterCallback); // Unlike interceptor callbacks we know that the property exists, so @@ -430,16 +431,16 @@ Handle PropertyCallbackArguments::CallAccessorGetter( slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).undefined_value()); AccessorNameGetterCallback f = reinterpret_cast(info->getter(isolate)); - PREPARE_CALLBACK_INFO_ACCESSOR(isolate, f, v8::Value, info, - handle(receiver(), isolate), ACCESSOR_GETTER, - ExceptionContext::kAttributeGet); + PREPARE_CALLBACK_INFO_ACCESSOR( + isolate, f, v8::Value, info, direct_handle(receiver(), isolate), + ACCESSOR_GETTER, ExceptionContext::kAttributeGet); f(v8::Utils::ToLocal(name), callback_info); return GetReturnValue(isolate); } bool PropertyCallbackArguments::CallAccessorSetter( - DirectHandle accessor_info, Handle name, - Handle value) { + DirectHandle accessor_info, DirectHandle name, + DirectHandle value) { Isolate* isolate = this->isolate(); RCS_SCOPE(isolate, RuntimeCallCounterId::kAccessorSetterCallback); // Unlike interceptor callbacks we know that the property exists, so @@ -450,7 +451,7 @@ bool PropertyCallbackArguments::CallAccessorSetter( slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).true_value()); // The actual type of setter callback is either // v8::AccessorNameSetterCallback or - // i::Accesors::AccessorNameBooleanSetterCallback, depending on whether the + // i::Accessors::AccessorNameBooleanSetterCallback, depending on whether the // AccessorInfo was created by the API or internally (see accessors.cc). // Here we handle both cases using the AccessorNameSetterCallback signature // and checking whether the returned result is set to default value @@ -459,9 +460,9 @@ bool PropertyCallbackArguments::CallAccessorSetter( // the result of [[Set]] operation according to JavaScript semantics. AccessorNameSetterCallback f = reinterpret_cast( accessor_info->setter(isolate)); - PREPARE_CALLBACK_INFO_ACCESSOR(isolate, f, void, accessor_info, - handle(receiver(), isolate), ACCESSOR_SETTER, - ExceptionContext::kAttributeSet); + PREPARE_CALLBACK_INFO_ACCESSOR( + isolate, f, void, accessor_info, direct_handle(receiver(), isolate), + ACCESSOR_SETTER, ExceptionContext::kAttributeSet); f(v8::Utils::ToLocal(name), v8::Utils::ToLocal(value), callback_info); // Historically, in case of v8::AccessorNameSetterCallback it wasn't allowed // to set the result and not setting the result was treated as successful diff --git a/deps/v8/src/api/api-arguments.cc b/deps/v8/src/api/api-arguments.cc index 33d9d8fc7cc8f4..e827f4d65b038c 100644 --- a/deps/v8/src/api/api-arguments.cc +++ b/deps/v8/src/api/api-arguments.cc @@ -42,17 +42,15 @@ PropertyCallbackArguments::PropertyCallbackArguments( FunctionCallbackArguments::FunctionCallbackArguments( Isolate* isolate, Tagged target, - Tagged holder, Tagged new_target, Address* argv, - int argc) + Tagged new_target, Address* argv, int argc) : Super(isolate), argv_(argv), argc_(argc) { slot_at(T::kTargetIndex).store(target); - slot_at(T::kHolderIndex).store(holder); + slot_at(T::kUnusedIndex).store(ReadOnlyRoots(isolate).undefined_value()); slot_at(T::kNewTargetIndex).store(new_target); slot_at(T::kIsolateIndex) .store(Tagged(reinterpret_cast
(isolate))); slot_at(T::kReturnValueIndex).store(ReadOnlyRoots(isolate).undefined_value()); slot_at(T::kContextIndex).store(isolate->context()); - DCHECK(IsHeapObject(*slot_at(T::kHolderIndex))); DCHECK(IsSmi(*slot_at(T::kIsolateIndex))); } diff --git a/deps/v8/src/api/api-arguments.h b/deps/v8/src/api/api-arguments.h index 22f583585edf6c..26a42125d7027d 100644 --- a/deps/v8/src/api/api-arguments.h +++ b/deps/v8/src/api/api-arguments.h @@ -104,53 +104,54 @@ class PropertyCallbackArguments final // Returns the result of [[Get]] operation or throws an exception. // In case of exception empty handle is returned. // TODO(ishell, 328490288): stop returning empty handles. - inline Handle CallAccessorGetter(DirectHandle info, - Handle name); + inline DirectHandle CallAccessorGetter(DirectHandle info, + DirectHandle name); // Returns the result of [[Set]] operation or throws an exception. V8_WARN_UNUSED_RESULT inline bool CallAccessorSetter(DirectHandle info, - Handle name, Handle value); + DirectHandle name, + DirectHandle value); // ------------------------------------------------------------------------- // Named Interceptor Callbacks // Empty handle means that the request was not intercepted. // Pending exception handling should be done by the caller. - inline Handle CallNamedQuery(Handle interceptor, - Handle name); - inline Handle CallNamedGetter(Handle interceptor, - Handle name); + inline DirectHandle CallNamedQuery( + DirectHandle interceptor, DirectHandle name); + inline DirectHandle CallNamedGetter( + DirectHandle interceptor, DirectHandle name); // Calls Setter/Definer/Deleter callback and returns whether the request // was intercepted. // Pending exception handling and interpretation of the result should be // done by the caller using GetBooleanReturnValue(..). inline v8::Intercepted CallNamedSetter( - DirectHandle interceptor, Handle name, - Handle value); + DirectHandle interceptor, DirectHandle name, + DirectHandle value); inline v8::Intercepted CallNamedDefiner( - DirectHandle interceptor, Handle name, + DirectHandle interceptor, DirectHandle name, const v8::PropertyDescriptor& desc); inline v8::Intercepted CallNamedDeleter( - DirectHandle interceptor, Handle name); + DirectHandle interceptor, DirectHandle name); // Empty handle means that the request was not intercepted. // Pending exception handling should be done by the caller. - inline Handle CallNamedDescriptor(Handle interceptor, - Handle name); + inline Handle CallNamedDescriptor( + DirectHandle interceptor, DirectHandle name); // Returns JSArray-like object with property names or undefined. - inline Handle CallNamedEnumerator( - Handle interceptor); + inline DirectHandle CallNamedEnumerator( + DirectHandle interceptor); // ------------------------------------------------------------------------- // Indexed Interceptor Callbacks // Empty handle means that the request was not intercepted. // Pending exception handling should be done by the caller. - inline Handle CallIndexedQuery(Handle interceptor, - uint32_t index); - inline Handle CallIndexedGetter(Handle interceptor, - uint32_t index); + inline DirectHandle CallIndexedQuery( + DirectHandle interceptor, uint32_t index); + inline DirectHandle CallIndexedGetter( + DirectHandle interceptor, uint32_t index); // Calls Setter/Definer/Deleter callback and returns whether the request // was intercepted. @@ -158,20 +159,20 @@ class PropertyCallbackArguments final // done by the caller using GetBooleanReturnValue(..). inline v8::Intercepted CallIndexedSetter( DirectHandle interceptor, uint32_t index, - Handle value); + DirectHandle value); inline v8::Intercepted CallIndexedDefiner( DirectHandle interceptor, uint32_t index, const v8::PropertyDescriptor& desc); - inline v8::Intercepted CallIndexedDeleter(Handle interceptor, - uint32_t index); + inline v8::Intercepted CallIndexedDeleter( + DirectHandle interceptor, uint32_t index); // Empty handle means that the request was not intercepted. // Pending exception handling should be done by the caller. inline Handle CallIndexedDescriptor( - Handle interceptor, uint32_t index); + DirectHandle interceptor, uint32_t index); // Returns JSArray-like object with property names or undefined. - inline Handle CallIndexedEnumerator( - Handle interceptor); + inline DirectHandle CallIndexedEnumerator( + DirectHandle interceptor); // Accept potential JavaScript side effects that might occur during life // time of this object. @@ -232,8 +233,8 @@ class PropertyCallbackArguments final private: // Returns JSArray-like object with property names or undefined. - inline Handle CallPropertyEnumerator( - Handle interceptor); + inline DirectHandle CallPropertyEnumerator( + DirectHandle interceptor); inline Tagged holder() const; inline Tagged receiver() const; @@ -258,13 +259,13 @@ class FunctionCallbackArguments static constexpr int kArgsLength = T::kArgsLength; static constexpr int kArgsLengthWithReceiver = T::kArgsLengthWithReceiver; - static constexpr int kHolderIndex = T::kHolderIndex; + static constexpr int kUnusedIndex = T::kUnusedIndex; static constexpr int kIsolateIndex = T::kIsolateIndex; static constexpr int kContextIndex = T::kContextIndex; static constexpr int kTargetIndex = T::kTargetIndex; static constexpr int kNewTargetIndex = T::kNewTargetIndex; - static_assert(T::kThisValuesIndex == BuiltinArguments::kReceiverArgsOffset); + static_assert(T::kThisValuesIndex == BuiltinArguments::kReceiverArgsIndex); static constexpr int kSize = T::kSize; static constexpr int kImplicitArgsOffset = T::kImplicitArgsOffset; @@ -279,7 +280,6 @@ class FunctionCallbackArguments FunctionCallbackArguments(Isolate* isolate, Tagged target, - Tagged holder, Tagged new_target, Address* argv, int argc); @@ -291,8 +291,8 @@ class FunctionCallbackArguments * and used if it's been set to anything inside the callback. * New style callbacks always use the return value. */ - inline Handle CallOrConstruct(Tagged function, - bool is_construct); + inline DirectHandle CallOrConstruct( + Tagged function, bool is_construct); // Unofficial way of getting target FunctionTemplateInfo from // v8::FunctionCallbackInfo. @@ -302,14 +302,12 @@ class FunctionCallbackArguments } private: - inline Tagged holder() const; - Address* argv_; int const argc_; }; static_assert(BuiltinArguments::kNumExtraArgs == - BuiltinExitFrameConstants::kNumExtraArgsWithoutReceiver); + BuiltinExitFrameConstants::kNumExtraArgs); static_assert(BuiltinArguments::kNumExtraArgsWithReceiver == BuiltinExitFrameConstants::kNumExtraArgsWithReceiver); diff --git a/deps/v8/src/api/api-inl.h b/deps/v8/src/api/api-inl.h index 32e3e476826de3..965ded69be67b7 100644 --- a/deps/v8/src/api/api-inl.h +++ b/deps/v8/src/api/api-inl.h @@ -5,8 +5,10 @@ #ifndef V8_API_API_INL_H_ #define V8_API_API_INL_H_ -#include "include/v8-fast-api-calls.h" #include "src/api/api.h" +// Include the non-inl header before the rest of the headers. + +#include "include/v8-fast-api-calls.h" #include "src/common/assert-scope.h" #include "src/execution/microtask-queue.h" #include "src/flags/flags.h" @@ -36,19 +38,19 @@ inline v8::internal::Address ToCData( } template -inline v8::internal::Handle> FromCData( +inline v8::internal::DirectHandle> FromCData( v8::internal::Isolate* isolate, T obj) { static_assert(sizeof(T) == sizeof(v8::internal::Address)); - if (obj == nullptr) return handle(v8::internal::Smi::zero(), isolate); + if (obj == nullptr) return direct_handle(v8::internal::Smi::zero(), isolate); return isolate->factory()->NewForeign( reinterpret_cast(obj)); } template -inline v8::internal::Handle> FromCData( +inline v8::internal::DirectHandle> FromCData( v8::internal::Isolate* isolate, v8::internal::Address obj) { if (obj == v8::internal::kNullAddress) { - return handle(v8::internal::Smi::zero(), isolate); + return direct_handle(v8::internal::Smi::zero(), isolate); } return isolate->factory()->NewForeign(obj); } @@ -60,16 +62,18 @@ inline Local Utils::Convert(v8::internal::DirectHandle obj) { if (obj.is_null()) return Local(); return Local::FromAddress(obj.address()); #else - return Local::FromSlot(obj.location()); + // This simply uses the location of the indirect handle wrapped inside a + // "fake" direct handle. + return Local::FromSlot(indirect_handle(obj).location()); #endif } // Implementations of ToLocal -#define MAKE_TO_LOCAL(Name) \ - template