From ea5c958f6f371579991511abde73d14f53a1a055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Thu, 25 Sep 2025 10:37:26 +0200 Subject: [PATCH 01/20] deps: update V8 to 14.1.146.11 --- deps/v8/.clang-format | 2 + deps/v8/.gitignore | 14 + deps/v8/.gn | 5 +- deps/v8/.ycm_extra_conf.py | 6 +- deps/v8/AUTHORS | 9 + deps/v8/BUILD.bazel | 175 +- deps/v8/BUILD.gn | 476 +- deps/v8/COMMON_OWNERS | 3 - deps/v8/DEPS | 308 +- deps/v8/ENG_REVIEW_OWNERS | 2 - deps/v8/GEMINI.md | 242 + deps/v8/MODULE.bazel | 1 + deps/v8/OWNERS | 1 + deps/v8/PPC_OWNERS | 4 +- deps/v8/RISCV_OWNERS | 1 + deps/v8/S390_OWNERS | 4 +- deps/v8/bazel/defs.bzl | 18 +- deps/v8/build_overrides/partition_alloc.gni | 1 + deps/v8/gni/v8.gni | 96 +- deps/v8/include/DEPS | 3 + deps/v8/include/OWNERS | 1 - deps/v8/include/cppgc/allocation.h | 6 +- .../include/cppgc/cross-thread-persistent.h | 54 +- .../include/cppgc/internal/finalizer-trait.h | 2 +- deps/v8/include/cppgc/internal/gc-info.h | 6 +- deps/v8/include/cppgc/internal/logging.h | 4 +- deps/v8/include/cppgc/internal/name-trait.h | 2 +- .../include/cppgc/internal/pointer-policies.h | 6 +- deps/v8/include/cppgc/member.h | 14 +- deps/v8/include/cppgc/persistent.h | 29 +- deps/v8/include/cppgc/platform.h | 2 +- deps/v8/include/cppgc/tagged-member.h | 7 +- deps/v8/include/cppgc/trace-trait.h | 3 +- deps/v8/include/cppgc/visitor.h | 23 +- deps/v8/include/v8-array-buffer.h | 2 +- deps/v8/include/v8-callbacks.h | 3 + deps/v8/include/v8-context.h | 20 +- deps/v8/include/v8-debug.h | 11 + deps/v8/include/v8-fast-api-calls.h | 53 +- deps/v8/include/v8-function-callback.h | 52 +- deps/v8/include/v8-internal.h | 158 +- deps/v8/include/v8-isolate.h | 60 +- deps/v8/include/v8-json.h | 9 +- deps/v8/include/v8-local-handle.h | 125 +- deps/v8/include/v8-maybe.h | 44 +- deps/v8/include/v8-memory-span.h | 13 +- deps/v8/include/v8-message.h | 3 + deps/v8/include/v8-metrics.h | 14 + deps/v8/include/v8-object.h | 111 +- deps/v8/include/v8-persistent-handle.h | 8 +- deps/v8/include/v8-platform.h | 110 +- deps/v8/include/v8-primitive.h | 31 +- deps/v8/include/v8-profiler.h | 4 + deps/v8/include/v8-sandbox.h | 16 + deps/v8/include/v8-source-location.h | 45 +- deps/v8/include/v8-trace-categories.h | 3 +- deps/v8/include/v8-traced-handle.h | 12 +- deps/v8/include/v8-unwinder.h | 13 + deps/v8/include/v8-version.h | 8 +- deps/v8/include/v8config.h | 74 +- deps/v8/infra/mb/mb_config.pyl | 233 +- deps/v8/infra/testing/PRESUBMIT.py | 15 +- deps/v8/infra/testing/builders.pyl | 401 +- deps/v8/infra/whitespace.txt | 2 +- deps/v8/src/DEPS | 13 +- deps/v8/src/api/api-inl.h | 336 +- deps/v8/src/api/api-macros-undef.h | 19 - deps/v8/src/api/api-macros.h | 112 - deps/v8/src/api/api-natives.cc | 9 +- deps/v8/src/api/api.cc | 2767 +- deps/v8/src/api/api.h | 130 +- deps/v8/src/asmjs/asm-js.cc | 14 +- deps/v8/src/asmjs/asm-parser.cc | 15 +- deps/v8/src/asmjs/asm-scanner.cc | 110 +- deps/v8/src/asmjs/asm-scanner.h | 55 +- deps/v8/src/ast/OWNERS | 1 - deps/v8/src/ast/ast-value-factory.cc | 3 +- deps/v8/src/ast/ast-value-factory.h | 15 +- deps/v8/src/ast/ast.cc | 9 +- deps/v8/src/ast/ast.h | 2 + deps/v8/src/ast/prettyprinter.cc | 12 +- deps/v8/src/ast/prettyprinter.h | 2 + deps/v8/src/ast/scopes.cc | 101 +- deps/v8/src/ast/scopes.h | 23 +- deps/v8/src/base/address-region.h | 4 +- deps/v8/src/base/atomic-utils.h | 37 +- deps/v8/src/base/bit-field.h | 5 +- deps/v8/src/base/bits-iterator.h | 2 +- deps/v8/src/base/bits.h | 26 +- deps/v8/src/base/bounded-page-allocator.cc | 15 +- deps/v8/src/base/bounded-page-allocator.h | 4 + deps/v8/src/base/bounds.h | 6 +- deps/v8/src/base/build_config.h | 14 +- deps/v8/src/base/contextual.h | 2 +- deps/v8/src/base/cpu.cc | 11 +- deps/v8/src/base/cpu.h | 4 +- deps/v8/src/base/debug/stack_trace_posix.cc | 5 + deps/v8/src/base/discriminated-union.h | 3 + .../base/emulated-virtual-address-subspace.cc | 5 +- .../base/emulated-virtual-address-subspace.h | 7 +- deps/v8/src/base/enum-set.h | 4 +- deps/v8/src/base/functional/DEPS | 6 + deps/v8/src/base/functional/bind-internal.h | 267 + deps/v8/src/base/functional/function-ref.h | 135 + deps/v8/src/base/hashing.h | 14 +- deps/v8/src/base/hashmap-entry.h | 2 +- deps/v8/src/base/hashmap.h | 14 +- deps/v8/src/base/logging.h | 37 +- deps/v8/src/base/macros.h | 75 +- deps/v8/src/base/memory.h | 2 +- deps/v8/src/base/numerics/checked_math_impl.h | 12 +- .../src/base/numerics/safe_conversions_impl.h | 2 +- .../src/base/numerics/safe_math_shared_impl.h | 7 +- deps/v8/src/base/overflowing-math.h | 8 +- .../base/platform/memory-protection-key.cc | 124 +- .../src/base/platform/memory-protection-key.h | 91 +- deps/v8/src/base/platform/platform-posix.cc | 60 +- .../src/base/platform/platform-starboard.cc | 2 - deps/v8/src/base/platform/platform-win32.cc | 6 + deps/v8/src/base/platform/platform.h | 24 +- deps/v8/src/base/platform/time.cc | 6 +- deps/v8/src/base/platform/time.h | 32 + deps/v8/src/base/platform/yield-processor.h | 6 +- deps/v8/src/base/pointer-with-payload.h | 2 +- deps/v8/src/base/region-allocator.cc | 25 +- deps/v8/src/base/region-allocator.h | 14 +- deps/v8/src/base/sanitizer/asan.h | 9 +- .../sanitizer/lsan-virtual-address-space.cc | 5 +- .../sanitizer/lsan-virtual-address-space.h | 8 +- deps/v8/src/base/sanitizer/lsan.h | 4 +- deps/v8/src/base/small-vector.h | 30 +- deps/v8/src/base/template-utils.h | 30 +- deps/v8/src/base/types/is-instantiation.h | 38 + deps/v8/src/base/vector.h | 6 +- deps/v8/src/base/virtual-address-space.cc | 86 +- deps/v8/src/base/virtual-address-space.h | 23 +- deps/v8/src/base/vlq.h | 3 +- deps/v8/src/baseline/baseline-assembler-inl.h | 5 + deps/v8/src/baseline/baseline-assembler.h | 3 + .../src/baseline/baseline-batch-compiler.cc | 7 +- deps/v8/src/baseline/baseline-compiler.cc | 50 +- .../src/baseline/bytecode-offset-iterator.cc | 4 +- .../baseline/ppc/baseline-assembler-ppc-inl.h | 19 +- .../riscv/baseline-assembler-riscv-inl.h | 27 +- deps/v8/src/bigint/bigint-internal.cc | 17 +- deps/v8/src/bigint/bigint-internal.h | 38 +- deps/v8/src/bigint/bigint.h | 124 +- deps/v8/src/bigint/bitwise.cc | 92 +- deps/v8/src/bigint/div-barrett.cc | 66 +- deps/v8/src/bigint/div-burnikel.cc | 33 +- deps/v8/src/bigint/div-helpers.cc | 8 +- deps/v8/src/bigint/div-helpers.h | 6 +- deps/v8/src/bigint/div-schoolbook.cc | 20 +- deps/v8/src/bigint/fromstring.cc | 46 +- deps/v8/src/bigint/mul-fft.cc | 192 +- deps/v8/src/bigint/mul-karatsuba.cc | 39 +- deps/v8/src/bigint/mul-schoolbook.cc | 16 +- deps/v8/src/bigint/mul-toom.cc | 18 +- deps/v8/src/bigint/tostring.cc | 38 +- deps/v8/src/bigint/util.h | 2 +- deps/v8/src/bigint/vector-arithmetic.cc | 16 +- deps/v8/src/bigint/vector-arithmetic.h | 6 +- deps/v8/src/builtins/accessors.cc | 105 +- deps/v8/src/builtins/accessors.h | 61 +- deps/v8/src/builtins/arm/builtins-arm.cc | 300 +- deps/v8/src/builtins/arm64/builtins-arm64.cc | 413 +- deps/v8/src/builtins/array-join.tq | 269 +- deps/v8/src/builtins/array-map.tq | 8 +- deps/v8/src/builtins/arraybuffer.tq | 31 + deps/v8/src/builtins/base.tq | 53 +- deps/v8/src/builtins/builtins-array-gen.cc | 120 +- deps/v8/src/builtins/builtins-array.cc | 355 +- deps/v8/src/builtins/builtins-arraybuffer.cc | 8 +- .../builtins-async-disposable-stack.cc | 7 +- .../builtins-atomics-synchronization.cc | 2 +- deps/v8/src/builtins/builtins-bigint.cc | 4 +- deps/v8/src/builtins/builtins-bigint.tq | 2 +- .../src/builtins/builtins-collections-gen.cc | 23 +- .../src/builtins/builtins-collections-gen.h | 5 +- .../src/builtins/builtins-constructor-gen.cc | 72 +- .../src/builtins/builtins-constructor-gen.h | 4 +- .../src/builtins/builtins-conversion-gen.cc | 5 + deps/v8/src/builtins/builtins-date-gen.cc | 4 +- deps/v8/src/builtins/builtins-date.cc | 16 +- deps/v8/src/builtins/builtins-definitions.h | 373 +- deps/v8/src/builtins/builtins-descriptors.h | 15 +- .../src/builtins/builtins-effects-analyzer.cc | 146 + .../src/builtins/builtins-effects-analyzer.h | 73 + deps/v8/src/builtins/builtins-function.cc | 63 + deps/v8/src/builtins/builtins-handler-gen.cc | 20 + deps/v8/src/builtins/builtins-inl.h | 10 +- deps/v8/src/builtins/builtins-internal-gen.cc | 38 +- deps/v8/src/builtins/builtins-internal.cc | 3 - deps/v8/src/builtins/builtins-intl-gen.cc | 32 +- deps/v8/src/builtins/builtins-intl.cc | 7 +- deps/v8/src/builtins/builtins-iterator-gen.cc | 7 - deps/v8/src/builtins/builtins-json.cc | 8 +- deps/v8/src/builtins/builtins-number-gen.cc | 35 + deps/v8/src/builtins/builtins-number-tsa.cc | 389 +- deps/v8/src/builtins/builtins-number.cc | 8 +- deps/v8/src/builtins/builtins-object-gen.cc | 12 +- deps/v8/src/builtins/builtins-object.cc | 1 + deps/v8/src/builtins/builtins-proxy-gen.cc | 5 +- deps/v8/src/builtins/builtins-proxy-gen.h | 2 +- deps/v8/src/builtins/builtins-regexp-gen.cc | 7 + deps/v8/src/builtins/builtins-regexp-gen.h | 7 +- deps/v8/src/builtins/builtins-regexp.cc | 16 +- deps/v8/src/builtins/builtins-shadow-realm.cc | 10 +- .../builtins/builtins-sharedarraybuffer.cc | 24 +- deps/v8/src/builtins/builtins-string-gen.cc | 230 +- deps/v8/src/builtins/builtins-string-gen.h | 5 + deps/v8/src/builtins/builtins-string-tsa.cc | 23 +- deps/v8/src/builtins/builtins-string.cc | 2 +- deps/v8/src/builtins/builtins-struct.cc | 31 +- deps/v8/src/builtins/builtins-temporal-gen.cc | 226 - deps/v8/src/builtins/builtins-temporal.cc | 737 +- .../src/builtins/builtins-typed-array-gen.h | 2 - deps/v8/src/builtins/builtins-typed-array.cc | 204 +- deps/v8/src/builtins/builtins-utils-gen.h | 1 + deps/v8/src/builtins/builtins-utils.h | 13 + deps/v8/src/builtins/builtins-wasm-gen.cc | 46 +- deps/v8/src/builtins/builtins-wasm-gen.h | 2 + deps/v8/src/builtins/builtins.cc | 80 +- deps/v8/src/builtins/builtins.h | 145 +- deps/v8/src/builtins/cast.tq | 124 +- .../src/builtins/constants-table-builder.cc | 11 +- .../v8/src/builtins/constants-table-builder.h | 3 +- deps/v8/src/builtins/constructor.tq | 15 +- deps/v8/src/builtins/conversion.tq | 32 + .../generate-bytecodes-builtins-list.cc | 37 +- deps/v8/src/builtins/ia32/builtins-ia32.cc | 292 +- deps/v8/src/builtins/iterator.tq | 13 + deps/v8/src/builtins/js-to-wasm.tq | 101 +- ...lazy-gen.cc => js-trampoline-assembler.cc} | 100 +- ...s-lazy-gen.h => js-trampoline-assembler.h} | 29 +- .../src/builtins/loong64/builtins-loong64.cc | 339 +- .../v8/src/builtins/mips64/builtins-mips64.cc | 60 +- .../builtins/number-builtins-reducer-inl.h | 2 +- deps/v8/src/builtins/number.tq | 13 +- deps/v8/src/builtins/object-groupby.tq | 3 +- deps/v8/src/builtins/ppc/builtins-ppc.cc | 448 +- deps/v8/src/builtins/promise-misc.tq | 8 +- deps/v8/src/builtins/proxy-constructor.tq | 3 +- deps/v8/src/builtins/proxy-revocable.tq | 5 +- deps/v8/src/builtins/proxy.tq | 2 +- deps/v8/src/builtins/regexp-replace.tq | 8 +- deps/v8/src/builtins/regexp.tq | 2 +- deps/v8/src/builtins/riscv/builtins-riscv.cc | 467 +- deps/v8/src/builtins/s390/builtins-s390.cc | 307 +- .../src/builtins/setup-builtins-internal.cc | 136 +- deps/v8/src/builtins/string-html.tq | 13 + .../builtins/typed-array-createtypedarray.tq | 40 +- deps/v8/src/builtins/typed-array-from.tq | 16 +- deps/v8/src/builtins/wasm-strings.tq | 11 + deps/v8/src/builtins/wasm-to-js.tq | 14 +- deps/v8/src/builtins/wasm.tq | 144 +- deps/v8/src/builtins/x64/builtins-x64.cc | 421 +- deps/v8/src/codegen/arm/assembler-arm.cc | 14 +- deps/v8/src/codegen/arm/assembler-arm.h | 8 +- deps/v8/src/codegen/arm/constants-arm.h | 4 + .../v8/src/codegen/arm/macro-assembler-arm.cc | 88 +- deps/v8/src/codegen/arm/macro-assembler-arm.h | 10 +- deps/v8/src/codegen/arm/register-arm.h | 5 + .../src/codegen/arm64/assembler-arm64-inl.h | 27 +- deps/v8/src/codegen/arm64/assembler-arm64.cc | 98 +- deps/v8/src/codegen/arm64/assembler-arm64.h | 55 +- deps/v8/src/codegen/arm64/constants-arm64.h | 47 + deps/v8/src/codegen/arm64/decoder-arm64-inl.h | 34 +- deps/v8/src/codegen/arm64/decoder-arm64.h | 9 +- .../v8/src/codegen/arm64/instructions-arm64.h | 55 + .../codegen/arm64/macro-assembler-arm64-inl.h | 59 + .../codegen/arm64/macro-assembler-arm64.cc | 266 +- .../src/codegen/arm64/macro-assembler-arm64.h | 50 +- deps/v8/src/codegen/arm64/register-arm64.cc | 13 +- deps/v8/src/codegen/arm64/register-arm64.h | 7 + deps/v8/src/codegen/arm64/reglist-arm64.h | 33 +- deps/v8/src/codegen/arm64/utils-arm64.h | 2 +- deps/v8/src/codegen/assembler.cc | 42 +- deps/v8/src/codegen/assembler.h | 56 +- deps/v8/src/codegen/bailout-reason.h | 76 +- deps/v8/src/codegen/code-stub-assembler.cc | 1718 +- deps/v8/src/codegen/code-stub-assembler.h | 238 +- deps/v8/src/codegen/compilation-cache.cc | 50 +- deps/v8/src/codegen/compilation-cache.h | 14 +- deps/v8/src/codegen/compiler.cc | 188 +- deps/v8/src/codegen/constant-pool.cc | 12 +- deps/v8/src/codegen/cpu-features.h | 5 + deps/v8/src/codegen/external-reference.cc | 68 +- deps/v8/src/codegen/external-reference.h | 20 +- deps/v8/src/codegen/handler-table.cc | 1 + deps/v8/src/codegen/heap-object-list.h | 5 +- deps/v8/src/codegen/ia32/assembler-ia32.cc | 12 +- deps/v8/src/codegen/ia32/assembler-ia32.h | 5 +- deps/v8/src/codegen/ia32/constants-ia32.h | 4 + .../src/codegen/ia32/macro-assembler-ia32.cc | 72 +- .../src/codegen/ia32/macro-assembler-ia32.h | 10 +- deps/v8/src/codegen/ia32/register-ia32.h | 3 + .../src/codegen/interface-descriptors-inl.h | 11 +- deps/v8/src/codegen/interface-descriptors.cc | 9 +- deps/v8/src/codegen/interface-descriptors.h | 209 +- .../codegen/loong64/assembler-loong64-inl.h | 5 +- .../src/codegen/loong64/assembler-loong64.cc | 20 +- .../src/codegen/loong64/assembler-loong64.h | 5 +- .../src/codegen/loong64/constants-loong64.h | 4 + .../loong64/macro-assembler-loong64.cc | 152 +- .../codegen/loong64/macro-assembler-loong64.h | 23 +- .../v8/src/codegen/loong64/register-loong64.h | 5 + deps/v8/src/codegen/loong64/reglist-loong64.h | 13 +- deps/v8/src/codegen/macro-assembler-base.h | 34 +- deps/v8/src/codegen/macro-assembler.h | 2 +- .../v8/src/codegen/mips64/assembler-mips64.cc | 12 +- deps/v8/src/codegen/mips64/assembler-mips64.h | 5 +- deps/v8/src/codegen/mips64/constants-mips64.h | 5 + .../codegen/mips64/macro-assembler-mips64.cc | 73 +- .../codegen/mips64/macro-assembler-mips64.h | 5 + deps/v8/src/codegen/mips64/register-mips64.h | 5 + deps/v8/src/codegen/mips64/reglist-mips64.h | 12 +- .../src/codegen/optimized-compilation-info.cc | 12 +- .../src/codegen/optimized-compilation-info.h | 1 + deps/v8/src/codegen/ppc/assembler-ppc-inl.h | 15 +- deps/v8/src/codegen/ppc/assembler-ppc.cc | 32 +- deps/v8/src/codegen/ppc/assembler-ppc.h | 95 +- deps/v8/src/codegen/ppc/constants-ppc.h | 87 +- .../ppc/interface-descriptors-ppc-inl.h | 16 + .../v8/src/codegen/ppc/macro-assembler-ppc.cc | 786 +- deps/v8/src/codegen/ppc/macro-assembler-ppc.h | 269 +- deps/v8/src/codegen/ppc/register-ppc.h | 12 +- deps/v8/src/codegen/register-configuration.cc | 2 - deps/v8/src/codegen/reglist-base.h | 11 +- deps/v8/src/codegen/reloc-info.h | 3 +- .../src/codegen/riscv/assembler-riscv-inl.h | 27 +- deps/v8/src/codegen/riscv/assembler-riscv.cc | 342 +- deps/v8/src/codegen/riscv/assembler-riscv.h | 130 +- .../src/codegen/riscv/base-assembler-riscv.h | 6 +- .../src/codegen/riscv/base-constants-riscv.cc | 62 +- .../src/codegen/riscv/base-constants-riscv.h | 8 +- deps/v8/src/codegen/riscv/base-riscv-i.cc | 6 +- deps/v8/src/codegen/riscv/constant-riscv-f.h | 4 +- .../v8/src/codegen/riscv/constant-riscv-zfh.h | 81 + deps/v8/src/codegen/riscv/constants-riscv.h | 12 +- .../v8/src/codegen/riscv/extension-riscv-a.cc | 128 +- deps/v8/src/codegen/riscv/extension-riscv-a.h | 44 +- .../v8/src/codegen/riscv/extension-riscv-c.cc | 5 +- deps/v8/src/codegen/riscv/extension-riscv-c.h | 2 +- .../v8/src/codegen/riscv/extension-riscv-v.cc | 25 +- .../src/codegen/riscv/extension-riscv-zfh.cc | 180 + .../src/codegen/riscv/extension-riscv-zfh.h | 76 + .../riscv/interface-descriptors-riscv-inl.h | 3 +- .../codegen/riscv/macro-assembler-riscv.cc | 647 +- .../src/codegen/riscv/macro-assembler-riscv.h | 149 +- deps/v8/src/codegen/riscv/register-riscv.h | 22 +- deps/v8/src/codegen/riscv/reglist-riscv.h | 16 +- deps/v8/src/codegen/s390/assembler-s390.cc | 36 +- deps/v8/src/codegen/s390/assembler-s390.h | 5 +- deps/v8/src/codegen/s390/constants-s390.h | 8 +- .../src/codegen/s390/macro-assembler-s390.cc | 179 +- .../src/codegen/s390/macro-assembler-s390.h | 13 +- deps/v8/src/codegen/s390/register-s390.h | 5 + deps/v8/src/codegen/signature.h | 2 +- deps/v8/src/codegen/source-position.cc | 9 +- deps/v8/src/codegen/source-position.h | 2 + deps/v8/src/codegen/tnode.h | 8 +- .../turboshaft-builtins-assembler-inl.h | 28 +- deps/v8/src/codegen/x64/assembler-x64-inl.h | 5 +- deps/v8/src/codegen/x64/assembler-x64.cc | 26 +- deps/v8/src/codegen/x64/assembler-x64.h | 19 +- .../v8/src/codegen/x64/macro-assembler-x64.cc | 430 +- deps/v8/src/codegen/x64/macro-assembler-x64.h | 62 +- deps/v8/src/codegen/x64/register-x64.h | 10 + deps/v8/src/common/assert-scope.cc | 4 +- deps/v8/src/common/assert-scope.h | 3 + deps/v8/src/common/code-memory-access-inl.h | 4 +- deps/v8/src/common/code-memory-access.cc | 52 +- deps/v8/src/common/code-memory-access.h | 10 +- deps/v8/src/common/globals.h | 163 +- deps/v8/src/common/message-template.h | 5 +- deps/v8/src/common/ptr-compr-inl.h | 17 +- deps/v8/src/common/ptr-compr.cc | 2 +- deps/v8/src/common/ptr-compr.h | 9 +- deps/v8/src/common/scoped-modification.h | 33 + deps/v8/src/common/segmented-table-inl.h | 139 +- deps/v8/src/common/segmented-table.h | 35 +- .../lazy-compile-dispatcher.cc | 113 +- .../optimizing-compile-dispatcher.cc | 27 +- .../optimizing-compile-dispatcher.h | 6 +- deps/v8/src/compiler/OWNERS | 1 + deps/v8/src/compiler/access-builder.cc | 47 +- deps/v8/src/compiler/access-builder.h | 8 +- deps/v8/src/compiler/access-info.cc | 277 +- deps/v8/src/compiler/access-info.h | 31 + .../backend/arm/code-generator-arm.cc | 86 +- .../backend/arm/instruction-selector-arm.cc | 983 +- .../backend/arm64/code-generator-arm64.cc | 312 +- .../backend/arm64/instruction-codes-arm64.h | 51 +- .../arm64/instruction-scheduler-arm64.cc | 49 +- .../arm64/instruction-selector-arm64.cc | 1787 +- .../v8/src/compiler/backend/code-generator.cc | 65 +- deps/v8/src/compiler/backend/code-generator.h | 3 +- deps/v8/src/compiler/backend/frame-elider.cc | 3 +- .../backend/ia32/code-generator-ia32.cc | 142 +- .../backend/ia32/instruction-selector-ia32.cc | 794 +- .../src/compiler/backend/instruction-codes.h | 15 +- .../compiler/backend/instruction-scheduler.cc | 6 +- .../compiler/backend/instruction-scheduler.h | 2 +- .../backend/instruction-selector-adapter.h | 408 - .../backend/instruction-selector-impl.h | 44 +- .../compiler/backend/instruction-selector.cc | 524 +- .../compiler/backend/instruction-selector.h | 743 +- deps/v8/src/compiler/backend/instruction.cc | 34 +- deps/v8/src/compiler/backend/instruction.h | 51 +- .../backend/loong64/code-generator-loong64.cc | 135 +- .../loong64/instruction-selector-loong64.cc | 915 +- .../backend/mips64/code-generator-mips64.cc | 100 +- .../mips64/instruction-scheduler-mips64.cc | 1 - .../mips64/instruction-selector-mips64.cc | 854 +- .../backend/ppc/code-generator-ppc.cc | 225 +- .../backend/ppc/instruction-codes-ppc.h | 3 - .../backend/ppc/instruction-scheduler-ppc.cc | 3 - .../backend/ppc/instruction-selector-ppc.cc | 1038 +- .../compiler/backend/register-allocator.cc | 8 + .../src/compiler/backend/register-allocator.h | 2 +- .../backend/riscv/code-generator-riscv.cc | 1648 +- .../backend/riscv/instruction-codes-riscv.h | 120 +- .../riscv/instruction-scheduler-riscv.cc | 138 +- .../riscv/instruction-selector-riscv.h | 1704 +- .../riscv/instruction-selector-riscv32.cc | 584 +- .../riscv/instruction-selector-riscv64.cc | 980 +- .../riscv/register-constraints-riscv.h | 36 + .../backend/s390/code-generator-s390.cc | 264 +- .../backend/s390/instruction-codes-s390.h | 1 + .../s390/instruction-scheduler-s390.cc | 1 + .../backend/s390/instruction-selector-s390.cc | 846 +- .../backend/x64/code-generator-x64.cc | 233 +- .../backend/x64/instruction-selector-x64.cc | 1092 +- .../src/compiler/basic-block-instrumentor.cc | 10 +- deps/v8/src/compiler/bytecode-analysis.cc | 78 +- deps/v8/src/compiler/bytecode-analysis.h | 16 +- .../v8/src/compiler/bytecode-graph-builder.cc | 101 +- deps/v8/src/compiler/c-linkage.cc | 48 +- deps/v8/src/compiler/code-assembler.cc | 30 +- deps/v8/src/compiler/code-assembler.h | 38 +- deps/v8/src/compiler/common-node-cache.h | 5 +- deps/v8/src/compiler/common-operator.cc | 36 +- deps/v8/src/compiler/common-operator.h | 11 +- deps/v8/src/compiler/common-utils.cc | 98 + deps/v8/src/compiler/common-utils.h | 24 + .../src/compiler/compilation-dependencies.cc | 14 +- .../src/compiler/compilation-dependencies.h | 2 +- deps/v8/src/compiler/control-path-state.h | 7 +- deps/v8/src/compiler/escape-analysis.cc | 16 +- deps/v8/src/compiler/fast-api-calls.cc | 7 +- deps/v8/src/compiler/feedback-source.cc | 4 - deps/v8/src/compiler/feedback-source.h | 5 +- deps/v8/src/compiler/frame-states.cc | 101 +- deps/v8/src/compiler/frame-states.h | 2 + deps/v8/src/compiler/globals.h | 22 - deps/v8/src/compiler/graph-assembler.cc | 40 +- deps/v8/src/compiler/graph-assembler.h | 4 +- deps/v8/src/compiler/graph-zone-traits.h | 8 +- deps/v8/src/compiler/heap-refs.cc | 148 +- deps/v8/src/compiler/heap-refs.h | 60 +- deps/v8/src/compiler/js-call-reducer.cc | 522 +- deps/v8/src/compiler/js-call-reducer.h | 14 +- .../src/compiler/js-context-specialization.cc | 12 +- deps/v8/src/compiler/js-create-lowering.cc | 67 +- deps/v8/src/compiler/js-create-lowering.h | 10 +- deps/v8/src/compiler/js-generic-lowering.cc | 160 +- deps/v8/src/compiler/js-graph.cc | 41 +- deps/v8/src/compiler/js-graph.h | 2 + deps/v8/src/compiler/js-heap-broker-inl.h | 20 + deps/v8/src/compiler/js-heap-broker.cc | 67 +- deps/v8/src/compiler/js-heap-broker.h | 16 +- deps/v8/src/compiler/js-inlining-heuristic.cc | 139 +- deps/v8/src/compiler/js-inlining-heuristic.h | 18 +- deps/v8/src/compiler/js-inlining.cc | 24 +- deps/v8/src/compiler/js-inlining.h | 12 +- deps/v8/src/compiler/js-intrinsic-lowering.cc | 23 +- deps/v8/src/compiler/js-intrinsic-lowering.h | 1 + .../js-native-context-specialization.cc | 349 +- .../js-native-context-specialization.h | 23 +- deps/v8/src/compiler/js-operator.cc | 72 +- deps/v8/src/compiler/js-operator.h | 53 +- deps/v8/src/compiler/js-type-hint-lowering.cc | 15 +- deps/v8/src/compiler/js-type-hint-lowering.h | 5 - deps/v8/src/compiler/js-typed-lowering.cc | 188 +- deps/v8/src/compiler/linkage.cc | 10 +- deps/v8/src/compiler/linkage.h | 9 + deps/v8/src/compiler/load-elimination.cc | 4 + deps/v8/src/compiler/load-elimination.h | 8 + deps/v8/src/compiler/machine-graph.cc | 6 + deps/v8/src/compiler/machine-graph.h | 1 + .../src/compiler/machine-operator-reducer.cc | 135 +- .../src/compiler/machine-operator-reducer.h | 2 +- deps/v8/src/compiler/machine-operator.h | 4 + deps/v8/src/compiler/memory-lowering.cc | 2 +- deps/v8/src/compiler/node-matchers.h | 46 +- deps/v8/src/compiler/node-properties.cc | 36 + deps/v8/src/compiler/node.cc | 2 - deps/v8/src/compiler/opcodes.h | 277 +- deps/v8/src/compiler/operation-typer.cc | 27 +- deps/v8/src/compiler/operation-typer.h | 1 + deps/v8/src/compiler/operator-properties.cc | 4 + deps/v8/src/compiler/operator.cc | 12 +- deps/v8/src/compiler/operator.h | 55 +- deps/v8/src/compiler/pipeline-data-inl.h | 25 +- deps/v8/src/compiler/pipeline.cc | 369 +- deps/v8/src/compiler/pipeline.h | 16 +- deps/v8/src/compiler/processed-feedback.h | 25 +- .../v8/src/compiler/redundancy-elimination.cc | 26 +- deps/v8/src/compiler/representation-change.cc | 233 +- .../compiler/simplified-lowering-verifier.cc | 9 +- deps/v8/src/compiler/simplified-lowering.cc | 374 +- .../compiler/simplified-operator-reducer.cc | 25 +- .../compiler/simplified-operator-reducer.h | 2 + deps/v8/src/compiler/simplified-operator.cc | 404 +- deps/v8/src/compiler/simplified-operator.h | 18 +- .../src/compiler/string-builder-optimizer.cc | 17 +- deps/v8/src/compiler/turbofan-disabled.cc | 14 + .../src/compiler/turbofan-graph-visualizer.cc | 7 +- .../src/compiler/turbofan-graph-visualizer.h | 3 +- deps/v8/src/compiler/turbofan-graph.cc | 7 +- deps/v8/src/compiler/turbofan-typer.cc | 42 +- deps/v8/src/compiler/turbofan-types.cc | 10 +- deps/v8/src/compiler/turbofan-types.h | 2 + .../src/compiler/turboshaft/access-builder.h | 23 +- deps/v8/src/compiler/turboshaft/assembler.cc | 24 + deps/v8/src/compiler/turboshaft/assembler.h | 513 +- .../turboshaft/builtin-call-descriptors.h | 56 +- .../compiler/turboshaft/builtin-compiler.cc | 2 +- .../compiler/turboshaft/builtin-compiler.h | 18 +- .../src/compiler/turboshaft/copying-phase.h | 12 +- .../csa-branch-elimination-phase.cc | 20 + .../turboshaft/csa-branch-elimination-phase.h | 20 + .../csa-early-machine-optimization-phase.cc | 20 + .../csa-early-machine-optimization-phase.h | 20 + .../turboshaft/csa-effects-computation.cc | 130 + .../turboshaft/csa-effects-computation.h | 45 + .../csa-late-escape-analysis-phase.cc | 20 + .../csa-late-escape-analysis-phase.h | 20 + .../turboshaft/csa-load-elimination-phase.cc | 20 + .../turboshaft/csa-load-elimination-phase.h | 20 + .../csa-memory-optimization-phase.cc | 25 + .../csa-memory-optimization-phase.h | 20 + .../compiler/turboshaft/csa-optimize-phase.cc | 55 - .../compiler/turboshaft/csa-optimize-phase.h | 44 - .../turboshaft/define-assembler-macros.inc | 109 +- .../fast-api-call-lowering-reducer.h | 223 +- deps/v8/src/compiler/turboshaft/fast-hash.h | 10 +- .../src/compiler/turboshaft/graph-builder.cc | 151 +- deps/v8/src/compiler/turboshaft/graph.h | 21 +- ....h => if-else-cascade-to-switch-reducer.h} | 31 +- deps/v8/src/compiler/turboshaft/index.h | 8 +- .../turboshaft/instruction-selection-phase.cc | 7 +- .../turboshaft/int64-lowering-reducer.h | 92 +- .../late-load-elimination-reducer.cc | 53 +- .../late-load-elimination-reducer.h | 112 +- .../load-store-simplification-reducer.h | 46 +- .../v8/src/compiler/turboshaft/loop-finder.cc | 14 + deps/v8/src/compiler/turboshaft/loop-finder.h | 12 +- .../turboshaft/loop-peeling-reducer.h | 22 +- .../turboshaft/loop-unrolling-reducer.h | 40 +- .../turboshaft/machine-lowering-phase.cc | 5 +- .../turboshaft/machine-lowering-reducer-inl.h | 463 +- .../turboshaft/machine-optimization-reducer.h | 407 +- .../turboshaft/memory-optimization-reducer.cc | 13 + .../turboshaft/memory-optimization-reducer.h | 38 +- deps/v8/src/compiler/turboshaft/operations.cc | 163 +- deps/v8/src/compiler/turboshaft/operations.h | 587 +- deps/v8/src/compiler/turboshaft/opmasks.h | 1 + .../src/compiler/turboshaft/optimize-phase.cc | 4 +- deps/v8/src/compiler/turboshaft/phase.h | 13 +- deps/v8/src/compiler/turboshaft/pipelines.cc | 17 +- deps/v8/src/compiler/turboshaft/pipelines.h | 4 +- .../turboshaft/runtime-call-descriptors.h | 9 + ... => turbolev-early-lowering-reducer-inl.h} | 18 +- .../turboshaft/turbolev-graph-builder.cc | 630 +- .../turboshaft/turbolev-graph-builder.h | 4 +- .../turboshaft/type-inference-analysis.h | 11 +- .../turboshaft/type-inference-reducer.h | 6 +- deps/v8/src/compiler/turboshaft/types.h | 8 +- .../turboshaft/undef-assembler-macros.inc | 2 - deps/v8/src/compiler/turboshaft/use-map.cc | 4 +- deps/v8/src/compiler/turboshaft/use-map.h | 63 +- deps/v8/src/compiler/turboshaft/utils.h | 19 - .../turboshaft/value-numbering-reducer.h | 88 +- .../turboshaft/wasm-assembler-helpers.h | 25 +- .../turboshaft/wasm-code-coverage-reducer.h | 37 + .../wasm-gc-typed-optimization-reducer.cc | 40 +- .../wasm-gc-typed-optimization-reducer.h | 40 +- .../wasm-in-js-inlining-reducer-inl.h | 103 +- .../wasm-load-elimination-reducer.h | 69 +- .../turboshaft/wasm-lowering-reducer.h | 276 +- .../turboshaft/wasm-optimize-phase.cc | 5 +- .../compiler/turboshaft/wasm-revec-reducer.cc | 823 +- .../compiler/turboshaft/wasm-revec-reducer.h | 340 +- deps/v8/src/compiler/type-cache.h | 12 + deps/v8/src/compiler/typed-optimization.cc | 6 +- deps/v8/src/compiler/use-info.h | 48 +- deps/v8/src/compiler/verifier.cc | 68 +- .../src/compiler/wasm-compiler-definitions.cc | 39 + .../src/compiler/wasm-compiler-definitions.h | 15 +- deps/v8/src/compiler/wasm-compiler.cc | 144 +- deps/v8/src/compiler/wasm-compiler.h | 13 +- deps/v8/src/compiler/wasm-gc-lowering.cc | 10 - deps/v8/src/compiler/wasm-gc-lowering.h | 1 - .../src/compiler/wasm-gc-operator-reducer.cc | 40 +- deps/v8/src/compiler/wasm-graph-assembler.h | 2 +- deps/v8/src/compiler/wasm-inlining-into-js.cc | 1 + deps/v8/src/compiler/wasm-load-elimination.cc | 14 +- deps/v8/src/compiler/wasm-typer.cc | 13 +- deps/v8/src/compiler/zone-stats.cc | 5 +- deps/v8/src/compiler/zone-stats.h | 6 +- deps/v8/src/d8/OWNERS | 5 +- deps/v8/src/d8/async-hooks-wrapper.cc | 2 +- deps/v8/src/d8/d8-console.cc | 38 +- deps/v8/src/d8/d8-platforms.cc | 8 + deps/v8/src/d8/d8-posix.cc | 97 +- deps/v8/src/d8/d8-test.cc | 58 +- deps/v8/src/d8/d8.cc | 925 +- deps/v8/src/d8/d8.h | 24 +- deps/v8/src/date/date.cc | 9 +- deps/v8/src/date/date.h | 12 - deps/v8/src/debug/debug-coverage.cc | 100 +- deps/v8/src/debug/debug-coverage.h | 4 + deps/v8/src/debug/debug-evaluate.cc | 13 +- deps/v8/src/debug/debug-interface.cc | 252 +- deps/v8/src/debug/debug-interface.h | 13 +- deps/v8/src/debug/debug-property-iterator.cc | 2 +- deps/v8/src/debug/debug-scopes.cc | 46 +- deps/v8/src/debug/debug-scopes.h | 1 + deps/v8/src/debug/debug-wasm-objects.cc | 4 +- deps/v8/src/debug/debug.cc | 40 +- deps/v8/src/debug/debug.h | 2 - deps/v8/src/debug/interface-types.h | 5 +- deps/v8/src/debug/liveedit.cc | 55 +- .../debug/wasm/gdb-server/gdb-remote-util.h | 1 + .../src/debug/wasm/gdb-server/gdb-server.cc | 38 +- .../v8/src/debug/wasm/gdb-server/gdb-server.h | 10 + deps/v8/src/debug/wasm/gdb-server/target.cc | 39 +- .../wasm/gdb-server/wasm-module-debug.cc | 85 +- .../debug/wasm/gdb-server/wasm-module-debug.h | 8 +- .../v8/src/deoptimizer/arm/deoptimizer-arm.cc | 20 +- .../deoptimizer/arm64/deoptimizer-arm64.cc | 22 +- deps/v8/src/deoptimizer/deoptimize-reason.cc | 6 +- deps/v8/src/deoptimizer/deoptimize-reason.h | 26 +- deps/v8/src/deoptimizer/deoptimizer.cc | 188 +- deps/v8/src/deoptimizer/deoptimizer.h | 16 +- deps/v8/src/deoptimizer/frame-description.h | 4 + .../src/deoptimizer/ia32/deoptimizer-ia32.cc | 18 +- .../loong64/deoptimizer-loong64.cc | 20 +- .../deoptimizer/mips64/deoptimizer-mips64.cc | 22 +- .../v8/src/deoptimizer/ppc/deoptimizer-ppc.cc | 22 +- .../deoptimizer/riscv/deoptimizer-riscv.cc | 20 +- .../src/deoptimizer/s390/deoptimizer-s390.cc | 24 +- deps/v8/src/deoptimizer/translated-state.cc | 81 +- deps/v8/src/deoptimizer/translated-state.h | 18 +- .../v8/src/deoptimizer/x64/deoptimizer-x64.cc | 34 +- deps/v8/src/diagnostics/arm64/disasm-arm64.cc | 103 +- .../src/diagnostics/basic-block-profiler.cc | 6 +- deps/v8/src/diagnostics/gdb-jit.cc | 2 - deps/v8/src/diagnostics/objects-debug.cc | 169 +- deps/v8/src/diagnostics/objects-printer.cc | 427 +- deps/v8/src/diagnostics/perf-jit.cc | 4 +- deps/v8/src/diagnostics/ppc/disasm-ppc.cc | 22 +- deps/v8/src/diagnostics/riscv/disasm-riscv.cc | 192 +- deps/v8/src/diagnostics/x64/disasm-x64.cc | 18 +- deps/v8/src/execution/arguments.h | 31 +- deps/v8/src/execution/arm/simulator-arm.h | 2 +- .../v8/src/execution/arm64/simulator-arm64.cc | 281 + deps/v8/src/execution/arm64/simulator-arm64.h | 59 +- deps/v8/src/execution/encoded-c-signature.cc | 10 +- deps/v8/src/execution/execution.cc | 18 +- deps/v8/src/execution/frame-constants.h | 2 +- deps/v8/src/execution/frames-inl.h | 10 +- deps/v8/src/execution/frames.cc | 243 +- deps/v8/src/execution/frames.h | 35 +- deps/v8/src/execution/futex-emulation.cc | 2 +- deps/v8/src/execution/isolate-data.h | 131 +- deps/v8/src/execution/isolate-inl.h | 12 +- deps/v8/src/execution/isolate-utils-inl.h | 32 +- deps/v8/src/execution/isolate-utils.h | 10 - deps/v8/src/execution/isolate.cc | 582 +- deps/v8/src/execution/isolate.h | 220 +- deps/v8/src/execution/local-isolate.cc | 4 + deps/v8/src/execution/local-isolate.h | 1 + .../execution/loong64/simulator-loong64.cc | 124 +- .../src/execution/loong64/simulator-loong64.h | 11 +- .../src/execution/mips64/simulator-mips64.cc | 34 +- .../src/execution/mips64/simulator-mips64.h | 9 +- .../src/execution/ppc/frame-constants-ppc.cc | 6 +- deps/v8/src/execution/ppc/simulator-ppc.cc | 258 +- deps/v8/src/execution/ppc/simulator-ppc.h | 72 +- deps/v8/src/execution/protectors.cc | 2 +- deps/v8/src/execution/protectors.h | 5 +- .../execution/riscv/frame-constants-riscv.h | 13 +- .../v8/src/execution/riscv/simulator-riscv.cc | 394 +- deps/v8/src/execution/riscv/simulator-riscv.h | 36 +- deps/v8/src/execution/s390/simulator-s390.cc | 73 +- deps/v8/src/execution/s390/simulator-s390.h | 26 +- deps/v8/src/execution/simulator-base.h | 18 +- deps/v8/src/execution/simulator.h | 9 +- deps/v8/src/execution/stack-guard.h | 2 +- deps/v8/src/execution/thread-local-top.cc | 5 +- deps/v8/src/execution/thread-local-top.h | 5 +- deps/v8/src/execution/tiering-manager.cc | 30 +- deps/v8/src/execution/vm-state-inl.h | 11 +- deps/v8/src/execution/vm-state.h | 2 +- deps/v8/src/extensions/gc-extension.cc | 23 +- .../v8/src/extensions/statistics-extension.cc | 13 +- deps/v8/src/flags/flag-definitions.h | 448 +- deps/v8/src/flags/flags.cc | 18 +- deps/v8/src/fuzzilli/cov.cc | 31 +- deps/v8/src/fuzzilli/cov.h | 1 + deps/v8/src/fuzzilli/fuzzilli.cc | 43 +- deps/v8/src/handles/global-handles-inl.h | 4 +- deps/v8/src/handles/global-handles.cc | 5 +- deps/v8/src/handles/handles-inl.h | 18 +- deps/v8/src/handles/handles.cc | 11 +- deps/v8/src/handles/handles.h | 30 +- deps/v8/src/handles/maybe-handles-inl.h | 21 +- deps/v8/src/handles/maybe-handles.h | 147 +- deps/v8/src/handles/traced-handles.cc | 3 + .../heap/base/asm/x64/push_registers_asm.cc | 9 +- deps/v8/src/heap/base/stack.cc | 24 +- deps/v8/src/heap/base/stack.h | 28 +- deps/v8/src/heap/base/unsafe-json-emitter.cc | 26 + deps/v8/src/heap/base/unsafe-json-emitter.h | 52 + deps/v8/src/heap/code-range.cc | 6 + deps/v8/src/heap/code-range.h | 2 +- deps/v8/src/heap/collection-barrier.cc | 1 + deps/v8/src/heap/concurrent-marking.cc | 25 +- .../src/heap/conservative-stack-visitor-inl.h | 8 +- deps/v8/src/heap/cppgc-js/cpp-heap.cc | 48 +- deps/v8/src/heap/cppgc-js/cpp-heap.h | 4 +- deps/v8/src/heap/cppgc-js/cpp-snapshot.cc | 47 +- deps/v8/src/heap/cppgc-js/cpp-snapshot.h | 5 +- .../cppgc-js/unified-heap-marking-verifier.h | 2 +- .../cppgc-js/unified-heap-marking-visitor.cc | 13 +- .../cppgc-js/unified-heap-marking-visitor.h | 3 +- deps/v8/src/heap/cppgc/logging.cc | 4 +- deps/v8/src/heap/cppgc/marker.cc | 30 +- deps/v8/src/heap/cppgc/marker.h | 20 +- deps/v8/src/heap/cppgc/marking-visitor.cc | 5 +- deps/v8/src/heap/cppgc/marking-visitor.h | 5 +- deps/v8/src/heap/cppgc/name-trait.cc | 2 +- deps/v8/src/heap/cppgc/platform.cc | 4 +- deps/v8/src/heap/cppgc/platform.h | 4 +- deps/v8/src/heap/cppgc/remembered-set.cc | 4 +- deps/v8/src/heap/cppgc/remembered-set.h | 2 + deps/v8/src/heap/cppgc/trace-event.h | 13 +- deps/v8/src/heap/ephemeron-remembered-set.h | 9 - deps/v8/src/heap/evacuation-allocator-inl.h | 29 +- deps/v8/src/heap/evacuation-allocator.cc | 16 +- deps/v8/src/heap/evacuation-allocator.h | 5 +- deps/v8/src/heap/evacuation-verifier-inl.h | 1 + deps/v8/src/heap/factory-base.cc | 240 +- deps/v8/src/heap/factory-base.h | 48 +- deps/v8/src/heap/factory-inl.h | 32 - deps/v8/src/heap/factory.cc | 260 +- deps/v8/src/heap/factory.h | 43 +- .../finalization-registry-cleanup-task.cc | 4 +- deps/v8/src/heap/free-list.cc | 69 +- deps/v8/src/heap/free-list.h | 27 +- deps/v8/src/heap/gc-callbacks-inl.h | 10 +- deps/v8/src/heap/gc-callbacks.h | 13 +- deps/v8/src/heap/gc-tracer.cc | 723 +- deps/v8/src/heap/gc-tracer.h | 20 + deps/v8/src/heap/heap-allocator-inl.h | 178 +- deps/v8/src/heap/heap-allocator.cc | 120 +- deps/v8/src/heap/heap-allocator.h | 76 +- deps/v8/src/heap/heap-controller.cc | 23 +- deps/v8/src/heap/heap-controller.h | 6 +- deps/v8/src/heap/heap-inl.h | 42 +- deps/v8/src/heap/heap-layout-inl.h | 29 +- deps/v8/src/heap/heap-layout.cc | 3 +- deps/v8/src/heap/heap-layout.h | 35 +- deps/v8/src/heap/heap-utils-inl.h | 2 +- deps/v8/src/heap/heap-verifier.cc | 42 +- deps/v8/src/heap/heap-visitor-inl.h | 21 +- deps/v8/src/heap/heap-visitor.h | 10 +- deps/v8/src/heap/heap-write-barrier-inl.h | 119 +- deps/v8/src/heap/heap-write-barrier.cc | 63 +- deps/v8/src/heap/heap-write-barrier.h | 49 +- deps/v8/src/heap/heap.cc | 688 +- deps/v8/src/heap/heap.h | 182 +- deps/v8/src/heap/incremental-marking-job.cc | 26 +- deps/v8/src/heap/incremental-marking.cc | 72 +- deps/v8/src/heap/incremental-marking.h | 3 +- deps/v8/src/heap/large-page-metadata.cc | 28 +- deps/v8/src/heap/large-page-metadata.h | 7 +- deps/v8/src/heap/large-spaces.cc | 70 +- deps/v8/src/heap/large-spaces.h | 12 +- deps/v8/src/heap/linear-allocation-area.h | 13 - deps/v8/src/heap/live-object-range.h | 6 +- deps/v8/src/heap/local-factory.cc | 16 +- deps/v8/src/heap/local-factory.h | 16 +- deps/v8/src/heap/local-heap-inl.h | 29 +- deps/v8/src/heap/local-heap.cc | 25 +- deps/v8/src/heap/local-heap.h | 62 +- deps/v8/src/heap/main-allocator-inl.h | 5 +- deps/v8/src/heap/main-allocator.cc | 59 +- deps/v8/src/heap/main-allocator.h | 52 +- deps/v8/src/heap/mark-compact-inl.h | 95 +- deps/v8/src/heap/mark-compact.cc | 698 +- deps/v8/src/heap/mark-compact.h | 16 +- deps/v8/src/heap/mark-sweep-utilities.cc | 4 +- deps/v8/src/heap/marking-barrier.cc | 7 +- deps/v8/src/heap/marking-barrier.h | 5 +- deps/v8/src/heap/marking-inl.h | 35 + deps/v8/src/heap/marking-state-inl.h | 14 +- deps/v8/src/heap/marking-state.h | 15 +- deps/v8/src/heap/marking-visitor-inl.h | 10 +- deps/v8/src/heap/marking-worklist.cc | 173 +- deps/v8/src/heap/marking-worklist.h | 35 +- deps/v8/src/heap/marking.h | 12 + deps/v8/src/heap/memory-allocator.cc | 441 +- deps/v8/src/heap/memory-allocator.h | 212 +- deps/v8/src/heap/memory-balancer.cc | 2 +- deps/v8/src/heap/memory-chunk-inl.h | 63 +- deps/v8/src/heap/memory-chunk-metadata-inl.h | 27 +- deps/v8/src/heap/memory-chunk-metadata.cc | 46 +- deps/v8/src/heap/memory-chunk-metadata.h | 210 +- deps/v8/src/heap/memory-chunk.cc | 210 +- deps/v8/src/heap/memory-chunk.h | 288 +- deps/v8/src/heap/memory-pool.cc | 481 + .../src/heap/{page-pool.h => memory-pool.h} | 82 +- deps/v8/src/heap/minor-gc-job.cc | 4 +- deps/v8/src/heap/minor-mark-sweep-inl.h | 4 +- deps/v8/src/heap/minor-mark-sweep.cc | 39 +- deps/v8/src/heap/mutable-page-metadata-inl.h | 92 +- deps/v8/src/heap/mutable-page-metadata.cc | 174 +- deps/v8/src/heap/mutable-page-metadata.h | 69 +- deps/v8/src/heap/new-spaces-inl.h | 83 +- deps/v8/src/heap/new-spaces.cc | 112 +- deps/v8/src/heap/new-spaces.h | 26 +- deps/v8/src/heap/object-stats.cc | 25 +- deps/v8/src/heap/page-metadata-inl.h | 24 +- deps/v8/src/heap/page-metadata.cc | 58 +- deps/v8/src/heap/page-metadata.h | 13 +- deps/v8/src/heap/page-pool.cc | 295 - deps/v8/src/heap/paged-spaces-inl.h | 20 +- deps/v8/src/heap/paged-spaces.cc | 54 +- deps/v8/src/heap/paged-spaces.h | 8 +- deps/v8/src/heap/pretenuring-handler-inl.h | 13 +- deps/v8/src/heap/pretenuring-handler.h | 4 + deps/v8/src/heap/read-only-heap-inl.h | 2 +- deps/v8/src/heap/read-only-heap.cc | 24 +- deps/v8/src/heap/read-only-promotion.cc | 15 +- deps/v8/src/heap/read-only-spaces.cc | 33 +- deps/v8/src/heap/read-only-spaces.h | 3 +- deps/v8/src/heap/remembered-set.h | 3 +- deps/v8/src/heap/safepoint.cc | 4 +- deps/v8/src/heap/safepoint.h | 18 + deps/v8/src/heap/scavenger-inl.h | 230 +- deps/v8/src/heap/scavenger.cc | 154 +- deps/v8/src/heap/scavenger.h | 47 +- deps/v8/src/heap/setup-heap-internal.cc | 153 +- deps/v8/src/heap/slot-set.h | 6 +- deps/v8/src/heap/spaces.h | 4 +- deps/v8/src/heap/sweeper.cc | 116 +- deps/v8/src/heap/sweeper.h | 10 +- deps/v8/src/heap/trusted-range.cc | 38 +- deps/v8/src/heap/trusted-range.h | 13 +- deps/v8/src/ic/accessor-assembler.cc | 212 +- deps/v8/src/ic/accessor-assembler.h | 11 +- deps/v8/src/ic/binary-op-assembler.cc | 79 +- deps/v8/src/ic/binary-op-assembler.h | 9 + deps/v8/src/ic/handler-configuration-inl.h | 27 + deps/v8/src/ic/handler-configuration.cc | 151 +- deps/v8/src/ic/handler-configuration.h | 18 +- deps/v8/src/ic/ic.cc | 177 +- deps/v8/src/ic/ic.h | 6 +- deps/v8/src/ic/keyed-store-generic.cc | 60 +- deps/v8/src/init/OWNERS | 1 - deps/v8/src/init/bootstrapper.cc | 335 +- deps/v8/src/init/heap-symbols.h | 27 +- deps/v8/src/init/isolate-group.cc | 210 +- deps/v8/src/init/isolate-group.h | 127 +- deps/v8/src/init/setup-isolate-full.cc | 2 +- deps/v8/src/init/setup-isolate.h | 3 +- deps/v8/src/init/v8.cc | 17 +- deps/v8/src/inspector/custom-preview.cc | 10 +- deps/v8/src/inspector/injected-script.cc | 12 +- deps/v8/src/inspector/inspected-context.cc | 8 +- deps/v8/src/inspector/v8-console-message.cc | 31 +- deps/v8/src/inspector/v8-console.cc | 14 +- deps/v8/src/inspector/v8-debugger.cc | 6 +- deps/v8/src/inspector/v8-deep-serializer.cc | 10 +- .../inspector/v8-heap-profiler-agent-impl.cc | 2 +- .../inspector/v8-inspector-session-impl.cc | 13 +- .../v8-serialization-duplicate-tracker.cc | 5 +- deps/v8/src/inspector/v8-value-utils.cc | 12 +- deps/v8/src/inspector/value-mirror.cc | 175 +- deps/v8/src/interpreter/OWNERS | 1 - .../src/interpreter/bytecode-array-builder.cc | 35 +- .../src/interpreter/bytecode-array-builder.h | 14 +- .../interpreter/bytecode-flags-and-tokens.cc | 5 +- .../interpreter/bytecode-flags-and-tokens.h | 3 +- deps/v8/src/interpreter/bytecode-generator.cc | 315 +- deps/v8/src/interpreter/bytecode-generator.h | 26 +- deps/v8/src/interpreter/bytecodes.h | 36 +- .../src/interpreter/interpreter-assembler.cc | 2 +- .../interpreter/interpreter-generator-tsa.h | 6 - .../src/interpreter/interpreter-generator.cc | 133 +- .../src/interpreter/interpreter-generator.h | 11 + deps/v8/src/interpreter/interpreter.cc | 16 + deps/v8/src/interpreter/interpreter.h | 12 + .../prototype-assignment-sequence-builder.cc | 73 + .../prototype-assignment-sequence-builder.h | 64 + deps/v8/src/json/OWNERS | 1 + deps/v8/src/json/json-parser.cc | 300 +- deps/v8/src/json/json-parser.h | 29 +- deps/v8/src/json/json-stringifier.cc | 45 +- deps/v8/src/libsampler/sampler.cc | 11 +- deps/v8/src/logging/code-events.h | 2 +- deps/v8/src/logging/counters-definitions.h | 25 +- deps/v8/src/logging/counters.h | 2 + deps/v8/src/logging/log.cc | 100 +- deps/v8/src/logging/log.h | 6 +- deps/v8/src/logging/runtime-call-stats.cc | 2 +- deps/v8/src/logging/runtime-call-stats.h | 242 +- .../src/maglev/arm/maglev-assembler-arm-inl.h | 67 +- .../v8/src/maglev/arm/maglev-assembler-arm.cc | 58 +- deps/v8/src/maglev/arm/maglev-ir-arm.cc | 185 + .../maglev/arm64/maglev-assembler-arm64-inl.h | 93 +- .../maglev/arm64/maglev-assembler-arm64.cc | 61 +- deps/v8/src/maglev/arm64/maglev-ir-arm64.cc | 152 + deps/v8/src/maglev/maglev-assembler-inl.h | 196 +- deps/v8/src/maglev/maglev-assembler.cc | 13 +- deps/v8/src/maglev/maglev-assembler.h | 28 +- deps/v8/src/maglev/maglev-basic-block.h | 32 +- deps/v8/src/maglev/maglev-code-gen-state.h | 13 +- deps/v8/src/maglev/maglev-code-generator.cc | 133 +- deps/v8/src/maglev/maglev-code-generator.h | 2 + deps/v8/src/maglev/maglev-compilation-info.cc | 19 +- deps/v8/src/maglev/maglev-compilation-info.h | 14 + deps/v8/src/maglev/maglev-compilation-unit.cc | 4 + deps/v8/src/maglev/maglev-compilation-unit.h | 1 + deps/v8/src/maglev/maglev-compiler.cc | 226 +- .../maglev/maglev-concurrent-dispatcher.cc | 24 +- .../src/maglev/maglev-concurrent-dispatcher.h | 21 - .../src/maglev/maglev-deopt-frame-visitor.h | 23 +- deps/v8/src/maglev/maglev-graph-builder.cc | 6121 +++-- deps/v8/src/maglev/maglev-graph-builder.h | 2200 +- deps/v8/src/maglev/maglev-graph-labeller.cc | 30 + deps/v8/src/maglev/maglev-graph-labeller.h | 93 +- deps/v8/src/maglev/maglev-graph-optimizer.cc | 1792 ++ deps/v8/src/maglev/maglev-graph-optimizer.h | 96 + deps/v8/src/maglev/maglev-graph-printer.cc | 265 +- deps/v8/src/maglev/maglev-graph-printer.h | 73 +- deps/v8/src/maglev/maglev-graph-processor.h | 163 +- deps/v8/src/maglev/maglev-graph-verifier.h | 6 +- deps/v8/src/maglev/maglev-graph.cc | 202 + deps/v8/src/maglev/maglev-graph.h | 319 +- deps/v8/src/maglev/maglev-inlining.cc | 422 + deps/v8/src/maglev/maglev-inlining.h | 334 +- .../maglev/maglev-interpreter-frame-state.cc | 422 +- .../maglev/maglev-interpreter-frame-state.h | 515 +- deps/v8/src/maglev/maglev-ir-inl.h | 91 +- deps/v8/src/maglev/maglev-ir.cc | 1618 +- deps/v8/src/maglev/maglev-ir.h | 3947 +-- .../maglev-phi-representation-selector.cc | 374 +- .../maglev-phi-representation-selector.h | 129 +- ...maglev-post-hoc-optimizations-processors.h | 74 +- .../maglev-pre-regalloc-codegen-processors.h | 76 +- deps/v8/src/maglev/maglev-reducer-inl.h | 1271 + deps/v8/src/maglev/maglev-reducer.h | 541 + .../v8/src/maglev/maglev-regalloc-node-info.h | 370 + deps/v8/src/maglev/maglev-regalloc.cc | 455 +- deps/v8/src/maglev/maglev-regalloc.h | 37 +- deps/v8/src/maglev/maglev-truncation.cc | 131 + deps/v8/src/maglev/maglev-truncation.h | 244 + .../maglev/ppc64/maglev-assembler-ppc64-inl.h | 1508 + .../maglev/ppc64/maglev-assembler-ppc64.cc | 639 + deps/v8/src/maglev/ppc64/maglev-ir-ppc64.cc | 1090 + .../maglev/riscv/maglev-assembler-riscv-inl.h | 93 +- .../maglev/riscv/maglev-assembler-riscv.cc | 94 +- deps/v8/src/maglev/riscv/maglev-ir-riscv.cc | 128 + .../maglev/s390/maglev-assembler-s390-inl.h | 40 +- .../src/maglev/s390/maglev-assembler-s390.cc | 55 +- deps/v8/src/maglev/s390/maglev-ir-s390.cc | 131 + .../src/maglev/x64/maglev-assembler-x64-inl.h | 82 +- .../v8/src/maglev/x64/maglev-assembler-x64.cc | 57 +- deps/v8/src/maglev/x64/maglev-ir-x64.cc | 201 + deps/v8/src/numbers/conversions.cc | 248 +- deps/v8/src/numbers/hash-seed-inl.h | 53 +- deps/v8/src/numbers/hash-seed.h | 42 + deps/v8/src/numbers/integer-literal.h | 8 +- deps/v8/src/objects/DEPS | 11 + deps/v8/src/objects/abstract-code-inl.h | 4 +- deps/v8/src/objects/all-objects-inl.h | 2 + deps/v8/src/objects/allocation-site-inl.h | 4 +- deps/v8/src/objects/allocation-site.h | 1 - deps/v8/src/objects/backing-store.cc | 72 +- deps/v8/src/objects/backing-store.h | 19 +- deps/v8/src/objects/bigint.cc | 56 +- deps/v8/src/objects/bytecode-array-inl.h | 17 +- deps/v8/src/objects/bytecode-array.cc | 6 +- deps/v8/src/objects/call-site-info-inl.h | 23 +- deps/v8/src/objects/call-site-info.cc | 36 +- deps/v8/src/objects/call-site-info.h | 1 - deps/v8/src/objects/casting-inl.h | 7 +- deps/v8/src/objects/casting.h | 227 +- deps/v8/src/objects/cell-inl.h | 18 +- deps/v8/src/objects/cell.h | 12 +- deps/v8/src/objects/cell.tq | 14 +- deps/v8/src/objects/code-inl.h | 118 +- deps/v8/src/objects/code-kind.h | 3 +- deps/v8/src/objects/code.cc | 110 +- deps/v8/src/objects/code.h | 33 +- .../src/objects/compilation-cache-table-inl.h | 19 +- .../v8/src/objects/compilation-cache-table.cc | 153 +- deps/v8/src/objects/compilation-cache-table.h | 28 +- deps/v8/src/objects/contexts-inl.h | 10 +- deps/v8/src/objects/contexts.cc | 46 +- deps/v8/src/objects/contexts.h | 19 +- deps/v8/src/objects/contexts.tq | 51 +- deps/v8/src/objects/debug-objects-inl.h | 5 - deps/v8/src/objects/debug-objects.cc | 2 +- deps/v8/src/objects/debug-objects.h | 7 - deps/v8/src/objects/deoptimization-data-inl.h | 12 +- deps/v8/src/objects/deoptimization-data.cc | 8 +- deps/v8/src/objects/descriptor-array-inl.h | 10 +- deps/v8/src/objects/dictionary-inl.h | 18 +- deps/v8/src/objects/dictionary.h | 17 +- deps/v8/src/objects/elements-kind.h | 61 +- deps/v8/src/objects/elements.cc | 760 +- deps/v8/src/objects/elements.h | 8 +- deps/v8/src/objects/embedder-data-array.cc | 4 +- deps/v8/src/objects/embedder-data-slot-inl.h | 58 +- deps/v8/src/objects/embedder-data-slot.h | 22 +- deps/v8/src/objects/feedback-vector-inl.h | 42 +- deps/v8/src/objects/feedback-vector.cc | 61 +- deps/v8/src/objects/feedback-vector.h | 22 +- deps/v8/src/objects/fixed-array-inl.h | 52 +- deps/v8/src/objects/fixed-array.cc | 11 +- deps/v8/src/objects/fixed-array.h | 33 +- deps/v8/src/objects/fixed-array.tq | 2 +- deps/v8/src/objects/foreign-inl.h | 4 +- deps/v8/src/objects/free-space-inl.h | 44 +- deps/v8/src/objects/free-space.h | 28 +- deps/v8/src/objects/free-space.tq | 5 +- deps/v8/src/objects/hash-table-inl.h | 35 +- deps/v8/src/objects/hash-table.h | 50 +- deps/v8/src/objects/heap-number-inl.h | 8 - deps/v8/src/objects/heap-number.h | 3 +- deps/v8/src/objects/heap-object-inl.h | 4 + deps/v8/src/objects/heap-object.h | 110 +- deps/v8/src/objects/hole-inl.h | 41 - deps/v8/src/objects/hole.h | 32 +- deps/v8/src/objects/hole.tq | 17 +- deps/v8/src/objects/instance-type-checker.h | 4 +- deps/v8/src/objects/instance-type-inl.h | 109 +- deps/v8/src/objects/instruction-stream-inl.h | 20 +- deps/v8/src/objects/instruction-stream.cc | 3 +- deps/v8/src/objects/instruction-stream.h | 2 - deps/v8/src/objects/intl-objects.cc | 382 +- deps/v8/src/objects/intl-objects.h | 17 +- deps/v8/src/objects/js-array-buffer-inl.h | 44 +- deps/v8/src/objects/js-array-buffer.cc | 55 +- deps/v8/src/objects/js-array-buffer.h | 12 +- deps/v8/src/objects/js-array-buffer.tq | 2 - deps/v8/src/objects/js-array.h | 24 +- deps/v8/src/objects/js-array.tq | 57 +- deps/v8/src/objects/js-break-iterator.cc | 8 +- deps/v8/src/objects/js-collator.cc | 62 +- deps/v8/src/objects/js-collection.h | 2 +- deps/v8/src/objects/js-date-time-format-inl.h | 15 + deps/v8/src/objects/js-date-time-format.cc | 1565 +- deps/v8/src/objects/js-date-time-format.h | 23 +- deps/v8/src/objects/js-date-time-format.tq | 3 + deps/v8/src/objects/js-display-names.cc | 64 +- deps/v8/src/objects/js-display-names.h | 3 +- deps/v8/src/objects/js-disposable-stack-inl.h | 8 +- deps/v8/src/objects/js-disposable-stack.cc | 7 +- deps/v8/src/objects/js-duration-format.cc | 205 +- deps/v8/src/objects/js-duration-format.h | 10 +- deps/v8/src/objects/js-function-inl.h | 17 +- deps/v8/src/objects/js-function.cc | 61 +- deps/v8/src/objects/js-function.h | 5 +- deps/v8/src/objects/js-function.tq | 2 +- deps/v8/src/objects/js-list-format.cc | 15 +- deps/v8/src/objects/js-list-format.h | 3 +- deps/v8/src/objects/js-locale.cc | 115 +- deps/v8/src/objects/js-number-format.cc | 235 +- deps/v8/src/objects/js-objects-inl.h | 65 +- deps/v8/src/objects/js-objects.cc | 262 +- deps/v8/src/objects/js-objects.h | 29 +- deps/v8/src/objects/js-objects.tq | 16 +- deps/v8/src/objects/js-plural-rules.cc | 8 +- deps/v8/src/objects/js-plural-rules.h | 2 +- deps/v8/src/objects/js-proxy-inl.h | 2 + deps/v8/src/objects/js-proxy.h | 11 +- deps/v8/src/objects/js-proxy.tq | 3 + deps/v8/src/objects/js-regexp-inl.h | 7 +- deps/v8/src/objects/js-regexp.cc | 32 +- deps/v8/src/objects/js-regexp.h | 16 +- deps/v8/src/objects/js-regexp.tq | 6 + .../v8/src/objects/js-relative-time-format.cc | 65 +- deps/v8/src/objects/js-relative-time-format.h | 2 +- deps/v8/src/objects/js-segmenter.cc | 10 +- deps/v8/src/objects/js-segmenter.h | 2 +- deps/v8/src/objects/js-struct.cc | 5 +- deps/v8/src/objects/js-temporal-helpers.cc | 310 + deps/v8/src/objects/js-temporal-helpers.h | 94 + deps/v8/src/objects/js-temporal-objects-inl.h | 143 +- deps/v8/src/objects/js-temporal-objects.cc | 22723 ++++------------ deps/v8/src/objects/js-temporal-objects.h | 646 +- deps/v8/src/objects/js-temporal-objects.tq | 74 +- deps/v8/src/objects/js-weak-refs-inl.h | 126 +- deps/v8/src/objects/js-weak-refs.cc | 15 + deps/v8/src/objects/js-weak-refs.h | 81 +- deps/v8/src/objects/js-weak-refs.tq | 2 + deps/v8/src/objects/keys.cc | 38 +- deps/v8/src/objects/literal-objects.cc | 2 +- deps/v8/src/objects/lookup-inl.h | 31 +- deps/v8/src/objects/lookup.cc | 158 +- deps/v8/src/objects/lookup.h | 29 +- deps/v8/src/objects/managed-inl.h | 7 +- deps/v8/src/objects/map-inl.h | 45 +- deps/v8/src/objects/map-updater.cc | 11 +- deps/v8/src/objects/map.cc | 108 +- deps/v8/src/objects/map.h | 47 +- deps/v8/src/objects/maybe-object-inl.h | 21 +- deps/v8/src/objects/maybe-object.h | 10 +- deps/v8/src/objects/module-inl.h | 5 - deps/v8/src/objects/module.h | 1 - deps/v8/src/objects/name.h | 5 + deps/v8/src/objects/number-string-cache-inl.h | 221 + deps/v8/src/objects/number-string-cache.cc | 57 + deps/v8/src/objects/number-string-cache.h | 160 + deps/v8/src/objects/object-list-macros.h | 73 +- deps/v8/src/objects/object-macros-undef.h | 2 - deps/v8/src/objects/object-macros.h | 62 +- deps/v8/src/objects/object-type.cc | 31 +- .../objects/objects-body-descriptors-inl.h | 105 +- .../v8/src/objects/objects-body-descriptors.h | 20 + deps/v8/src/objects/objects-definitions.h | 20 +- deps/v8/src/objects/objects-inl.h | 304 +- deps/v8/src/objects/objects.cc | 1091 +- deps/v8/src/objects/objects.h | 40 +- deps/v8/src/objects/option-utils.cc | 82 +- deps/v8/src/objects/option-utils.h | 118 +- deps/v8/src/objects/ordered-hash-table.cc | 70 +- deps/v8/src/objects/property-cell-inl.h | 2 +- deps/v8/src/objects/property-cell.h | 2 +- deps/v8/src/objects/prototype-info-inl.h | 5 +- deps/v8/src/objects/prototype-info.h | 12 + deps/v8/src/objects/prototype-info.tq | 7 + deps/v8/src/objects/scope-info-inl.h | 4 + deps/v8/src/objects/scope-info.cc | 30 +- deps/v8/src/objects/scope-info.h | 2 + deps/v8/src/objects/scope-info.tq | 16 +- deps/v8/src/objects/script-inl.h | 2 - deps/v8/src/objects/script.cc | 552 + deps/v8/src/objects/script.h | 1 - .../v8/src/objects/shared-function-info-inl.h | 410 +- deps/v8/src/objects/shared-function-info.cc | 81 +- deps/v8/src/objects/shared-function-info.h | 214 +- deps/v8/src/objects/shared-function-info.tq | 17 +- deps/v8/src/objects/simd.cc | 88 +- deps/v8/src/objects/simd.h | 6 +- deps/v8/src/objects/smi.h | 2 +- deps/v8/src/objects/source-text-module.cc | 66 +- deps/v8/src/objects/source-text-module.h | 2 - deps/v8/src/objects/string-inl.h | 686 +- deps/v8/src/objects/string-table.cc | 10 +- deps/v8/src/objects/string.cc | 226 +- deps/v8/src/objects/string.h | 61 +- deps/v8/src/objects/struct-inl.h | 2 - deps/v8/src/objects/struct.h | 1 - .../v8/src/objects/swiss-hash-table-helpers.h | 2 +- .../src/objects/swiss-name-dictionary-inl.h | 22 +- deps/v8/src/objects/swiss-name-dictionary.cc | 6 +- deps/v8/src/objects/synthetic-module.cc | 4 +- deps/v8/src/objects/synthetic-module.h | 1 - deps/v8/src/objects/tagged-field-inl.h | 11 +- deps/v8/src/objects/tagged-field.h | 7 +- deps/v8/src/objects/tagged-impl-inl.h | 15 + deps/v8/src/objects/tagged-impl.cc | 7 +- deps/v8/src/objects/tagged-impl.h | 32 +- deps/v8/src/objects/tagged.h | 12 +- deps/v8/src/objects/template-objects.cc | 2 +- deps/v8/src/objects/templates-inl.h | 19 - deps/v8/src/objects/templates.cc | 14 +- deps/v8/src/objects/templates.h | 7 - deps/v8/src/objects/transitions-inl.h | 4 +- deps/v8/src/objects/trusted-object-inl.h | 42 +- deps/v8/src/objects/trusted-object.h | 25 +- deps/v8/src/objects/type-hints.cc | 2 + deps/v8/src/objects/type-hints.h | 1 + deps/v8/src/objects/union.h | 3 + deps/v8/src/objects/value-serializer.cc | 8 +- deps/v8/src/objects/visitors-inl.h | 2 + deps/v8/src/objects/visitors.h | 5 +- deps/v8/src/parsing/OWNERS | 1 - deps/v8/src/parsing/parse-info.cc | 2 - deps/v8/src/parsing/parse-info.h | 8 +- deps/v8/src/parsing/parser-base.h | 18 +- deps/v8/src/parsing/parser.cc | 76 +- deps/v8/src/parsing/parser.h | 13 - deps/v8/src/parsing/preparser.cc | 3 - deps/v8/src/profiler/allocation-tracker.cc | 2 +- deps/v8/src/profiler/cpu-profiler.cc | 26 +- deps/v8/src/profiler/heap-profiler.cc | 54 +- deps/v8/src/profiler/heap-profiler.h | 21 +- deps/v8/src/profiler/heap-snapshot-common.h | 21 + .../profiler/heap-snapshot-generator-inl.h | 3 +- .../src/profiler/heap-snapshot-generator.cc | 130 +- .../v8/src/profiler/heap-snapshot-generator.h | 15 + deps/v8/src/profiler/profile-generator-inl.h | 10 +- deps/v8/src/profiler/profile-generator.cc | 208 +- deps/v8/src/profiler/profile-generator.h | 102 +- deps/v8/src/profiler/profiler-listener.cc | 65 +- deps/v8/src/profiler/profiler-listener.h | 2 +- .../v8/src/profiler/sampling-heap-profiler.cc | 13 +- deps/v8/src/profiler/strings-storage.cc | 2 +- deps/v8/src/profiler/symbolizer.cc | 112 +- deps/v8/src/profiler/symbolizer.h | 2 +- deps/v8/src/profiler/tick-sample.cc | 7 +- .../regexp/arm/regexp-macro-assembler-arm.cc | 6 +- .../regexp/arm/regexp-macro-assembler-arm.h | 9 +- .../arm64/regexp-macro-assembler-arm64.cc | 22 +- .../arm64/regexp-macro-assembler-arm64.h | 9 +- .../experimental/experimental-compiler.cc | 12 +- .../experimental/experimental-interpreter.cc | 2 +- .../src/regexp/experimental/experimental.cc | 9 +- .../ia32/regexp-macro-assembler-ia32.cc | 6 +- .../regexp/ia32/regexp-macro-assembler-ia32.h | 9 +- .../loong64/regexp-macro-assembler-loong64.cc | 6 +- .../loong64/regexp-macro-assembler-loong64.h | 9 +- .../mips64/regexp-macro-assembler-mips64.cc | 6 +- .../mips64/regexp-macro-assembler-mips64.h | 9 +- .../regexp/ppc/regexp-macro-assembler-ppc.cc | 6 +- .../regexp/ppc/regexp-macro-assembler-ppc.h | 9 +- deps/v8/src/regexp/regexp-ast.cc | 7 + deps/v8/src/regexp/regexp-ast.h | 18 +- .../src/regexp/regexp-bytecode-generator.cc | 20 +- .../v8/src/regexp/regexp-bytecode-generator.h | 4 +- .../src/regexp/regexp-bytecode-iterator-inl.h | 51 + .../v8/src/regexp/regexp-bytecode-iterator.cc | 47 + deps/v8/src/regexp/regexp-bytecode-iterator.h | 50 + .../v8/src/regexp/regexp-bytecode-peephole.cc | 2 +- deps/v8/src/regexp/regexp-bytecodes-inl.h | 297 + deps/v8/src/regexp/regexp-bytecodes.h | 419 +- deps/v8/src/regexp/regexp-code-generator.cc | 401 + deps/v8/src/regexp/regexp-code-generator.h | 76 + deps/v8/src/regexp/regexp-compiler-tonode.cc | 153 +- deps/v8/src/regexp/regexp-compiler.cc | 328 +- deps/v8/src/regexp/regexp-compiler.h | 208 +- deps/v8/src/regexp/regexp-dotprinter.cc | 46 +- deps/v8/src/regexp/regexp-error.h | 3 +- deps/v8/src/regexp/regexp-interpreter.cc | 35 +- .../regexp/regexp-macro-assembler-tracer.cc | 40 +- .../regexp/regexp-macro-assembler-tracer.h | 17 +- deps/v8/src/regexp/regexp-macro-assembler.cc | 11 +- deps/v8/src/regexp/regexp-macro-assembler.h | 24 +- deps/v8/src/regexp/regexp-nodes.h | 83 +- deps/v8/src/regexp/regexp-parser.cc | 17 +- deps/v8/src/regexp/regexp-result-vector.cc | 17 +- deps/v8/src/regexp/regexp-stack.cc | 77 +- deps/v8/src/regexp/regexp-stack.h | 24 +- deps/v8/src/regexp/regexp.cc | 392 +- deps/v8/src/regexp/regexp.h | 2 +- .../riscv/regexp-macro-assembler-riscv.cc | 18 +- .../riscv/regexp-macro-assembler-riscv.h | 11 +- .../s390/regexp-macro-assembler-s390.cc | 6 +- .../regexp/s390/regexp-macro-assembler-s390.h | 9 +- .../regexp/x64/regexp-macro-assembler-x64.cc | 10 +- .../regexp/x64/regexp-macro-assembler-x64.h | 9 +- deps/v8/src/roots/roots-inl.h | 8 +- deps/v8/src/roots/roots.cc | 11 +- deps/v8/src/roots/roots.h | 115 +- deps/v8/src/roots/static-roots-intl-nowasm.h | 2085 ++ deps/v8/src/roots/static-roots-intl-wasm.h | 2123 ++ .../v8/src/roots/static-roots-nointl-nowasm.h | 1803 ++ deps/v8/src/roots/static-roots-nointl-wasm.h | 1841 ++ deps/v8/src/roots/static-roots.h | 2104 +- deps/v8/src/runtime/runtime-array.cc | 22 +- deps/v8/src/runtime/runtime-atomics.cc | 20 +- deps/v8/src/runtime/runtime-classes.cc | 76 +- deps/v8/src/runtime/runtime-compiler.cc | 156 +- deps/v8/src/runtime/runtime-debug.cc | 74 +- deps/v8/src/runtime/runtime-forin.cc | 4 +- deps/v8/src/runtime/runtime-function.cc | 4 - deps/v8/src/runtime/runtime-futex.cc | 8 +- deps/v8/src/runtime/runtime-internal.cc | 50 +- deps/v8/src/runtime/runtime-intl.cc | 15 - deps/v8/src/runtime/runtime-literals.cc | 191 +- deps/v8/src/runtime/runtime-numbers.cc | 28 +- deps/v8/src/runtime/runtime-object.cc | 30 +- deps/v8/src/runtime/runtime-operators.cc | 1 - deps/v8/src/runtime/runtime-regexp.cc | 159 +- deps/v8/src/runtime/runtime-scopes.cc | 37 +- deps/v8/src/runtime/runtime-strings.cc | 93 +- deps/v8/src/runtime/runtime-symbol.cc | 1 - deps/v8/src/runtime/runtime-temporal.cc | 21 - deps/v8/src/runtime/runtime-test-wasm.cc | 145 +- deps/v8/src/runtime/runtime-test.cc | 93 +- deps/v8/src/runtime/runtime-trace.cc | 4 +- deps/v8/src/runtime/runtime-typedarray.cc | 11 +- deps/v8/src/runtime/runtime-utils.cc | 32 - deps/v8/src/runtime/runtime-utils.h | 16 - deps/v8/src/runtime/runtime-wasm.cc | 844 +- deps/v8/src/runtime/runtime.cc | 45 +- deps/v8/src/runtime/runtime.h | 391 +- deps/v8/src/sandbox/check.h | 56 +- deps/v8/src/sandbox/code-sandboxing-mode.h | 36 + .../src/sandbox/external-entity-table-inl.h | 127 +- deps/v8/src/sandbox/external-entity-table.h | 19 +- deps/v8/src/sandbox/external-pointer-inl.h | 18 + .../src/sandbox/external-pointer-table-inl.h | 25 + deps/v8/src/sandbox/external-pointer-table.h | 8 + deps/v8/src/sandbox/external-pointer.h | 4 + deps/v8/src/sandbox/hardware-support.cc | 341 +- deps/v8/src/sandbox/hardware-support.h | 280 +- deps/v8/src/sandbox/indirect-pointer-tag.h | 3 + deps/v8/src/sandbox/isolate-inl.h | 31 - deps/v8/src/sandbox/isolate.h | 11 - deps/v8/src/sandbox/js-dispatch-table-inl.h | 49 +- deps/v8/src/sandbox/js-dispatch-table.cc | 20 +- deps/v8/src/sandbox/js-dispatch-table.h | 36 +- deps/v8/src/sandbox/sandbox-malloc.h | 95 + deps/v8/src/sandbox/sandbox.cc | 42 +- deps/v8/src/sandbox/sandbox.h | 10 +- deps/v8/src/sandbox/testing.cc | 183 +- .../v8/src/snapshot/builtins-effects-dummy.cc | 18 + deps/v8/src/snapshot/code-serializer.cc | 9 +- deps/v8/src/snapshot/deserializer.cc | 47 +- .../v8/src/snapshot/embedded/embedded-data.cc | 16 +- deps/v8/src/snapshot/mksnapshot.cc | 11 + .../v8/src/snapshot/read-only-deserializer.cc | 43 +- deps/v8/src/snapshot/read-only-serializer.cc | 34 +- deps/v8/src/snapshot/serializer.cc | 23 +- deps/v8/src/snapshot/snapshot.cc | 28 +- deps/v8/src/snapshot/sort-builtins.cc | 17 + deps/v8/src/snapshot/startup-serializer.cc | 3 +- deps/v8/src/snapshot/static-roots-gen.cc | 27 +- deps/v8/src/strings/OWNERS | 1 + deps/v8/src/strings/char-predicates-inl.h | 10 +- deps/v8/src/strings/char-predicates.h | 6 +- deps/v8/src/strings/string-hasher-inl.h | 305 +- deps/v8/src/strings/string-hasher.cc | 78 + deps/v8/src/strings/string-hasher.h | 8 +- deps/v8/src/strings/string-stream.cc | 2 + deps/v8/src/strings/unicode-inl.h | 19 +- deps/v8/src/strings/unicode.cc | 37 +- deps/v8/src/temporal/OWNERS | 2 - deps/v8/src/temporal/temporal-parser.cc | 1406 - deps/v8/src/temporal/temporal-parser.h | 156 - deps/v8/src/torque/ast.h | 6 +- deps/v8/src/torque/constants.h | 4 +- deps/v8/src/torque/implementation-visitor.cc | 30 +- deps/v8/src/torque/instance-type-generator.cc | 31 +- deps/v8/src/torque/ls/json-parser.cc | 2 +- deps/v8/src/torque/runtime-support.h | 7 +- deps/v8/src/torque/torque-parser.cc | 4 + deps/v8/src/torque/type-oracle.h | 6 +- deps/v8/src/torque/types.h | 3 + deps/v8/src/tracing/code-data-source.cc | 5 +- deps/v8/src/tracing/code-data-source.h | 2 +- deps/v8/src/tracing/code-trace-context.h | 2 +- deps/v8/src/tracing/perfetto-logger.cc | 10 +- deps/v8/src/tracing/perfetto-logger.h | 2 +- deps/v8/src/tracing/trace-categories.h | 56 +- deps/v8/src/tracing/trace-event-no-perfetto.h | 7 - deps/v8/src/tracing/trace-event.h | 11 +- .../src/trap-handler/handler-inside-posix.cc | 32 +- .../v8/src/trap-handler/handler-inside-win.cc | 23 +- deps/v8/src/trap-handler/handler-inside.cc | 11 +- .../src/trap-handler/handler-outside-posix.cc | 3 +- .../src/trap-handler/handler-outside-win.cc | 3 +- deps/v8/src/trap-handler/handler-outside.cc | 22 +- deps/v8/src/trap-handler/handler-shared.cc | 30 +- .../src/trap-handler/trap-handler-internal.h | 48 +- deps/v8/src/trap-handler/trap-handler.h | 46 - deps/v8/src/utils/allocation.cc | 29 +- deps/v8/src/utils/allocation.h | 12 +- deps/v8/src/utils/boxed-float.h | 140 +- deps/v8/src/utils/identity-map.h | 4 +- deps/v8/src/utils/memcopy.h | 8 +- deps/v8/src/utils/ostreams.h | 6 +- deps/v8/src/utils/output-stream.cc | 24 + deps/v8/src/utils/output-stream.h | 41 + deps/v8/src/utils/scoped-list.h | 5 +- deps/v8/src/utils/utils-inl.h | 1 + deps/v8/src/utils/utils.cc | 5 - deps/v8/src/utils/utils.h | 80 +- deps/v8/src/wasm/DEPS | 28 +- .../baseline/arm/liftoff-assembler-arm-inl.h | 169 +- .../arm64/liftoff-assembler-arm64-inl.h | 270 +- .../ia32/liftoff-assembler-ia32-inl.h | 188 +- .../wasm/baseline/liftoff-assembler-defs.h | 12 +- .../v8/src/wasm/baseline/liftoff-assembler.cc | 4 +- deps/v8/src/wasm/baseline/liftoff-assembler.h | 75 +- deps/v8/src/wasm/baseline/liftoff-compiler.cc | 1515 +- deps/v8/src/wasm/baseline/liftoff-compiler.h | 1 + deps/v8/src/wasm/baseline/liftoff-register.h | 10 +- .../loong64/liftoff-assembler-loong64-inl.h | 298 +- .../mips64/liftoff-assembler-mips64-inl.h | 216 +- .../baseline/ppc/liftoff-assembler-ppc-inl.h | 212 +- .../riscv/liftoff-assembler-riscv-inl.h | 47 +- .../riscv/liftoff-assembler-riscv32-inl.h | 360 +- .../riscv/liftoff-assembler-riscv64-inl.h | 324 +- .../s390/liftoff-assembler-s390-inl.h | 703 +- .../baseline/x64/liftoff-assembler-x64-inl.h | 253 +- deps/v8/src/wasm/basic-block-calculator.cc | 111 + deps/v8/src/wasm/basic-block-calculator.h | 48 + deps/v8/src/wasm/c-api.cc | 30 +- deps/v8/src/wasm/canonical-types.cc | 102 +- deps/v8/src/wasm/canonical-types.h | 72 +- .../v8/src/wasm/compilation-environment-inl.h | 8 +- deps/v8/src/wasm/compilation-environment.h | 16 +- .../src/wasm/constant-expression-interface.cc | 53 +- .../src/wasm/constant-expression-interface.h | 2 + deps/v8/src/wasm/decoder.h | 6 +- deps/v8/src/wasm/function-body-decoder-impl.h | 781 +- deps/v8/src/wasm/function-compiler.cc | 31 +- deps/v8/src/wasm/function-compiler.h | 8 +- .../wasm/fuzzing/random-module-generation.cc | 1281 +- .../wasm/fuzzing/random-module-generation.h | 35 +- .../arm64/interpreter-builtins-arm64.cc | 34 +- .../interpreter/wasm-interpreter-objects.cc | 2 +- .../wasm-interpreter-runtime-inl.h | 3 - .../interpreter/wasm-interpreter-runtime.cc | 109 +- .../src/wasm/interpreter/wasm-interpreter.cc | 33 +- .../src/wasm/interpreter/wasm-interpreter.h | 26 +- .../x64/interpreter-builtins-x64.cc | 33 +- deps/v8/src/wasm/jump-table-assembler.h | 5 - deps/v8/src/wasm/memory-tracing.h | 18 +- deps/v8/src/wasm/module-compiler.cc | 388 +- deps/v8/src/wasm/module-compiler.h | 18 +- deps/v8/src/wasm/module-decoder-impl.h | 814 +- deps/v8/src/wasm/module-decoder.cc | 8 +- deps/v8/src/wasm/module-instantiate.cc | 1253 +- deps/v8/src/wasm/module-instantiate.h | 31 +- deps/v8/src/wasm/simd-shuffle.cc | 78 +- deps/v8/src/wasm/simd-shuffle.h | 52 +- deps/v8/src/wasm/stacks.cc | 78 +- deps/v8/src/wasm/stacks.h | 35 +- deps/v8/src/wasm/streaming-decoder.cc | 62 +- deps/v8/src/wasm/string-builder-multiline.h | 25 +- deps/v8/src/wasm/struct-types.h | 40 +- .../src/wasm/turboshaft-graph-interface-inl.h | 287 + .../v8/src/wasm/turboshaft-graph-interface.cc | 1117 +- deps/v8/src/wasm/turboshaft-graph-interface.h | 64 +- deps/v8/src/wasm/value-type.cc | 34 +- deps/v8/src/wasm/value-type.h | 87 +- deps/v8/src/wasm/wasm-builtin-list.h | 10 + deps/v8/src/wasm/wasm-code-coverage.h | 152 + deps/v8/src/wasm/wasm-code-manager.cc | 75 +- deps/v8/src/wasm/wasm-code-manager.h | 57 +- .../v8/src/wasm/wasm-code-pointer-table-inl.h | 6 + deps/v8/src/wasm/wasm-code-pointer-table.h | 2 + deps/v8/src/wasm/wasm-constants.h | 31 +- deps/v8/src/wasm/wasm-debug.cc | 2 +- deps/v8/src/wasm/wasm-disassembler.cc | 36 +- deps/v8/src/wasm/wasm-engine.cc | 35 +- deps/v8/src/wasm/wasm-engine.h | 9 +- deps/v8/src/wasm/wasm-export-wrapper-cache.cc | 163 + deps/v8/src/wasm/wasm-export-wrapper-cache.h | 99 + deps/v8/src/wasm/wasm-external-refs.cc | 103 +- deps/v8/src/wasm/wasm-external-refs.h | 16 +- deps/v8/src/wasm/wasm-feature-flags.h | 35 +- deps/v8/src/wasm/wasm-features.cc | 3 + deps/v8/src/wasm/wasm-features.h | 16 +- deps/v8/src/wasm/wasm-import-wrapper-cache.cc | 318 +- deps/v8/src/wasm/wasm-import-wrapper-cache.h | 88 +- deps/v8/src/wasm/wasm-init-expr.h | 57 +- deps/v8/src/wasm/wasm-js.cc | 82 +- deps/v8/src/wasm/wasm-module-builder.cc | 51 +- deps/v8/src/wasm/wasm-module-builder.h | 45 +- deps/v8/src/wasm/wasm-module.cc | 56 +- deps/v8/src/wasm/wasm-module.h | 102 +- deps/v8/src/wasm/wasm-objects-inl.h | 52 +- deps/v8/src/wasm/wasm-objects.cc | 983 +- deps/v8/src/wasm/wasm-objects.h | 234 +- deps/v8/src/wasm/wasm-objects.tq | 17 +- deps/v8/src/wasm/wasm-opcodes.h | 40 +- deps/v8/src/wasm/wasm-result.h | 4 +- deps/v8/src/wasm/wasm-serialization.cc | 11 +- deps/v8/src/wasm/wasm-serialization.h | 1 - deps/v8/src/wasm/wasm-subtyping.cc | 253 +- deps/v8/src/wasm/wasm-subtyping.h | 49 +- deps/v8/src/wasm/wasm-value.h | 13 +- deps/v8/src/wasm/well-known-imports.cc | 4 + deps/v8/src/wasm/well-known-imports.h | 5 +- deps/v8/src/wasm/wrappers-inl.h | 683 + deps/v8/src/wasm/wrappers.cc | 1315 +- deps/v8/src/wasm/wrappers.h | 665 + deps/v8/src/zone/accounting-allocator.cc | 120 +- deps/v8/src/zone/accounting-allocator.h | 7 +- deps/v8/src/zone/compressed-zone-ptr.h | 93 - deps/v8/src/zone/type-stats.h | 4 +- deps/v8/src/zone/zone-allocator.h | 14 +- deps/v8/src/zone/zone-chunk-list.h | 4 +- deps/v8/src/zone/zone-compression.h | 68 - deps/v8/src/zone/zone-containers.h | 47 +- deps/v8/src/zone/zone-list-inl.h | 4 +- deps/v8/src/zone/zone-type-traits.h | 53 +- deps/v8/src/zone/zone-utils.h | 2 +- deps/v8/src/zone/zone.cc | 12 +- deps/v8/src/zone/zone.h | 15 +- deps/v8/test/BUILD.gn | 3 +- .../v8/test/benchmarks/cpp/benchmark-utils.cc | 1 - deps/v8/test/benchmarks/cpp/bindings.cc | 35 +- deps/v8/test/bigint/bigint-shell.cc | 102 +- deps/v8/test/cctest/BUILD.gn | 18 +- deps/v8/test/cctest/OWNERS | 4 +- deps/v8/test/cctest/cctest.cc | 41 +- deps/v8/test/cctest/cctest.h | 26 +- deps/v8/test/cctest/cctest.status | 67 +- deps/v8/test/cctest/compiler/codegen-tester.h | 6 +- .../test-calls-with-arraylike-or-spread.cc | 4 +- .../cctest/compiler/test-code-assembler.cc | 44 + .../cctest/compiler/test-code-generator.cc | 2 +- .../test-concurrent-shared-function-info.cc | 7 +- .../cctest/compiler/test-graph-visualizer.cc | 10 +- .../compiler/test-instruction-scheduler.cc | 20 +- .../test/cctest/compiler/test-instruction.cc | 3 +- .../cctest/compiler/test-js-constant-cache.cc | 3 +- .../test-js-context-specialization.cc | 6 +- .../cctest/compiler/test-js-typed-lowering.cc | 3 +- deps/v8/test/cctest/compiler/test-linkage.cc | 158 - .../cctest/compiler/test-loop-analysis.cc | 3 +- .../compiler/test-machine-operator-reducer.cc | 5 +- .../cctest/compiler/test-multiple-return.cc | 6 +- deps/v8/test/cctest/compiler/test-node.cc | 36 +- .../compiler/test-representation-change.cc | 5 +- .../test/cctest/compiler/test-run-machops.cc | 12 +- .../cctest/compiler/test-run-native-calls.cc | 22 +- .../cctest/compiler/test-run-stackcheck.cc | 22 - .../cctest/compiler/test-run-variables.cc | 122 - .../compiler/turboshaft-codegen-tester.h | 6 +- deps/v8/test/cctest/feedback-vector-helper.h | 3 +- deps/v8/test/cctest/heap/heap-utils.cc | 3 +- .../cctest/heap/test-array-buffer-tracker.cc | 22 +- deps/v8/test/cctest/heap/test-compaction.cc | 16 +- .../cctest/heap/test-concurrent-allocation.cc | 10 +- .../heap/test-external-string-tracker.cc | 10 +- deps/v8/test/cctest/heap/test-heap.cc | 155 +- deps/v8/test/cctest/heap/test-mark-compact.cc | 5 +- deps/v8/test/cctest/heap/test-spaces.cc | 60 +- .../test/cctest/heap/test-weak-references.cc | 4 +- .../v8/test/cctest/setup-isolate-for-tests.cc | 2 +- deps/v8/test/cctest/test-accessors.cc | 36 +- deps/v8/test/cctest/test-allocation.cc | 26 +- deps/v8/test/cctest/test-api-array-buffer.cc | 56 +- deps/v8/test/cctest/test-api-interceptors.cc | 71 +- deps/v8/test/cctest/test-api-stack-traces.cc | 101 +- deps/v8/test/cctest/test-api-typed-array.cc | 34 +- deps/v8/test/cctest/test-api.cc | 1765 +- deps/v8/test/cctest/test-api.h | 2 +- deps/v8/test/cctest/test-assembler-arm64.cc | 252 + deps/v8/test/cctest/test-assembler-loong64.cc | 4 +- deps/v8/test/cctest/test-assembler-mips64.cc | 16 +- deps/v8/test/cctest/test-assembler-riscv32.cc | 56 +- deps/v8/test/cctest/test-assembler-riscv64.cc | 100 +- .../test/cctest/test-code-stub-assembler.cc | 166 +- deps/v8/test/cctest/test-cpu-profiler.cc | 315 +- deps/v8/test/cctest/test-debug-helper.cc | 4 +- deps/v8/test/cctest/test-debug.cc | 918 +- .../test/cctest/test-field-type-tracking.cc | 2 +- deps/v8/test/cctest/test-heap-profiler.cc | 815 +- deps/v8/test/cctest/test-helper-riscv32.h | 117 +- deps/v8/test/cctest/test-helper-riscv64.h | 119 +- deps/v8/test/cctest/test-icache.cc | 7 - .../cctest/test-inobject-slack-tracking.cc | 66 +- deps/v8/test/cctest/test-javascript-arm64.cc | 20 +- .../v8/test/cctest/test-js-arm64-variables.cc | 12 +- deps/v8/test/cctest/test-js-to-wasm.cc | 2 +- deps/v8/test/cctest/test-js-weak-refs.cc | 4 +- deps/v8/test/cctest/test-liveedit.cc | 76 +- deps/v8/test/cctest/test-lockers.cc | 35 +- deps/v8/test/cctest/test-log-stack-tracer.cc | 12 +- .../cctest/test-macro-assembler-riscv32.cc | 8 +- .../cctest/test-macro-assembler-riscv64.cc | 8 +- deps/v8/test/cctest/test-orderedhashtable.cc | 84 +- deps/v8/test/cctest/test-profile-generator.cc | 92 +- deps/v8/test/cctest/test-regexp.cc | 12 +- deps/v8/test/cctest/test-serialize.cc | 161 +- deps/v8/test/cctest/test-shared-strings.cc | 131 +- deps/v8/test/cctest/test-strings.cc | 6 +- .../cctest/test-swiss-name-dictionary-infra.h | 2 +- .../test-swiss-name-dictionary-shared-tests.h | 4 +- deps/v8/test/cctest/test-typedarrays.cc | 8 +- .../test-unscopables-hidden-prototype.cc | 2 +- .../test/cctest/test-unwinder-code-pages.cc | 24 +- deps/v8/test/cctest/wasm/test-c-wasm-entry.cc | 14 +- deps/v8/test/cctest/wasm/test-gc.cc | 5 +- deps/v8/test/cctest/wasm/test-grow-memory.cc | 1 - .../cctest/wasm/test-jump-table-assembler.cc | 12 +- .../cctest/wasm/test-liftoff-for-fuzzing.cc | 2 +- .../cctest/wasm/test-liftoff-inspection.cc | 5 +- deps/v8/test/cctest/wasm/test-run-wasm-64.cc | 2 +- .../test/cctest/wasm/test-run-wasm-asmjs.cc | 2 +- .../cctest/wasm/test-run-wasm-bulk-memory.cc | 2 +- .../cctest/wasm/test-run-wasm-exceptions.cc | 3 +- deps/v8/test/cctest/wasm/test-run-wasm-f16.cc | 2 +- deps/v8/test/cctest/wasm/test-run-wasm-js.cc | 2 +- .../cctest/wasm/test-run-wasm-memory64.cc | 2 +- .../test/cctest/wasm/test-run-wasm-module.cc | 231 - .../cctest/wasm/test-run-wasm-relaxed-simd.cc | 4 +- .../wasm/test-run-wasm-sign-extension.cc | 2 +- .../cctest/wasm/test-run-wasm-simd-liftoff.cc | 2 +- .../v8/test/cctest/wasm/test-run-wasm-simd.cc | 3679 ++- .../cctest/wasm/test-run-wasm-wrappers.cc | 59 +- deps/v8/test/cctest/wasm/test-run-wasm.cc | 265 +- .../test/cctest/wasm/test-wasm-breakpoints.cc | 29 +- .../wasm/test-wasm-import-wrapper-cache.cc | 97 +- deps/v8/test/cctest/wasm/test-wasm-metrics.cc | 1 - .../cctest/wasm/test-wasm-serialization.cc | 5 +- .../cctest/wasm/test-wasm-shared-engine.cc | 2 +- deps/v8/test/cctest/wasm/test-wasm-stack.cc | 8 +- .../cctest/wasm/test-wasm-trap-position.cc | 6 +- deps/v8/test/cctest/wasm/wasm-atomics-utils.h | 2 +- deps/v8/test/cctest/wasm/wasm-runner.h | 34 + deps/v8/test/cctest/wasm/wasm-simd-utils.cc | 136 +- deps/v8/test/cctest/wasm/wasm-simd-utils.h | 11 +- deps/v8/test/common/assembler-tester.h | 3 +- deps/v8/test/common/c-signature.h | 4 +- deps/v8/test/common/call-tester.h | 4 +- deps/v8/test/common/code-assembler-tester.h | 2 +- deps/v8/test/common/types-fuzz.h | 2 +- deps/v8/test/common/value-helper.h | 5 +- deps/v8/test/common/wasm/wasm-macro-gen.h | 107 +- .../v8/test/common/wasm/wasm-module-runner.cc | 2 - deps/v8/test/common/wasm/wasm-module-runner.h | 13 +- .../{cctest => common}/wasm/wasm-run-utils.cc | 79 +- .../{cctest => common}/wasm/wasm-run-utils.h | 74 +- .../debugger/debug/debug-compile-optimized.js | 2 +- .../test/debugger/debug/debug-eval-scope.js | 1 - .../debugger/debug/debug-evaluate-closure.js | 1 - .../debug-evaluate-dead-function-fails.js | 1 - .../debug/debug-evaluate-locals-capturing.js | 1 - ...debug-evaluate-modify-catch-block-scope.js | 1 - .../test/debugger/debug/debug-liveedit-2.js | 2 +- .../test/debugger/debug/debug-liveedit-4.js | 1 - .../debugger/debug/debug-liveedit-eval.js | 23 + .../debug-modules-set-variable-value.mjs | 2 +- deps/v8/test/debugger/debug/debug-optimize.js | 2 +- .../debug/debug-set-variable-value.js | 2 - ...-step-into-explicit-resource-management.js | 45 + .../debug/es6/debug-evaluate-blockscopes.js | 1 - .../es6/debug-promises/stepin-handler.js | 1 - .../debugger/debug/es6/debug-stepnext-for.js | 269 +- .../es8/async-function-debug-evaluate.js | 1 - .../debug/es8/async-function-debug-scopes.js | 1 - .../debug/lazy-deopt-then-flush-bytecode.js | 2 +- deps/v8/test/debugger/debug/regress-3225.js | 1 - .../debugger/debug/regress/regress-617882.js | 2 +- .../debug/regress/regress-crbug-171715.js | 1 - .../debug/regress/regress-crbug-323936.js | 1 - .../regress/regress-opt-after-debug-deopt.js | 1 - .../regress-prepare-break-while-recompile.js | 1 - .../test/debugging/wasm/gdb-server/gdb_rsp.py | 39 +- .../test/debugging/wasm/gdb-server/memory.py | 20 +- .../test/debugging/wasm/gdb-server/status.py | 2 +- .../wasm/gdb-server/test_files/test_trap.js | 3 +- deps/v8/test/filecheck/fail/d8-fails.js | 9 + deps/v8/test/filecheck/fail/mismatch.js | 6 + deps/v8/test/filecheck/fail/no-check.js | 5 + deps/v8/test/filecheck/filecheck.status | 20 + .../wasm-deopt-multi-instance.js} | 13 +- deps/v8/test/filecheck/wasm-pause.js | 30 + deps/v8/test/fuzzer/README.md | 2 +- deps/v8/test/fuzzer/fuzzer-support.cc | 18 +- deps/v8/test/fuzzer/fuzzer.status | 7 + deps/v8/test/fuzzer/inspector-fuzzer.cc | 6 + .../fuzzer/inspector/regress-391921979.js | 30 + deps/v8/test/fuzzer/json.cc | 5 + deps/v8/test/fuzzer/multi-return.cc | 5 + deps/v8/test/fuzzer/parser.cc | 5 + deps/v8/test/fuzzer/regexp.cc | 5 + deps/v8/test/fuzzer/testcfg.py | 1 + deps/v8/test/fuzzer/wasm/async.cc | 6 +- deps/v8/test/fuzzer/wasm/code.cc | 6 + deps/v8/test/fuzzer/wasm/compile-all.cc | 12 + deps/v8/test/fuzzer/wasm/compile-revec.cc | 37 + deps/v8/test/fuzzer/wasm/compile-simd.cc | 8 +- deps/v8/test/fuzzer/wasm/compile-wasmgc.cc | 14 +- deps/v8/test/fuzzer/wasm/compile.cc | 6 + deps/v8/test/fuzzer/wasm/deopt.cc | 24 +- deps/v8/test/fuzzer/wasm/fuzzer-common.cc | 834 +- deps/v8/test/fuzzer/wasm/fuzzer-common.h | 14 +- deps/v8/test/fuzzer/wasm/init-expr.cc | 164 +- .../wasm/interpreter/fast-interpreter.cc | 6 +- .../interpreter-all-multiple-modules.cc | 38 + .../wasm/interpreter/interpreter-all.cc | 6 + .../wasm/interpreter/interpreter-base.cc | 6 + .../wasm/interpreter/interpreter-code.cc | 6 + .../wasm/interpreter/interpreter-diff.cc | 6 +- .../interpreter/interpreter-fuzzer-common.cc | 199 +- .../interpreter/interpreter-fuzzer-common.h | 10 + .../wasm/interpreter/interpreter-init-expr.cc | 13 +- .../wasm/interpreter/interpreter-simd.cc | 6 + .../wasm/interpreter/interpreter-wasmgc.cc | 6 + deps/v8/test/fuzzer/wasm/module.cc | 11 +- .../fuzzer/wasm/module/regress-406925416.wasm | Bin 0 -> 280 bytes .../fuzzer/wasm/module/regress-419085592.wasm | Bin 0 -> 276 bytes deps/v8/test/fuzzer/wasm/streaming.cc | 8 +- deps/v8/test/inspector/BUILD.gn | 8 + .../console-profile-wasm-expected.txt | 10 +- .../cpu-profiler/console-profile-wasm.js | 3 +- .../inspector/cpu-profiler/coverage-block.js | 4 +- .../test/inspector/cpu-profiler/coverage.js | 4 +- .../debugger/for-of-loops-expected.txt | 258 +- .../test/inspector/debugger/for-of-loops.js | 20 + ...get-possible-breakpoints-main-expected.txt | 13 +- .../debugger/resources/break-locations.js | 7 + .../restart-frame/restart-inlined-frame.js | 2 +- .../inspector/debugger/set-variable-value.js | 1 - .../inspector/debugger/step-into-expected.txt | 37 +- .../inspector/debugger/step-over-expected.txt | 584 + deps/v8/test/inspector/debugger/step-over.js | 38 + .../inspector/debugger/tdz-modules-scopes.js | 1 - deps/v8/test/inspector/debugger/tdz-scopes.js | 1 - ...int-reset-on-debugger-restart-expected.txt | 2 +- .../wasm-conditional-breakpoints-expected.txt | 24 +- .../debugger/wasm-debug-command-expected.txt | 4 +- .../debugger/wasm-gc-anyref-expected.txt | 8 +- .../debugger/wasm-gc-breakpoints-expected.txt | 6 +- .../wasm-gc-in-debug-break-expected.txt | 4 +- .../wasm-gc-multi-module-expected.txt | 12 +- ...akable-locations-byte-offsets-expected.txt | 42 +- .../debugger/wasm-imports-expected.txt | 8 +- ...sm-instrumentation-breakpoint-expected.txt | 24 +- .../wasm-jspi-async-stack-expected.txt | 216 +- .../debugger/wasm-jspi-async-stack.js | 2 +- .../wasm-remove-breakpoint-expected.txt | 4 +- .../debugger/wasm-scope-info-expected.txt | 18 +- .../wasm-script-parsed-buildid-expected.txt | 8 +- .../wasm-scripts-disassembly-expected.txt | 4 +- .../debugger/wasm-scripts-expected.txt | 96 +- .../wasm-scripts-with-name-expected.txt | 8 +- .../debugger/wasm-set-breakpoint-expected.txt | 60 +- ...breakpoint-on-instrumentation-expected.txt | 20 +- .../debugger/wasm-stack-check-expected.txt | 2 +- .../debugger/wasm-stack-expected.txt | 4 +- .../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 +- deps/v8/test/inspector/isolate-data.cc | 23 +- .../regress-crbug-399002824-expected.txt | 5 + .../regress/regress-crbug-399002824.js | 35 + .../error-preview-sideeffects-expected.txt | 8 + .../runtime/error-preview-sideeffects.js | 67 + ...-explicit-resource-management-expected.txt | 61 + ...rror-stack-explicit-resource-management.js | 113 + .../runtime/exception-thrown-expected.txt | 2 + .../exception-thrown-metadata-expected.txt | 4 + .../runtime/preview-sideeffects-expected.txt | 6 + .../inspector/runtime/preview-sideeffects.js | 35 + .../test/inspector/runtime/query-objects.js | 2 +- .../runtime-evaluate-exception-expected.txt | 8 + deps/v8/test/inspector/tasks.cc | 11 +- .../date-format/en-format-range-to-parts.js | 2 +- deps/v8/test/intl/datetime-compat-all.js | 12 + deps/v8/test/intl/datetime-compat-en.js | 12 + deps/v8/test/intl/datetime-compat-none.js | 12 + deps/v8/test/intl/intl.status | 4 + deps/v8/test/intl/regress-1451943.js | 12 +- deps/v8/test/intl/string-localecompare.js | 2 +- deps/v8/test/js-perf-test/Array/run.js | 24 +- deps/v8/test/js-perf-test/JSTests4.json | 6 +- deps/v8/test/js-perf-test/JSTests5.json | 11 + deps/v8/test/js-perf-test/Proxies/proxies.js | 297 +- .../test/message/fail/preparse-arguments.js | 7 + .../test/message/fail/preparse-arguments.out | 4 + .../message/fail/regress-crbug-417373146.js | 5 + .../message/fail/regress-crbug-417373146.out | 4 + .../fail/wasm-exception-stack-trace.out | 2 +- .../test/message/fail/wasm-function-name.out | 2 +- .../fail/wasm-module-and-function-name.out | 2 +- .../v8/test/message/fail/wasm-module-name.out | 2 +- deps/v8/test/message/fail/wasm-no-name.out | 2 +- deps/v8/test/message/fail/wasm-trap.out | 2 +- deps/v8/test/message/message.status | 3 + .../test/message/wasm-function-name-async.out | 2 +- .../message/wasm-function-name-streaming.out | 2 +- .../message/wasm-in-js-inlining-turboshaft.js | 2 +- deps/v8/test/message/wasm-inlining-into-js.js | 2 +- .../v8/test/message/wasm-inlining-into-js.out | 2 +- .../wasm-module-and-function-name-async.out | 2 +- ...asm-module-and-function-name-streaming.out | 2 +- .../test/message/wasm-module-name-async.out | 2 +- .../message/wasm-module-name-streaming.out | 2 +- deps/v8/test/message/wasm-no-name-async.out | 2 +- .../test/message/wasm-no-name-streaming.out | 2 +- .../message/wasm-trace-globals-liftoff.js | 7 + .../message/wasm-trace-globals-liftoff.out | 10 + deps/v8/test/message/wasm-trace-globals.js | 61 + deps/v8/test/message/wasm-trace-globals.out | 10 + deps/v8/test/message/wasm-trace-liftoff.js | 2 +- .../message/wasm-trace-memory-liftoff.out | 29 +- deps/v8/test/message/wasm-trace-memory.js | 61 +- deps/v8/test/message/wasm-trace-memory.out | 29 +- .../message/wasm-trace-memory64-liftoff.out | 56 +- deps/v8/test/message/wasm-trace-memory64.out | 56 +- deps/v8/test/message/wasm-trace-turbofan.js | 2 +- deps/v8/test/mjsunit/BUILD.gn | 1 + .../mjsunit/additive-safe-int-feedback.js | 2 +- deps/v8/test/mjsunit/allocation-site-info.js | 2 +- .../mjsunit/array-bounds-check-removal.js | 2 +- .../mjsunit/array-concat-to-holey-double.js | 42 + .../mjsunit/array-constructor-feedback.js | 2 +- deps/v8/test/mjsunit/array-feedback.js | 2 +- .../v8/test/mjsunit/array-literal-feedback.js | 2 +- .../test/mjsunit/array-literal-transitions.js | 2 +- .../v8/test/mjsunit/array-natives-elements.js | 66 +- deps/v8/test/mjsunit/array-pop.js | 4 + ...array-prototype-map-elements-kinds-dict.js | 2 +- .../array-prototype-map-elements-kinds.js | 2 +- deps/v8/test/mjsunit/array-push5.js | 2 +- deps/v8/test/mjsunit/array-store-and-grow.js | 2 +- .../mjsunit/array-tostring-stack-overflow.js | 12 + deps/v8/test/mjsunit/asm/regress-435068768.js | 21 + deps/v8/test/mjsunit/asm/regress-436021221.js | 16 + deps/v8/test/mjsunit/async-stack-traces.js | 33 + .../mjsunit/baseline/batch-compilation.js | 2 +- .../baseline/loadic-transition-elements.js | 42 + .../mjsunit/baseline/test-osr-maglev-tf.js | 2 +- .../test/mjsunit/baseline/test-osr-maglev.js | 2 +- deps/v8/test/mjsunit/baseline/test-osr.js | 2 +- .../test/mjsunit/binary-op-throws-feedback.js | 2 +- .../test/mjsunit/check-bounds-array-index.js | 2 +- .../check-bounds-string-from-char-code-at.js | 9 +- deps/v8/test/mjsunit/code-coverage-ad-hoc.js | 2 +- .../test/mjsunit/code-coverage-block-async.js | 2 +- .../test/mjsunit/code-coverage-block-noopt.js | 2 +- .../test/mjsunit/code-coverage-block-opt.js | 4 +- deps/v8/test/mjsunit/code-coverage-block.js | 2 +- .../mjsunit/code-coverage-class-fields.js | 2 +- deps/v8/test/mjsunit/code-coverage-precise.js | 2 +- .../mjsunit/comparison-throws-feedback.js | 2 +- .../compiler/abstract-equal-oddball.js | 2 +- .../compiler/abstract-equal-receiver.js | 3 +- .../mjsunit/compiler/abstract-equal-symbol.js | 3 +- .../compiler/abstract-equal-undetectable.js | 3 +- .../compiler/array-multiple-receiver-maps.js | 2 +- .../compiler/array-prototype-at-holey.js | 17 + ...array-prototype-map-elements-kinds-dict.js | 2 +- .../array-prototype-map-elements-kinds.js | 2 +- .../compiler/bigint-add-no-deopt-loop.js | 2 +- .../v8/test/mjsunit/compiler/bigint-asintn.js | 2 +- .../test/mjsunit/compiler/bigint-asuintn.js | 2 +- .../mjsunit/compiler/bigint-bitwise-and.js | 2 +- .../mjsunit/compiler/bigint-bitwise-or.js | 2 +- .../mjsunit/compiler/bigint-bitwise-xor.js | 2 +- .../test/mjsunit/compiler/bigint-compare.js | 2 +- .../mjsunit/compiler/bigint-constructor.js | 2 +- .../v8/test/mjsunit/compiler/bigint-divide.js | 2 +- deps/v8/test/mjsunit/compiler/bigint-equal.js | 2 +- .../test/mjsunit/compiler/bigint-modulus.js | 2 +- .../compiler/bigint-multiply-truncate.js | 2 +- .../test/mjsunit/compiler/bigint-multiply.js | 2 +- .../mjsunit/compiler/bigint-rematerialize.js | 2 +- .../mjsunit/compiler/bigint-shift-left.js | 2 +- .../mjsunit/compiler/bigint-shift-right.js | 2 +- .../compiler/bigint64-add-no-deopt-loop.js | 2 +- .../test/mjsunit/compiler/bigint64-array.js | 2 +- .../compiler/bigint64-div-no-deopt-loop.js | 2 +- .../compiler/bigint64-mod-no-deopt-loop.js | 2 +- .../compiler/bigint64-mul-no-deopt-loop.js | 2 +- .../compiler/bigint64-sub-no-deopt-loop.js | 2 +- .../compiler/bound-functions-serialize.js | 3 +- .../call-with-arraylike-or-spread-2.js | 1 - .../call-with-arraylike-or-spread-3.js | 6 +- .../call-with-arraylike-or-spread-4.js | 6 +- .../call-with-arraylike-or-spread-5.js | 7 +- .../call-with-arraylike-or-spread-6.js | 6 +- .../call-with-arraylike-or-spread-7.js | 6 +- .../compiler/call-with-arraylike-or-spread.js | 137 +- ...checkmaps-with-migration-and-deopt-mono.js | 2 +- ...heckmaps-with-migration-and-deopt-mono2.js | 2 +- ...checkmaps-with-migration-and-deopt-poly.js | 2 +- ...heckmaps-with-migration-and-deopt-poly2.js | 2 +- ...heckmaps-with-migration-and-deopt-poly3.js | 2 +- .../concurrent-invalidate-transition-map.js | 2 +- .../compiler/concurrent-proto-change.js | 2 +- .../compiler/constant-fold-cow-array.js | 2 +- .../compiler/constant-fold-tostring.js | 2 +- .../test/mjsunit/compiler/dataview-deopt.js | 2 +- .../mjsunit/compiler/dataview-detached.js | 2 +- .../test/mjsunit/compiler/dataview-float16.js | 2 +- deps/v8/test/mjsunit/compiler/dataview-get.js | 2 +- deps/v8/test/mjsunit/compiler/dataview-set.js | 2 +- .../compiler/deopt-inlined-from-call.js | 2 +- .../mjsunit/compiler/deopt-inlined-smi.js | 12 +- .../test/mjsunit/compiler/deopt-pretenure.js | 2 +- .../compiler/deopt-string-outofbounds.js | 2 +- .../dont-flush-code-marked-for-opt.js | 2 +- .../efficiency-mode-limits-tiering.js | 1 - .../test/mjsunit/compiler/expression-trees.js | 2 +- .../mjsunit/compiler/fast-api-annotations.js | 3 - .../mjsunit/compiler/fast-api-attributes.js | 3 - .../fast-api-calls-64-bit-integer-values.js | 3 - .../mjsunit/compiler/fast-api-calls-8args.js | 3 - .../mjsunit/compiler/fast-api-calls-nested.js | 28 + .../compiler/fast-api-calls-pointer.js | 3 - .../mjsunit/compiler/fast-api-calls-string.js | 3 - .../mjsunit/compiler/fast-api-calls-throw.js | 3 - .../test/mjsunit/compiler/fast-api-calls.js | 3 - .../compiler/fast-api-clamp-annotations.js | 3 - .../test/mjsunit/compiler/fast-api-deopt.js | 270 + .../compiler/fast-api-interface-types.js | 1 - .../compiler/fast-api-sequences-x64.js | 3 - .../mjsunit/compiler/fast-api-sequences.js | 3 - .../compiler/field-representation-tracking.js | 2 +- .../mjsunit/compiler/float16-array-next.js | 2 +- .../v8/test/mjsunit/compiler/float16-array.js | 2 +- .../compiler/globals-change-writable.js | 2 +- .../compiler/globals-freeze-constant.js | 2 +- .../compiler/globals-freeze-constanttype.js | 2 +- .../compiler/globals-freeze-mutable.js | 2 +- .../mjsunit/compiler/inline-exception-1.js | 2 +- .../mjsunit/compiler/inline-exception-2.js | 2 +- .../mjsunit/compiler/inlining-exponential.js | 50 + .../compiler/is-being-interpreted-1.js | 2 +- .../compiler/is-being-interpreted-2.js | 2 +- ...d_mutable_heap_slot_context_specialized.js | 2 +- .../compiler/manual-concurrent-recompile.js | 2 +- ...ative-context-specialization-hole-check.js | 4 +- .../v8/test/mjsunit/compiler/number-divide.js | 3 +- .../test/mjsunit/compiler/number-modulus.js | 2 +- .../omit-default-ctors-array-iterator.js | 33 + .../mjsunit/compiler/omit-default-ctors.js | 1 - .../compiler/opt-higher-order-functions.js | 2 +- .../compiler/optimized-array-at-throw.js | 1 - .../mjsunit/compiler/optimized-array-at.js | 1 - .../mjsunit/compiler/poly-store-gets-smi.js | 2 +- .../compiler/promise-resolve-stable-maps.js | 3 +- .../test/mjsunit/compiler/regress-1092011.js | 3 +- .../test/mjsunit/compiler/regress-1199345.js | 2 +- .../test/mjsunit/compiler/regress-1459796.js | 2 +- .../test/mjsunit/compiler/regress-3185901.js | 3 +- .../test/mjsunit/compiler/regress-3260426.js | 4 +- .../mjsunit/compiler/regress-359729268.js | 2 +- .../mjsunit/compiler/regress-385386138.js | 2 +- .../mjsunit/compiler/regress-394327270.js | 2 +- .../mjsunit/compiler/regress-394650781.js | 2 +- .../mjsunit/compiler/regress-396463255.js | 2 +- .../mjsunit/compiler/regress-398431403.js | 2 +- .../mjsunit/compiler/regress-400052777.js | 2 +- .../mjsunit/compiler/regress-402646504.js | 2 +- .../mjsunit/compiler/regress-404356997.js | 2 +- .../mjsunit/compiler/regress-406999116.js | 2 +- .../mjsunit/compiler/regress-419744895.js | 15 + .../mjsunit/compiler/regress-420689315.js | 27 + .../test/mjsunit/compiler/regress-446647.js | 11 - deps/v8/test/mjsunit/compiler/regress-6.js | 4 - deps/v8/test/mjsunit/compiler/regress-9017.js | 1 - .../test/mjsunit/compiler/regress-905555-2.js | 3 +- .../test/mjsunit/compiler/regress-905555.js | 3 +- .../test/mjsunit/compiler/regress-957559.js | 2 +- .../test/mjsunit/compiler/regress-9945-1.js | 2 +- .../test/mjsunit/compiler/regress-9945-2.js | 2 +- .../mjsunit/compiler/regress-crbug-1486238.js | 2 +- ...ss-nonextensiblearray-store-outofbounds.js | 2 +- .../regress-sealedarray-store-outofbounds.js | 2 +- .../test/mjsunit/compiler/regress-v8-9139.js | 2 +- .../mjsunit/compiler/serializer-accessors.js | 2 +- .../test/mjsunit/compiler/serializer-apply.js | 2 +- .../test/mjsunit/compiler/serializer-call.js | 2 +- .../compiler/serializer-dead-after-jump.js | 2 +- .../compiler/serializer-dead-after-return.js | 2 +- .../serializer-transition-propagation.js | 2 +- .../test/mjsunit/compiler/smi-bitwise-ops.js | 53 + .../mjsunit/compiler/stress-deopt-count-1.js | 2 +- .../mjsunit/compiler/stress-deopt-count-2.js | 2 +- .../mjsunit/compiler/strict-equal-receiver.js | 3 +- .../v8/test/mjsunit/compiler/string-charAt.js | 16 +- .../test/mjsunit/compiler/string-endswith.js | 2 +- .../compiler/string-from-code-point.js | 3 +- .../compiler/string-or-oddball-compare.js | 96 + .../compiler/string-or-string-wrapper-cons.js | 19 + .../compiler/test-literal-map-migration.js | 2 +- .../compiler/typed-array-length-all-kinds.js | 2 +- .../compiler/typed-array-length-as-number.js | 2 +- .../compiler/typed-array-length-constant.js | 2 +- .../compiler/typed-array-length-custom-1a.js | 2 +- .../compiler/typed-array-length-custom-1b.js | 2 +- .../compiler/typed-array-length-custom-2a.js | 2 +- .../compiler/typed-array-length-custom-2b.js | 2 +- .../compiler/typed-array-length-custom-3a.js | 2 +- .../compiler/typed-array-length-custom-3b.js | 2 +- .../compiler/typed-array-length-custom-4a.js | 2 +- .../compiler/typed-array-length-custom-4b.js | 2 +- .../compiler/typed-array-length-custom-6a.js | 2 +- .../compiler/typed-array-length-custom-6b.js | 2 +- .../compiler/typed-array-length-custom-7a.js | 2 +- .../compiler/typed-array-length-custom-7b.js | 2 +- .../compiler/typed-array-length-detached-1.js | 2 +- .../compiler/typed-array-length-detached-2.js | 2 +- ...yped-array-length-from-call-polymorphic.js | 2 +- .../compiler/typed-array-length-from-call.js | 2 +- .../compiler/typed-array-length-iteration.js | 2 +- .../typed-array-length-polymorphic.js | 2 +- .../typedarray-resizablearraybuffer.js | 2 +- deps/v8/test/mjsunit/compiler/verify-type.js | 2 +- .../concurrent-initial-prototype-change-1.js | 1 - .../concurrent-initial-prototype-change-2.js | 1 - ...ady-not-constant-global-no-deopt-maglev.js | 2 +- ...et-already-not-constant-no-deopt-maglev.js | 2 +- .../test/mjsunit/const-tracking-let-basic.js | 2 +- .../const-tracking-let-globalic-slow-path.js | 2 +- ...const-tracking-let-initial-value-maglev.js | 2 +- ...st-tracking-let-initialization-baseline.js | 2 +- .../const-tracking-let-invalidate-eval.js | 2 +- ...cking-let-invalidate-function-baseline1.js | 2 +- ...cking-let-invalidate-function-baseline2.js | 2 +- ...cking-let-invalidate-function-baseline3.js | 2 +- ...ng-let-invalidate-function-interpreter1.js | 2 +- ...ng-let-invalidate-function-interpreter2.js | 2 +- ...ng-let-invalidate-function-interpreter3.js | 2 +- ...racking-let-invalidate-function-maglev1.js | 2 +- ...racking-let-invalidate-function-maglev2.js | 2 +- ...racking-let-invalidate-function-maglev3.js | 2 +- ...cking-let-invalidate-function-turbofan1.js | 2 +- ...cking-let-invalidate-function-turbofan2.js | 2 +- ...cking-let-invalidate-function-turbofan3.js | 2 +- ...let-invalidate-inner-function-baseline1.js | 2 +- ...let-invalidate-inner-function-baseline2.js | 2 +- ...-invalidate-inner-function-interpreter1.js | 2 +- ...-invalidate-inner-function-interpreter2.js | 2 +- ...g-let-invalidate-inner-function-maglev1.js | 2 +- ...g-let-invalidate-inner-function-maglev2.js | 2 +- ...let-invalidate-inner-function-turbofan1.js | 2 +- ...let-invalidate-inner-function-turbofan2.js | 2 +- ...g-let-invalidate-maglev-representations.js | 2 +- ...t-tracking-let-invalidate-repl-baseline.js | 2 +- ...racking-let-invalidate-repl-interpreter.js | 2 +- ...nst-tracking-let-invalidate-repl-maglev.js | 2 +- ...t-tracking-let-invalidate-repl-turbofan.js | 2 +- ...ing-let-invalidate-storeglobal-baseline.js | 2 +- ...-let-invalidate-storeglobal-interpreter.js | 2 +- ...cking-let-invalidate-storeglobal-maglev.js | 2 +- ...ing-let-invalidate-storeglobal-turbofan.js | 2 +- ...let-invalidate-storelookupslot-baseline.js | 2 +- ...-invalidate-storelookupslot-interpreter.js | 2 +- ...g-let-invalidate-storelookupslot-maglev.js | 2 +- ...alidate-storelookupslot-strict-baseline.js | 2 +- ...date-storelookupslot-strict-interpreter.js | 2 +- ...nvalidate-storelookupslot-strict-maglev.js | 2 +- ...alidate-storelookupslot-strict-turbofan.js | 2 +- ...let-invalidate-storelookupslot-turbofan.js | 2 +- ...acking-let-invalidate-toplevel-baseline.js | 2 +- ...ing-let-invalidate-toplevel-interpreter.js | 2 +- ...tracking-let-invalidate-toplevel-maglev.js | 2 +- ...acking-let-invalidate-toplevel-turbofan.js | 2 +- .../mjsunit/const-tracking-let-multiple.js | 2 +- ...let-no-deopt-write-if-already-not-const.js | 2 +- .../mjsunit/const-tracking-let-not-const.js | 2 +- .../const-tracking-let-other-script.js | 2 +- ...nst-tracking-let-read-is-inner-function.js | 2 +- .../const-tracking-let-read-uninitialized.js | 2 +- .../const-tracking-let-repl-initialize.js | 2 +- .../const-tracking-let-repl-side-data-sync.js | 2 +- .../test/mjsunit/const-tracking-let-repl.js | 2 +- .../const-tracking-let-uninitialized.js | 2 +- ...acking-let-wont-prevent-osr-to-turbofan.js | 2 +- deps/v8/test/mjsunit/constant-folding-2.js | 6 +- deps/v8/test/mjsunit/d8/performance-mark.js | 67 +- deps/v8/test/mjsunit/d8/regress-420405289.js | 18 + deps/v8/test/mjsunit/default-nospec.js | 2 +- .../mjsunit/deopt-recursive-eager-once.js | 2 +- .../test/mjsunit/deopt-recursive-lazy-once.js | 2 +- .../test/mjsunit/deopt-recursive-soft-once.js | 2 +- deps/v8/test/mjsunit/deopt-unlinked.js | 2 +- deps/v8/test/mjsunit/deopt-with-fp-regs.js | 2 +- .../mjsunit/ensure-growing-store-learns.js | 2 +- deps/v8/test/mjsunit/equals-feedback.js | 61 +- deps/v8/test/mjsunit/es6/array-from.js | 7 +- .../test/mjsunit/es6/array-iterator-turbo.js | 2 +- .../mjsunit/es6/block-conflicts-sloppy.js | 1 - .../v8/test/mjsunit/es6/block-const-assign.js | 1 - .../mjsunit/es6/classes-subclass-builtins.js | 1 - ...of-array-iterator-optimization-baseline.js | 30 + ...of-array-iterator-optimization-ignition.js | 26 + ...r-of-array-iterator-optimization-maglev.js | 36 + ...of-array-iterator-optimization-turbofan.js | 39 + .../mjsunit/es6/iterator-call-lazy-deopt.js | 2 +- .../test/mjsunit/es6/iterator-eager-deopt.js | 2 +- .../mjsunit/es6/iterator-get-lazy-deopt.js | 2 +- .../mjsunit/es6/large-classes-properties.js | 1 - .../mjsunit/es6/super-ic-opt-no-turboprop.js | 2 +- deps/v8/test/mjsunit/es6/super-ic-opt.js | 2 +- .../throw-type-error-function-restrictions.js | 28 - deps/v8/test/mjsunit/es6/typedarray-proto.js | 38 +- deps/v8/test/mjsunit/field-type-tracking.js | 2 +- deps/v8/test/mjsunit/filter-element-kinds.js | 2 +- deps/v8/test/mjsunit/frozen-array-reduce.js | 12 +- deps/v8/test/mjsunit/function-bind.js | 4 - ...et-current-frame-optimization-status-01.js | 2 +- ...et-current-frame-optimization-status-02.js | 2 +- deps/v8/test/mjsunit/getters-on-elements.js | 2 +- .../base64-from-to-base64-null-option.js | 16 + ...rototype-to-hex-fill-with-maximum-value.js | 11 + .../modules-import-disallow-absolute-url.mjs | 15 + .../mjsunit/harmony/regexp-overriden-exec.js | 2 +- .../harmony/regress/regress-402863536.js | 2 +- .../harmony/regress/regress-416166113.js | 13 + .../harmony/regress/regress-416302802.js | 10 + .../harmony/regress/regress-418804470.js | 10 + .../harmony/regress/regress-421227542.js | 15 + .../harmony/regress/regress-436181695.js | 34 + .../harmony/regress/regress-437612640.js | 16 + .../harmony/regress/regress-440585463.js | 12 + .../mjsunit/harmony/regress/regress-912504.js | 11 - ...-set-from-base64-on-shared-array-buffer.js | 59 + ...ray-set-from-hex-on-shared-array-buffer.js | 59 + ...-array-to-base64-on-shared-array-buffer.js | 56 + ...nt8-array-to-hex-on-shared-array-buffer.js | 56 + .../weakrefs/clearkeptobjects-on-quit.js | 2 +- .../ignition/optimize-proto-assign-seq.js | 350 + .../v8/test/mjsunit/ignition/throw-if-hole.js | 2 +- .../mjsunit/ignition/throw-if-not-hole.js | 2 +- .../ignition/throw-super-not-called.js | 2 +- .../mjsunit/keyed-load-hole-to-undefined.js | 2 +- .../mjsunit/keyed-load-with-symbol-key.js | 2 +- .../mjsunit/load-store-address-hoisting.js | 27 + .../mjsunit/loadic-transition-elements.js | 41 + .../maglev/alias-materialized-objects.js | 2 +- .../v8/test/mjsunit/maglev/api-setter-poly.js | 2 +- deps/v8/test/mjsunit/maglev/api-setter.js | 2 +- .../maglev/array-prototype-at-holey.js | 17 + .../test/mjsunit/maglev/array-prototype-at.js | 30 + ...array-prototype-map-elements-kinds-dict.js | 2 +- .../array-prototype-map-elements-kinds.js | 2 +- .../mjsunit/maglev/array-prototype.slice.js | 35 + .../maglev/array-push-with-impossible-type.js | 2 +- ...nchifrootconstant-with-float64toboolean.js | 2 +- ...ranchifrootconstant-with-int32toboolean.js | 2 +- .../v8/test/mjsunit/maglev/call-js-runtime.js | 2 +- .../mjsunit/maglev/call-runtime-for-pair.js | 2 +- ...checkmaps-with-migration-and-deopt-mono.js | 2 +- ...heckmaps-with-migration-and-deopt-mono2.js | 2 +- ...checkmaps-with-migration-and-deopt-poly.js | 2 +- ...heckmaps-with-migration-and-deopt-poly2.js | 2 +- ...heckmaps-with-migration-and-deopt-poly3.js | 2 +- .../mjsunit/maglev/const-string-concat.js | 20 + .../constant-fold-uint-compared-to-zero.js | 13 + .../constant-typed-array-load-deopt-detach.js | 2 +- .../constant-typed-array-load-deopt-oob.js | 2 +- .../constant-typed-array-load-double.js | 2 +- .../constant-typed-array-load-no-rab-gsab.js | 2 +- .../constant-typed-array-load-signed.js | 2 +- .../constant-typed-array-load-unsigned.js | 2 +- ...constant-typed-array-store-deopt-detach.js | 2 +- .../constant-typed-array-store-deopt-oob.js | 2 +- .../constant-typed-array-store-double.js | 2 +- .../maglev/constant-typed-array-store-int.js | 2 +- .../constant-typed-array-store-no-rab-gsab.js | 2 +- ...ring-assignment-with-exclude-properties.js | 2 +- .../mjsunit/maglev/get-template-object.js | 2 +- deps/v8/test/mjsunit/maglev/int32-branch.js | 2 +- .../lazy-deopt-with-onstack-activation.js | 2 +- .../lazy-deopt-without-onstack-activation.js | 2 +- .../maglev/lda-global-inside-typeof.js | 2 +- deps/v8/test/mjsunit/maglev/lda-global.js | 2 +- .../maglev/lda-module-variable-import.mjs | 2 +- .../mjsunit/maglev/lda-module-variable.mjs | 2 +- ...d_mutable_heap_slot_context_specialized.js | 2 +- ...utable_heap_slot_no_context_specialized.js | 2 +- .../test/mjsunit/maglev/maglev-truncation.js | 151 + deps/v8/test/mjsunit/maglev/math-clz32.js | 102 + .../omit-default-ctors-array-iterator.js | 33 + .../maglev/phi-untagging-conversions.js | 10 +- deps/v8/test/mjsunit/maglev/poly-calls-1.js | 45 + deps/v8/test/mjsunit/maglev/poly-calls-2.js | 58 + .../mjsunit/maglev/poly-store-transition.js | 2 +- .../maglev/polymorphic-load-migration.js | 2 +- .../test/mjsunit/maglev/regress-377850462.js | 2 +- .../test/mjsunit/maglev/regress-389330329.js | 2 +- .../test/mjsunit/maglev/regress-390461961.js | 2 +- .../test/mjsunit/maglev/regress-390461961b.js | 2 +- .../test/mjsunit/maglev/regress-402646504.js | 2 +- .../test/mjsunit/maglev/regress-408571498.js | 2 +- .../test/mjsunit/maglev/regress-410867001.js | 23 + .../test/mjsunit/maglev/regress-414750469.js | 44 + .../test/mjsunit/maglev/regress-414840455.js | 20 + .../test/mjsunit/maglev/regress-415523530.js | 22 + .../test/mjsunit/maglev/regress-419744895.js | 15 + .../test/mjsunit/maglev/regress-421228426.js | 43 + .../test/mjsunit/maglev/regress-423955533.js | 20 + .../test/mjsunit/maglev/regress-423960608.js | 19 + .../test/mjsunit/maglev/regress-424242619.js | 19 + .../mjsunit/maglev/regress-425413843-arm.js | 15 + .../test/mjsunit/maglev/regress-425413843.js | 15 + .../test/mjsunit/maglev/regress-425862870.js | 14 + .../test/mjsunit/maglev/regress-425993931.js | 14 + .../test/mjsunit/maglev/regress-426157225.js | 19 + .../test/mjsunit/maglev/regress-426935233.js | 23 + .../test/mjsunit/maglev/regress-427531174.js | 21 + .../test/mjsunit/maglev/regress-429656023.js | 24 + .../test/mjsunit/maglev/regress-430125749.js | 17 + .../test/mjsunit/maglev/regress-431076739.js | 17 + .../test/mjsunit/maglev/regress-431665299.js | 16 + .../test/mjsunit/maglev/regress-432847895.js | 18 + .../test/mjsunit/maglev/regress-432850005.js | 40 + .../test/mjsunit/maglev/regress-434137272.js | 13 + .../test/mjsunit/maglev/regress-434513380.js | 23 + .../test/mjsunit/maglev/regress-434746094.js | 20 + .../test/mjsunit/maglev/regress-434890274.js | 25 + .../test/mjsunit/maglev/regress-435078639.js | 17 + .../test/mjsunit/maglev/regress-435225527.js | 24 + .../test/mjsunit/maglev/regress-435488292.js | 68 + .../test/mjsunit/maglev/regress-436778602.js | 26 + .../test/mjsunit/maglev/regress-437340619.js | 18 + .../test/mjsunit/maglev/regress-437528633.js | 23 + .../test/mjsunit/maglev/regress-440747136.js | 35 + .../test/mjsunit/maglev/regress-441567810.js | 36 + .../test/mjsunit/maglev/regress-442086665.js | 20 + .../mjsunit/maglev/regress/regress-1405651.js | 2 +- .../maglev/regress/regress-383019484.js | 2 +- .../maglev/regress/regress-421358433.js | 25 + .../maglev/regress/regress-421399963.js | 28 + .../maglev/regress/regress-421402742.js | 24 + .../maglev/regress/regress-421467453.js | 20 + .../maglev/regress/regress-437594852.js | 25 + .../maglev/regress/regress-437988690.js | 16 + .../maglev/regress/regress-crbug-1417386.js | 2 +- .../mjsunit/maglev/set-pending-message.js | 2 +- deps/v8/test/mjsunit/maglev/spill-double.js | 1 + .../mjsunit/maglev/sta-module-variable.mjs | 2 +- .../store-oddball-to-double-elements.js | 1 + ...e_mutable_heap_slot_context_specialized.js | 2 +- ...utable_heap_slot_no_context_specialized.js | 2 +- ...ct-equals-receiver-or-null-or-undefined.js | 2 +- deps/v8/test/mjsunit/maglev/string-compare.js | 2 +- .../maglev/string-or-oddball-compare.js | 97 + .../maglev/string-prototype-startsWith.js | 37 + .../mjsunit/maglev/string-wrapper-add-1.js | 2 +- .../mjsunit/maglev/string-wrapper-add-2.js | 2 +- .../mjsunit/maglev/string-wrapper-add-3.js | 2 +- deps/v8/test/mjsunit/maglev/string-wrapper.js | 77 + .../mjsunit/maglev/typed-array-length-abs.js | 2 +- .../maglev/typed-array-length-all-kinds.js | 2 +- .../typed-array-length-as-number-large.js | 2 +- .../maglev/typed-array-length-as-number.js | 2 +- .../maglev/typed-array-length-bitwise.js | 2 +- .../typed-array-length-branch-if-root.js | 2 +- ...-array-length-branch-if-to-boolean-true.js | 2 +- .../maglev/typed-array-length-custom-1a.js | 2 +- .../maglev/typed-array-length-custom-1b.js | 2 +- .../maglev/typed-array-length-custom-2a.js | 2 +- .../maglev/typed-array-length-custom-2b.js | 2 +- .../maglev/typed-array-length-deopt-large.js | 2 +- .../maglev/typed-array-length-deopt.js | 2 +- .../maglev/typed-array-length-detached-1.js | 2 +- .../maglev/typed-array-length-detached-2.js | 2 +- .../typed-array-length-exception-phi.js | 2 +- ...ped-array-length-index-into-array-large.js | 2 +- .../typed-array-length-index-into-array.js | 2 +- ...ray-length-index-into-typed-array-large.js | 2 +- ...ped-array-length-index-into-typed-array.js | 2 +- .../maglev/typed-array-length-parseint.js | 2 +- .../mjsunit/maglev/typed-array-length-phi.js | 2 +- .../maglev/typed-array-length-rab-gsab.js | 2 +- .../maglev/typed-array-length-round.js | 2 +- ...yped-array-length-store-as-uint8clamped.js | 2 +- ...ed-array-length-store-into-global-large.js | 2 +- .../typed-array-length-store-into-global.js | 2 +- ...array-length-store-script-context-large.js | 2 +- ...typed-array-length-store-script-context.js | 2 +- .../maglev/typed-array-length-to-boolean.js | 2 +- .../typed-array-length-to-number-large.js | 2 +- .../maglev/typed-array-length-to-number.js | 2 +- .../maglev/typedarray-resizablearraybuffer.js | 2 +- .../maglev/undefined-or-null-branch.js | 2 +- .../maglev/yes-deopt-deprecated-map.js | 45 - deps/v8/test/mjsunit/math-deopt.js | 2 +- deps/v8/test/mjsunit/mjsunit.js | 57 +- deps/v8/test/mjsunit/mjsunit.status | 280 +- deps/v8/test/mjsunit/never-optimize.js | 2 +- .../mjsunit/non-extensible-array-reduce.js | 10 +- deps/v8/test/mjsunit/noopt.js | 2 +- deps/v8/test/mjsunit/object-freeze.js | 15 +- .../test/mjsunit/object-prevent-extensions.js | 10 +- deps/v8/test/mjsunit/object-seal.js | 18 +- .../omit-default-ctors-array-iterator.js | 26 + deps/v8/test/mjsunit/optimized-array-every.js | 2 +- deps/v8/test/mjsunit/optimized-array-find.js | 2 +- .../test/mjsunit/optimized-array-findindex.js | 2 +- deps/v8/test/mjsunit/optimized-array-some.js | 2 +- deps/v8/test/mjsunit/optimized-filter.js | 2 +- deps/v8/test/mjsunit/optimized-map.js | 2 +- deps/v8/test/mjsunit/optimized-reduce.js | 2 +- deps/v8/test/mjsunit/optimized-reduceright.js | 2 +- .../test/mjsunit/optimized-string-includes.js | 2 +- deps/v8/test/mjsunit/promise-hooks.js | 2 +- .../string-wrapper-to-primitive-22.js | 2 +- .../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 | 2 +- deps/v8/test/mjsunit/readonly.js | 1 - .../regexp-duplicate-named-groups.js | 6 + deps/v8/test/mjsunit/regexp-experimental.js | 1 + deps/v8/test/mjsunit/regexp-global.js | 24 + deps/v8/test/mjsunit/regress-406332759.js | 20 + deps/v8/test/mjsunit/regress-408370964.js | 26 + deps/v8/test/mjsunit/regress-409911706.js | 37 + deps/v8/test/mjsunit/regress-411770057.js | 27 + deps/v8/test/mjsunit/regress-414738826.js | 19 + deps/v8/test/mjsunit/regress-415627214.js | 16 + deps/v8/test/mjsunit/regress-416179216.js | 14 + deps/v8/test/mjsunit/regress-416293771.js | 25 + deps/v8/test/mjsunit/regress-416442673.js | 20 + deps/v8/test/mjsunit/regress-417251443.js | 13 + deps/v8/test/mjsunit/regress-417385084.js | 30 + deps/v8/test/mjsunit/regress-417624826.js | 24 + deps/v8/test/mjsunit/regress-417768368.js | 36 + deps/v8/test/mjsunit/regress-418396718.js | 31 + deps/v8/test/mjsunit/regress-41882029.js | 10 + deps/v8/test/mjsunit/regress-419081101.js | 15 + deps/v8/test/mjsunit/regress-419099999.js | 27 + deps/v8/test/mjsunit/regress-419350536.js | 27 + deps/v8/test/mjsunit/regress-419601412.js | 28 + deps/v8/test/mjsunit/regress-419622700.js | 20 + deps/v8/test/mjsunit/regress-420198866.js | 18 + deps/v8/test/mjsunit/regress-420464880.js | 23 + deps/v8/test/mjsunit/regress-420740698.js | 32 + deps/v8/test/mjsunit/regress-420746766.js | 21 + deps/v8/test/mjsunit/regress-421329270.js | 25 + deps/v8/test/mjsunit/regress-421776794.js | 39 + deps/v8/test/mjsunit/regress-421801277.js | 26 + deps/v8/test/mjsunit/regress-422822350.js | 24 + deps/v8/test/mjsunit/regress-423674623.js | 24 + deps/v8/test/mjsunit/regress-432143539.js | 16 + deps/v8/test/mjsunit/regress-433687471.js | 25 + deps/v8/test/mjsunit/regress-433696407.js | 15 + deps/v8/test/mjsunit/regress-433817201.js | 27 + .../mjsunit/regress/asm/regress-618608.js | 2 +- deps/v8/test/mjsunit/regress/d8-readbuffer.js | 5 +- .../modules-skip-regress-crbug-424617296.js | 5 + .../test/mjsunit/regress/regress-1016450.js | 2 +- .../test/mjsunit/regress/regress-1034449.js | 2 +- .../test/mjsunit/regress/regress-1073440.js | 2 +- .../test/mjsunit/regress/regress-1112155.js | 2 +- .../test/mjsunit/regress/regress-1125871.js | 2 +- deps/v8/test/mjsunit/regress/regress-1129.js | 44 - .../test/mjsunit/regress/regress-1212583.js | 2 +- deps/v8/test/mjsunit/regress/regress-12359.js | 4 +- .../test/mjsunit/regress/regress-1371935.js | 2 +- .../test/mjsunit/regress/regress-1376930.js | 2 +- .../test/mjsunit/regress/regress-1385368.js | 10 - .../test/mjsunit/regress/regress-1400053.js | 2 +- .../test/mjsunit/regress/regress-1407070.js | 2 +- .../test/mjsunit/regress/regress-1442603.js | 3 +- deps/v8/test/mjsunit/regress/regress-1530.js | 2 - deps/v8/test/mjsunit/regress/regress-2132.js | 2 +- deps/v8/test/mjsunit/regress/regress-2618.js | 6 +- deps/v8/test/mjsunit/regress/regress-2989.js | 2 +- .../test/mjsunit/regress/regress-327247469.js | 2 +- .../v8/test/mjsunit/regress/regress-347914.js | 2 +- .../test/mjsunit/regress/regress-351926098.js | 2 +- .../test/mjsunit/regress/regress-353628445.js | 6 +- .../v8/test/mjsunit/regress/regress-354357.js | 4 +- .../test/mjsunit/regress/regress-366323469.js | 3 - .../test/mjsunit/regress/regress-366635361.js | 3 - .../test/mjsunit/regress/regress-367779587.js | 3 - deps/v8/test/mjsunit/regress/regress-3709.js | 2 +- .../test/mjsunit/regress/regress-377971738.js | 4 +- .../v8/test/mjsunit/regress/regress-385565.js | 2 +- .../test/mjsunit/regress/regress-390503430.js | 2 +- .../test/mjsunit/regress/regress-395053819.js | 11 + .../test/mjsunit/regress/regress-408820921.js | 20 + .../v8/test/mjsunit/regress/regress-410912.js | 2 +- deps/v8/test/mjsunit/regress/regress-4121.js | 2 +- .../test/mjsunit/regress/regress-41433527.js | 24 + .../test/mjsunit/regress/regress-414962716.js | 9 + .../test/mjsunit/regress/regress-416913840.js | 9 + .../test/mjsunit/regress/regress-417256364.js | 14 + .../test/mjsunit/regress/regress-417326263.js | 21 + .../test/mjsunit/regress/regress-417369007.js | 15 + .../test/mjsunit/regress/regress-417518228.js | 14 + .../test/mjsunit/regress/regress-417576784.js | 17 + .../test/mjsunit/regress/regress-418478214.js | 15 + .../test/mjsunit/regress/regress-419501740.js | 9 + .../test/mjsunit/regress/regress-420437007.js | 16 + .../test/mjsunit/regress/regress-421228429.js | 9 + .../test/mjsunit/regress/regress-421294586.js | 10 + .../test/mjsunit/regress/regress-422790252.js | 11 + .../test/mjsunit/regress/regress-422807508.js | 34 + .../test/mjsunit/regress/regress-422814957.js | 21 + .../test/mjsunit/regress/regress-422822324.js | 10 + .../test/mjsunit/regress/regress-423059192.js | 17 + .../test/mjsunit/regress/regress-423059201.js | 27 + .../test/mjsunit/regress/regress-424205788.js | 15 + .../test/mjsunit/regress/regress-424610540.js | 15 + .../test/mjsunit/regress/regress-424617297.js | 15 + .../test/mjsunit/regress/regress-424627229.js | 35 + .../test/mjsunit/regress/regress-424653424.js | 18 + .../test/mjsunit/regress/regress-425583995.js | 33 + .../test/mjsunit/regress/regress-426068809.js | 15 + .../test/mjsunit/regress/regress-426072098.js | 12 + .../test/mjsunit/regress/regress-426164362.js | 14 + .../test/mjsunit/regress/regress-426278969.js | 15 + .../test/mjsunit/regress/regress-426429660.js | 17 + .../test/mjsunit/regress/regress-426945831.js | 21 + .../test/mjsunit/regress/regress-428055720.js | 14 + .../test/mjsunit/regress/regress-428226995.js | 27 + .../test/mjsunit/regress/regress-429359014.js | 23 + .../test/mjsunit/regress/regress-429656013.js | 16 + .../test/mjsunit/regress/regress-430344952.js | 10 + .../test/mjsunit/regress/regress-430654948.js | 20 + .../test/mjsunit/regress/regress-431318220.js | 10 + .../test/mjsunit/regress/regress-432839080.js | 25 + .../test/mjsunit/regress/regress-433068894.js | 16 + .../test/mjsunit/regress/regress-437956096.js | 22 + .../test/mjsunit/regress/regress-438321229.js | 22 + .../test/mjsunit/regress/regress-438523582.js | 8 + .../test/mjsunit/regress/regress-438732677.js | 13 + .../test/mjsunit/regress/regress-440279755.js | 11 + .../test/mjsunit/regress/regress-440528038.js | 7 + .../v8/test/mjsunit/regress/regress-453481.js | 2 +- .../mjsunit/regress/regress-4578-deopt.js | 2 +- deps/v8/test/mjsunit/regress/regress-4578.js | 2 +- .../v8/test/mjsunit/regress/regress-476488.js | 4 +- deps/v8/test/mjsunit/regress/regress-4908.js | 7 - .../v8/test/mjsunit/regress/regress-543994.js | 4 +- deps/v8/test/mjsunit/regress/regress-5440.js | 2 +- .../v8/test/mjsunit/regress/regress-619382.js | 2 +- .../v8/test/mjsunit/regress/regress-632289.js | 2 +- .../v8/test/mjsunit/regress/regress-655573.js | 1 - .../test/mjsunit/regress/regress-681171-1.js | 13 - .../test/mjsunit/regress/regress-681171-2.js | 4 +- .../test/mjsunit/regress/regress-681171-3.js | 4 +- .../v8/test/mjsunit/regress/regress-7014-1.js | 2 +- .../v8/test/mjsunit/regress/regress-7014-2.js | 2 +- .../v8/test/mjsunit/regress/regress-722978.js | 4 +- .../v8/test/mjsunit/regress/regress-730254.js | 2 +- .../v8/test/mjsunit/regress/regress-772190.js | 10 - .../v8/test/mjsunit/regress/regress-818070.js | 2 +- .../v8/test/mjsunit/regress/regress-863155.js | 4 +- deps/v8/test/mjsunit/regress/regress-9002.js | 2 +- deps/v8/test/mjsunit/regress/regress-9441.js | 2 +- .../regress/regress-961709-classes-opt.js | 2 +- .../regress-assignment-in-test-context.js | 19 - ...binary-bitwise-bigint-smi-mix-opt-depot.js | 2 +- .../regress/regress-bind-deoptimize.js | 2 +- .../mjsunit/regress/regress-charat-empty.js | 2 +- .../regress/regress-chromium-1409294.js | 3 +- .../mjsunit/regress/regress-crbug-1002628.js | 22 - .../mjsunit/regress/regress-crbug-1004037.js | 4 +- .../mjsunit/regress/regress-crbug-1057653.js | 2 +- .../mjsunit/regress/regress-crbug-1171954.js | 19 - .../mjsunit/regress/regress-crbug-1249941.js | 2 +- .../mjsunit/regress/regress-crbug-1259902.js | 4 +- .../mjsunit/regress/regress-crbug-1407080.js | 2 +- .../mjsunit/regress/regress-crbug-1408310.js | 3 +- .../mjsunit/regress/regress-crbug-1415249.js | 3 +- .../mjsunit/regress/regress-crbug-245480.js | 3 +- .../regress/regress-crbug-413161347.js | 21 + .../regress/regress-crbug-413633048.js | 17 + .../regress/regress-crbug-418520151.js | 17 + .../regress/regress-crbug-419454582.js | 13 + .../regress/regress-crbug-421524001.js | 24 + .../regress/regress-crbug-422638093.js | 15 + .../regress/regress-crbug-422706696.js | 15 + .../regress/regress-crbug-424617296-1.js | 19 + .../regress/regress-crbug-424617296-2.js | 19 + .../mjsunit/regress/regress-crbug-431602.js | 3 +- .../mjsunit/regress/regress-crbug-467531.js | 25 - .../mjsunit/regress/regress-crbug-480807.js | 3 +- .../mjsunit/regress/regress-crbug-480819.js | 10 - .../mjsunit/regress/regress-crbug-493284.js | 2 +- .../mjsunit/regress/regress-crbug-500497.js | 2 +- .../mjsunit/regress/regress-crbug-594183.js | 2 +- .../mjsunit/regress/regress-crbug-608279.js | 3 +- .../mjsunit/regress/regress-crbug-609029.js | 7 - .../mjsunit/regress/regress-crbug-617524.js | 3 +- .../mjsunit/regress/regress-crbug-630952.js | 4 +- .../mjsunit/regress/regress-crbug-633585.js | 3 +- .../mjsunit/regress/regress-crbug-644111.js | 6 +- .../mjsunit/regress/regress-crbug-644631.js | 4 +- .../regress/regress-crbug-651403-global.js | 4 +- .../mjsunit/regress/regress-crbug-651403.js | 4 +- .../regress/regress-crbug-652186-global.js | 8 - .../regress/regress-crbug-652186-local.js | 4 +- .../mjsunit/regress/regress-crbug-691687.js | 4 +- .../mjsunit/regress/regress-crbug-768158.js | 2 +- .../mjsunit/regress/regress-crbug-808192.js | 1 - .../mjsunit/regress/regress-crbug-941743.js | 1 - .../mjsunit/regress/regress-crbug-980529.js | 2 +- .../regress/regress-embedded-cons-string.js | 2 +- .../regress-fast-literal-transition.js | 4 +- .../regress-trap-allocation-memento.js | 3 +- .../regress-unlink-closures-on-deopt.js | 3 +- .../test/mjsunit/regress/regress-v8-12194.js | 2 +- .../mjsunit/regress/wasm/regress-02256.js | 2 +- .../mjsunit/regress/wasm/regress-02256b.js | 2 +- .../mjsunit/regress/wasm/regress-02862.js | 2 +- .../mjsunit/regress/wasm/regress-11024.js | 8 +- .../mjsunit/regress/wasm/regress-12874.js | 2 +- .../mjsunit/regress/wasm/regress-347961785.js | 2 +- .../mjsunit/regress/wasm/regress-366635354.js | 2 +- .../mjsunit/regress/wasm/regress-369652650.js | 1 + .../mjsunit/regress/wasm/regress-382816108.js | 1 + .../regress/wasm/regress-388934347-a.js | 1 + .../mjsunit/regress/wasm/regress-413633038.js | 15 + .../mjsunit/regress/wasm/regress-413963387.js | 22 + .../mjsunit/regress/wasm/regress-415062511.js | 15 + .../mjsunit/regress/wasm/regress-421055121.js | 29 + .../mjsunit/regress/wasm/regress-422599248.js | 20 + .../mjsunit/regress/wasm/regress-422639603.js | 28 + .../mjsunit/regress/wasm/regress-422892154.js | 16 + .../mjsunit/regress/wasm/regress-426164352.js | 18 + .../mjsunit/regress/wasm/regress-431542997.js | 56 + .../mjsunit/regress/wasm/regress-433809112.js | 15 + .../mjsunit/regress/wasm/regress-433984397.js | 31 + .../mjsunit/regress/wasm/regress-434008619.js | 36 + .../mjsunit/regress/wasm/regress-435301441.js | 30 + .../mjsunit/regress/wasm/regress-435315689.js | 43 + .../mjsunit/regress/wasm/regress-436362279.js | 54 + .../mjsunit/regress/wasm/regress-436937141.js | 22 + .../mjsunit/regress/wasm/regress-439772737.js | 16 + .../mjsunit/regress/wasm/regress-441131191.js | 22 + .../mjsunit/regress/wasm/regress-441221187.js | 52 + .../mjsunit/regress/wasm/regress-445870128.js | 32 + .../mjsunit/regress/wasm/regress-647649.js | 2 +- .../test/mjsunit/regress/wasm/regress-7785.js | 10 +- .../mjsunit/regress/wasm/regress-808848.js | 6 +- .../mjsunit/regress/wasm/regress-808980.js | 7 +- .../mjsunit/regress/wasm/regress-813440.js | 2 +- .../test/mjsunit/regress/wasm/regress-8533.js | 84 - .../test/mjsunit/regress/wasm/regress-8896.js | 5 +- .../mjsunit/regress/wasm/regress-985154.js | 2 +- .../mjsunit/sandbox/memory-corruption-api.js | 20 + .../test/mjsunit/sandbox/regress-427918760.js | 92 + .../test/mjsunit/sandbox/regress-430960844.js | 86 + .../test/mjsunit/sandbox/regress-431970772.js | 11 + .../mjsunit/sandbox/regress-432289371-b.js | 102 + .../test/mjsunit/sandbox/regress-432289371.js | 77 + .../test/mjsunit/sandbox/regress-435630467.js | 49 + .../sandbox/regress/regress-379418918.js | 2 +- .../sandbox/regress/regress-381999810.js | 4 - .../sandbox/regress/regress-40070746.js | 14 +- .../sandbox/regress/regress-420637585.js | 37 + .../sandbox/regress/regress-440589876.js | 23 + .../sandbox/regress/regress-440589880.js | 23 + .../sandbox/wasm-jspi-corrupt-suspender.js | 35 + .../mjsunit/sandbox/wasm-jspi-no-crash.js | 47 + deps/v8/test/mjsunit/sandbox/wasm-jspi.js | 49 + deps/v8/test/mjsunit/sealed-array-reduce.js | 12 +- deps/v8/test/mjsunit/setters-on-elements.js | 2 +- .../mjsunit/shared-function-tier-up-turbo.js | 5 +- deps/v8/test/mjsunit/shift-for-integer-div.js | 2 +- deps/v8/test/mjsunit/smi-mul-const.js | 3 +- deps/v8/test/mjsunit/smi-mul.js | 3 +- ...e_mutable_heap_slot_context_specialized.js | 2 +- deps/v8/test/mjsunit/strict-mode.js | 10 +- .../mjsunit/string-add-date-to-primitive.js | 80 + deps/v8/test/mjsunit/string-add-edge-cases.js | 96 + .../mjsunit/string-add-symbol-to-primitive.js | 55 + .../mjsunit/string-add-with-custom-valueof.js | 61 + deps/v8/test/mjsunit/string-deopt.js | 2 +- deps/v8/test/mjsunit/string-wrapper-add-1.js | 2 +- deps/v8/test/mjsunit/string-wrapper-add-2.js | 2 +- deps/v8/test/mjsunit/string-wrapper-add-3.js | 2 +- deps/v8/test/mjsunit/testcfg.py | 9 +- deps/v8/test/mjsunit/tools/foozzie.js | 149 +- .../mjsunit/tools/foozzie_arch_specific.js | 6 +- .../v8/test/mjsunit/tools/foozzie_printing.js | 247 + .../constant-typed-array-load-deopt-detach.js | 2 +- .../constant-typed-array-load-deopt-oob.js | 2 +- .../constant-typed-array-load-double.js | 2 +- .../constant-typed-array-load-no-rab-gsab.js | 2 +- .../constant-typed-array-load-signed.js | 2 +- .../constant-typed-array-load-unsigned.js | 2 +- ...constant-typed-array-store-deopt-detach.js | 2 +- .../constant-typed-array-store-deopt-oob.js | 2 +- .../constant-typed-array-store-double.js | 2 +- .../constant-typed-array-store-int.js | 2 +- .../constant-typed-array-store-no-rab-gsab.js | 2 +- .../mjsunit/turbolev/regress-411802156.js | 29 + .../mjsunit/turbolev/regress-423050527.js | 26 + .../mjsunit/turbolev/regress-430335251.js | 28 + .../mjsunit/turbolev/regress-432520541.js | 22 + .../mjsunit/turbolev/regress-441327847.js | 28 + ...checkmaps-with-migration-and-deopt-mono.js | 2 +- ...heckmaps-with-migration-and-deopt-mono2.js | 2 +- ...checkmaps-with-migration-and-deopt-poly.js | 2 +- ...heckmaps-with-migration-and-deopt-poly2.js | 2 +- ...heckmaps-with-migration-and-deopt-poly3.js | 2 +- .../maglev-frontend/array-buffer-detached.js | 1 - .../array-holey-double-load.js | 1 - ...ototype-map-array-constructor-protector.js | 2 +- ...array-prototype-map-elements-kinds-dict.js | 2 +- .../array-prototype-map-elements-kinds.js | 47 +- .../char-code-at-uint32max-deopt.js | 1 - .../maglev-frontend/check-float64-is-nan.js | 1 - .../maglev-frontend/const-tracking-let.js | 2 +- .../maglev-frontend/dematerialized-regexp.js | 1 - .../maglev-frontend/deopt-raw-float-int32.js | 1 - .../maglev-frontend/holey-array-load.js | 1 - .../maglev-frontend/holey-float64-deopt.js | 1 - .../holey-float64-phi-deopt.js | 1 - .../holey-float64-phi-to-smi.js | 2 +- .../maglev-frontend/int32-compare.js | 1 - .../javascript-builtin-continuation.js | 1 - .../maglev-frontend/js-call-lazy-deopt.js | 1 - .../lazy-deopt-multi-return.js | 1 - .../load-arr-with-float64-index.js | 1 - .../maglev-frontend/load-const-string-key.js | 1 - .../maglev-frontend/map-migration.js | 1 - .../turboshaft/maglev-frontend/math-atan2.js | 21 + .../turboshaft/maglev-frontend/math-pow.js | 21 + .../turboshaft/maglev-frontend/math-round.js | 1 - .../turboshaft/maglev-frontend/math-sqrt.js | 26 + .../turboshaft/maglev-frontend/new-array.js | 1 - .../maglev-frontend/new-obj-deopt.js | 1 - .../turboshaft/maglev-frontend/new-obj.js | 1 - .../over-under-application-inline.js | 1 - .../maglev-frontend/regress-356901359.js | 1 - .../maglev-frontend/regress-379207983.js | 2 +- .../maglev-frontend/set-prototype-has.js | 2 +- .../turboshaft/maglev-frontend/smi-arith.js | 1 - .../store-float-to-smi-field.js | 1 - .../maglev-frontend/store-jsarray.js | 5 +- .../store-uint32-to-smi-field.js | 1 - .../turboshaft/maglev-frontend/string-cmp.js | 1 - .../maglev-frontend/string-concat-throw.js | 1 - .../string-or-oddball-compare.js | 96 + .../turboshaft/maglev-frontend/symbol-eq.js | 1 - .../maglev-frontend/tagged-equal.js | 1 - .../maglev-frontend/test-undetectable.js | 1 - .../turboshaft/maglev-frontend/throw.js | 1 - .../maglev-frontend/to-number-int32-phi.js | 1 - .../turboshaft/maglev-frontend/to-number.js | 1 - .../typed-array-length-all-kinds.js | 2 +- .../typed-array-length-as-number-large.js | 2 +- .../typed-array-length-as-number.js | 2 +- ...-array-length-branch-if-to-boolean-true.js | 2 +- .../typed-array-length-deopt-large.js | 2 +- .../typed-array-length-deopt.js | 2 +- .../typed-array-length-exception-phi.js | 2 +- ...ped-array-length-index-into-array-large.js | 2 +- .../typed-array-length-index-into-array.js | 2 +- ...ray-length-index-into-typed-array-large.js | 2 +- ...ped-array-length-index-into-typed-array.js | 2 +- .../typed-array-length-iteration-large.js | 2 +- .../typed-array-length-iteration.js | 2 +- .../maglev-frontend/typed-array-length-phi.js | 2 +- .../typed-array-length-rab-gsab.js | 2 +- ...ed-array-length-store-into-global-large.js | 2 +- .../typed-array-length-store-into-global.js | 2 +- ...array-length-store-script-context-large.js | 2 +- ...typed-array-length-store-script-context.js | 2 +- .../typed-array-length-to-boolean.js | 2 +- .../typed-array-length-to-number-large.js | 2 +- .../typed-array-length-to-number.js | 2 +- .../turboshaft/maglev-frontend/uint32-conv.js | 1 - .../maglev-frontend/unconditional-deopt.js | 1 - .../maglev-frontend/write-const-glob.js | 1 - ...e-in-bounds-after-exhausted-in-function.js | 35 + .../make-in-bounds-after-exhausted.js | 62 + .../make-out-of-bounds-after-exhausted.js | 54 + .../mjsunit/turboshaft/regress-380487911.js | 2 +- .../mjsunit/turboshaft/regress-382135577.js | 2 +- .../mjsunit/turboshaft/regress-419503126.js | 31 + .../mjsunit/turboshaft/regress-425754604.js | 36 + .../mjsunit/turboshaft/regress-438523769.js | 26 + ...ct-equals-receiver-or-null-or-undefined.js | 2 +- ...tring-escape-analysis-exponential-state.js | 2 +- deps/v8/test/mjsunit/unary-minus-deopt.js | 2 +- .../test/mjsunit/unary-op-throws-feedback.js | 2 +- deps/v8/test/mjsunit/undefined-double.js | 249 + .../mjsunit/wasm/array-bulk-operations.js | 2 +- deps/v8/test/mjsunit/wasm/bigint-opt.js | 2 +- .../test/mjsunit/wasm/bigint-rematerialize.js | 2 +- .../wasm/code-flushing-single-isolate.js | 4 +- .../compilation-hints-async-compilation.js | 76 - .../mjsunit/wasm/compilation-hints-decoder.js | 162 - .../mjsunit/wasm/compilation-hints-ignored.js | 21 - .../wasm/compilation-hints-lazy-validation.js | 38 - .../mjsunit/wasm/compilation-hints-no-lazy.js | 27 - ...compilation-hints-streaming-compilation.js | 130 - ...ilation-hints-streaming-lazy-validation.js | 33 - .../compilation-hints-sync-compilation.js | 67 - .../compilation-hints/compilation-priority.js | 49 + .../wasm/compiled-module-management.js | 6 + .../wasm/compiled-module-serialization.js | 53 +- .../mjsunit/wasm/custom-descriptors-casts.js | 136 + .../wasm/custom-descriptors-inlining.js | 103 + .../wasm/custom-descriptors-proxies.js | 287 + .../custom-descriptors-regress-421221628.js | 51 + .../test/mjsunit/wasm/custom-descriptors.js | 167 +- .../wasm/deopt/deopt-serialized-module.js | 4 +- .../wasm/deopt/deopt-signal-handler.js | 3 - deps/v8/test/mjsunit/wasm/gc-casts-exnref.js | 2 +- deps/v8/test/mjsunit/wasm/gc-casts-invalid.js | 8 +- .../wasm/gc-js-interop-async-debugger.js | 2 +- .../test/mjsunit/wasm/gc-js-interop-async.js | 2 +- .../mjsunit/wasm/gc-js-interop-collections.js | 2 +- .../wasm/gc-js-interop-global-constructors.js | 2 +- .../mjsunit/wasm/gc-js-interop-helpers.js | 2 +- .../mjsunit/wasm/gc-js-interop-import.mjs | 2 +- .../mjsunit/wasm/gc-js-interop-numeric.js | 2 +- .../mjsunit/wasm/gc-js-interop-objects.js | 2 +- .../test/mjsunit/wasm/gc-js-interop-wasm.js | 2 +- deps/v8/test/mjsunit/wasm/gc-js-interop.js | 2 +- .../mjsunit/wasm/gc-optimization-array-get.js | 2 +- deps/v8/test/mjsunit/wasm/gc-optimizations.js | 2 +- .../mjsunit/wasm/generate-random-module.js | 5 +- deps/v8/test/mjsunit/wasm/growable-stacks.js | 50 +- deps/v8/test/mjsunit/wasm/half-shuffles.js | 313 + .../mjsunit/wasm/imported-strings-invalid.js | 6 +- deps/v8/test/mjsunit/wasm/inlining.js | 10 +- ...ing-conditional.js => jspi-conditional.js} | 2 +- ...ack-switching-export.js => jspi-export.js} | 0 ...ric-wrapper.js => jspi-generic-wrapper.js} | 2 +- ...itching-init-safe.js => jspi-init-safe.js} | 0 ...itching-no-stress.js => jspi-no-stress.js} | 8 +- ...k-switching-notraps.js => jspi-notraps.js} | 0 deps/v8/test/mjsunit/wasm/jspi.js | 653 + .../test/mjsunit/wasm/memory-copy-inline.js | 603 + .../test/mjsunit/wasm/memory-copy-outline.js | 325 + .../test/mjsunit/wasm/memory-fill-inline.js | 201 + .../test/mjsunit/wasm/memory-fill-outline.js | 138 + .../memory-toresizable-max-byte-length.js | 20 + deps/v8/test/mjsunit/wasm/print-code.js | 7 +- .../serialization-with-compilation-hints.js | 51 - .../mjsunit/wasm/serialize-lazy-module.js | 11 +- .../array-atomic-rmw-load-elimination.js | 24 + .../shared-everything/atomic-instructions.js | 1034 + .../mjsunit/wasm/shared-everything/basic.js | 15 +- .../gc-casts-shared-to-unshared.js | 297 + .../gc-casts-subtypes-shared.js | 985 + .../heapnumber-conversion.js | 82 + .../not-shared-everything.js | 26 + .../shared-extended-instructions.js | 236 + .../wasm/shared-everything/spin-lock.js | 123 + deps/v8/test/mjsunit/wasm/shuffles.js | 80 + deps/v8/test/mjsunit/wasm/stack-switching.js | 673 +- deps/v8/test/mjsunit/wasm/stack.js | 18 +- .../wasm/test-partial-serialization.js | 4 +- ...est-serialization-with-lazy-compilation.js | 6 +- .../turboshaft/regress-crbug-420998402.js | 27 + .../test/mjsunit/wasm/wasm-code-coverage.js | 840 + .../wasm/wasm-gc-inlining-load-elimination.js | 2 +- .../mjsunit/wasm/wasm-gc-inlining-nested.js | 2 +- .../wasm/wasm-gc-inlining-stacktrace-api.js | 2 +- deps/v8/test/mjsunit/wasm/wasm-gc-inlining.js | 2 +- deps/v8/test/mjsunit/wasm/wasm-interpreter.js | 58 + .../wasm/wasm-js-inlining-code-reloc.js | 2 +- .../test/mjsunit/wasm/wasm-module-builder.js | 174 +- .../test/mjsunit/wasm/wasm-null-intrinsic.js | 17 - .../test/mjsunit/wasm/wasm-to-js-i32-cond.js | 46 + .../mjsunit/wasm/wasm-wrapper-inlining.js | 2 +- deps/v8/test/mkgrokdump/mkgrokdump.cc | 4 +- deps/v8/test/mozilla/mozilla.status | 4 +- deps/v8/test/test262/OWNERS | 4 +- .../local-tests/test/staging/features.txt | 28 +- deps/v8/test/test262/test262.status | 1768 +- deps/v8/test/test262/testcfg.py | 31 +- deps/v8/test/torque/test-torque.tq | 8 + deps/v8/test/unittests/BUILD.gn | 37 +- .../test/unittests/api/accessor-unittest.cc | 10 +- .../test/unittests/api/api-wasm-unittest.cc | 48 +- .../unittests/api/deserialize-unittest.cc | 208 +- .../unittests/api/gc-callbacks-unittest.cc | 2 +- .../unittests/api/interceptor-unittest.cc | 5 +- .../api/resource-constraints-unittest.cc | 30 +- .../test/unittests/api/v8-array-unittest.cc | 80 + .../unittests/api/v8-memory-span-unittest.cc | 55 + .../assembler/disasm-arm64-unittest.cc | 32 + .../assembler/disasm-ppc-unittest.cc | 2 +- .../assembler/disasm-riscv-unittest.cc | 55 +- .../assembler/disasm-x64-unittest.cc | 221 +- .../assembler/macro-assembler-x64-unittest.cc | 204 +- .../test/unittests/base/iterator-unittest.cc | 2 +- .../base/region-allocator-unittest.cc | 26 + .../unittests/base/small-vector-unittest.cc | 95 +- .../unittests/codegen/code-pages-unittest.cc | 9 + .../codegen/code-stub-assembler-unittest.h | 2 +- .../common/thread-isolation-unittest.cc | 21 +- .../optimizing-compile-dispatcher-unittest.cc | 3 +- ...aft-instruction-selector-arm64-unittest.cc | 1421 +- .../backend/instruction-selector-unittest.cc | 3 +- ...urboshaft-instruction-selector-unittest.cc | 7 +- ...turboshaft-instruction-selector-unittest.h | 11 +- .../unittests/compiler/codegen-unittest.cc | 2 +- .../compiler/common-operator-unittest.cc | 3 +- .../unittests/compiler/compiler-unittest.cc | 34 +- .../compiler/csa-load-elimination-unittest.cc | 153 - .../compiler/graph-reducer-unittest.cc | 4 +- .../test/unittests/compiler/graph-unittest.cc | 3 +- .../compiler/linear-scheduler-unittest.cc | 5 +- .../compiler/linkage-tail-call-unittest.cc | 2 +- .../unittests/compiler/linkage-unittest.cc | 172 + .../compiler/node-properties-unittest.cc | 2 +- .../unittests/compiler/node-test-utils.cc | 25 +- .../test/unittests/compiler/node-unittest.cc | 2 +- .../test/unittests/compiler/revec-unittest.cc | 6 +- ...t-instruction-selector-riscv64-unittest.cc | 3 +- .../run-bytecode-graph-builder-unittest.cc | 1 - .../compiler/run-stackcheck-unittest.cc | 21 + .../compiler/run-unwinding-info-unittest.cc} | 35 +- .../compiler/run-variables-unittest.cc | 127 + .../unittests/compiler/schedule-unittest.cc | 2 +- .../unittests/compiler/scheduler-unittest.cc | 6 +- .../simplified-operator-reducer-unittest.cc | 7 +- .../compiler/simplified-operator-unittest.cc | 3 +- .../compiler/sloppy-equality-unittest.cc | 1 - .../late-load-elimination-reducer-unittest.cc | 150 +- .../load-store-address-hoisting-unittest.cc | 189 + .../loop-unrolling-analyzer-unittest.cc | 8 +- .../compiler/turboshaft/reducer-test.h | 44 +- .../wasm-shuffle-reducer-unittest.cc | 61 +- .../value-numbering-reducer-unittest.cc | 4 +- .../deoptimizer/deoptimization-unittest.cc | 245 +- .../execution/pointer-auth-arm64-unittest.cc | 8 +- .../execution/thread-termination-unittest.cc | 4 +- .../unified-heap-snapshot-unittest.cc | 66 +- .../heap/cppgc-js/unified-heap-utils.cc | 13 +- .../heap/cppgc/custom-spaces-unittest.cc | 2 +- .../heap/cppgc/finalizer-trait-unittest.cc | 4 +- .../unittests/heap/cppgc/gc-info-unittest.cc | 91 +- .../unittests/heap/cppgc/logging-unittest.cc | 2 - .../heap/cppgc/persistent-family-unittest.cc | 30 +- .../unittests/heap/cppgc/platform-unittest.cc | 2 +- .../heap/cppgc/source-location-unittest.cc | 20 +- .../unittests/heap/direct-handles-unittest.cc | 58 +- .../heap/global-safepoint-unittest.cc | 1 + .../unittests/heap/heap-allocator-unittest.cc | 2 +- .../heap/heap-controller-unittest.cc | 21 +- deps/v8/test/unittests/heap/heap-unittest.cc | 287 +- .../heap/inner-pointer-resolution-unittest.cc | 18 +- .../unittests/heap/local-factory-unittest.cc | 14 +- .../unittests/heap/local-heap-unittest.cc | 39 +- deps/v8/test/unittests/heap/pool-unittest.cc | 4 +- .../unittests/heap/shared-heap-unittest.cc | 9 +- .../v8/test/unittests/heap/spaces-unittest.cc | 99 +- .../unittests/heap/write-barrier-unittest.cc | 84 + .../bytecode-array-builder-unittest.cc | 38 +- .../bytecode-expectations-printer.cc | 4 +- .../bytecode-generator-unittest.cc | 2 +- .../AsyncGenerators.golden | 98 +- .../bytecode_expectations/AsyncModules.golden | 16 +- .../ElideRedundantHoleChecks.golden | 62 +- .../bytecode_expectations/ForAwaitOf.golden | 346 +- .../bytecode_expectations/ForIn.golden | 16 +- .../bytecode_expectations/ForOf.golden | 242 +- .../bytecode_expectations/ForOfLoop.golden | 581 +- .../bytecode_expectations/Generators.golden | 87 +- .../bytecode_expectations/Modules.golden | 75 +- .../PrivateAccessorAccess.golden | 8 +- .../PrivateMethodAccess.golden | 4 +- .../StaticPrivateMethodAccess.golden | 30 +- .../WideRegisters.golden | 4 +- .../constant-array-builder-unittest.cc | 8 +- .../generate-bytecode-expectations.cc | 4 +- .../interpreter-assembler-unittest.h | 2 +- .../interpreter/interpreter-tester.cc | 1 - .../interpreter/interpreter-unittest.cc | 8 +- .../interpreter/source-positions-unittest.cc | 1 - .../unittests/libsampler/sampler-unittest.cc | 8 +- .../v8/test/unittests/logging/log-unittest.cc | 6 +- .../maglev/maglev-assembler-unittest.cc | 2 +- deps/v8/test/unittests/maglev/maglev-test.cc | 3 +- .../unittests/maglev/node-type-unittest.cc | 53 +- .../objects/feedback-vector-unittest.cc | 19 +- .../objects/global-object-unittest.cc | 4 +- .../test/unittests/objects/intl-unittest.cc | 55 +- .../unittests/objects/modules-unittest.cc | 14 +- .../test/unittests/objects/object-unittest.cc | 127 +- .../test/unittests/objects/roots-unittest.cc | 6 +- .../objects/weakarraylist-unittest.cc | 4 +- .../test/unittests/parser/decls-unittest.cc | 8 +- .../parser/parse-decision-unittest.cc | 10 +- .../test/unittests/parser/parsing-unittest.cc | 2 +- .../unittests/parser/preparser-unittest.cc | 7 +- .../parser/scanner-streams-unittest.cc | 22 +- .../profiler/heap-snapshot-unittest.cc | 43 + .../test/unittests/regexp/regexp-unittest.cc | 93 +- deps/v8/test/unittests/run-all-unittests.cc | 5 + .../sandbox-hardware-support-unittest.cc | 210 + .../temporal/temporal-parser-unittest.cc | 2276 -- deps/v8/test/unittests/test-helpers.cc | 2 +- deps/v8/test/unittests/test-utils.h | 6 +- deps/v8/test/unittests/testcfg.py | 15 +- .../test/unittests/torque/torque-unittest.cc | 1 - deps/v8/test/unittests/unittests.status | 70 +- .../unittests/utils/allocation-unittest.cc | 46 +- .../wasm/basic-block-calculator-unittest.cc | 689 + .../cross-compiler-determinism-fuzztest.cc | 349 + .../wasm/function-body-decoder-unittest.cc | 487 +- .../wasm/memory-protection-unittest.cc | 9 + .../unittests/wasm/module-decoder-unittest.cc | 508 +- .../wasm/module-generation-fuzztest.cc | 113 + .../unittests/wasm/simd-shuffle-unittest.cc | 146 +- .../unittests/wasm/struct-types-unittest.cc | 36 +- .../test/unittests/wasm/subtyping-unittest.cc | 1212 +- .../wasm/trap-handler-native-unittest.cc | 218 +- .../wasm/trap-handler-posix-unittest.cc | 12 +- .../wasm/trap-handler-simulator-unittest.cc | 181 +- .../wasm/trap-handler-win-unittest.cc | 3 +- .../wasm/type-canonicalization-fuzztest.cc | 374 +- ...embler-unittest-shared-everything.wasm.inc | 29 + ...sembler-unittest-shared-everything.wat.inc | 14 + .../wasm/wasm-disassembler-unittest.cc | 10 + .../unittests/wasm/wasm-gdbserver-unittest.cc | 1 + .../wasm-api-tests/run-all-wasm-api-tests.cc | 1 + .../wasm-spec-tests/wasm-spec-tests.status | 10 +- .../fast/js/basic-strict-mode-expected.txt | 8 +- .../test/webkit/fast/js/basic-strict-mode.js | 6 +- deps/v8/test/webkit/testcfg.py | 11 +- .../abseil-cpp/.clang-format-ignore | 2 + deps/v8/third_party/abseil-cpp/BUILD.gn | 44 +- .../abseil-cpp/CMake/AbseilDll.cmake | 15 +- deps/v8/third_party/abseil-cpp/MODULE.bazel | 10 +- deps/v8/third_party/abseil-cpp/OWNERS | 2 +- .../v8/third_party/abseil-cpp/README.chromium | 3 +- .../abseil-cpp/absl/abseil.podspec.gen.py | 1 + .../abseil-cpp/absl/algorithm/BUILD.bazel | 4 +- .../abseil-cpp/absl/algorithm/BUILD.gn | 2 +- .../abseil-cpp/absl/algorithm/CMakeLists.txt | 2 +- .../abseil-cpp/absl/algorithm/container.h | 22 +- .../absl/algorithm/container_test.cc | 15 +- .../abseil-cpp/absl/base/BUILD.bazel | 6 +- .../third_party/abseil-cpp/absl/base/BUILD.gn | 1 - .../abseil-cpp/absl/base/CMakeLists.txt | 2 - .../abseil-cpp/absl/base/attributes.h | 2 +- .../third_party/abseil-cpp/absl/base/config.h | 22 +- .../absl/base/internal/low_level_alloc.cc | 37 +- .../absl/base/internal/low_level_alloc.h | 6 + .../base/internal/nullability_deprecated.h | 106 - .../abseil-cpp/absl/base/internal/poison.cc | 13 +- .../abseil-cpp/absl/base/internal/spinlock.cc | 34 +- .../abseil-cpp/absl/base/internal/spinlock.h | 86 +- .../absl/base/internal/spinlock_benchmark.cc | 4 +- .../absl/base/internal/sysinfo_test.cc | 2 +- .../base/internal/thread_identity_test.cc | 8 +- .../absl/base/internal/unscaledcycleclock.cc | 4 + .../abseil-cpp/absl/base/nullability.h | 1 - .../abseil-cpp/absl/base/nullability_test.cc | 116 - .../absl/base/spinlock_test_common.cc | 80 +- .../abseil-cpp/absl/cleanup/BUILD.bazel | 2 + .../abseil-cpp/absl/container/BUILD.bazel | 22 + .../abseil-cpp/absl/container/BUILD.gn | 4 + .../abseil-cpp/absl/container/CMakeLists.txt | 19 + .../abseil-cpp/absl/container/btree_map.h | 8 +- .../abseil-cpp/absl/container/btree_set.h | 8 +- .../abseil-cpp/absl/container/fixed_array.h | 3 +- .../abseil-cpp/absl/container/flat_hash_map.h | 30 +- .../absl/container/flat_hash_map_test.cc | 9 - .../abseil-cpp/absl/container/flat_hash_set.h | 26 +- .../absl/container/flat_hash_set_test.cc | 14 + .../absl/container/inlined_vector.h | 14 +- .../absl/container/inlined_vector_test.cc | 19 + .../container/internal/compressed_tuple.h | 52 +- .../internal/compressed_tuple_test.cc | 7 +- .../container/internal/container_memory.h | 78 +- .../internal/container_memory_test.cc | 34 +- .../internal/hash_function_defaults.h | 21 +- .../internal/hash_function_defaults_test.cc | 53 +- .../internal/hash_generator_testing.cc | 40 +- .../internal/hash_generator_testing.h | 45 +- .../container/internal/hash_policy_testing.h | 6 +- .../container/internal/hash_policy_traits.h | 30 +- .../internal/hash_policy_traits_test.cc | 23 +- .../internal/hashtable_control_bytes.h | 43 +- .../internal/hashtable_control_bytes_test.cc | 259 + .../container/internal/hashtablez_sampler.cc | 5 +- .../container/internal/hashtablez_sampler.h | 2 +- .../internal/hashtablez_sampler_test.cc | 16 +- .../absl/container/internal/raw_hash_set.cc | 943 +- .../absl/container/internal/raw_hash_set.h | 849 +- .../internal/raw_hash_set_allocator_test.cc | 5 +- .../internal/raw_hash_set_benchmark.cc | 36 +- .../internal/raw_hash_set_probe_benchmark.cc | 2 +- .../internal/raw_hash_set_resize_impl.h | 1 - .../container/internal/raw_hash_set_test.cc | 436 +- .../abseil-cpp/absl/container/node_hash_map.h | 30 +- .../abseil-cpp/absl/container/node_hash_set.h | 26 +- .../absl/copts/GENERATED_AbseilCopts.cmake | 5 +- .../abseil-cpp/absl/copts/GENERATED_copts.bzl | 5 +- .../abseil-cpp/absl/copts/copts.py | 2 + .../abseil-cpp/absl/crc/BUILD.bazel | 3 + .../abseil-cpp/absl/crc/crc32c_test.cc | 30 + .../absl/crc/internal/cpu_detect.cc | 17 + .../abseil-cpp/absl/crc/internal/cpu_detect.h | 8 +- .../internal/crc_memcpy_x86_arm_combined.cc | 5 + .../absl/crc/internal/crc_x86_arm_combined.cc | 268 +- .../absl/crc/internal/gen_crc32c_consts.py | 90 + .../abseil-cpp/absl/debugging/BUILD.bazel | 1 + .../abseil-cpp/absl/debugging/BUILD.gn | 1 + .../abseil-cpp/absl/debugging/CMakeLists.txt | 1 + .../debugging/internal/decode_rust_punycode.h | 8 +- .../absl/debugging/internal/demangle.cc | 32 +- .../absl/debugging/internal/demangle_test.cc | 21 +- .../internal/stacktrace_aarch64-inl.inc | 37 +- .../debugging/internal/stacktrace_config.h | 11 +- .../debugging/internal/stacktrace_x86-inl.inc | 11 +- .../absl/debugging/internal/vdso_support.cc | 4 + .../abseil-cpp/absl/debugging/stacktrace.cc | 173 +- .../absl/debugging/stacktrace_test.cc | 193 +- .../absl/debugging/symbolize_elf.inc | 90 +- .../abseil-cpp/absl/flags/BUILD.bazel | 3 + .../abseil-cpp/absl/flags/internal/flag.cc | 24 +- .../abseil-cpp/absl/flags/internal/flag.h | 55 +- .../absl/flags/internal/program_name.cc | 4 +- .../abseil-cpp/absl/flags/internal/usage.cc | 4 +- .../abseil-cpp/absl/flags/parse.cc | 8 +- .../abseil-cpp/absl/flags/reflection.cc | 11 +- .../abseil-cpp/absl/flags/usage.cc | 4 +- .../abseil-cpp/absl/flags/usage_config.cc | 4 +- .../abseil-cpp/absl/functional/BUILD.bazel | 5 + .../abseil-cpp/absl/functional/BUILD.gn | 2 + .../abseil-cpp/absl/functional/CMakeLists.txt | 2 + .../absl/functional/any_invocable.h | 12 +- .../absl/functional/any_invocable_test.cc | 8 +- .../absl/functional/internal/any_invocable.h | 3 +- .../abseil-cpp/absl/hash/BUILD.bazel | 24 +- .../third_party/abseil-cpp/absl/hash/BUILD.gn | 17 +- .../abseil-cpp/absl/hash/CMakeLists.txt | 21 +- .../abseil-cpp/absl/hash/hash_test.cc | 119 +- .../abseil-cpp/absl/hash/internal/hash.cc | 143 +- .../abseil-cpp/absl/hash/internal/hash.h | 630 +- .../absl/hash/internal/low_level_hash.cc | 105 - .../absl/hash/internal/low_level_hash.h | 50 - .../absl/hash/internal/low_level_hash_test.cc | 98 +- .../absl/hash/internal/spy_hash_state.h | 9 +- .../abseil-cpp/absl/log/BUILD.bazel | 4 + .../third_party/abseil-cpp/absl/log/BUILD.gn | 3 + .../abseil-cpp/absl/log/CMakeLists.txt | 6 +- .../third_party/abseil-cpp/absl/log/check.h | 3 +- .../abseil-cpp/absl/log/check_test_impl.inc | 300 +- .../abseil-cpp/absl/log/flags_test.cc | 7 + .../abseil-cpp/absl/log/internal/BUILD.bazel | 10 +- .../abseil-cpp/absl/log/internal/BUILD.gn | 3 +- .../absl/log/internal/append_truncated.h | 28 + .../abseil-cpp/absl/log/internal/check_impl.h | 3 +- .../abseil-cpp/absl/log/internal/check_op.cc | 2 + .../abseil-cpp/absl/log/internal/check_op.h | 155 +- .../absl/log/internal/log_message.cc | 78 +- .../absl/log/internal/log_message.h | 49 +- .../absl/log/internal/log_sink_set.cc | 8 +- .../absl/log/internal/vlog_config.cc | 18 +- .../absl/log/log_basic_test_impl.inc | 12 + .../abseil-cpp/absl/log/log_entry.cc | 263 + .../abseil-cpp/absl/log/log_entry.h | 2 + .../abseil-cpp/absl/log/log_format_test.cc | 398 +- .../absl/log/log_modifier_methods_test.cc | 10 + .../abseil-cpp/absl/log/log_streamer_test.cc | 17 +- .../abseil-cpp/absl/log/scoped_mock_log.h | 8 +- .../abseil-cpp/absl/log/structured_test.cc | 1 + .../abseil-cpp/absl/memory/BUILD.bazel | 2 + .../abseil-cpp/absl/meta/BUILD.bazel | 2 + .../abseil-cpp/absl/meta/type_traits.h | 34 +- .../abseil-cpp/absl/meta/type_traits_test.cc | 52 +- .../abseil-cpp/absl/numeric/BUILD.bazel | 4 + .../abseil-cpp/absl/numeric/bits_test.cc | 27 + .../abseil-cpp/absl/numeric/int128.h | 36 +- .../absl/numeric/int128_benchmark.cc | 27 +- .../absl/numeric/int128_have_intrinsic.inc | 8 +- .../abseil-cpp/absl/numeric/int128_test.cc | 30 +- .../abseil-cpp/absl/numeric/internal/bits.h | 36 +- .../abseil-cpp/absl/profiling/BUILD.bazel | 47 + .../abseil-cpp/absl/profiling/BUILD.gn | 43 + .../abseil-cpp/absl/profiling/CMakeLists.txt | 38 + .../abseil-cpp/absl/profiling/hashtable.cc | 124 + .../abseil-cpp/absl/profiling/hashtable.h | 40 + .../profiling/internal/profile_builder.cc | 462 + .../absl/profiling/internal/profile_builder.h | 138 + .../absl/profiling/internal/sample_recorder.h | 18 +- .../internal/sample_recorder_test.cc | 10 +- .../abseil-cpp/absl/random/BUILD.bazel | 3 + .../absl/random/internal/BUILD.bazel | 4 + .../absl/random/internal/entropy_pool.cc | 4 +- .../absl/random/internal/entropy_pool_test.cc | 2 +- .../random/internal/nonsecure_base_test.cc | 2 +- .../absl/random/mock_distributions_test.cc | 9 +- .../abseil-cpp/absl/status/BUILD.bazel | 3 + .../absl/status/internal/statusor_internal.h | 222 +- .../absl/status/status_matchers_test.cc | 23 + .../abseil-cpp/absl/status/statusor.h | 147 +- .../abseil-cpp/absl/status/statusor_test.cc | 322 + .../abseil-cpp/absl/strings/BUILD.bazel | 9 + .../abseil-cpp/absl/strings/BUILD.gn | 2 + .../abseil-cpp/absl/strings/CMakeLists.txt | 5 +- .../absl/strings/ascii_benchmark.cc | 8 +- .../abseil-cpp/absl/strings/cord.h | 5 +- .../absl/strings/cordz_test_helpers.h | 9 +- .../absl/strings/internal/cord_internal.h | 4 +- .../absl/strings/internal/cordz_handle.cc | 12 +- .../absl/strings/internal/cordz_info.cc | 10 +- .../absl/strings/internal/cordz_info.h | 6 +- .../absl/strings/internal/str_format/arg.cc | 70 +- .../absl/strings/internal/str_format/arg.h | 12 +- .../internal/str_format/convert_test.cc | 7 +- .../internal/str_format/extension_test.cc | 5 +- .../strings/internal/str_split_internal.h | 9 +- .../abseil-cpp/absl/strings/internal/utf8.cc | 97 +- .../abseil-cpp/absl/strings/internal/utf8.h | 16 +- .../absl/strings/internal/utf8_test.cc | 199 +- .../abseil-cpp/absl/strings/numbers_test.cc | 32 +- .../abseil-cpp/absl/strings/str_cat.h | 22 +- .../abseil-cpp/absl/strings/str_cat_test.cc | 7 +- .../absl/strings/str_format_test.cc | 22 +- .../abseil-cpp/absl/strings/str_split.h | 4 +- .../abseil-cpp/absl/strings/str_split_test.cc | 2 +- .../abseil-cpp/absl/strings/string_view.h | 30 +- .../absl/strings/string_view_benchmark.cc | 5 +- .../absl/strings/string_view_test.cc | 82 +- .../abseil-cpp/absl/strings/substitute.h | 15 +- .../absl/synchronization/BUILD.bazel | 5 + .../abseil-cpp/absl/synchronization/BUILD.gn | 1 + .../absl/synchronization/CMakeLists.txt | 2 +- .../absl/synchronization/barrier.cc | 2 +- .../absl/synchronization/barrier_test.cc | 6 +- .../absl/synchronization/blocking_counter.cc | 4 +- .../internal/create_thread_identity.cc | 6 +- .../synchronization/internal/graphcycles.cc | 63 +- .../synchronization/internal/thread_pool.h | 6 +- .../synchronization/internal/waiter_test.cc | 15 +- .../absl/synchronization/lifetime_test.cc | 8 +- .../abseil-cpp/absl/synchronization/mutex.cc | 54 +- .../abseil-cpp/absl/synchronization/mutex.h | 189 +- .../absl/synchronization/mutex_benchmark.cc | 44 +- .../absl/synchronization/mutex_test.cc | 348 +- .../absl/synchronization/notification.cc | 10 +- .../absl/synchronization/notification_test.cc | 6 +- .../abseil-cpp/absl/time/BUILD.bazel | 5 + .../third_party/abseil-cpp/absl/time/BUILD.gn | 1 + .../abseil-cpp/absl/time/CMakeLists.txt | 3 +- .../third_party/abseil-cpp/absl/time/clock.cc | 25 +- .../abseil-cpp/absl/time/duration.cc | 4 +- .../abseil-cpp/absl/time/duration_test.cc | 13 +- .../absl/time/internal/cctz/BUILD.bazel | 17 +- .../cctz/include/cctz/civil_time_detail.h | 12 + .../time/internal/cctz/src/cctz_benchmark.cc | 494 +- .../internal/cctz/src/test_time_zone_names.cc | 515 + .../internal/cctz/src/test_time_zone_names.h | 33 + .../internal/cctz/src/time_zone_format.cc | 45 +- .../cctz/src/time_zone_format_test.cc | 45 +- .../internal/cctz/src/time_zone_lookup.cc | 201 +- .../cctz/src/time_zone_lookup_test.cc | 489 +- .../third_party/abseil-cpp/absl/time/time.h | 16 +- .../abseil-cpp/absl/types/BUILD.bazel | 2 + .../third_party/abseil-cpp/absl/types/span.h | 60 +- .../abseil-cpp/absl/types/span_test.cc | 14 + .../abseil-cpp/absl/utility/BUILD.bazel | 1 + .../abseil-cpp/generate_def_files.py | 3 +- .../0004-undeprecate-nullability-types.patch | 33 - deps/v8/third_party/abseil-cpp/roll_abseil.py | 3 +- .../abseil-cpp/symbols_arm64_dbg.def | 661 +- .../abseil-cpp/symbols_arm64_rel.def | 87 +- .../abseil-cpp/symbols_x64_dbg.def | 662 +- .../abseil-cpp/symbols_x64_rel.def | 87 +- .../abseil-cpp/symbols_x64_rel_asan.def | 95 +- .../abseil-cpp/symbols_x86_dbg.def | 660 +- .../abseil-cpp/symbols_x86_rel.def | 87 +- deps/v8/third_party/colorama/README.v8 | 1 + deps/v8/third_party/cpu_features/README.v8 | 1 + deps/v8/third_party/dragonbox/BUILD.gn | 18 + deps/v8/third_party/dragonbox/OWNERS | 3 + deps/v8/third_party/dragonbox/README.v8 | 16 + .../src/include/dragonbox/dragonbox.h | 4205 +++ .../include/dragonbox/dragonbox_to_chars.h | 388 + deps/v8/third_party/fast_float/README.v8 | 1 + deps/v8/third_party/fp16/README.v8 | 1 + deps/v8/third_party/fp16/src/include/fp16.h | 4 - .../fp16/src/include/fp16/__init__.py | 0 .../third_party/fp16/src/include/fp16/avx.py | 50 - .../third_party/fp16/src/include/fp16/avx2.py | 53 - .../third_party/fp16/src/include/fp16/fp16.h | 36 +- .../fp16/src/include/fp16/macros.h | 32 + .../third_party/fp16/src/include/fp16/psimd.h | 131 - .../v8/third_party/googletest/README.chromium | 1 + deps/v8/third_party/highway/BUILD.gn | 5 + deps/v8/third_party/highway/README.chromium | 1 + .../third_party/inspector_protocol/README.v8 | 2 +- .../inspector_protocol/crdtp/cbor.cc | 4 +- .../inspector_protocol/crdtp/cbor.h | 4 +- .../inspector_protocol/crdtp/cbor_test.cc | 64 +- .../inspector_protocol/crdtp/json.cc | 20 +- .../inspector_protocol/crdtp/json_test.cc | 13 +- .../inspector_protocol/crdtp/protocol_core.cc | 2 +- .../inspector_protocol/crdtp/protocol_core.h | 18 +- .../inspector_protocol/crdtp/span.h | 48 +- .../inspector_protocol/crdtp/span_test.cc | 6 + .../lib/Values_cpp.template | 2 +- deps/v8/third_party/inspector_protocol/pdl.py | 12 + deps/v8/third_party/jinja2/README.chromium | 1 + deps/v8/third_party/jsoncpp/BUILD.gn | 4 + deps/v8/third_party/jsoncpp/README.chromium | 1 + deps/v8/third_party/llvm-libc/README.v8 | 1 + .../v8/third_party/markupsafe/README.chromium | 1 + 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 | 299 + deps/v8/third_party/rapidhash-v8/secret.h | 198 + deps/v8/third_party/re2/README.v8 | 1 + deps/v8/third_party/simdutf/BUILD.gn | 8 +- deps/v8/third_party/simdutf/README.chromium | 3 +- deps/v8/third_party/simdutf/simdutf.cpp | 10721 +++++--- deps/v8/third_party/simdutf/simdutf.h | 622 +- deps/v8/third_party/v8/builtins/array-sort.tq | 14 +- deps/v8/third_party/v8/codegen/OWNERS | 2 +- deps/v8/third_party/valgrind/README.v8 | 1 + deps/v8/third_party/wasm-api/README.v8 | 1 + deps/v8/third_party/zlib/BUILD.gn | 20 +- deps/v8/third_party/zlib/CMakeLists.txt | 7 +- deps/v8/third_party/zlib/OWNERS | 5 +- deps/v8/third_party/zlib/README.chromium | 1 + deps/v8/third_party/zlib/adler32_simd.c | 3 + deps/v8/third_party/zlib/chromeconf.h | 3 - .../zlib/contrib/minizip/README.chromium | 6 + .../third_party/zlib/contrib/minizip/unzip.c | 123 +- deps/v8/third_party/zlib/deflate.c | 12 +- deps/v8/third_party/zlib/deflate.h | 12 + deps/v8/third_party/zlib/google/OWNERS | 1 - .../zlib/google/test_data.filelist | 10 + deps/v8/third_party/zlib/google/zip.cc | 231 +- deps/v8/third_party/zlib/google/zip.h | 30 +- .../v8/third_party/zlib/google/zip_internal.h | 8 +- deps/v8/third_party/zlib/google/zip_reader.cc | 12 +- deps/v8/third_party/zlib/google/zip_reader.h | 3 + .../zlib/google/zip_reader_unittest.cc | 25 + .../third_party/zlib/google/zip_unittest.cc | 113 +- .../zlib/patches/0006-fix-check_match.patch | 42 - ...nizip-parse-unicode-path-extra-field.patch | 157 +- .../patches/0018-support-prefixed-zip64.patch | 82 + deps/v8/third_party/zlib/trees.c | 51 +- deps/v8/tools/callstats.html | 15 +- .../foozzie/testdata/failure_output.txt | 4 +- .../foozzie/testdata/failure_output_arch.txt | 4 +- .../testdata/failure_output_second.txt | 4 +- .../foozzie/testdata/smoke_test_output.txt | 4 +- .../tools/clusterfuzz/foozzie/v8_commands.py | 1 + .../tools/clusterfuzz/foozzie/v8_foozzie.py | 51 +- .../foozzie/v8_foozzie_harness_adjust.js | 2 - .../foozzie/v8_fuzz_experiments.json | 9 +- .../clusterfuzz/foozzie/v8_fuzz_flags.json | 35 +- deps/v8/tools/clusterfuzz/foozzie/v8_mock.js | 68 +- .../clusterfuzz/foozzie/v8_mock_archs.js | 3 +- .../tools/clusterfuzz/js_fuzzer/exceptions.js | 9 + .../mutators/allocation_timeout_mutator.js | 92 + .../clusterfuzz/js_fuzzer/mutators/common.js | 10 + .../mutators/differential_fuzz_mutator.js | 131 +- .../mutators/variable_or_object_mutation.js | 2 +- .../resources/differential_fuzz_library.js | 166 +- .../resources/differential_fuzz_v8.js | 1 - .../js_fuzzer/resources/fuzz_library.js | 11 + .../clusterfuzz/js_fuzzer/script_mutator.js | 15 +- .../clusterfuzz/js_fuzzer/test/helpers.js | 12 + .../clusterfuzz/js_fuzzer/test/test_db.js | 2 +- .../js_fuzzer/test/test_differential_fuzz.js | 27 +- .../test/test_differential_fuzz_library.js | 20 +- .../clusterfuzz/js_fuzzer/test/test_flags.js | 7 +- .../js_fuzzer/test/test_mutation_order.js | 17 +- .../js_fuzzer/test/test_regressions.js | 21 +- .../js_fuzzer/test_data/alloc/alloc.js | 23 + .../alloc/alloc_always_chosen_expected.js | 34 + .../alloc/alloc_not_chosen_expected.js | 20 + .../alloc/alloc_not_enabled_expected.js | 20 + .../differential_fuzz/combined_expected.js | 5 +- .../differential_fuzz/exceptions_expected.js | 1 - .../fuzzilli_combined_expected.js | 3 - .../test_data/differential_fuzz/mutations.js | 60 + .../mutations_block_expected.js | 83 + .../differential_fuzz/mutations_expected.js | 65 +- .../mutations_skip_fun_expected.js | 81 + .../differential_fuzz/suppressions.js | 4 +- .../suppressions_expected.js | 2 + .../expected_code_0.js | 10 +- .../expected_code_1.js | 10 +- .../expected_code_2.js | 9 - .../expected_flags_1.js | 6 +- .../CallExpression/113f1844.json | 1 + .../regress/db/assign_expected/index.json | 6 + .../trials/clusterfuzz_trials_config.json | 46 +- deps/v8/tools/debug_helper/BUILD.gn | 3 + deps/v8/tools/debug_helper/OWNERS | 2 +- .../debug_helper/get-object-properties.cc | 8 +- deps/v8/tools/dev/gen-static-roots.py | 130 +- deps/v8/tools/dev/gm.py | 73 +- deps/v8/tools/gcmole/BUILD.gn | 4 + deps/v8/tools/gcmole/gcmole-test.cc | 31 + deps/v8/tools/gcmole/gcmole-tools.tar.gz.sha1 | 2 +- deps/v8/tools/gcmole/gcmole.cc | 96 +- deps/v8/tools/gcmole/test-expectations.txt | 296 +- deps/v8/tools/gen-inlining-tests.py | 2 +- deps/v8/tools/gen-postmortem-metadata.py | 7 +- deps/v8/tools/grokdump.py | 110 +- deps/v8/tools/mb/mb.py | 9 +- deps/v8/tools/package-lock.json | 12 +- deps/v8/tools/profile.mjs | 7 +- deps/v8/tools/release/common_includes.py | 4 +- deps/v8/tools/release/create_release.py | 2 +- deps/v8/tools/release/merge_to_branch.py | 2 +- deps/v8/tools/release/test_scripts.py | 6 +- deps/v8/tools/run_perf.py | 6 +- .../tools/sanitizers/linux/arm64/.gitignore | 1 + .../linux/arm64/llvm-symbolizer.sha1 | 1 + deps/v8/tools/testrunner/base_runner.py | 68 +- deps/v8/tools/testrunner/local/command.py | 32 +- deps/v8/tools/testrunner/local/context.py | 10 +- deps/v8/tools/testrunner/local/statusfile.py | 9 +- deps/v8/tools/testrunner/local/utils.py | 8 +- deps/v8/tools/testrunner/local/variants.py | 11 +- deps/v8/tools/testrunner/num_fuzzer.py | 27 +- deps/v8/tools/testrunner/objects/testcase.py | 23 +- deps/v8/tools/testrunner/outproc/base.py | 6 +- deps/v8/tools/testrunner/outproc/filecheck.py | 7 +- .../tools/testrunner/standard_runner_test.py | 48 +- .../testdata/testroot8/out/build/d8_mocked.py | 17 + .../testroot8/test/sweet/sweet.status | 9 + .../testdata/testroot8/test/sweet/testcfg.py | 34 + .../testrunner/testdata/v8_build_config.json | 1 + deps/v8/tools/testrunner/testproc/filter.py | 12 + deps/v8/tools/testrunner/testproc/fuzzer.py | 72 +- .../tools/testrunner/testproc/indicators.py | 11 +- deps/v8/tools/testrunner/testproc/resultdb.py | 8 +- .../testrunner/utils/augmented_options.py | 1 + deps/v8/tools/tickprocessor.mjs | 15 +- deps/v8/tools/torque/format-torque.py | 2 +- deps/v8/tools/turbolizer/package-lock.json | 6 +- deps/v8/tools/v8_presubmit.py | 8 +- deps/v8/tools/v8windbg/BUILD.gn | 8 + deps/v8/tools/v8windbg/OWNERS | 2 +- .../v8windbg/src/v8-debug-helper-interop.cc | 32 +- deps/v8/tools/v8windbg/test/script.js | 9 +- deps/v8/tools/v8windbg/test/v8windbg-test.cc | 30 +- deps/v8/tools/wasm-compilation-hints/OWNERS | 1 - .../inject-compilation-hints.py | 60 - .../wasm-objdump-compilation-hints.py | 48 - deps/v8/tools/wasm-compilation-hints/wasm.py | 103 - .../wasm/mjsunit-module-disassembler-impl.h | 66 +- deps/v8/tools/whitespace.txt | 6 +- deps/v8/tools/zone-stats/categories.js | 1 - 3347 files changed, 168525 insertions(+), 98977 deletions(-) create mode 100644 deps/v8/GEMINI.md delete mode 100644 deps/v8/src/api/api-macros-undef.h delete mode 100644 deps/v8/src/api/api-macros.h create mode 100644 deps/v8/src/base/functional/DEPS create mode 100644 deps/v8/src/base/functional/bind-internal.h create mode 100644 deps/v8/src/base/functional/function-ref.h create mode 100644 deps/v8/src/base/types/is-instantiation.h create mode 100644 deps/v8/src/builtins/builtins-effects-analyzer.cc create mode 100644 deps/v8/src/builtins/builtins-effects-analyzer.h delete mode 100644 deps/v8/src/builtins/builtins-temporal-gen.cc rename deps/v8/src/builtins/{builtins-lazy-gen.cc => js-trampoline-assembler.cc} (74%) rename deps/v8/src/builtins/{builtins-lazy-gen.h => js-trampoline-assembler.h} (53%) create mode 100644 deps/v8/src/codegen/riscv/constant-riscv-zfh.h create mode 100644 deps/v8/src/codegen/riscv/extension-riscv-zfh.cc create mode 100644 deps/v8/src/codegen/riscv/extension-riscv-zfh.h create mode 100644 deps/v8/src/common/scoped-modification.h delete mode 100644 deps/v8/src/compiler/backend/instruction-selector-adapter.h create mode 100644 deps/v8/src/compiler/backend/riscv/register-constraints-riscv.h create mode 100644 deps/v8/src/compiler/common-utils.cc create mode 100644 deps/v8/src/compiler/common-utils.h create mode 100644 deps/v8/src/compiler/turboshaft/csa-branch-elimination-phase.cc create mode 100644 deps/v8/src/compiler/turboshaft/csa-branch-elimination-phase.h create mode 100644 deps/v8/src/compiler/turboshaft/csa-early-machine-optimization-phase.cc create mode 100644 deps/v8/src/compiler/turboshaft/csa-early-machine-optimization-phase.h create mode 100644 deps/v8/src/compiler/turboshaft/csa-effects-computation.cc create mode 100644 deps/v8/src/compiler/turboshaft/csa-effects-computation.h create mode 100644 deps/v8/src/compiler/turboshaft/csa-late-escape-analysis-phase.cc create mode 100644 deps/v8/src/compiler/turboshaft/csa-late-escape-analysis-phase.h create mode 100644 deps/v8/src/compiler/turboshaft/csa-load-elimination-phase.cc create mode 100644 deps/v8/src/compiler/turboshaft/csa-load-elimination-phase.h create mode 100644 deps/v8/src/compiler/turboshaft/csa-memory-optimization-phase.cc create mode 100644 deps/v8/src/compiler/turboshaft/csa-memory-optimization-phase.h delete mode 100644 deps/v8/src/compiler/turboshaft/csa-optimize-phase.cc delete mode 100644 deps/v8/src/compiler/turboshaft/csa-optimize-phase.h rename deps/v8/src/compiler/turboshaft/{structural-optimization-reducer.h => if-else-cascade-to-switch-reducer.h} (94%) rename deps/v8/src/compiler/turboshaft/{maglev-early-lowering-reducer-inl.h => turbolev-early-lowering-reducer-inl.h} (96%) create mode 100644 deps/v8/src/compiler/turboshaft/wasm-code-coverage-reducer.h create mode 100644 deps/v8/src/heap/base/unsafe-json-emitter.cc create mode 100644 deps/v8/src/heap/base/unsafe-json-emitter.h create mode 100644 deps/v8/src/heap/memory-pool.cc rename deps/v8/src/heap/{page-pool.h => memory-pool.h} (60%) delete mode 100644 deps/v8/src/heap/page-pool.cc create mode 100644 deps/v8/src/interpreter/prototype-assignment-sequence-builder.cc create mode 100644 deps/v8/src/interpreter/prototype-assignment-sequence-builder.h create mode 100644 deps/v8/src/maglev/maglev-graph-labeller.cc create mode 100644 deps/v8/src/maglev/maglev-graph-optimizer.cc create mode 100644 deps/v8/src/maglev/maglev-graph-optimizer.h create mode 100644 deps/v8/src/maglev/maglev-graph.cc create mode 100644 deps/v8/src/maglev/maglev-inlining.cc create mode 100644 deps/v8/src/maglev/maglev-reducer-inl.h create mode 100644 deps/v8/src/maglev/maglev-reducer.h create mode 100644 deps/v8/src/maglev/maglev-regalloc-node-info.h create mode 100644 deps/v8/src/maglev/maglev-truncation.cc create mode 100644 deps/v8/src/maglev/maglev-truncation.h create mode 100644 deps/v8/src/maglev/ppc64/maglev-assembler-ppc64-inl.h create mode 100644 deps/v8/src/maglev/ppc64/maglev-assembler-ppc64.cc create mode 100644 deps/v8/src/maglev/ppc64/maglev-ir-ppc64.cc create mode 100644 deps/v8/src/numbers/hash-seed.h delete mode 100644 deps/v8/src/objects/hole-inl.h create mode 100644 deps/v8/src/objects/js-temporal-helpers.cc create mode 100644 deps/v8/src/objects/js-temporal-helpers.h create mode 100644 deps/v8/src/objects/number-string-cache-inl.h create mode 100644 deps/v8/src/objects/number-string-cache.cc create mode 100644 deps/v8/src/objects/number-string-cache.h create mode 100644 deps/v8/src/objects/script.cc create mode 100644 deps/v8/src/profiler/heap-snapshot-common.h create mode 100644 deps/v8/src/regexp/regexp-bytecode-iterator-inl.h create mode 100644 deps/v8/src/regexp/regexp-bytecode-iterator.cc create mode 100644 deps/v8/src/regexp/regexp-bytecode-iterator.h create mode 100644 deps/v8/src/regexp/regexp-bytecodes-inl.h create mode 100644 deps/v8/src/regexp/regexp-code-generator.cc create mode 100644 deps/v8/src/regexp/regexp-code-generator.h create mode 100644 deps/v8/src/roots/static-roots-intl-nowasm.h create mode 100644 deps/v8/src/roots/static-roots-intl-wasm.h create mode 100644 deps/v8/src/roots/static-roots-nointl-nowasm.h create mode 100644 deps/v8/src/roots/static-roots-nointl-wasm.h delete mode 100644 deps/v8/src/runtime/runtime-temporal.cc delete mode 100644 deps/v8/src/runtime/runtime-utils.cc create mode 100644 deps/v8/src/sandbox/code-sandboxing-mode.h create mode 100644 deps/v8/src/sandbox/sandbox-malloc.h create mode 100644 deps/v8/src/snapshot/builtins-effects-dummy.cc create mode 100644 deps/v8/src/strings/string-hasher.cc delete mode 100644 deps/v8/src/temporal/OWNERS delete mode 100644 deps/v8/src/temporal/temporal-parser.cc delete mode 100644 deps/v8/src/temporal/temporal-parser.h create mode 100644 deps/v8/src/utils/output-stream.cc create mode 100644 deps/v8/src/utils/output-stream.h create mode 100644 deps/v8/src/wasm/basic-block-calculator.cc create mode 100644 deps/v8/src/wasm/basic-block-calculator.h create mode 100644 deps/v8/src/wasm/turboshaft-graph-interface-inl.h create mode 100644 deps/v8/src/wasm/wasm-code-coverage.h create mode 100644 deps/v8/src/wasm/wasm-export-wrapper-cache.cc create mode 100644 deps/v8/src/wasm/wasm-export-wrapper-cache.h create mode 100644 deps/v8/src/wasm/wrappers-inl.h create mode 100644 deps/v8/src/wasm/wrappers.h delete mode 100644 deps/v8/src/zone/compressed-zone-ptr.h delete mode 100644 deps/v8/src/zone/zone-compression.h delete mode 100644 deps/v8/test/cctest/compiler/test-linkage.cc delete mode 100644 deps/v8/test/cctest/compiler/test-run-stackcheck.cc delete mode 100644 deps/v8/test/cctest/compiler/test-run-variables.cc create mode 100644 deps/v8/test/cctest/wasm/wasm-runner.h rename deps/v8/test/{cctest => common}/wasm/wasm-run-utils.cc (91%) rename deps/v8/test/{cctest => common}/wasm/wasm-run-utils.h (92%) create mode 100644 deps/v8/test/debugger/debug/debug-liveedit-eval.js create mode 100644 deps/v8/test/debugger/debug/debug-step-into-explicit-resource-management.js create mode 100644 deps/v8/test/filecheck/fail/d8-fails.js create mode 100644 deps/v8/test/filecheck/fail/mismatch.js create mode 100644 deps/v8/test/filecheck/fail/no-check.js rename deps/v8/test/{mjsunit/wasm/deopt/deopt-multi-instance.js => filecheck/wasm-deopt-multi-instance.js} (84%) create mode 100644 deps/v8/test/filecheck/wasm-pause.js create mode 100644 deps/v8/test/fuzzer/inspector/regress-391921979.js create mode 100644 deps/v8/test/fuzzer/wasm/compile-revec.cc create mode 100644 deps/v8/test/fuzzer/wasm/interpreter/interpreter-all-multiple-modules.cc create mode 100644 deps/v8/test/fuzzer/wasm/module/regress-406925416.wasm create mode 100644 deps/v8/test/fuzzer/wasm/module/regress-419085592.wasm create mode 100644 deps/v8/test/inspector/debugger/step-over-expected.txt create mode 100644 deps/v8/test/inspector/debugger/step-over.js create mode 100644 deps/v8/test/inspector/regress/regress-crbug-399002824-expected.txt create mode 100644 deps/v8/test/inspector/regress/regress-crbug-399002824.js create mode 100644 deps/v8/test/inspector/runtime/error-preview-sideeffects-expected.txt create mode 100644 deps/v8/test/inspector/runtime/error-preview-sideeffects.js create mode 100644 deps/v8/test/inspector/runtime/error-stack-explicit-resource-management-expected.txt create mode 100644 deps/v8/test/inspector/runtime/error-stack-explicit-resource-management.js create mode 100644 deps/v8/test/inspector/runtime/preview-sideeffects-expected.txt create mode 100644 deps/v8/test/inspector/runtime/preview-sideeffects.js create mode 100644 deps/v8/test/intl/datetime-compat-all.js create mode 100644 deps/v8/test/intl/datetime-compat-en.js create mode 100644 deps/v8/test/intl/datetime-compat-none.js create mode 100644 deps/v8/test/message/fail/preparse-arguments.js create mode 100644 deps/v8/test/message/fail/preparse-arguments.out create mode 100644 deps/v8/test/message/fail/regress-crbug-417373146.js create mode 100644 deps/v8/test/message/fail/regress-crbug-417373146.out create mode 100644 deps/v8/test/message/wasm-trace-globals-liftoff.js create mode 100644 deps/v8/test/message/wasm-trace-globals-liftoff.out create mode 100644 deps/v8/test/message/wasm-trace-globals.js create mode 100644 deps/v8/test/message/wasm-trace-globals.out create mode 100644 deps/v8/test/mjsunit/array-concat-to-holey-double.js create mode 100644 deps/v8/test/mjsunit/array-tostring-stack-overflow.js create mode 100644 deps/v8/test/mjsunit/asm/regress-435068768.js create mode 100644 deps/v8/test/mjsunit/asm/regress-436021221.js create mode 100644 deps/v8/test/mjsunit/baseline/loadic-transition-elements.js create mode 100644 deps/v8/test/mjsunit/compiler/array-prototype-at-holey.js create mode 100644 deps/v8/test/mjsunit/compiler/fast-api-calls-nested.js create mode 100644 deps/v8/test/mjsunit/compiler/fast-api-deopt.js create mode 100644 deps/v8/test/mjsunit/compiler/inlining-exponential.js create mode 100644 deps/v8/test/mjsunit/compiler/omit-default-ctors-array-iterator.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-419744895.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-420689315.js delete mode 100644 deps/v8/test/mjsunit/compiler/regress-446647.js create mode 100644 deps/v8/test/mjsunit/compiler/smi-bitwise-ops.js create mode 100644 deps/v8/test/mjsunit/compiler/string-or-oddball-compare.js create mode 100644 deps/v8/test/mjsunit/compiler/string-or-string-wrapper-cons.js create mode 100644 deps/v8/test/mjsunit/d8/regress-420405289.js create mode 100644 deps/v8/test/mjsunit/es6/for-of-array-iterator-optimization-baseline.js create mode 100644 deps/v8/test/mjsunit/es6/for-of-array-iterator-optimization-ignition.js create mode 100644 deps/v8/test/mjsunit/es6/for-of-array-iterator-optimization-maglev.js create mode 100644 deps/v8/test/mjsunit/es6/for-of-array-iterator-optimization-turbofan.js delete mode 100644 deps/v8/test/mjsunit/es6/throw-type-error-function-restrictions.js create mode 100644 deps/v8/test/mjsunit/harmony/base64-from-to-base64-null-option.js create mode 100644 deps/v8/test/mjsunit/harmony/base64-prototype-to-hex-fill-with-maximum-value.js create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-disallow-absolute-url.mjs create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-416166113.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-416302802.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-418804470.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-421227542.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-436181695.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-437612640.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-440585463.js delete mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-912504.js create mode 100644 deps/v8/test/mjsunit/harmony/uint8-array-set-from-base64-on-shared-array-buffer.js create mode 100644 deps/v8/test/mjsunit/harmony/uint8-array-set-from-hex-on-shared-array-buffer.js create mode 100644 deps/v8/test/mjsunit/harmony/uint8-array-to-base64-on-shared-array-buffer.js create mode 100644 deps/v8/test/mjsunit/harmony/uint8-array-to-hex-on-shared-array-buffer.js create mode 100644 deps/v8/test/mjsunit/ignition/optimize-proto-assign-seq.js create mode 100644 deps/v8/test/mjsunit/load-store-address-hoisting.js create mode 100644 deps/v8/test/mjsunit/loadic-transition-elements.js create mode 100644 deps/v8/test/mjsunit/maglev/array-prototype-at-holey.js create mode 100644 deps/v8/test/mjsunit/maglev/array-prototype-at.js create mode 100644 deps/v8/test/mjsunit/maglev/array-prototype.slice.js create mode 100644 deps/v8/test/mjsunit/maglev/const-string-concat.js create mode 100644 deps/v8/test/mjsunit/maglev/constant-fold-uint-compared-to-zero.js create mode 100644 deps/v8/test/mjsunit/maglev/maglev-truncation.js create mode 100644 deps/v8/test/mjsunit/maglev/math-clz32.js create mode 100644 deps/v8/test/mjsunit/maglev/omit-default-ctors-array-iterator.js create mode 100644 deps/v8/test/mjsunit/maglev/poly-calls-1.js create mode 100644 deps/v8/test/mjsunit/maglev/poly-calls-2.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-410867001.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-414750469.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-414840455.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-415523530.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-419744895.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-421228426.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-423955533.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-423960608.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-424242619.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-425413843-arm.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-425413843.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-425862870.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-425993931.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-426157225.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-426935233.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-427531174.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-429656023.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-430125749.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-431076739.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-431665299.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-432847895.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-432850005.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-434137272.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-434513380.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-434746094.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-434890274.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-435078639.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-435225527.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-435488292.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-436778602.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-437340619.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-437528633.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-440747136.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-441567810.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-442086665.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-421358433.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-421399963.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-421402742.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-421467453.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-437594852.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-437988690.js create mode 100644 deps/v8/test/mjsunit/maglev/string-or-oddball-compare.js create mode 100644 deps/v8/test/mjsunit/maglev/string-prototype-startsWith.js create mode 100644 deps/v8/test/mjsunit/maglev/string-wrapper.js delete mode 100644 deps/v8/test/mjsunit/maglev/yes-deopt-deprecated-map.js create mode 100644 deps/v8/test/mjsunit/omit-default-ctors-array-iterator.js delete mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-1.js delete mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-2.js delete mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-3.js delete mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-4.js delete mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-5.js delete mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-6.js delete mode 100644 deps/v8/test/mjsunit/protector-cell/typedarray-length-7.js rename deps/v8/test/mjsunit/{harmony => }/regexp-duplicate-named-groups.js (95%) create mode 100644 deps/v8/test/mjsunit/regress-406332759.js create mode 100644 deps/v8/test/mjsunit/regress-408370964.js create mode 100644 deps/v8/test/mjsunit/regress-409911706.js create mode 100644 deps/v8/test/mjsunit/regress-411770057.js create mode 100644 deps/v8/test/mjsunit/regress-414738826.js create mode 100644 deps/v8/test/mjsunit/regress-415627214.js create mode 100644 deps/v8/test/mjsunit/regress-416179216.js create mode 100644 deps/v8/test/mjsunit/regress-416293771.js create mode 100644 deps/v8/test/mjsunit/regress-416442673.js create mode 100644 deps/v8/test/mjsunit/regress-417251443.js create mode 100644 deps/v8/test/mjsunit/regress-417385084.js create mode 100644 deps/v8/test/mjsunit/regress-417624826.js create mode 100644 deps/v8/test/mjsunit/regress-417768368.js create mode 100644 deps/v8/test/mjsunit/regress-418396718.js create mode 100644 deps/v8/test/mjsunit/regress-41882029.js create mode 100644 deps/v8/test/mjsunit/regress-419081101.js create mode 100644 deps/v8/test/mjsunit/regress-419099999.js create mode 100644 deps/v8/test/mjsunit/regress-419350536.js create mode 100644 deps/v8/test/mjsunit/regress-419601412.js create mode 100644 deps/v8/test/mjsunit/regress-419622700.js create mode 100644 deps/v8/test/mjsunit/regress-420198866.js create mode 100644 deps/v8/test/mjsunit/regress-420464880.js create mode 100644 deps/v8/test/mjsunit/regress-420740698.js create mode 100644 deps/v8/test/mjsunit/regress-420746766.js create mode 100644 deps/v8/test/mjsunit/regress-421329270.js create mode 100644 deps/v8/test/mjsunit/regress-421776794.js create mode 100644 deps/v8/test/mjsunit/regress-421801277.js create mode 100644 deps/v8/test/mjsunit/regress-422822350.js create mode 100644 deps/v8/test/mjsunit/regress-423674623.js create mode 100644 deps/v8/test/mjsunit/regress-432143539.js create mode 100644 deps/v8/test/mjsunit/regress-433687471.js create mode 100644 deps/v8/test/mjsunit/regress-433696407.js create mode 100644 deps/v8/test/mjsunit/regress-433817201.js create mode 100644 deps/v8/test/mjsunit/regress/modules-skip-regress-crbug-424617296.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-1129.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-1385368.js create mode 100644 deps/v8/test/mjsunit/regress/regress-395053819.js create mode 100644 deps/v8/test/mjsunit/regress/regress-408820921.js create mode 100644 deps/v8/test/mjsunit/regress/regress-41433527.js create mode 100644 deps/v8/test/mjsunit/regress/regress-414962716.js create mode 100644 deps/v8/test/mjsunit/regress/regress-416913840.js create mode 100644 deps/v8/test/mjsunit/regress/regress-417256364.js create mode 100644 deps/v8/test/mjsunit/regress/regress-417326263.js create mode 100644 deps/v8/test/mjsunit/regress/regress-417369007.js create mode 100644 deps/v8/test/mjsunit/regress/regress-417518228.js create mode 100644 deps/v8/test/mjsunit/regress/regress-417576784.js create mode 100644 deps/v8/test/mjsunit/regress/regress-418478214.js create mode 100644 deps/v8/test/mjsunit/regress/regress-419501740.js create mode 100644 deps/v8/test/mjsunit/regress/regress-420437007.js create mode 100644 deps/v8/test/mjsunit/regress/regress-421228429.js create mode 100644 deps/v8/test/mjsunit/regress/regress-421294586.js create mode 100644 deps/v8/test/mjsunit/regress/regress-422790252.js create mode 100644 deps/v8/test/mjsunit/regress/regress-422807508.js create mode 100644 deps/v8/test/mjsunit/regress/regress-422814957.js create mode 100644 deps/v8/test/mjsunit/regress/regress-422822324.js create mode 100644 deps/v8/test/mjsunit/regress/regress-423059192.js create mode 100644 deps/v8/test/mjsunit/regress/regress-423059201.js create mode 100644 deps/v8/test/mjsunit/regress/regress-424205788.js create mode 100644 deps/v8/test/mjsunit/regress/regress-424610540.js create mode 100644 deps/v8/test/mjsunit/regress/regress-424617297.js create mode 100644 deps/v8/test/mjsunit/regress/regress-424627229.js create mode 100644 deps/v8/test/mjsunit/regress/regress-424653424.js create mode 100644 deps/v8/test/mjsunit/regress/regress-425583995.js create mode 100644 deps/v8/test/mjsunit/regress/regress-426068809.js create mode 100644 deps/v8/test/mjsunit/regress/regress-426072098.js create mode 100644 deps/v8/test/mjsunit/regress/regress-426164362.js create mode 100644 deps/v8/test/mjsunit/regress/regress-426278969.js create mode 100644 deps/v8/test/mjsunit/regress/regress-426429660.js create mode 100644 deps/v8/test/mjsunit/regress/regress-426945831.js create mode 100644 deps/v8/test/mjsunit/regress/regress-428055720.js create mode 100644 deps/v8/test/mjsunit/regress/regress-428226995.js create mode 100644 deps/v8/test/mjsunit/regress/regress-429359014.js create mode 100644 deps/v8/test/mjsunit/regress/regress-429656013.js create mode 100644 deps/v8/test/mjsunit/regress/regress-430344952.js create mode 100644 deps/v8/test/mjsunit/regress/regress-430654948.js create mode 100644 deps/v8/test/mjsunit/regress/regress-431318220.js create mode 100644 deps/v8/test/mjsunit/regress/regress-432839080.js create mode 100644 deps/v8/test/mjsunit/regress/regress-433068894.js create mode 100644 deps/v8/test/mjsunit/regress/regress-437956096.js create mode 100644 deps/v8/test/mjsunit/regress/regress-438321229.js create mode 100644 deps/v8/test/mjsunit/regress/regress-438523582.js create mode 100644 deps/v8/test/mjsunit/regress/regress-438732677.js create mode 100644 deps/v8/test/mjsunit/regress/regress-440279755.js create mode 100644 deps/v8/test/mjsunit/regress/regress-440528038.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-4908.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-681171-1.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-772190.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-assignment-in-test-context.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1002628.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1171954.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-413161347.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-413633048.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-418520151.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-419454582.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-421524001.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-422638093.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-422706696.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-424617296-1.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-424617296-2.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-467531.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-480819.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-609029.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-652186-global.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-413633038.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-413963387.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-415062511.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-421055121.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-422599248.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-422639603.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-422892154.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-426164352.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-431542997.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-433809112.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-433984397.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-434008619.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-435301441.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-435315689.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-436362279.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-436937141.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-439772737.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-441131191.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-441221187.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-445870128.js delete mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-8533.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-427918760.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-430960844.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-431970772.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-432289371-b.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-432289371.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-435630467.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-420637585.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-440589876.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-440589880.js create mode 100644 deps/v8/test/mjsunit/sandbox/wasm-jspi-corrupt-suspender.js create mode 100644 deps/v8/test/mjsunit/sandbox/wasm-jspi-no-crash.js create mode 100644 deps/v8/test/mjsunit/sandbox/wasm-jspi.js create mode 100644 deps/v8/test/mjsunit/string-add-date-to-primitive.js create mode 100644 deps/v8/test/mjsunit/string-add-edge-cases.js create mode 100644 deps/v8/test/mjsunit/string-add-symbol-to-primitive.js create mode 100644 deps/v8/test/mjsunit/string-add-with-custom-valueof.js create mode 100644 deps/v8/test/mjsunit/tools/foozzie_printing.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-411802156.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-423050527.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-430335251.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-432520541.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-441327847.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/math-atan2.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/math-pow.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/math-sqrt.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/string-or-oddball-compare.js create mode 100644 deps/v8/test/mjsunit/turboshaft/make-in-bounds-after-exhausted-in-function.js create mode 100644 deps/v8/test/mjsunit/turboshaft/make-in-bounds-after-exhausted.js create mode 100644 deps/v8/test/mjsunit/turboshaft/make-out-of-bounds-after-exhausted.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-419503126.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-425754604.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-438523769.js create mode 100644 deps/v8/test/mjsunit/undefined-double.js delete mode 100644 deps/v8/test/mjsunit/wasm/compilation-hints-async-compilation.js delete mode 100644 deps/v8/test/mjsunit/wasm/compilation-hints-decoder.js delete mode 100644 deps/v8/test/mjsunit/wasm/compilation-hints-ignored.js delete mode 100644 deps/v8/test/mjsunit/wasm/compilation-hints-lazy-validation.js delete mode 100644 deps/v8/test/mjsunit/wasm/compilation-hints-no-lazy.js delete mode 100644 deps/v8/test/mjsunit/wasm/compilation-hints-streaming-compilation.js delete mode 100644 deps/v8/test/mjsunit/wasm/compilation-hints-streaming-lazy-validation.js delete mode 100644 deps/v8/test/mjsunit/wasm/compilation-hints-sync-compilation.js create mode 100644 deps/v8/test/mjsunit/wasm/compilation-hints/compilation-priority.js create mode 100644 deps/v8/test/mjsunit/wasm/custom-descriptors-casts.js create mode 100644 deps/v8/test/mjsunit/wasm/custom-descriptors-inlining.js create mode 100644 deps/v8/test/mjsunit/wasm/custom-descriptors-proxies.js create mode 100644 deps/v8/test/mjsunit/wasm/custom-descriptors-regress-421221628.js create mode 100644 deps/v8/test/mjsunit/wasm/half-shuffles.js rename deps/v8/test/mjsunit/wasm/{stack-switching-conditional.js => jspi-conditional.js} (92%) rename deps/v8/test/mjsunit/wasm/{stack-switching-export.js => jspi-export.js} (100%) rename deps/v8/test/mjsunit/wasm/{stack-switching-generic-wrapper.js => jspi-generic-wrapper.js} (96%) rename deps/v8/test/mjsunit/wasm/{stack-switching-init-safe.js => jspi-init-safe.js} (100%) rename deps/v8/test/mjsunit/wasm/{stack-switching-no-stress.js => jspi-no-stress.js} (94%) rename deps/v8/test/mjsunit/wasm/{stack-switching-notraps.js => jspi-notraps.js} (100%) create mode 100644 deps/v8/test/mjsunit/wasm/jspi.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-copy-inline.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-copy-outline.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-fill-inline.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-fill-outline.js create mode 100644 deps/v8/test/mjsunit/wasm/memory-toresizable-max-byte-length.js delete mode 100644 deps/v8/test/mjsunit/wasm/serialization-with-compilation-hints.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/array-atomic-rmw-load-elimination.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/atomic-instructions.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/gc-casts-shared-to-unshared.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/gc-casts-subtypes-shared.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/heapnumber-conversion.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/not-shared-everything.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/shared-extended-instructions.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/spin-lock.js create mode 100644 deps/v8/test/mjsunit/wasm/turboshaft/regress-crbug-420998402.js create mode 100644 deps/v8/test/mjsunit/wasm/wasm-code-coverage.js delete mode 100644 deps/v8/test/mjsunit/wasm/wasm-null-intrinsic.js create mode 100644 deps/v8/test/mjsunit/wasm/wasm-to-js-i32-cond.js create mode 100644 deps/v8/test/unittests/api/v8-memory-span-unittest.cc delete mode 100644 deps/v8/test/unittests/compiler/csa-load-elimination-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/linkage-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/run-stackcheck-unittest.cc rename deps/v8/test/{cctest/compiler/test-run-unwinding-info.cc => unittests/compiler/run-unwinding-info-unittest.cc} (67%) create mode 100644 deps/v8/test/unittests/compiler/run-variables-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/turboshaft/load-store-address-hoisting-unittest.cc create mode 100644 deps/v8/test/unittests/heap/write-barrier-unittest.cc create mode 100644 deps/v8/test/unittests/profiler/heap-snapshot-unittest.cc create mode 100644 deps/v8/test/unittests/sandbox/sandbox-hardware-support-unittest.cc delete mode 100644 deps/v8/test/unittests/temporal/temporal-parser-unittest.cc create mode 100644 deps/v8/test/unittests/wasm/basic-block-calculator-unittest.cc create mode 100644 deps/v8/test/unittests/wasm/cross-compiler-determinism-fuzztest.cc create mode 100644 deps/v8/test/unittests/wasm/module-generation-fuzztest.cc create mode 100644 deps/v8/test/unittests/wasm/wasm-disassembler-unittest-shared-everything.wasm.inc create mode 100644 deps/v8/test/unittests/wasm/wasm-disassembler-unittest-shared-everything.wat.inc create mode 100644 deps/v8/third_party/abseil-cpp/.clang-format-ignore delete mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes_test.cc create mode 100755 deps/v8/third_party/abseil-cpp/absl/crc/internal/gen_crc32c_consts.py delete mode 100644 deps/v8/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/log/log_entry.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/profiling/hashtable.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/profiling/hashtable.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/profiling/internal/profile_builder.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/profiling/internal/profile_builder.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/time/internal/cctz/src/test_time_zone_names.h delete mode 100644 deps/v8/third_party/abseil-cpp/patches/0004-undeprecate-nullability-types.patch create mode 100644 deps/v8/third_party/dragonbox/BUILD.gn create mode 100644 deps/v8/third_party/dragonbox/OWNERS create mode 100644 deps/v8/third_party/dragonbox/README.v8 create mode 100644 deps/v8/third_party/dragonbox/src/include/dragonbox/dragonbox.h create mode 100644 deps/v8/third_party/dragonbox/src/include/dragonbox/dragonbox_to_chars.h delete mode 100644 deps/v8/third_party/fp16/src/include/fp16/__init__.py delete mode 100644 deps/v8/third_party/fp16/src/include/fp16/avx.py delete mode 100644 deps/v8/third_party/fp16/src/include/fp16/avx2.py create mode 100644 deps/v8/third_party/fp16/src/include/fp16/macros.h delete mode 100644 deps/v8/third_party/fp16/src/include/fp16/psimd.h 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/rapidhash-v8/secret.h delete mode 100644 deps/v8/third_party/zlib/patches/0006-fix-check_match.patch create mode 100644 deps/v8/third_party/zlib/patches/0018-support-prefixed-zip64.patch create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/mutators/allocation_timeout_mutator.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/alloc/alloc.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/alloc/alloc_always_chosen_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/alloc/alloc_not_chosen_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/alloc/alloc_not_enabled_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz/mutations_block_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz/mutations_skip_fun_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/db/assign_expected/CallExpression/113f1844.json create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/regress/db/assign_expected/index.json create mode 100644 deps/v8/tools/sanitizers/linux/arm64/.gitignore create mode 100644 deps/v8/tools/sanitizers/linux/arm64/llvm-symbolizer.sha1 create mode 100644 deps/v8/tools/testrunner/testdata/testroot8/out/build/d8_mocked.py create mode 100644 deps/v8/tools/testrunner/testdata/testroot8/test/sweet/sweet.status create mode 100644 deps/v8/tools/testrunner/testdata/testroot8/test/sweet/testcfg.py delete mode 100644 deps/v8/tools/wasm-compilation-hints/OWNERS delete mode 100755 deps/v8/tools/wasm-compilation-hints/inject-compilation-hints.py delete mode 100755 deps/v8/tools/wasm-compilation-hints/wasm-objdump-compilation-hints.py delete mode 100644 deps/v8/tools/wasm-compilation-hints/wasm.py diff --git a/deps/v8/.clang-format b/deps/v8/.clang-format index 066c8d27c657cf..5318292248e28e 100644 --- a/deps/v8/.clang-format +++ b/deps/v8/.clang-format @@ -10,6 +10,8 @@ Macros: # Make clang-format think TurboShaft `ELSE` expands to just `else`, so that # it formats well alongside `if` - ELSE=else + - FOR_WITH_HANDLE_SCOPE(isolate, init, loop_var, limit_check, increment)=for(init; loop_var; increment) + - WHILE_WITH_HANDLE_SCOPE(isolate, limit_check)=while(limit_check) StatementMacros: - DECL_CAST - DECL_VERIFIER diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index dd4a2b839d34e7..31449e0177a224 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -39,6 +39,15 @@ .settings .torquelint-cache .vscode + +# Directories added by standalone gclient setup. +/.cipd +/.gclient +/.gclient_entries +/.gclient_previous_custom_vars +/.gclient_previous_sync_commits +/.gcs_entries + /_* /base /build @@ -68,6 +77,9 @@ /third_party/colorama/src !/third_party/cpu_features /third_party/cpu_features/src +!/third_party/dragonbox +/third_party/dragonbox/src/* +!/third_party/dragonbox/src/include !/third_party/fast_float /third_party/fast_float/src/* !/third_party/fast_float/src/include @@ -89,6 +101,7 @@ /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/siphash @@ -116,6 +129,7 @@ /tools/v8heapconst.py /tools/visual_studio/Debug /tools/visual_studio/Release +/tools/win /v8.log.ll /xcodebuild GPATH diff --git a/deps/v8/.gn b/deps/v8/.gn index d83c69db63f963..e13ae6d5ec82da 100644 --- a/deps/v8/.gn +++ b/deps/v8/.gn @@ -28,11 +28,14 @@ default_args = { # Disable js dependencies like the closure compiler. enable_js_protobuf = false - # Disable rust dependencies. + # Enable rust dependencies. enable_rust = true # Needed only for std::atomic_ref for large Ts http://crbug.com/402171653 use_llvm_libatomic = false + + # Use Siso instead of Ninja. + use_siso = true } # These are the list of GN files that run exec_script. This whitelist exists diff --git a/deps/v8/.ycm_extra_conf.py b/deps/v8/.ycm_extra_conf.py index 793beda7955990..382abaea15d114 100644 --- a/deps/v8/.ycm_extra_conf.py +++ b/deps/v8/.ycm_extra_conf.py @@ -132,7 +132,11 @@ def GetClangCommandFromNinjaForFilename(v8_root, filename): # Ninja might execute several commands to build something. We want the last # clang command. clang_line = None - for line in reversed(stdout.decode('utf-8').splitlines()): + for line in reversed(stdout.splitlines()): + try: + line = line.decode('utf-8') + except UnicodeDecodeError: + continue if 'clang' in line: clang_line = line break diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 280e33e6841cc1..ffce5c6df023ce 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -57,6 +57,7 @@ Alexander Botero-Lowry Alexander Karpinsky Alexander Neville Alexandre Vassalotti +Albert Slepak Alexey Pavlyutkin Alexis Campailla Aliya Minimullina @@ -130,6 +131,7 @@ Fedor Indutny Felix Geisendörfer Feng Yu Filipe David Manana +Florian Loitsch Frank Lemanschik Franziska Hinkelmann Gao Sheng @@ -148,6 +150,7 @@ Helmut Januschka Hirofumi Mako Hisham Muhammad Honggyu Kim +Hood Chatham Huáng Jùnliàng HyeockJin Kim Iain Ireland @@ -183,12 +186,14 @@ Junha Park Junming Huang Kang-Hao (Kenny) Lu Karl Skomski +Kasper Lund Keith Smiley Kevin Gibbons Keyhan Vakil Kris Selden Kyounga Ra Levi Zim +LN Liberda Loo Rong Jie Lu Yahan Ludovic Mermod @@ -270,6 +275,7 @@ Sanjoy Das Sam James Sébastien Doeraene Seo Sanghyeon +Sergey Markelov Shawn Anastasio Shawn Presser Sho Miyamoto @@ -302,6 +308,7 @@ Wael Almattar Wang Chen WANG Xuerui Wei Wu +Weicong Yu Wenlu Wang Wenming Yang Wenyu Zhao @@ -335,3 +342,5 @@ Jing Peiyang magic-akari Ryuhei Shima Domagoj Stolfa +Zhijin Zeng +王家睿 diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index 96196f13ed008a..3bbb5fd48f8a83 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -3,6 +3,8 @@ # found in the LICENSE file. load("@bazel_skylib//lib:selects.bzl", "selects") +load("@rules_cc//cc:cc_library.bzl", "cc_library") +load("@rules_cc//cc:cc_binary.bzl", "cc_binary") load("@rules_python//python:defs.bzl", "py_binary", "py_test") load("@v8_python_deps//:requirements.bzl", "requirement") load( @@ -75,7 +77,6 @@ load(":bazel/v8-non-pointer-compression.bzl", "v8_binary_non_pointer_compression # cppgc_enable_slow_api_checks # cppgc_enable_verify_heap # cppgc_enable_young_generation -# v8_enable_zone_compression # v8_enable_precise_zone_stats # v8_enable_swiss_name_dictionary # v8_generate_external_defines_header @@ -138,7 +139,10 @@ v8_flag(name = "v8_enable_snapshot_code_comments") v8_flag(name = "v8_enable_snapshot_native_code_counters") -v8_flag(name = "v8_enable_static_roots") +v8_flag( + name = "v8_enable_static_roots", + default = True, +) v8_flag(name = "v8_enable_trace_maps") @@ -406,6 +410,24 @@ config_setting( }, ) +# Explicity defined v8_enable_static_roots +config_setting( + name = "v8_enable_static_roots_is_true", + flag_values = { + ":v8_enable_static_roots": "True", + }, +) + +# Enable static roots when pointer compression and external code space is enabled +selects.config_setting_group( + name = "enable_static_roots", + match_all = [ + ":v8_enable_static_roots_is_true", + ":is_v8_enable_pointer_compression", + ":enable_external_code_space", + ], +) + # Enable VTune jit profiling v8_flag( name = "v8_enable_vtunejit", @@ -474,7 +496,6 @@ v8_config( "v8_enable_slow_dchecks": "ENABLE_SLOW_DCHECKS", "v8_enable_runtime_call_stats": "V8_RUNTIME_CALL_STATS", "v8_enable_snapshot_native_code_counters": "V8_SNAPSHOT_NATIVE_CODE_COUNTERS", - "v8_enable_static_roots": "V8_STATIC_ROOTS", "v8_enable_trace_maps": "V8_TRACE_MAPS", "v8_enable_turbofan": "V8_ENABLE_TURBOFAN", "v8_enable_v8_checks": "V8_ENABLE_CHECKS", @@ -571,6 +592,11 @@ v8_config( "V8_EXTERNAL_CODE_SPACE", ], "//conditions:default": [], + }) + select({ + ":enable_static_roots": [ + "V8_STATIC_ROOTS", + ], + "//conditions:default": [], }) + select({ ":enable_maglev": [ "V8_ENABLE_MAGLEV", @@ -801,6 +827,8 @@ filegroup( "src/base/flags.h", "src/base/fpu.cc", "src/base/fpu.h", + "src/base/functional/bind-internal.h", + "src/base/functional/function-ref.h", "src/base/free_deleter.h", "src/base/hashing.h", "src/base/hashmap.h", @@ -892,6 +920,7 @@ filegroup( "src/base/template-utils.h", "src/base/threaded-list.h", "src/base/timezone-cache.h", + "src/base/types/is-instantiation.h", "src/base/utils/random-number-generator.cc", "src/base/utils/random-number-generator.h", "src/base/vector.h", @@ -1176,7 +1205,8 @@ filegroup( "src/objects/js-shadow-realm.tq", "src/objects/js-shared-array.tq", "src/objects/js-struct.tq", - "src/objects/js-temporal-objects.tq", + # Temporal is currently gn-only + # "src/objects/js-temporal-objects.tq", "src/objects/js-weak-refs.tq", "src/objects/literal-objects.tq", "src/objects/map.tq", @@ -1318,8 +1348,6 @@ filegroup( "src/api/api-arguments.h", "src/api/api-arguments-inl.h", "src/api/api-inl.h", - "src/api/api-macros.h", - "src/api/api-macros-undef.h", "src/api/api-natives.cc", "src/api/api-natives.h", "src/asmjs/asm-js.h", @@ -1381,6 +1409,8 @@ filegroup( "src/builtins/builtins-definitions.h", "src/builtins/builtins-descriptors.h", "src/builtins/builtins-disposable-stack.cc", + "src/builtins/builtins-effects-analyzer.cc", + "src/builtins/builtins-effects-analyzer.h", "src/builtins/builtins-error.cc", "src/builtins/builtins-function.cc", "src/builtins/builtins-global.cc", @@ -1397,7 +1427,8 @@ filegroup( "src/builtins/builtins-string.cc", "src/builtins/builtins-struct.cc", "src/builtins/builtins-symbol.cc", - "src/builtins/builtins-temporal.cc", + # Temporal is currently gn-only + # "src/builtins/builtins-temporal.cc", "src/builtins/builtins-trace.cc", "src/builtins/builtins-typed-array.cc", "src/builtins/builtins-utils.h", @@ -1502,6 +1533,7 @@ filegroup( "src/common/ptr-compr.h", "src/common/ptr-compr-inl.h", "src/common/thread-local-storage.h", + "src/common/scoped-modification.h", "src/common/segmented-table.h", "src/common/segmented-table-inl.h", "src/common/simd128.h", @@ -1718,6 +1750,7 @@ filegroup( "src/heap/free-list.h", "src/heap/free-list-inl.h", "src/heap/gc-callbacks.h", + "src/heap/gc-callbacks-inl.h", "src/heap/gc-tracer.cc", "src/heap/gc-tracer.h", "src/heap/gc-tracer-inl.h", @@ -1802,6 +1835,8 @@ filegroup( "src/heap/memory-measurement.cc", "src/heap/memory-measurement.h", "src/heap/memory-measurement-inl.h", + "src/heap/memory-pool.cc", + "src/heap/memory-pool.h", "src/heap/memory-reducer.cc", "src/heap/memory-reducer.h", "src/heap/minor-gc-job.cc", @@ -1819,8 +1854,6 @@ filegroup( "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", @@ -1930,6 +1963,8 @@ filegroup( "src/interpreter/interpreter-generator.h", "src/interpreter/interpreter-intrinsics.cc", "src/interpreter/interpreter-intrinsics.h", + "src/interpreter/prototype-assignment-sequence-builder.cc", + "src/interpreter/prototype-assignment-sequence-builder.h", "src/json/json-parser.cc", "src/json/json-parser.h", "src/json/json-stringifier.cc", @@ -1955,6 +1990,7 @@ filegroup( "src/numbers/conversions.cc", "src/numbers/conversions.h", "src/numbers/conversions-inl.h", + "src/numbers/hash-seed.h", "src/numbers/hash-seed-inl.h", "src/numbers/ieee754.cc", "src/numbers/ieee754.h", @@ -2105,9 +2141,12 @@ filegroup( "src/objects/js-struct.cc", "src/objects/js-struct.h", "src/objects/js-struct-inl.h", - "src/objects/js-temporal-objects.cc", - "src/objects/js-temporal-objects.h", - "src/objects/js-temporal-objects-inl.h", + # Temporal is currently gn-only + # "src/objects/js-temporal-objects.cc", + # "src/objects/js-temporal-objects.h", + # "src/objects/js-temporal-objects-inl.h", + "src/objects/js-temporal-helpers.h", + "src/objects/js-temporal-helpers.cc", "src/objects/js-weak-refs.cc", "src/objects/js-weak-refs.h", "src/objects/js-weak-refs-inl.h", @@ -2141,6 +2180,9 @@ filegroup( "src/objects/module-inl.h", "src/objects/name.h", "src/objects/name-inl.h", + "src/objects/number-string-cache.cc", + "src/objects/number-string-cache.h", + "src/objects/number-string-cache-inl.h", "src/objects/object-list-macros.h", "src/objects/object-macros.h", "src/objects/object-macros-undef.h", @@ -2159,7 +2201,6 @@ filegroup( "src/objects/hole.h", "src/objects/trusted-object.h", "src/objects/trusted-object-inl.h", - "src/objects/hole-inl.h", "src/objects/option-utils.cc", "src/objects/option-utils.h", "src/objects/ordered-hash-table.cc", @@ -2190,6 +2231,7 @@ filegroup( "src/objects/scope-info.cc", "src/objects/scope-info.h", "src/objects/scope-info-inl.h", + "src/objects/script.cc", "src/objects/script.h", "src/objects/script-inl.h", "src/objects/shared-function-info.cc", @@ -2303,6 +2345,7 @@ filegroup( "src/profiler/cpu-profiler-inl.h", "src/profiler/heap-profiler.cc", "src/profiler/heap-profiler.h", + "src/profiler/heap-snapshot-common.h", "src/profiler/heap-snapshot-generator.cc", "src/profiler/heap-snapshot-generator.h", "src/profiler/heap-snapshot-generator-inl.h", @@ -2341,10 +2384,16 @@ filegroup( "src/regexp/regexp-bytecode-generator.cc", "src/regexp/regexp-bytecode-generator.h", "src/regexp/regexp-bytecode-generator-inl.h", + "src/regexp/regexp-bytecode-iterator.cc", + "src/regexp/regexp-bytecode-iterator.h", + "src/regexp/regexp-bytecode-iterator-inl.h", "src/regexp/regexp-bytecode-peephole.cc", "src/regexp/regexp-bytecode-peephole.h", "src/regexp/regexp-bytecodes.cc", "src/regexp/regexp-bytecodes.h", + "src/regexp/regexp-bytecodes-inl.h", + "src/regexp/regexp-code-generator.cc", + "src/regexp/regexp-code-generator.h", "src/regexp/regexp-compiler.cc", "src/regexp/regexp-compiler.h", "src/regexp/regexp-compiler-tonode.cc", @@ -2374,6 +2423,10 @@ filegroup( "src/roots/roots.h", "src/roots/roots-inl.h", "src/roots/static-roots.h", + "src/roots/static-roots-intl-nowasm.h", + "src/roots/static-roots-intl-wasm.h", + "src/roots/static-roots-nointl-nowasm.h", + "src/roots/static-roots-nointl-wasm.h", "src/runtime/runtime.cc", "src/runtime/runtime.h", "src/runtime/runtime-array.cc", @@ -2401,11 +2454,9 @@ filegroup( "src/runtime/runtime-shadow-realm.cc", "src/runtime/runtime-strings.cc", "src/runtime/runtime-symbol.cc", - "src/runtime/runtime-temporal.cc", "src/runtime/runtime-test.cc", "src/runtime/runtime-trace.cc", "src/runtime/runtime-typedarray.cc", - "src/runtime/runtime-utils.cc", "src/runtime/runtime-utils.h", "src/runtime/runtime-weak-refs.cc", "src/sandbox/bounded-size.h", @@ -2434,6 +2485,7 @@ filegroup( "src/sandbox/trusted-pointer-table-inl.h", "src/sandbox/code-pointer.h", "src/sandbox/code-pointer-inl.h", + "src/sandbox/code-sandboxing-mode.h", "src/sandbox/compactible-external-entity-table-inl.h", "src/sandbox/compactible-external-entity-table.h", "src/sandbox/isolate.h", @@ -2448,11 +2500,13 @@ filegroup( "src/sandbox/hardware-support.h", "src/sandbox/sandbox.cc", "src/sandbox/sandbox.h", + "src/sandbox/sandbox-malloc.h", "src/sandbox/sandboxed-pointer.h", "src/sandbox/sandboxed-pointer-inl.h", "src/sandbox/tagged-payload.h", "src/sandbox/testing.cc", "src/sandbox/testing.h", + "src/snapshot/builtins-effects-dummy.cc", "src/snapshot/code-serializer.cc", "src/snapshot/code-serializer.h", "src/snapshot/context-deserializer.cc", @@ -2507,6 +2561,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", @@ -2525,8 +2580,6 @@ filegroup( "src/tasks/operations-barrier.h", "src/tasks/task-utils.cc", "src/tasks/task-utils.h", - "src/temporal/temporal-parser.cc", - "src/temporal/temporal-parser.h", "src/torque/runtime-macro-shims.h", "src/tracing/trace-event.cc", "src/tracing/trace-event.h", @@ -2553,6 +2606,8 @@ filegroup( "src/utils/locked-queue-inl.h", "src/utils/memcopy.cc", "src/utils/memcopy.h", + "src/utils/output-stream.cc", + "src/utils/output-stream.h", "src/utils/ostreams.cc", "src/utils/ostreams.h", "src/utils/scoped-list.h", @@ -2566,7 +2621,6 @@ filegroup( "src/utils/version.h", "src/zone/accounting-allocator.cc", "src/zone/accounting-allocator.h", - "src/zone/compressed-zone-ptr.h", "src/zone/type-stats.cc", "src/zone/type-stats.h", "src/zone/zone.cc", @@ -2574,7 +2628,6 @@ filegroup( "src/zone/zone-allocator.h", "src/zone/zone-chunk-list.h", "src/zone/zone-compact-set.h", - "src/zone/zone-compression.h", "src/zone/zone-containers.h", "src/zone/zone-hashmap.h", "src/zone/zone-list.h", @@ -2583,6 +2636,8 @@ 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/rapidhash-v8/secret.h", "third_party/siphash/halfsiphash.cc", "third_party/siphash/halfsiphash.h", "third_party/utf8-decoder/utf8-decoder.h", @@ -2843,6 +2898,7 @@ filegroup( "src/maglev/maglev-deopt-frame-visitor.h", "src/maglev/maglev-graph-builder.h", "src/maglev/maglev-graph-labeller.h", + "src/maglev/maglev-graph-optimizer.h", "src/maglev/maglev-graph-printer.h", "src/maglev/maglev-graph-processor.h", "src/maglev/maglev-graph-verifier.h", @@ -2852,10 +2908,14 @@ filegroup( "src/maglev/maglev-ir-inl.h", "src/maglev/maglev-ir.h", "src/maglev/maglev-phi-representation-selector.h", + "src/maglev/maglev-truncation.h", "src/maglev/maglev-pipeline-statistics.h", "src/maglev/maglev-post-hoc-optimizations-processors.h", "src/maglev/maglev-pre-regalloc-codegen-processors.h", + "src/maglev/maglev-reducer-inl.h", + "src/maglev/maglev-reducer.h", "src/maglev/maglev-regalloc-data.h", + "src/maglev/maglev-regalloc-node-info.h", "src/maglev/maglev-regalloc.h", "src/maglev/maglev-register-frame-array.h", "src/maglev/maglev.h", @@ -2866,10 +2926,15 @@ filegroup( "src/maglev/maglev-compiler.cc", "src/maglev/maglev-concurrent-dispatcher.cc", "src/maglev/maglev-graph-builder.cc", + "src/maglev/maglev-graph-labeller.cc", + "src/maglev/maglev-graph-optimizer.cc", "src/maglev/maglev-graph-printer.cc", + "src/maglev/maglev-graph.cc", + "src/maglev/maglev-inlining.cc", "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-ir.cc", "src/maglev/maglev-phi-representation-selector.cc", + "src/maglev/maglev-truncation.cc", "src/maglev/maglev-pipeline-statistics.cc", "src/maglev/maglev-regalloc.cc", "src/maglev/maglev.cc", @@ -2937,6 +3002,8 @@ filegroup( "src/wasm/baseline/parallel-move.cc", "src/wasm/baseline/parallel-move.h", "src/wasm/baseline/parallel-move-inl.h", + "src/wasm/basic-block-calculator.cc", + "src/wasm/basic-block-calculator.h", "src/wasm/branch-hint-map.h", "src/wasm/canonical-types.cc", "src/wasm/canonical-types.h", @@ -2989,10 +3056,12 @@ filegroup( "src/wasm/sync-streaming-decoder.cc", "src/wasm/turboshaft-graph-interface.cc", "src/wasm/turboshaft-graph-interface.h", + "src/wasm/turboshaft-graph-interface-inl.h", "src/wasm/value-type.cc", "src/wasm/value-type.h", "src/wasm/wasm-arguments.h", "src/wasm/wasm-builtin-list.h", + "src/wasm/wasm-code-coverage.h", "src/wasm/wasm-code-manager.cc", "src/wasm/wasm-code-manager.h", "src/wasm/wasm-code-pointer-table.cc", @@ -3007,6 +3076,8 @@ filegroup( "src/wasm/wasm-disassembler-impl.h", "src/wasm/wasm-engine.cc", "src/wasm/wasm-engine.h", + "src/wasm/wasm-export-wrapper-cache.cc", + "src/wasm/wasm-export-wrapper-cache.h", "src/wasm/wasm-external-refs.cc", "src/wasm/wasm-external-refs.h", "src/wasm/wasm-features.cc", @@ -3040,6 +3111,8 @@ filegroup( "src/wasm/well-known-imports.cc", "src/wasm/well-known-imports.h", "src/wasm/wrappers.cc", + "src/wasm/wrappers.h", + "src/wasm/wrappers-inl.h", "third_party/utf8-decoder/generalized-utf8-decoder.h", ], "//conditions:default": [], @@ -3146,7 +3219,6 @@ filegroup( "src/compiler/backend/instruction-scheduler.h", "src/compiler/backend/instruction-selector.cc", "src/compiler/backend/instruction-selector.h", - "src/compiler/backend/instruction-selector-adapter.h", "src/compiler/backend/instruction-selector-impl.h", "src/compiler/backend/jump-threading.cc", "src/compiler/backend/jump-threading.h", @@ -3182,6 +3254,8 @@ filegroup( "src/compiler/common-operator.h", "src/compiler/common-operator-reducer.cc", "src/compiler/common-operator-reducer.h", + "src/compiler/common-utils.cc", + "src/compiler/common-utils.h", "src/compiler/compilation-dependencies.cc", "src/compiler/compilation-dependencies.h", "src/compiler/compiler-source-position-table.cc", @@ -3362,8 +3436,18 @@ filegroup( "src/compiler/turboshaft/build-graph-phase.h", "src/compiler/turboshaft/builtin-call-descriptors.h", "src/compiler/turboshaft/builtin-compiler.h", - "src/compiler/turboshaft/csa-optimize-phase.cc", - "src/compiler/turboshaft/csa-optimize-phase.h", + "src/compiler/turboshaft/csa-branch-elimination-phase.cc", + "src/compiler/turboshaft/csa-branch-elimination-phase.h", + "src/compiler/turboshaft/csa-early-machine-optimization-phase.cc", + "src/compiler/turboshaft/csa-early-machine-optimization-phase.h", + "src/compiler/turboshaft/csa-effects-computation.cc", + "src/compiler/turboshaft/csa-effects-computation.h", + "src/compiler/turboshaft/csa-late-escape-analysis-phase.cc", + "src/compiler/turboshaft/csa-late-escape-analysis-phase.h", + "src/compiler/turboshaft/csa-load-elimination-phase.cc", + "src/compiler/turboshaft/csa-load-elimination-phase.h", + "src/compiler/turboshaft/csa-memory-optimization-phase.cc", + "src/compiler/turboshaft/csa-memory-optimization-phase.h", "src/compiler/turboshaft/dataview-lowering-reducer.h", "src/compiler/turboshaft/code-elimination-and-simplification-phase.cc", "src/compiler/turboshaft/code-elimination-and-simplification-phase.h", @@ -3391,6 +3475,7 @@ filegroup( "src/compiler/turboshaft/graph-visualizer.cc", "src/compiler/turboshaft/graph-visualizer.h", "src/compiler/turboshaft/js-generic-lowering-reducer.h", + "src/compiler/turboshaft/if-else-cascade-to-switch-reducer.h", "src/compiler/turboshaft/index.h", "src/compiler/turboshaft/instruction-selection-normalization-reducer.h", "src/compiler/turboshaft/instruction-selection-phase.cc", @@ -3413,7 +3498,7 @@ filegroup( "src/compiler/turboshaft/machine-lowering-phase.cc", "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/turbolev-early-lowering-reducer-inl.h", "src/compiler/turboshaft/turbolev-graph-builder.cc", "src/compiler/turboshaft/turbolev-graph-builder.h", "src/compiler/turboshaft/machine-optimization-reducer.h", @@ -3451,7 +3536,6 @@ filegroup( "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", "src/compiler/turboshaft/type-assertions-phase.cc", "src/compiler/turboshaft/type-assertions-phase.h", @@ -3474,6 +3558,7 @@ filegroup( "src/compiler/turboshaft/utils.h", "src/compiler/turboshaft/value-numbering-reducer.h", "src/compiler/turboshaft/variable-reducer.h", + "src/compiler/turboshaft/wasm-code-coverage-reducer.h", "src/compiler/turboshaft/wasm-js-lowering-reducer.h", "src/compiler/turboshaft/zone-with-name.h", "src/compiler/type-cache.cc", @@ -3612,21 +3697,30 @@ filegroup( "src/maglev/maglev-compilation-unit.h", "src/maglev/maglev-graph-builder.cc", "src/maglev/maglev-graph-builder.h", + "src/maglev/maglev-graph-optimizer.cc", + "src/maglev/maglev-graph-optimizer.h", + "src/maglev/maglev-graph.cc", "src/maglev/maglev-graph.h", "src/maglev/maglev-graph-labeller.h", + "src/maglev/maglev-graph-labeller.cc", "src/maglev/maglev-graph-printer.cc", "src/maglev/maglev-graph-printer.h", "src/maglev/maglev-graph-processor.h", "src/maglev/maglev-graph-verifier.h", + "src/maglev/maglev-inlining.cc", "src/maglev/maglev-inlining.h", "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-interpreter-frame-state.h", "src/maglev/maglev-ir.cc", "src/maglev/maglev-ir.h", "src/maglev/maglev-ir-inl.h", + "src/maglev/maglev-reducer-inl.h", + "src/maglev/maglev-reducer.h", "src/maglev/maglev-register-frame-array.h", "src/maglev/maglev-phi-representation-selector.cc", "src/maglev/maglev-phi-representation-selector.h", + "src/maglev/maglev-truncation.cc", + "src/maglev/maglev-truncation.h", "src/maglev/maglev-post-hoc-optimizations-processors.h", "src/maglev/maglev-pre-regalloc-codegen-processors.h", ], @@ -3663,8 +3757,8 @@ filegroup( "src/builtins/builtins-interpreter-gen.cc", "src/builtins/builtins-iterator-gen.cc", "src/builtins/builtins-iterator-gen.h", - "src/builtins/builtins-lazy-gen.cc", - "src/builtins/builtins-lazy-gen.h", + "src/builtins/js-trampoline-assembler.cc", + "src/builtins/js-trampoline-assembler.h", "src/builtins/builtins-microtask-queue-gen.cc", "src/builtins/builtins-number-gen.cc", "src/builtins/builtins-number-tsa.cc", @@ -3681,7 +3775,6 @@ filegroup( "src/builtins/builtins-string-gen.cc", "src/builtins/builtins-string-gen.h", "src/builtins/builtins-string-tsa.cc", - "src/builtins/builtins-temporal-gen.cc", "src/builtins/builtins-typed-array-gen.cc", "src/builtins/builtins-typed-array-gen.h", "src/builtins/builtins-utils-gen.h", @@ -3864,6 +3957,8 @@ filegroup( "src/heap/base/memory-tagging.cc", "src/heap/base/stack.cc", "src/heap/base/stack.h", + "src/heap/base/unsafe-json-emitter.cc", + "src/heap/base/unsafe-json-emitter.h", "src/heap/base/worklist.cc", "src/heap/base/worklist.h", ] + select({ @@ -3883,12 +3978,24 @@ filegroup( }), ) +v8_library( + name = "lib_dragonbox", + srcs = ["third_party/dragonbox/src/include/dragonbox/dragonbox.h"], + hdrs = [ + "third_party/dragonbox/src/include/dragonbox/dragonbox.h", + ], + includes = [ + "third_party/dragonbox/src/include", + ], +) + v8_library( name = "lib_fp16", srcs = ["third_party/fp16/src/include/fp16.h"], hdrs = [ "third_party/fp16/src/include/fp16/fp16.h", "third_party/fp16/src/include/fp16/bitcasts.h", + "third_party/fp16/src/include/fp16/macros.h", ], includes = [ "third_party/fp16/src/include", @@ -4325,7 +4432,11 @@ v8_library( ":v8_shared_internal_headers", ], copts = ["-Wno-implicit-fallthrough"], - deps = ["@abseil-cpp//absl/synchronization", "@abseil-cpp//absl/time"], + deps = [ + "@abseil-cpp//absl/synchronization", + "@abseil-cpp//absl/time", + "@abseil-cpp//absl/functional:overload", + ], ) cc_library( @@ -4359,6 +4470,12 @@ cc_library( name = "simdutf", srcs = ["third_party/simdutf/simdutf.cpp"], hdrs = ["third_party/simdutf/simdutf.h"], + copts = select({ + "@v8//bazel/config:is_clang": ["-std=c++20"], + "@v8//bazel/config:is_gcc": ["-std=gnu++2a"], + "@v8//bazel/config:is_windows": ["/std:c++20"], + "//conditions:default": [], + }), ) v8_library( @@ -4389,6 +4506,7 @@ v8_library( ":noicu/generated_torque_definitions", ], deps = [ + ":lib_dragonbox", "//third_party/fast_float/src:fast_float", ":lib_fp16", ":simdutf", @@ -4396,6 +4514,7 @@ v8_library( "@abseil-cpp//absl/container:btree", "@abseil-cpp//absl/container:flat_hash_map", "@abseil-cpp//absl/container:flat_hash_set", + "@abseil-cpp//absl/functional:overload", "@highway//:hwy", ], ) diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index e565537e080035..487a7466168196 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -47,6 +47,9 @@ declare_args() { # Sets -DVERIFY_HEAP. v8_enable_verify_heap = "" + # Sets -DVERIFY_WRITE_BARRIERS. + v8_enable_verify_write_barriers = "" + # Sets -DVERIFY_PREDICTABLE v8_enable_verify_predictable = false @@ -158,6 +161,9 @@ declare_args() { # Sets -DOBJECT_PRINT. v8_enable_object_print = "" + # Sets -DALWAYS_MAGLEV_GRAPH_LABELLER. + v8_always_enable_maglev_graph_labeller = "" + # Sets -DV8_TRACE_MAPS. v8_enable_trace_maps = "" @@ -234,6 +240,11 @@ declare_args() { # in step 3 or 4. v8_builtins_profiling_log_file = "default" + # Enable gearbox (instruction set extension) for builtins, the gearbox + # feature only supports x64 arch yet. + # Sets -DV8_BUILTINS_GEARBOX + v8_enable_builtins_gearbox = false + # Enables various testing features. v8_enable_test_features = "" @@ -334,14 +345,14 @@ declare_args() { # Enable allocations during prefinalizer invocations. cppgc_allow_allocations_in_prefinalizers = false - # Enable V8 zone compression experimental feature. - # Sets -DV8_COMPRESS_ZONES. - v8_enable_zone_compression = "" - # Enable the V8 sandbox. # Sets -DV8_ENABLE_SANDBOX. v8_enable_sandbox = "" + # Enable experimental hardware support for the V8 sandbox if available. + # Sets -DV8_ENABLE_SANDBOX_HARDWARE_SUPPORT + v8_enable_sandbox_hardware_support = false + # Enable leaptiering v8_enable_leaptiering = true @@ -401,32 +412,6 @@ declare_args() { # This is only used by nodejs. v8_scriptormodule_legacy_lifetime = false - # WebAssembly interpreter (DrumBrake) build flag. - v8_enable_drumbrake = false - - # Enable Wasm interpreter tracing. - v8_enable_drumbrake_tracing = false - - # 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). - # 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_clang || - is_component_build - # Enables pointer compression for 8GB heaps. # Sets -DV8_COMPRESS_POINTERS_8GB. v8_enable_pointer_compression_8gb = "" @@ -457,7 +442,8 @@ declare_args() { v8_enable_slow_tracing = is_debug # Enable jump table switch for built-in. - v8_enable_builtin_jump_table_switch = v8_current_cpu == "x64" + v8_enable_builtin_jump_table_switch = + v8_current_cpu == "x64" || v8_current_cpu == "arm64" v8_shortcut_strings_in_minor_ms = false @@ -465,9 +451,6 @@ declare_args() { # ReadOnlySpace. v8_enable_extensible_ro_snapshot = true - # Enable Turboshaft CSA pipeline. - v8_enable_turboshaft_csa = false - # Black allocate objects on separate pages. v8_enable_black_allocated_pages = "" @@ -488,10 +471,6 @@ declare_args() { # 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 @@ -514,6 +493,12 @@ declare_args() { # Deinterleaving load support. v8_enable_wasm_deinterleaved_mem_ops = false + + # Expose F.p.caller and .arguments as own properties. + v8_function_arguments_caller_are_own_props = false + + # Use a hard-coded secret value when hashing. + v8_use_default_hasher_secret = true } # Derived defaults. @@ -523,9 +508,16 @@ if (cppgc_enable_verify_heap == "") { if (v8_enable_verify_heap == "") { v8_enable_verify_heap = v8_enable_debugging_features } +if (v8_enable_verify_write_barriers == "") { + v8_enable_verify_write_barriers = + v8_enable_debugging_features && !v8_disable_write_barriers +} if (v8_enable_object_print == "") { v8_enable_object_print = v8_enable_debugging_features } +if (v8_always_enable_maglev_graph_labeller == "") { + v8_always_enable_maglev_graph_labeller = v8_enable_debugging_features +} if (v8_enable_disassembler == "") { v8_enable_disassembler = v8_enable_debugging_features } @@ -576,6 +568,8 @@ if (v8_multi_arch_build && rebase_path(get_label_info(":d8", "root_out_dir"), root_build_dir) == "clang_x64_fuzzer_experiments") { v8_enable_pointer_compression = !v8_enable_pointer_compression + v8_enable_experimental_undefined_double = + !v8_enable_experimental_undefined_double v8_lower_limits_mode = !v8_lower_limits_mode } @@ -602,9 +596,6 @@ if (v8_enable_fast_torque == "") { 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" || @@ -629,9 +620,14 @@ if (v8_enable_maglev == "") { assert(v8_enable_turbofan || !v8_enable_maglev, "Maglev is not available when Turbofan is disabled.") -assert(!v8_jitless || (!v8_enable_sparkplug && !v8_enable_maglev && - !v8_enable_turbofan && !v8_enable_webassembly), - "Sparkplug, Maglev, Turbofan and Wasm are not available in jitless mode") +is_wasm_interpreter_mode_enabled = + !v8_enable_sparkplug && !v8_enable_maglev && !v8_enable_turbofan && + v8_enable_webassembly && v8_enable_drumbrake +assert( + !v8_jitless || (!v8_enable_sparkplug && !v8_enable_maglev && + !v8_enable_turbofan && !v8_enable_webassembly) || + is_wasm_interpreter_mode_enabled, + "Sparkplug, Maglev, Turbofan and Wasm are not available in jitless mode. But, if the Wasm interpreter mode is on, Wasm can work in jitless mode") if (v8_enable_single_generation == "") { v8_enable_single_generation = v8_disable_write_barriers @@ -677,19 +673,12 @@ if (v8_enable_sandbox == "") { if (v8_enable_static_roots == "") { # Static roots are only valid for builds with pointer compression and a # shared read-only heap. - # TODO(olivf, v8:13466) Some configurations could be supported if we - # introduce different static root files for different build configurations: - # Non-wasm and non-i18n builds have fewer read only roots. Configurations - # 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_external_code_space && - v8_enable_webassembly && v8_enable_i18n_support + v8_enable_pointer_compression && v8_enable_external_code_space } assert(!v8_enable_static_roots || - (v8_enable_pointer_compression && v8_enable_external_code_space && - v8_enable_webassembly && v8_enable_i18n_support), + (v8_enable_pointer_compression && v8_enable_external_code_space), "Trying to enable static roots in a configuration that is not supported") assert( @@ -750,6 +739,9 @@ if (v8_enable_webassembly && v8_current_cpu == "arm64") { assert(!v8_disable_write_barriers || v8_enable_single_generation, "Disabling write barriers works only with single generation") +assert(!v8_enable_verify_write_barriers || !v8_disable_write_barriers, + "Write barriers need to be enabled for verification") + assert(v8_current_cpu == "arm64" || !v8_control_flow_integrity, "Control-flow integrity is only supported on arm64") @@ -768,12 +760,16 @@ assert(!v8_enable_pointer_compression_8gb || v8_enable_pointer_compression, 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_leaptiering, + "non-leaptiering is deprecated (see https://groups.google.com/g/v8-dev/c/PYk2_GGP2Wk)") assert(!v8_enable_memory_corruption_api || v8_enable_sandbox, "The Memory Corruption API requires the sandbox") +assert(!v8_enable_sandbox_hardware_support || v8_enable_sandbox, + "The sandbox must be enabled to enable sandbox hardware support") + assert( !v8_enable_pointer_compression_shared_cage || v8_enable_pointer_compression, "Can't share a pointer compression cage if pointers aren't compressed") @@ -824,14 +820,6 @@ 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") @@ -839,6 +827,8 @@ assert( v8_random_seed = "314159265" v8_toolset_for_shell = "host" +is_DEBUG_defined = v8_enable_debugging_features || v8_dcheck_always_on + ############################################################################### # Configurations # @@ -853,6 +843,7 @@ config("internal_config_base") { ".", "include", "$target_gen_dir", + "$target_gen_dir/include", ] } @@ -977,6 +968,7 @@ external_v8_defines = [ "V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT=${v8_array_buffer_internal_field_count}", "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_USE_DEFAULT_HASHER_SECRET=${v8_use_default_hasher_secret}", "V8_ENABLE_CHECKS", "V8_ENABLE_MEMORY_ACCOUNTING_CHECKS", "V8_COMPRESS_POINTERS", @@ -1005,6 +997,7 @@ enabled_external_v8_defines = [ "V8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT=${v8_array_buffer_internal_field_count}", "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_USE_DEFAULT_HASHER_SECRET=${v8_use_default_hasher_secret}", ] if (v8_enable_v8_checks) { @@ -1022,9 +1015,6 @@ if (v8_enable_pointer_compression) { if (v8_enable_pointer_compression || v8_enable_31bit_smis_on_64bit_arch) { enabled_external_v8_defines += [ "V8_31BIT_SMIS_ON_64BIT_ARCH" ] } -if (v8_enable_zone_compression) { - enabled_external_v8_defines += [ "V8_COMPRESS_ZONES" ] -} if (v8_enable_sandbox) { enabled_external_v8_defines += [ "V8_ENABLE_SANDBOX" ] } @@ -1222,9 +1212,15 @@ config("features") { if (v8_enable_object_print) { defines += [ "OBJECT_PRINT" ] } + if (v8_always_enable_maglev_graph_labeller) { + defines += [ "ALWAYS_MAGLEV_GRAPH_LABELLER" ] + } if (v8_enable_verify_heap) { defines += [ "VERIFY_HEAP" ] } + if (v8_enable_verify_write_barriers) { + defines += [ "V8_VERIFY_WRITE_BARRIERS" ] + } if (v8_enable_verify_predictable) { defines += [ "VERIFY_PREDICTABLE" ] } @@ -1241,10 +1237,17 @@ config("features") { defines += [ "V8_ENABLE_ALLOCATION_TIMEOUT" ] defines += [ "V8_ENABLE_FORCE_SLOW_PATH" ] defines += [ "V8_ENABLE_DOUBLE_CONST_STORE_CHECK" ] + + # Expose the runtime flag --hashes-collide for fuzzing purposes (to create + # hash collisions all the time). + defines += [ "V8_HASHES_COLLIDE" ] } if (v8_enable_i18n_support) { defines += [ "V8_INTL_SUPPORT" ] } + if (v8_enable_temporal_support) { + defines += [ "V8_TEMPORAL_SUPPORT" ] + } if (v8_enable_local_handle_zapping) { defines += [ "ENABLE_LOCAL_HANDLE_ZAPPING" ] } @@ -1320,6 +1323,15 @@ config("features") { if (v8_enable_fuzztest) { defines += [ "V8_ENABLE_FUZZTEST" ] } + + # TODO(Wenqin): Gearbox didn't work when didn't enable pointer compression, + # it's related to the deserializer, when pointer compression is disable, it + # will not call PostProcessCode method, which is the bottleneck for Gearbox + # try to fix it later. + if (v8_enable_pointer_compression && v8_enable_builtins_gearbox && + v8_current_cpu == "x64") { + defines += [ "V8_BUILTINS_GEARBOX" ] + } if (v8_enable_short_builtin_calls) { defines += [ "V8_SHORT_BUILTIN_CALLS" ] } @@ -1384,6 +1396,9 @@ config("features") { defines += [ "V8_DRUMBRAKE_BOUNDS_CHECKS" ] } } + if (v8_enable_sandbox_hardware_support) { + defines += [ "V8_ENABLE_SANDBOX_HARDWARE_SUPPORT" ] + } if (v8_enable_memory_corruption_api) { defines += [ "V8_ENABLE_MEMORY_CORRUPTION_API" ] } @@ -1441,6 +1456,9 @@ config("features") { if (v8_enable_leaptiering) { defines += [ "V8_ENABLE_LEAPTIERING" ] } + if (v8_enable_partition_alloc) { + defines += [ "V8_ENABLE_PARTITION_ALLOC" ] + } if (v8_wasm_random_fuzzers) { defines += [ "V8_WASM_RANDOM_FUZZERS" ] } @@ -1450,6 +1468,9 @@ config("features") { if (v8_target_is_simulator) { defines += [ "USE_SIMULATOR" ] } + if (v8_function_arguments_caller_are_own_props) { + defines += [ "V8_FUNCTION_ARGUMENTS_CALLER_ARE_OWN_PROPS" ] + } } config("toolchain") { @@ -1751,7 +1772,10 @@ config("strict_warnings") { v8_current_cpu == "mips64el" || v8_current_cpu == "riscv64") { cflags += [ "-Wshorten-64-to-32" ] } - cflags += [ "-Wmissing-field-initializers" ] + cflags += [ + "-Wmissing-field-initializers", + "-Wunnecessary-virtual-specifier", + ] } } @@ -1874,6 +1898,8 @@ if (v8_postmortem_support) { "src/objects/megadom-handler-inl.h", "src/objects/name.h", "src/objects/name-inl.h", + "src/objects/number-string-cache.h", + "src/objects/number-string-cache-inl.h", "src/objects/objects.h", "src/objects/objects-inl.h", "src/objects/oddball.h", @@ -1882,6 +1908,7 @@ if (v8_postmortem_support) { "src/objects/primitive-heap-object-inl.h", "src/objects/scope-info.h", "src/objects/scope-info-inl.h", + "src/objects/script.cc", "src/objects/script.h", "src/objects/script-inl.h", "src/objects/shared-function-info.cc", @@ -2098,7 +2125,6 @@ torque_files = [ "src/objects/js-shadow-realm.tq", "src/objects/js-shared-array.tq", "src/objects/js-struct.tq", - "src/objects/js-temporal-objects.tq", "src/objects/js-weak-refs.tq", "src/objects/literal-objects.tq", "src/objects/map.tq", @@ -2154,6 +2180,10 @@ if (v8_enable_i18n_support) { ] } +if (v8_enable_temporal_support) { + torque_files += [ "src/objects/js-temporal-objects.tq" ] +} + if (v8_enable_webassembly) { torque_files += [ "src/builtins/js-to-js.tq", @@ -2291,6 +2321,12 @@ group("v8_maybe_icu") { } } +group("v8_maybe_temporal") { + if (v8_enable_temporal_support) { + public_deps = [ "//third_party/rust/temporal_capi" ] + } +} + group("v8_abseil") { public_deps = [ "//third_party/abseil-cpp:absl" ] @@ -2321,6 +2357,7 @@ v8_source_set("torque_generated_initializers") { ":generate_bytecode_builtins_list", ":run_torque", ":v8_base_without_compiler", + ":v8_maybe_temporal", ":v8_tracing", ] @@ -2367,6 +2404,7 @@ v8_source_set("torque_generated_definitions") { ":run_torque", ":v8_internal_headers", ":v8_libbase", + ":v8_maybe_temporal", ":v8_tracing", ] @@ -2456,6 +2494,10 @@ template("run_mksnapshot") { outputs = [] + if (is_DEBUG_defined && name == "default") { + outputs += [ "$target_gen_dir/src/builtins/builtins-effects.cc" ] + } + data = [] if (current_os != "zos") { @@ -2507,6 +2549,14 @@ template("run_mksnapshot") { "--no-use-ic", ] + if (is_DEBUG_defined && name == "default") { + args += [ + "--builtins-effects-src", + rebase_path("$target_gen_dir/src/builtins/builtins-effects.cc", + root_build_dir), + ] + } + if (v8_verify_deterministic_mksnapshot) { # Flags that help debugging snapshot determinism. args += [ "--trace-read-only-promotion" ] @@ -2547,10 +2597,6 @@ template("run_mksnapshot") { } } - if (v8_enable_turboshaft_csa) { - args += [ "--turboshaft-csa" ] - } - # This is needed to distinguish between generating code for the simulator # and cross-compiling. The latter may need to run code on the host with the # simulator but cannot use simulator-specific instructions. @@ -2627,7 +2673,10 @@ template("run_mksnapshot") { } } - if (v8_enable_concurrent_mksnapshot) { + # TODO(Wenqin): We have to set the CPU feature when we are compiling ISX + # builtins, therefore it may make TSAN failed when we enable concurrent + # mksnapshot, try to make the CPU feature as thread local later. + if (v8_enable_concurrent_mksnapshot && !v8_enable_builtins_gearbox) { args += [ "--concurrent-builtin-generation", @@ -2752,7 +2801,6 @@ if (v8_verify_builtins_compatibility) { action("v8_dump_build_config") { script = "tools/testrunner/utils/dump_build_config.py" outputs = [ "$root_out_dir/v8_build_config.json" ] - is_DEBUG_defined = v8_enable_debugging_features || v8_dcheck_always_on is_full_debug = v8_enable_debugging_features && !v8_optimized_debug arch = v8_target_cpu @@ -2812,6 +2860,7 @@ action("v8_dump_build_config") { "has_webassembly=$v8_enable_webassembly", "has_wasm_interpreter=$v8_enable_drumbrake", "i18n=$v8_enable_i18n_support", + "temporal=$v8_enable_temporal_support", "is_android=$is_android", "is_ios=$is_ios", "js_shared_memory=$js_shared_memory", @@ -2825,6 +2874,7 @@ 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", + "sandbox_hardware_support=$v8_enable_sandbox_hardware_support", "simd_mips=$simd_mips", "simulator_run=$simulator_run", "single_generation=$v8_enable_single_generation", @@ -2866,6 +2916,7 @@ generated_file("v8_generate_features_json") { v8_enable_gdbjit = v8_enable_gdbjit v8_enable_hugepage = v8_enable_hugepage v8_enable_i18n_support = v8_enable_i18n_support + v8_enable_temporal_support = v8_enable_temporal_support v8_enable_javascript_promise_hooks = v8_enable_javascript_promise_hooks v8_enable_lite_mode = v8_enable_lite_mode v8_enable_map_packing = v8_enable_map_packing @@ -2878,12 +2929,12 @@ generated_file("v8_generate_features_json") { 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 v8_optimized_debug = v8_optimized_debug v8_random_seed = v8_random_seed v8_use_perfetto = v8_use_perfetto v8_use_siphash = v8_use_siphash + v8_use_default_hasher_secret = v8_use_default_hasher_secret } } @@ -2900,6 +2951,7 @@ v8_source_set("v8_snapshot") { deps = [ ":v8_internal_headers", ":v8_libbase", + ":v8_maybe_temporal", ":v8_tracing", ] public_deps = [ @@ -2922,6 +2974,9 @@ v8_source_set("v8_snapshot") { sources += [ "$target_gen_dir/embedded.s" ] } } + if (is_DEBUG_defined) { + sources += [ "$target_gen_dir/src/builtins/builtins-effects.cc" ] + } configs = [ ":internal_config" ] @@ -2984,8 +3039,6 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-intl-gen.cc", "src/builtins/builtins-iterator-gen.cc", "src/builtins/builtins-iterator-gen.h", - "src/builtins/builtins-lazy-gen.cc", - "src/builtins/builtins-lazy-gen.h", "src/builtins/builtins-microtask-queue-gen.cc", "src/builtins/builtins-number-gen.cc", "src/builtins/builtins-number-tsa.cc", @@ -3002,12 +3055,13 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-string-gen.cc", "src/builtins/builtins-string-gen.h", "src/builtins/builtins-string-tsa.cc", - "src/builtins/builtins-temporal-gen.cc", "src/builtins/builtins-typed-array-gen.cc", "src/builtins/builtins-typed-array-gen.h", "src/builtins/builtins-utils-gen.h", "src/builtins/growable-fixed-array-gen.cc", "src/builtins/growable-fixed-array-gen.h", + "src/builtins/js-trampoline-assembler.cc", + "src/builtins/js-trampoline-assembler.h", "src/builtins/number-builtins-reducer-inl.h", "src/builtins/profile-data-reader.cc", "src/builtins/profile-data-reader.h", @@ -3125,6 +3179,7 @@ v8_source_set("v8_init") { deps = [ ":v8_base_without_compiler", ":v8_initializers", + ":v8_maybe_temporal", ":v8_tracing", ] @@ -3292,6 +3347,7 @@ v8_header_set("v8_shared_internal_headers") { ] deps = [ + ":cppgc_headers", ":v8_headers", ":v8_libbase", ] @@ -3334,8 +3390,6 @@ v8_header_set("v8_internal_headers") { "src/api/api-arguments-inl.h", "src/api/api-arguments.h", "src/api/api-inl.h", - "src/api/api-macros-undef.h", - "src/api/api-macros.h", "src/api/api-natives.h", "src/api/api.h", "src/ast/ast-function-literal-id-reindexer.h", @@ -3354,6 +3408,7 @@ v8_header_set("v8_internal_headers") { "src/builtins/builtins-constructor.h", "src/builtins/builtins-definitions.h", "src/builtins/builtins-descriptors.h", + "src/builtins/builtins-effects-analyzer.h", "src/builtins/builtins-inl.h", "src/builtins/builtins-promise.h", "src/builtins/builtins-utils-inl.h", @@ -3422,6 +3477,7 @@ v8_header_set("v8_internal_headers") { "src/common/operation.h", "src/common/ptr-compr-inl.h", "src/common/ptr-compr.h", + "src/common/scoped-modification.h", "src/common/segmented-table-inl.h", "src/common/segmented-table.h", "src/common/simd128.h", @@ -3441,7 +3497,6 @@ v8_header_set("v8_internal_headers") { "src/compiler/backend/gap-resolver.h", "src/compiler/backend/instruction-codes.h", "src/compiler/backend/instruction-scheduler.h", - "src/compiler/backend/instruction-selector-adapter.h", "src/compiler/backend/instruction-selector-impl.h", "src/compiler/backend/instruction-selector.h", "src/compiler/backend/instruction.h", @@ -3463,6 +3518,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/common-node-cache.h", "src/compiler/common-operator-reducer.h", "src/compiler/common-operator.h", + "src/compiler/common-utils.h", "src/compiler/compilation-dependencies.h", "src/compiler/compiler-source-position-table.h", "src/compiler/constant-folding-reducer.h", @@ -3563,7 +3619,12 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/builtin-call-descriptors.h", "src/compiler/turboshaft/code-elimination-and-simplification-phase.h", "src/compiler/turboshaft/copying-phase.h", - "src/compiler/turboshaft/csa-optimize-phase.h", + "src/compiler/turboshaft/csa-branch-elimination-phase.h", + "src/compiler/turboshaft/csa-early-machine-optimization-phase.h", + "src/compiler/turboshaft/csa-effects-computation.h", + "src/compiler/turboshaft/csa-late-escape-analysis-phase.h", + "src/compiler/turboshaft/csa-load-elimination-phase.h", + "src/compiler/turboshaft/csa-memory-optimization-phase.h", "src/compiler/turboshaft/dataview-lowering-reducer.h", "src/compiler/turboshaft/dead-code-elimination-reducer.h", "src/compiler/turboshaft/debug-feature-lowering-phase.h", @@ -3580,6 +3641,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/graph-builder.h", "src/compiler/turboshaft/graph-visualizer.h", "src/compiler/turboshaft/graph.h", + "src/compiler/turboshaft/if-else-cascade-to-switch-reducer.h", "src/compiler/turboshaft/index.h", "src/compiler/turboshaft/instruction-selection-normalization-reducer.h", "src/compiler/turboshaft/instruction-selection-phase.h", @@ -3596,7 +3658,6 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/machine-lowering-phase.h", "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/memory-optimization-reducer.h", "src/compiler/turboshaft/operation-matcher.h", "src/compiler/turboshaft/operations.h", @@ -3620,8 +3681,8 @@ v8_header_set("v8_internal_headers") { "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-early-lowering-reducer-inl.h", "src/compiler/turboshaft/turbolev-graph-builder.h", "src/compiler/turboshaft/type-assertions-phase.h", "src/compiler/turboshaft/type-inference-analysis.h", @@ -3637,6 +3698,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/utils.h", "src/compiler/turboshaft/value-numbering-reducer.h", "src/compiler/turboshaft/variable-reducer.h", + "src/compiler/turboshaft/wasm-code-coverage-reducer.h", "src/compiler/turboshaft/wasm-dead-code-elimination-phase.h", "src/compiler/turboshaft/zone-with-name.h", "src/compiler/type-cache.h", @@ -3763,6 +3825,7 @@ v8_header_set("v8_internal_headers") { "src/heap/finalization-registry-cleanup-task.h", "src/heap/free-list-inl.h", "src/heap/free-list.h", + "src/heap/gc-callbacks-inl.h", "src/heap/gc-callbacks.h", "src/heap/gc-tracer-inl.h", "src/heap/gc-tracer.h", @@ -3820,6 +3883,7 @@ v8_header_set("v8_internal_headers") { "src/heap/memory-chunk.h", "src/heap/memory-measurement-inl.h", "src/heap/memory-measurement.h", + "src/heap/memory-pool.h", "src/heap/memory-reducer.h", "src/heap/minor-gc-job.h", "src/heap/minor-mark-sweep-inl.h", @@ -3832,7 +3896,6 @@ v8_header_set("v8_internal_headers") { "src/heap/object-lock.h", "src/heap/object-stats.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", @@ -3898,6 +3961,7 @@ v8_header_set("v8_internal_headers") { "src/interpreter/interpreter-generator.h", "src/interpreter/interpreter-intrinsics.h", "src/interpreter/interpreter.h", + "src/interpreter/prototype-assignment-sequence-builder.h", "src/json/json-parser.h", "src/json/json-stringifier.h", "src/libsampler/sampler.h", @@ -3916,6 +3980,7 @@ v8_header_set("v8_internal_headers") { "src/numbers/conversions-inl.h", "src/numbers/conversions.h", "src/numbers/hash-seed-inl.h", + "src/numbers/hash-seed.h", "src/numbers/ieee754.h", "src/numbers/math-random.h", "src/objects/all-objects-inl.h", @@ -3983,7 +4048,6 @@ v8_header_set("v8_internal_headers") { "src/objects/heap-number.h", "src/objects/heap-object-inl.h", "src/objects/heap-object.h", - "src/objects/hole-inl.h", "src/objects/hole.h", "src/objects/instance-type-checker.h", "src/objects/instance-type-inl.h", @@ -4027,8 +4091,7 @@ v8_header_set("v8_internal_headers") { "src/objects/js-shared-array.h", "src/objects/js-struct-inl.h", "src/objects/js-struct.h", - "src/objects/js-temporal-objects-inl.h", - "src/objects/js-temporal-objects.h", + "src/objects/js-temporal-helpers.h", "src/objects/js-weak-refs-inl.h", "src/objects/js-weak-refs.h", "src/objects/keys.h", @@ -4170,6 +4233,7 @@ v8_header_set("v8_internal_headers") { "src/profiler/cpu-profiler-inl.h", "src/profiler/cpu-profiler.h", "src/profiler/heap-profiler.h", + "src/profiler/heap-snapshot-common.h", "src/profiler/heap-snapshot-generator-inl.h", "src/profiler/heap-snapshot-generator.h", "src/profiler/output-stream-writer.h", @@ -4190,8 +4254,12 @@ v8_header_set("v8_internal_headers") { "src/regexp/regexp-ast.h", "src/regexp/regexp-bytecode-generator-inl.h", "src/regexp/regexp-bytecode-generator.h", + "src/regexp/regexp-bytecode-iterator-inl.h", + "src/regexp/regexp-bytecode-iterator.h", "src/regexp/regexp-bytecode-peephole.h", + "src/regexp/regexp-bytecodes-inl.h", "src/regexp/regexp-bytecodes.h", + "src/regexp/regexp-code-generator.h", "src/regexp/regexp-compiler.h", "src/regexp/regexp-dotprinter.h", "src/regexp/regexp-error.h", @@ -4209,6 +4277,10 @@ v8_header_set("v8_internal_headers") { "src/regexp/special-case.h", "src/roots/roots-inl.h", "src/roots/roots.h", + "src/roots/static-roots-intl-nowasm.h", + "src/roots/static-roots-intl-wasm.h", + "src/roots/static-roots-nointl-nowasm.h", + "src/roots/static-roots-nointl-wasm.h", "src/roots/static-roots.h", "src/runtime/runtime-utils.h", "src/runtime/runtime.h", @@ -4220,6 +4292,7 @@ v8_header_set("v8_internal_headers") { "src/sandbox/code-pointer-table-inl.h", "src/sandbox/code-pointer-table.h", "src/sandbox/code-pointer.h", + "src/sandbox/code-sandboxing-mode.h", "src/sandbox/compactible-external-entity-table-inl.h", "src/sandbox/compactible-external-entity-table.h", "src/sandbox/cppheap-pointer-inl.h", @@ -4240,6 +4313,7 @@ v8_header_set("v8_internal_headers") { "src/sandbox/isolate.h", "src/sandbox/js-dispatch-table-inl.h", "src/sandbox/js-dispatch-table.h", + "src/sandbox/sandbox-malloc.h", "src/sandbox/sandbox.h", "src/sandbox/sandboxed-pointer-inl.h", "src/sandbox/sandboxed-pointer.h", @@ -4289,7 +4363,6 @@ v8_header_set("v8_internal_headers") { "src/tasks/cancelable-task.h", "src/tasks/operations-barrier.h", "src/tasks/task-utils.h", - "src/temporal/temporal-parser.h", "src/torque/runtime-macro-shims.h", "src/tracing/trace-event-no-perfetto.h", "src/tracing/trace-event.h", @@ -4307,6 +4380,7 @@ v8_header_set("v8_internal_headers") { "src/utils/locked-queue.h", "src/utils/memcopy.h", "src/utils/ostreams.h", + "src/utils/output-stream.h", "src/utils/scoped-list.h", "src/utils/sha-256.h", "src/utils/sparse-bit-vector.h", @@ -4314,12 +4388,10 @@ v8_header_set("v8_internal_headers") { "src/utils/utils.h", "src/utils/version.h", "src/zone/accounting-allocator.h", - "src/zone/compressed-zone-ptr.h", "src/zone/type-stats.h", "src/zone/zone-allocator.h", "src/zone/zone-chunk-list.h", "src/zone/zone-compact-set.h", - "src/zone/zone-compression.h", "src/zone/zone-containers.h", "src/zone/zone-hashmap.h", "src/zone/zone-list-inl.h", @@ -4328,6 +4400,8 @@ v8_header_set("v8_internal_headers") { "src/zone/zone-type-traits.h", "src/zone/zone-utils.h", "src/zone/zone.h", + "third_party/rapidhash-v8/rapidhash.h", + "third_party/rapidhash-v8/secret.h", "third_party/siphash/halfsiphash.h", "third_party/utf8-decoder/utf8-decoder.h", ] @@ -4336,6 +4410,13 @@ v8_header_set("v8_internal_headers") { sources += [ "src/snapshot/snapshot-compression.h" ] } + if (v8_enable_temporal_support) { + sources += [ + "src/objects/js-temporal-objects-inl.h", + "src/objects/js-temporal-objects.h", + ] + } + if (v8_use_perfetto) { sources -= [ "src/tracing/trace-event-no-perfetto.h" ] sources += [ @@ -4370,6 +4451,7 @@ v8_header_set("v8_internal_headers") { "src/maglev/maglev-deopt-frame-visitor.h", "src/maglev/maglev-graph-builder.h", "src/maglev/maglev-graph-labeller.h", + "src/maglev/maglev-graph-optimizer.h", "src/maglev/maglev-graph-printer.h", "src/maglev/maglev-graph-processor.h", "src/maglev/maglev-graph-verifier.h", @@ -4382,9 +4464,12 @@ v8_header_set("v8_internal_headers") { "src/maglev/maglev-pipeline-statistics.h", "src/maglev/maglev-post-hoc-optimizations-processors.h", "src/maglev/maglev-pre-regalloc-codegen-processors.h", + "src/maglev/maglev-reducer-inl.h", + "src/maglev/maglev-reducer.h", "src/maglev/maglev-regalloc-data.h", "src/maglev/maglev-regalloc.h", "src/maglev/maglev-register-frame-array.h", + "src/maglev/maglev-truncation.h", "src/maglev/maglev.h", ] if (v8_current_cpu == "arm") { @@ -4397,6 +4482,8 @@ v8_header_set("v8_internal_headers") { sources += [ "src/maglev/x64/maglev-assembler-x64-inl.h" ] } else if (v8_current_cpu == "s390x") { sources += [ "src/maglev/s390/maglev-assembler-s390-inl.h" ] + } else if (v8_current_cpu == "ppc64") { + sources += [ "src/maglev/ppc64/maglev-assembler-ppc64-inl.h" ] } } @@ -4448,6 +4535,7 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/liftoff-varstate.h", "src/wasm/baseline/parallel-move-inl.h", "src/wasm/baseline/parallel-move.h", + "src/wasm/basic-block-calculator.h", "src/wasm/canonical-types.h", "src/wasm/code-space-access.h", "src/wasm/compilation-environment-inl.h", @@ -4480,10 +4568,12 @@ v8_header_set("v8_internal_headers") { "src/wasm/string-builder-multiline.h", "src/wasm/string-builder.h", "src/wasm/struct-types.h", + "src/wasm/turboshaft-graph-interface-inl.h", "src/wasm/turboshaft-graph-interface.h", "src/wasm/value-type.h", "src/wasm/wasm-arguments.h", "src/wasm/wasm-builtin-list.h", + "src/wasm/wasm-code-coverage.h", "src/wasm/wasm-code-manager.h", "src/wasm/wasm-code-pointer-table-inl.h", "src/wasm/wasm-code-pointer-table.h", @@ -4492,6 +4582,7 @@ v8_header_set("v8_internal_headers") { "src/wasm/wasm-disassembler-impl.h", "src/wasm/wasm-disassembler.h", "src/wasm/wasm-engine.h", + "src/wasm/wasm-export-wrapper-cache.h", "src/wasm/wasm-external-refs.h", "src/wasm/wasm-feature-flags.h", "src/wasm/wasm-features.h", @@ -4512,6 +4603,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/wasm-tier.h", "src/wasm/wasm-value.h", "src/wasm/well-known-imports.h", + "src/wasm/wrappers-inl.h", + "src/wasm/wrappers.h", "third_party/utf8-decoder/generalized-utf8-decoder.h", ] @@ -4951,6 +5044,10 @@ v8_header_set("v8_internal_headers") { "//third_party/fp16", ] + if (v8_enable_partition_alloc) { + public_deps += [ "//third_party/partition_alloc" ] + } + deps = [ ":cppgc_headers", ":generate_bytecode_builtins_list", @@ -4958,6 +5055,8 @@ v8_header_set("v8_internal_headers") { ":v8_abseil", ":v8_heap_base_headers", ":v8_libbase", + ":v8_maybe_temporal", + "//third_party/simdutf", ] } @@ -4990,6 +5089,7 @@ v8_compiler_sources = [ "src/compiler/common-node-cache.cc", "src/compiler/common-operator-reducer.cc", "src/compiler/common-operator.cc", + "src/compiler/common-utils.cc", "src/compiler/compilation-dependencies.cc", "src/compiler/compiler-source-position-table.cc", "src/compiler/constant-folding-reducer.cc", @@ -5020,7 +5120,6 @@ v8_compiler_sources = [ "src/compiler/js-type-hint-lowering.cc", "src/compiler/js-typed-lowering.cc", "src/compiler/late-escape-analysis.cc", - "src/compiler/linkage.cc", "src/compiler/load-elimination.cc", "src/compiler/loop-analysis.cc", "src/compiler/loop-peeling.cc", @@ -5073,7 +5172,12 @@ v8_compiler_sources = [ "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/csa-branch-elimination-phase.cc", + "src/compiler/turboshaft/csa-early-machine-optimization-phase.cc", + "src/compiler/turboshaft/csa-effects-computation.cc", + "src/compiler/turboshaft/csa-late-escape-analysis-phase.cc", + "src/compiler/turboshaft/csa-load-elimination-phase.cc", + "src/compiler/turboshaft/csa-memory-optimization-phase.cc", "src/compiler/turboshaft/debug-feature-lowering-phase.cc", "src/compiler/turboshaft/decompression-optimization-phase.cc", "src/compiler/turboshaft/decompression-optimization.cc", @@ -5121,10 +5225,15 @@ if (!v8_enable_maglev) { "src/maglev/maglev-compilation-info.cc", "src/maglev/maglev-compilation-unit.cc", "src/maglev/maglev-graph-builder.cc", + "src/maglev/maglev-graph-labeller.cc", + "src/maglev/maglev-graph-optimizer.cc", "src/maglev/maglev-graph-printer.cc", + "src/maglev/maglev-graph.cc", + "src/maglev/maglev-inlining.cc", "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-ir.cc", "src/maglev/maglev-phi-representation-selector.cc", + "src/maglev/maglev-truncation.cc", ] } @@ -5209,6 +5318,7 @@ if (v8_enable_webassembly) { v8_compiler_sources += [ "src/compiler/int64-lowering.cc", "src/compiler/turboshaft/int64-lowering-phase.cc", + "src/compiler/turboshaft/wasm-dead-code-elimination-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", @@ -5220,7 +5330,6 @@ if (v8_enable_webassembly) { "src/compiler/turboshaft/wasm-turboshaft-compiler.cc", "src/compiler/wasm-address-reassociation.cc", "src/compiler/wasm-call-descriptors.cc", - "src/compiler/wasm-compiler-definitions.cc", "src/compiler/wasm-compiler.cc", "src/compiler/wasm-escape-analysis.cc", "src/compiler/wasm-gc-lowering.cc", @@ -5229,6 +5338,8 @@ if (v8_enable_webassembly) { "src/compiler/wasm-inlining-into-js.cc", "src/compiler/wasm-load-elimination.cc", "src/compiler/wasm-typer.cc", + "src/wasm/turboshaft-graph-interface.cc", + "src/wasm/wrappers.cc", ] } @@ -5263,6 +5374,7 @@ v8_source_set("v8_compiler_for_mksnapshot_source_set") { ":v8_base_without_compiler", ":v8_internal_headers", ":v8_libbase", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ] @@ -5301,6 +5413,7 @@ v8_source_set("v8_compiler") { deps = [ ":v8_base_without_compiler", ":v8_libbase", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ] @@ -5373,6 +5486,7 @@ v8_source_set("v8_base_without_compiler") { "src/builtins/builtins-dataview.cc", "src/builtins/builtins-date.cc", "src/builtins/builtins-disposable-stack.cc", + "src/builtins/builtins-effects-analyzer.cc", "src/builtins/builtins-error.cc", "src/builtins/builtins-function.cc", "src/builtins/builtins-global.cc", @@ -5389,7 +5503,6 @@ v8_source_set("v8_base_without_compiler") { "src/builtins/builtins-string.cc", "src/builtins/builtins-struct.cc", "src/builtins/builtins-symbol.cc", - "src/builtins/builtins-temporal.cc", "src/builtins/builtins-trace.cc", "src/builtins/builtins-typed-array.cc", "src/builtins/builtins-weak-refs.cc", @@ -5430,6 +5543,7 @@ v8_source_set("v8_base_without_compiler") { "src/common/ptr-compr.cc", "src/compiler-dispatcher/lazy-compile-dispatcher.cc", "src/compiler-dispatcher/optimizing-compile-dispatcher.cc", + "src/compiler/linkage.cc", "src/date/date.cc", "src/date/dateparser.cc", "src/debug/debug-coverage.cc", @@ -5537,6 +5651,7 @@ v8_source_set("v8_base_without_compiler") { "src/heap/memory-chunk-metadata.cc", "src/heap/memory-chunk.cc", "src/heap/memory-measurement.cc", + "src/heap/memory-pool.cc", "src/heap/memory-reducer.cc", "src/heap/minor-gc-job.cc", "src/heap/minor-mark-sweep.cc", @@ -5544,7 +5659,6 @@ v8_source_set("v8_base_without_compiler") { "src/heap/new-spaces.cc", "src/heap/object-stats.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", @@ -5590,6 +5704,7 @@ v8_source_set("v8_base_without_compiler") { "src/interpreter/handler-table-builder.cc", "src/interpreter/interpreter-intrinsics.cc", "src/interpreter/interpreter.cc", + "src/interpreter/prototype-assignment-sequence-builder.cc", "src/json/json-parser.cc", "src/json/json-stringifier.cc", "src/libsampler/sampler.cc", @@ -5644,7 +5759,7 @@ v8_source_set("v8_base_without_compiler") { "src/objects/js-segmenter.cc", "src/objects/js-segments.cc", "src/objects/js-struct.cc", - "src/objects/js-temporal-objects.cc", + "src/objects/js-temporal-helpers.cc", "src/objects/js-weak-refs.cc", "src/objects/keys.cc", "src/objects/literal-objects.cc", @@ -5654,6 +5769,7 @@ v8_source_set("v8_base_without_compiler") { "src/objects/map-updater.cc", "src/objects/map.cc", "src/objects/module.cc", + "src/objects/number-string-cache.cc", "src/objects/object-type.cc", "src/objects/objects.cc", "src/objects/option-utils.cc", @@ -5662,6 +5778,7 @@ v8_source_set("v8_base_without_compiler") { "src/objects/property.cc", "src/objects/regexp-match-info.cc", "src/objects/scope-info.cc", + "src/objects/script.cc", "src/objects/shared-function-info.cc", "src/objects/simd.cc", "src/objects/source-text-module.cc", @@ -5712,8 +5829,10 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/experimental/experimental.cc", "src/regexp/regexp-ast.cc", "src/regexp/regexp-bytecode-generator.cc", + "src/regexp/regexp-bytecode-iterator.cc", "src/regexp/regexp-bytecode-peephole.cc", "src/regexp/regexp-bytecodes.cc", + "src/regexp/regexp-code-generator.cc", "src/regexp/regexp-compiler-tonode.cc", "src/regexp/regexp-compiler.cc", "src/regexp/regexp-dotprinter.cc", @@ -5753,11 +5872,9 @@ v8_source_set("v8_base_without_compiler") { "src/runtime/runtime-shadow-realm.cc", "src/runtime/runtime-strings.cc", "src/runtime/runtime-symbol.cc", - "src/runtime/runtime-temporal.cc", "src/runtime/runtime-test.cc", "src/runtime/runtime-trace.cc", "src/runtime/runtime-typedarray.cc", - "src/runtime/runtime-utils.cc", "src/runtime/runtime-weak-refs.cc", "src/runtime/runtime.cc", "src/sandbox/code-pointer-table.cc", @@ -5792,6 +5909,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", @@ -5799,7 +5917,6 @@ v8_source_set("v8_base_without_compiler") { "src/tasks/cancelable-task.cc", "src/tasks/operations-barrier.cc", "src/tasks/task-utils.cc", - "src/temporal/temporal-parser.cc", "src/tracing/trace-event.cc", "src/tracing/traced-value.cc", "src/tracing/tracing-category-observer.cc", @@ -5811,6 +5928,7 @@ v8_source_set("v8_base_without_compiler") { "src/utils/identity-map.cc", "src/utils/memcopy.cc", "src/utils/ostreams.cc", + "src/utils/output-stream.cc", "src/utils/sha-256.cc", "src/utils/utils.cc", "src/utils/version.cc", @@ -5825,6 +5943,13 @@ v8_source_set("v8_base_without_compiler") { sources += [ "src/snapshot/snapshot-compression.cc" ] } + if (v8_enable_temporal_support) { + sources += [ + "src/builtins/builtins-temporal.cc", + "src/objects/js-temporal-objects.cc", + ] + } + if (v8_enable_sparkplug) { sources += [ "src/baseline/baseline-batch-compiler.cc", @@ -5841,12 +5966,17 @@ v8_source_set("v8_base_without_compiler") { "src/maglev/maglev-compiler.cc", "src/maglev/maglev-concurrent-dispatcher.cc", "src/maglev/maglev-graph-builder.cc", + "src/maglev/maglev-graph-labeller.cc", + "src/maglev/maglev-graph-optimizer.cc", "src/maglev/maglev-graph-printer.cc", + "src/maglev/maglev-graph.cc", + "src/maglev/maglev-inlining.cc", "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-ir.cc", "src/maglev/maglev-phi-representation-selector.cc", "src/maglev/maglev-pipeline-statistics.cc", "src/maglev/maglev-regalloc.cc", + "src/maglev/maglev-truncation.cc", "src/maglev/maglev.cc", ] if (v8_current_cpu == "arm") { @@ -5874,6 +6004,11 @@ v8_source_set("v8_base_without_compiler") { "src/maglev/s390/maglev-assembler-s390.cc", "src/maglev/s390/maglev-ir-s390.cc", ] + } else if (v8_current_cpu == "ppc64") { + sources += [ + "src/maglev/ppc64/maglev-assembler-ppc64.cc", + "src/maglev/ppc64/maglev-ir-ppc64.cc", + ] } } @@ -5892,7 +6027,7 @@ v8_source_set("v8_base_without_compiler") { "src/asmjs/asm-parser.cc", "src/asmjs/asm-scanner.cc", "src/asmjs/asm-types.cc", - "src/compiler/turboshaft/wasm-dead-code-elimination-phase.cc", + "src/compiler/wasm-compiler-definitions.cc", "src/debug/debug-wasm-objects.cc", "src/runtime/runtime-test-wasm.cc", "src/runtime/runtime-wasm.cc", @@ -5902,6 +6037,7 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/baseline/liftoff-assembler.cc", "src/wasm/baseline/liftoff-compiler.cc", "src/wasm/baseline/parallel-move.cc", + "src/wasm/basic-block-calculator.cc", "src/wasm/canonical-types.cc", "src/wasm/code-space-access.cc", "src/wasm/constant-expression-interface.cc", @@ -5919,7 +6055,6 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/stacks.cc", "src/wasm/streaming-decoder.cc", "src/wasm/sync-streaming-decoder.cc", - "src/wasm/turboshaft-graph-interface.cc", "src/wasm/value-type.cc", "src/wasm/wasm-code-manager.cc", "src/wasm/wasm-code-pointer-table.cc", @@ -5927,6 +6062,7 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/wasm-deopt-data.cc", "src/wasm/wasm-disassembler.cc", "src/wasm/wasm-engine.cc", + "src/wasm/wasm-export-wrapper-cache.cc", "src/wasm/wasm-external-refs.cc", "src/wasm/wasm-features.cc", "src/wasm/wasm-import-wrapper-cache.cc", @@ -5940,7 +6076,6 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/wasm-serialization.cc", "src/wasm/wasm-subtyping.cc", "src/wasm/well-known-imports.cc", - "src/wasm/wrappers.cc", ] if (v8_wasm_random_fuzzers) { sources += [ @@ -6171,6 +6306,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-f.cc", "src/codegen/riscv/extension-riscv-m.cc", "src/codegen/riscv/extension-riscv-v.cc", + "src/codegen/riscv/extension-riscv-zfh.cc", "src/codegen/riscv/extension-riscv-zicond.cc", "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", @@ -6211,6 +6347,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-f.cc", "src/codegen/riscv/extension-riscv-m.cc", "src/codegen/riscv/extension-riscv-v.cc", + "src/codegen/riscv/extension-riscv-zfh.cc", "src/codegen/riscv/extension-riscv-zicond.cc", "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", @@ -6255,10 +6392,12 @@ v8_source_set("v8_base_without_compiler") { ":v8_headers", ":v8_heap_base", ":v8_libbase", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ":v8_tracing", ":v8_version", - "src/inspector:inspector", + "src/inspector", + "//third_party/dragonbox", "//third_party/fast_float", "//third_party/highway:libhwy", ] @@ -6271,7 +6410,7 @@ v8_source_set("v8_base_without_compiler") { ":v8_headers", ":v8_internal_headers", ":v8_maybe_icu", - "//third_party/simdutf:simdutf", + "//third_party/simdutf", ] if (v8_fuzzilli) { @@ -6508,6 +6647,8 @@ v8_component("v8_libbase") { "src/base/fpu.cc", "src/base/fpu.h", "src/base/free_deleter.h", + "src/base/functional/bind-internal.h", + "src/base/functional/function-ref.h", "src/base/hashing.h", "src/base/hashmap-entry.h", "src/base/hashmap.h", @@ -6606,6 +6747,7 @@ v8_component("v8_libbase") { "src/base/template-utils.h", "src/base/threaded-list.h", "src/base/timezone-cache.h", + "src/base/types/is-instantiation.h", "src/base/utils/random-number-generator.cc", "src/base/utils/random-number-generator.h", "src/base/vector.h", @@ -6621,6 +6763,8 @@ v8_component("v8_libbase") { configs = [ ":internal_config_base" ] public_configs = [ ":libbase_config" ] + v8_add_configs += [ "//build/config/compiler:thinlto_optimize_max" ] + v8_remove_configs += [ "//build/config/compiler:thinlto_optimize_default" ] deps = [ ":v8_config_headers" ] @@ -6738,6 +6882,10 @@ v8_component("v8_libbase") { libs += [ "advapi32.lib" ] # Needed for TraceLoggingProvider.h } + # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and + # enable the diagnostic by removing this line. + configs += [ "//build/config/compiler:no_exit_time_destructors" ] + data_deps += [ "//build/win:runtime_libs" ] } else if (current_os == "zos") { sources += [ @@ -6770,8 +6918,13 @@ v8_component("v8_libbase") { } if (using_sanitizer && !build_with_chromium) { - data_deps += - [ "//build/config/clang:llvm-symbolizer_data($host_toolchain)" ] + if (is_linux && target_cpu == "arm64") { + # TODO(https://crbug.com/396446140): Switch to the symbolizer from our + # bundled toolchain as soon as one is available for linux-arm64. + data += [ "tools/sanitizers/linux/arm64/llvm-symbolizer" ] + } else { + data_deps += [ "//build/config/clang:llvm-symbolizer_data" ] + } } if (v8_use_libm_trig_functions) { @@ -6835,6 +6988,8 @@ v8_component("v8_libplatform") { ] configs = [ ":internal_config_base" ] + v8_add_configs += [ "//build/config/compiler:thinlto_optimize_max" ] + v8_remove_configs += [ "//build/config/compiler:thinlto_optimize_default" ] if (is_component_build) { defines = [ "BUILDING_V8_PLATFORM_SHARED" ] @@ -6894,6 +7049,11 @@ v8_source_set("fuzzer_support") { ":v8_libplatform", ":v8_maybe_icu", ] + deps = [ ":v8_maybe_temporal" ] + + # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and + # enable the diagnostic by removing this line. + configs += [ "//build/config/compiler:no_exit_time_destructors" ] } v8_source_set("v8_bigint") { @@ -6936,6 +7096,7 @@ v8_header_set("v8_heap_base_headers") { "src/heap/base/incremental-marking-schedule.h", "src/heap/base/memory-tagging.h", "src/heap/base/stack.h", + "src/heap/base/unsafe-json-emitter.h", "src/heap/base/worklist.h", ] @@ -6950,6 +7111,7 @@ v8_source_set("v8_heap_base") { "src/heap/base/incremental-marking-schedule.cc", "src/heap/base/memory-tagging.cc", "src/heap/base/stack.cc", + "src/heap/base/unsafe-json-emitter.cc", "src/heap/base/worklist.cc", ] @@ -7219,9 +7381,10 @@ if (v8_check_header_includes) { ":v8_internal_headers", ":v8_libbase", ":v8_maybe_icu", + ":v8_maybe_temporal", ":v8_version", ":wee8", - "src/inspector:inspector", + "src/inspector", "src/inspector:inspector_string_conversions", ] } @@ -7310,6 +7473,7 @@ if (current_toolchain == v8_generator_toolchain) { if (current_toolchain == v8_snapshot_toolchain) { v8_executable("mksnapshot") { sources = [ + "src/snapshot/builtins-effects-dummy.cc", "src/snapshot/embedded/embedded-empty.cc", "src/snapshot/embedded/embedded-file-writer.cc", "src/snapshot/embedded/embedded-file-writer.h", @@ -7343,6 +7507,7 @@ if (current_toolchain == v8_snapshot_toolchain) { ":v8_libbase", ":v8_libplatform", ":v8_maybe_icu", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ":v8_tracing", "//build/win:default_exe_manifest", @@ -7538,7 +7703,7 @@ group("v8_archive") { if (!is_win) { # On windows, cctest doesn't link with v8_static_library. - deps += [ "test/cctest:cctest" ] + deps += [ "test/cctest" ] } } @@ -7580,13 +7745,19 @@ group("v8_fuzzers") { if (v8_enable_webassembly) { if (v8_wasm_random_fuzzers) { data_deps += [ - ":v8_simple_wasm_compile_all_fuzzer", ":v8_simple_wasm_compile_fuzzer", + ":v8_simple_wasm_compile_revec_fuzzer", ":v8_simple_wasm_compile_simd_fuzzer", - ":v8_simple_wasm_compile_wasmgc_fuzzer", - ":v8_simple_wasm_deopt_fuzzer", ":v8_simple_wasm_init_expr_fuzzer", ] + + if (!v8_disable_write_barriers) { + data_deps += [ + ":v8_simple_wasm_compile_all_fuzzer", + ":v8_simple_wasm_compile_wasmgc_fuzzer", + ":v8_simple_wasm_deopt_fuzzer", + ] + } } data_deps += [ ":v8_simple_multi_return_fuzzer", @@ -7599,6 +7770,7 @@ group("v8_fuzzers") { data_deps += [ ":v8_simple_wasm_fast_interpreter_fuzzer", ":v8_simple_wasm_interpreter_all_fuzzer", + ":v8_simple_wasm_interpreter_all_multiple_modules_fuzzer", ":v8_simple_wasm_interpreter_base_fuzzer", ":v8_simple_wasm_interpreter_code_fuzzer", ":v8_simple_wasm_interpreter_diff_fuzzer", @@ -7620,6 +7792,8 @@ if (is_component_build) { ] configs = [ ":internal_config" ] + v8_add_configs += [ "//build/config/compiler:thinlto_optimize_max" ] + v8_remove_configs += [ "//build/config/compiler:thinlto_optimize_default" ] public_configs = [ ":external_config" ] } @@ -7755,6 +7929,8 @@ v8_executable("d8") { ":internal_config_base", ":v8_tracing_config", ] + v8_add_configs += [ "//build/config/compiler:thinlto_optimize_max" ] + v8_remove_configs += [ "//build/config/compiler:thinlto_optimize_default" ] deps = [ ":v8", @@ -7762,7 +7938,7 @@ v8_executable("d8") { ":v8_libplatform", ":v8_tracing", "//build/win:default_exe_manifest", - "//third_party/simdutf:simdutf", + "//third_party/simdutf", ] if (is_posix || is_fuchsia) { @@ -7784,10 +7960,9 @@ v8_executable("d8") { deps += [ ":zoslib" ] } - if (v8_enable_partition_alloc) { - defines += [ "V8_ENABLE_PARTITION_ALLOC" ] - deps += [ "//third_party/partition_alloc" ] - } + # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and + # enable the diagnostic by removing this line. + configs += [ "//build/config/compiler:no_exit_time_destructors" ] } v8_executable("v8_hello_world") { @@ -7834,6 +8009,10 @@ v8_executable("v8_sample_process") { if (current_os == "zos" && is_component_build) { deps += [ ":zoslib" ] } + + # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and + # enable the diagnostic by removing this line. + configs += [ "//build/config/compiler:no_exit_time_destructors" ] } if (want_v8_shell) { @@ -7889,6 +8068,8 @@ template("v8_fuzzer") { fuzzer_name = target_name v8_source_set(fuzzer_name) { + testonly = true + sources = invoker.sources deps = [ ":fuzzer_support" ] @@ -7900,9 +8081,15 @@ template("v8_fuzzer") { ":external_config", ":internal_config_base", ] + + # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and + # enable the diagnostic by removing this line. + configs += [ "//build/config/compiler:no_exit_time_destructors" ] } v8_executable("v8_simple_${fuzzer_name}") { + testonly = true + deps = [ ":${fuzzer_name}", "//build/win:default_exe_manifest", @@ -7933,14 +8120,21 @@ if (v8_enable_webassembly) { if (v8_enable_drumbrake) { v8_source_set("lib_wasm_interpreter_fuzzer_common") { + testonly = true + sources = [ "test/fuzzer/wasm/interpreter/interpreter-fuzzer-common.cc", "test/fuzzer/wasm/interpreter/interpreter-fuzzer-common.h", ] deps = [ + ":fuzzer_support", ":v8_internal_headers", + ] + + public_deps = [ ":wasm_fuzzer_common", + ":wasm_test_common", ] configs = [ @@ -7985,6 +8179,12 @@ if (v8_enable_webassembly) { deps = [ ":lib_wasm_interpreter_fuzzer_common" ] } + v8_fuzzer("wasm_interpreter_all_multiple_modules_fuzzer") { + sources = + [ "test/fuzzer/wasm/interpreter/interpreter-all-multiple-modules.cc" ] + deps = [ ":lib_wasm_interpreter_fuzzer_common" ] + } + v8_fuzzer("wasm_interpreter_base_fuzzer") { sources = [ "test/fuzzer/wasm/interpreter/interpreter-base.cc" ] @@ -7999,11 +8199,18 @@ if (v8_enable_webassembly) { } v8_source_set("wasm_test_common") { + testonly = true + sources = [ + "test/common/c-signature.h", "test/common/flag-utils.h", + "test/common/value-helper.h", "test/common/wasm/flag-utils.h", + "test/common/wasm/wasm-macro-gen.h", "test/common/wasm/wasm-module-runner.cc", "test/common/wasm/wasm-module-runner.h", + "test/common/wasm/wasm-run-utils.cc", + "test/common/wasm/wasm-run-utils.h", ] deps = [ @@ -8011,6 +8218,7 @@ if (v8_enable_webassembly) { ":run_torque", ":v8_internal_headers", ":v8_libbase", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ":v8_tracing", ] @@ -8027,6 +8235,8 @@ if (v8_enable_webassembly) { } v8_source_set("wasm_fuzzer_common") { + testonly = true + sources = [ "test/fuzzer/wasm/fuzzer-common.cc", "test/fuzzer/wasm/fuzzer-common.h", @@ -8038,6 +8248,7 @@ if (v8_enable_webassembly) { ":generate_bytecode_builtins_list", ":run_torque", ":v8_internal_headers", + ":v8_maybe_temporal", ":v8_tracing", ":wasm_test_common", ] @@ -8083,13 +8294,6 @@ if (v8_enable_webassembly) { } 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", - ] - } - v8_wasm_fuzzer("wasm_compile_fuzzer") { sources = [ "test/common/wasm/test-signatures.h", @@ -8104,10 +8308,10 @@ if (v8_enable_webassembly) { ] } - v8_wasm_fuzzer("wasm_compile_wasmgc_fuzzer") { + v8_wasm_fuzzer("wasm_compile_revec_fuzzer") { sources = [ "test/common/wasm/test-signatures.h", - "test/fuzzer/wasm/compile-wasmgc.cc", + "test/fuzzer/wasm/compile-revec.cc", ] } @@ -8115,8 +8319,24 @@ if (v8_enable_webassembly) { sources = [ "test/fuzzer/wasm/init-expr.cc" ] } - v8_wasm_fuzzer("wasm_deopt_fuzzer") { - sources = [ "test/fuzzer/wasm/deopt.cc" ] + if (!v8_disable_write_barriers) { + v8_wasm_fuzzer("wasm_compile_all_fuzzer") { + sources = [ + "test/common/wasm/test-signatures.h", + "test/fuzzer/wasm/compile-all.cc", + ] + } + + v8_wasm_fuzzer("wasm_compile_wasmgc_fuzzer") { + sources = [ + "test/common/wasm/test-signatures.h", + "test/fuzzer/wasm/compile-wasmgc.cc", + ] + } + + v8_wasm_fuzzer("wasm_deopt_fuzzer") { + sources = [ "test/fuzzer/wasm/deopt.cc" ] + } } } # v8_wasm_random_fuzzers } diff --git a/deps/v8/COMMON_OWNERS b/deps/v8/COMMON_OWNERS index 741ba62748faa6..1a14c2458d6d0d 100644 --- a/deps/v8/COMMON_OWNERS +++ b/deps/v8/COMMON_OWNERS @@ -1,4 +1,3 @@ -adamk@chromium.org ahaas@chromium.org alexschulze@chromium.org bikineev@chromium.org @@ -29,8 +28,6 @@ olivf@chromium.org omerkatz@chromium.org pthier@chromium.org rezvan@chromium.org -sroettger@google.com -syg@chromium.org szuend@chromium.org thibaudm@chromium.org vahl@chromium.org diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 9d240951e47b47..c6b16a0d770bf1 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -49,6 +49,7 @@ vars = { 'download_gcmole': False, 'download_jsfunfuzz': False, 'download_prebuilt_bazel': False, + 'download_prebuilt_arm64_llvm_symbolizer': False, 'check_v8_header_includes': False, # By default, download the fuchsia sdk from the public sdk directory. @@ -58,7 +59,7 @@ vars = { 'checkout_fuchsia_no_hooks': False, # reclient CIPD package version - 'reclient_version': 're_client_version:0.177.1.e58c0145-gomaip', + 'reclient_version': 're_client_version:0.179.0.28341fc7-gomaip', # Fetch configuration files required for the 'use_remoteexec' gn arg 'download_remoteexec_cfg': False, @@ -74,24 +75,24 @@ vars = { 'build_with_chromium': False, # GN CIPD package version. - 'gn_version': 'git_revision:90478db6b59b9bebf7ca4cf912d860cf868e724c', + 'gn_version': 'git_revision:5d0a4153b0bcc86c5a23310d5b648a587be3c56d', # ninja CIPD package version # https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja 'ninja_version': 'version:3@1.12.1.chromium.4', # siso CIPD package version - 'siso_version': 'git_revision:70e1167e0e6dad10c8388cace8fd9d9376c43316', + 'siso_version': 'git_revision:8863265a67843154872be2be1fc0c37339691405', # 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:27.20250424.2.1', + 'fuchsia_version': 'version:29.20250824.3.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': '862506deb382f3f8a8fa9689c8d5136a48e9b778', + 'partition_alloc_version': '51d0a558ecdf5cac58509d08263c36764c270ca6', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_build-tools_version @@ -112,7 +113,7 @@ 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': 'mjFmRj7k_XR9yj60pYbr9mG38FyEbU5oWdU56bZQ5cwC', + 'android_sdk_platform-tools_version': 'qTD9QdBlBf3dyHsN1lJ0RH6AhHxR42Hmg2Ih-Vj4zIEC', # 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. @@ -129,9 +130,9 @@ vars = { deps = { 'build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + '88030b320338e0706b6b93336c4b35e6bbaf467e', + Var('chromium_url') + '/chromium/src/build.git' + '@' + 'd964efc5f27dcb8690921b9dc4a7780dce83695c', 'buildtools': - Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '0f32cb9025766951122d4ed19aba87a94ded3f43', + Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '2ca9a5b96fbf0a4947d626454781e333b28e275a', 'buildtools/linux64': { 'packages': [ { @@ -177,9 +178,9 @@ 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' + '@' + 'c5257e6119f83f856602f2ccbc46547a8fef0960', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'b947715fdda79a420b253821c1cc52272a77222d', 'third_party/android_platform': { - 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + '98aee46efb1cc4e09fa0e3ecaa6b19dc258645fa', + 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + 'e97e62b0b5f26315a0cd58ff8772a2483107158e', 'condition': 'checkout_android', }, 'third_party/android_sdk/public': { @@ -231,7 +232,7 @@ deps = { 'dep_type': 'cipd', }, 'third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + '000f47cfa393d7f9557025a252862e2a61a60d44', + 'url': Var('chromium_url') + '/catapult.git' + '@' + '3c5077921dbacc75db5768cf4fc0b1d9ca05d2e0', 'condition': 'checkout_android', }, 'third_party/clang-format/script': @@ -245,17 +246,19 @@ deps = { 'condition': 'checkout_android', }, 'third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '1fcc527019d786502b02f71b8b764ee674a40953', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '6b19831e3cfb16884a36b8045383594955712892', + 'third_party/dragonbox/src': + Var('chromium_url') + '/external/github.com/jk-jeon/dragonbox.git' + '@' + '6c7c925b571d54486b9ffae8d9d18a822801cbda', 'third_party/fp16/src': - Var('chromium_url') + '/external/github.com/Maratyszcza/FP16.git' + '@' + '0a92994d729ff76a58f692d3028ca1b64b145d91', + Var('chromium_url') + '/external/github.com/Maratyszcza/FP16.git' + '@' + 'b3720617faf1a4581ed7e6787cc51722ec7751f0', 'third_party/fast_float/src': 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' + '@' + 'e678aca1bad7a1c9a38620b2e328281bc68f6357', + 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + '7e28b752c19443ee31cb47a7195add4131a1cc09', 'condition': 'checkout_fuchsia', }, 'third_party/simdutf': - Var('chromium_url') + '/chromium/src/third_party/simdutf' + '@' + '62d1cfb62967c0076c997a10d54d50f9571fb8e9', + Var('chromium_url') + '/chromium/src/third_party/simdutf' + '@' + 'acd71a451c1bcb808b7c3a77e0242052909e381e', # 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': { @@ -269,21 +272,21 @@ deps = { 'dep_type': 'cipd', }, 'third_party/google_benchmark_chrome': { - 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + '29e4389fdc1eeb9137eb464b7f34e07c01c2731e', + 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + 'd6e7f141ed7c93a66890f3750ab634b8b52057a5', }, 'third_party/google_benchmark_chrome/src': { 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '761305ec3b33abf30e08d50eb829e19a802581cc', }, 'third_party/fuzztest': - Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + '4a7e9c055e63f4d67e04229ab491eaefe409addf', + Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + 'aa6ba9074b8d66a2e2853a0a0992c25966022e13', 'third_party/fuzztest/src': - Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + 'b10387fdbbca18192f85eaa5323a59f44bf9c468', + Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + '169baf17795850fd4b2c29e4d52136aa8d955b61', 'third_party/googletest/src': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'cd430b47a54841ec45d64d2377d7cabaf0eba610', + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '244cec869d12e53378fa0efb610cd4c32a454ec8', 'third_party/highway/src': Var('chromium_url') + '/external/github.com/google/highway.git' + '@' + '00fe003dac355b979f36157f9407c7c46448958e', 'third_party/icu': - Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '4c8cc4b365a505ce35be1e0bd488476c5f79805d', + Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '1b2e3e8a421efae36141a7b932b41e315b089af8', 'third_party/instrumented_libs': { 'url': Var('chromium_url') + '/chromium/third_party/instrumented_libraries.git' + '@' + '69015643b3f68dbd438c010439c59adc52cac808', 'condition': 'checkout_instrumented_libraries', @@ -295,167 +298,181 @@ deps = { 'condition': "checkout_ittapi or check_v8_header_includes", }, 'third_party/jinja2': - Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '5e1ee241ab04b38889f8d517f2da8b3df7cfbd9a', + Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + 'c3027d884967773057bf74b957e3fea87e5df4d7', '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' + '@' + '917609c669e43edc850eeb192a342434a54e1dfd', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '70c21e34ea54ef13377bc6d8283453290e17c7b8', 'third_party/libc++abi/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'f2a7f2987f9dcdf8b04c2d8cd4dcb186641a7c3e', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'f7f5a32b3e9582092d8a4511acec036a09ae8524', 'third_party/libunwind/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '81e2cb40a70de2b6978e6d8658891ded9a77f7e3', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '92fb77dfd4d86aa120730359f5e4d6bb47f1c129', 'third_party/llvm-libc/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + '912274164f0877ca917c06e8484ad3be1784833a', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + '11725050a2e117625867ec45d70746bb78b170fd', 'third_party/llvm-build/Release+Asserts': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/clang-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '2cccd3a5b04461f17a2e78d2f8bd18b448443a9dd4d6dfac50e8e84b4d5176f1', - 'size_bytes': 54914604, - 'generation': 1745271343199398, + 'object_name': 'Linux_x64/clang-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': 'a9f5af449672a239366199c17441427c2c4433a120cace9ffd32397e15224c64', + 'size_bytes': 55087424, + 'generation': 1754486730635359, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Linux_x64/clang-tidy-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'f0e7dae567266055c9cfa2fba5b3dafa311dc86955f5a3f7a4047ce3096e7b27', - 'size_bytes': 13559360, - 'generation': 1745271343282399, + 'object_name': 'Linux_x64/clang-tidy-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': 'c2ce17d666c5124d1b3999e160836b096b22a7c2dbb6f70637be6dceefa4bb86', + 'size_bytes': 13688944, + 'generation': 1754486730632975, 'condition': 'host_os == "linux" and checkout_clang_tidy', }, { - 'object_name': 'Linux_x64/clangd-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'd87ec8e9cd959cf5d12e0de2970f4a88a67f9884467dac5285813d02bbe50bcb', - 'size_bytes': 13767836, - 'generation': 1745271343386108, + 'object_name': 'Linux_x64/clangd-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': 'd42b0b22da85e7a49f239eeb378b0e8cd6eeeb1c685e89155c30a344de219636', + 'size_bytes': 13982120, + 'generation': 1754486730644041, 'condition': 'host_os == "linux" and checkout_clangd', }, { - 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '08f9cdbdc1e3f78dfb11aa9815727e8af0cf8f2b9c9a0e3749ceb4d3584fc900', - 'size_bytes': 2293720, - 'generation': 1745271343569971, + 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '5768970291fb6173bc69c342235e9dcc53c2c475acde8422e7787a8f8170bdd8', + 'size_bytes': 2251652, + 'generation': 1754486730690951, 'condition': 'host_os == "linux" and checkout_clang_coverage_tools', }, { - 'object_name': 'Linux_x64/llvmobjdump-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '4b9c20478c015a03a44842d0bc24a9bd01a87890c76c4496577843ea31a21ed1', - 'size_bytes': 5702536, - 'generation': 1745271343407073, - 'condition': '(checkout_linux or checkout_mac or checkout_android and host_os != "mac")', + 'object_name': 'Linux_x64/llvmobjdump-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '861c331f1bab58556bd84f33632667fd5af90402f94fb104f8b06dc039a8f598', + 'size_bytes': 5619264, + 'generation': 1754486730668455, + 'condition': '(checkout_linux or checkout_mac or checkout_android) and host_os == "linux"', }, { - 'object_name': 'Mac/clang-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '159cc811ee2882098086a426e83cb6744ff59d422d005a54630bc519e782d154', - 'size_bytes': 51986012, - 'generation': 1745271345031799, + 'object_name': 'Mac/clang-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '484e1b4128566635f123aefd6f9db9f0a1e99f462c247d2393941eb1a6b2efe2', + 'size_bytes': 52422108, + 'generation': 1754486732274509, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'ef380bc751dc8b137e294ac1aca295f3e49eb57b938ab011c38c70271d8582fc', - 'size_bytes': 988872, - 'generation': 1745271352425938, + 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '9a1fc6d92af9af410736066c8fff34cd1f95b3e3696b2b6dd581f8021eb74abc', + 'size_bytes': 996044, + 'generation': 1754486741367172, 'condition': 'checkout_mac and not host_os == "mac"', }, { - 'object_name': 'Mac/clang-tidy-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '75907ac8d2ab310fd7272715c5d98cd4382dbd0b867872aa9216cede48c274d5', - 'size_bytes': 13609872, - 'generation': 1745271345094426, + 'object_name': 'Mac/clang-tidy-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '4a4a9dcfe0b11c50e9cfb86963b7014dedf53e2de951fd573713803d45c3fb0f', + 'size_bytes': 13749248, + 'generation': 1754486732350716, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_tidy', }, { - 'object_name': 'Mac/clangd-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'e2bcab0b3961fdc7a63286cf7a98397026ff1b5143d34c8a50844b26a7b023c6', - 'size_bytes': 14998604, - 'generation': 1745271345196743, + 'object_name': 'Mac/clangd-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': 'a26a4bc078745f89a5aee6ba20e3507de4497e236592116e304510ce669d5760', + 'size_bytes': 15159680, + 'generation': 1754486732421420, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clangd', }, { - 'object_name': 'Mac/llvm-code-coverage-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '6e4c8ed691948981d799f4af747288cdd5e90ae873dc36ada66726ad3e6caef1', - 'size_bytes': 2262400, - 'generation': 1745271345385127, + 'object_name': 'Mac/llvm-code-coverage-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': 'f1b13f22aa030969870d72eaee9a3cfa633c41c811d6a4ee442e616ce4836202', + 'size_bytes': 2283192, + 'generation': 1754486732574927, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Mac_arm64/clang-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '3d437a643cc5838963254a39ab0528f49f2b65cd4dba2c80e628ad88eb419536', - 'size_bytes': 43999512, - 'generation': 1745271353863965, + 'object_name': 'Mac/llvmobjdump-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '99dbba5b4f8eb4b7bd6675d0589a4809576bceb4fc857474302d00b545945dcd', + 'size_bytes': 5489896, + 'generation': 1754486732472583, + 'condition': 'host_os == "mac" and host_cpu == "x64"', + }, + { + 'object_name': 'Mac_arm64/clang-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '7b99ec0bd96307f6eee85abbe9efe97d341051d7572e65d56f99b0e981fdc2c6', + 'size_bytes': 43856532, + 'generation': 1754486742864144, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Mac_arm64/clang-tidy-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '0b4150c9e699e1e904495807aff48d2e5396527bf775d6597818dd4f73a9c38f', - 'size_bytes': 11776260, - 'generation': 1745271353927359, + 'object_name': 'Mac_arm64/clang-tidy-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '9c9538cb6c5e431ff030b524ab456775c914dcff8d29751bd02eb991948fc588', + 'size_bytes': 11831704, + 'generation': 1754486742856483, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_tidy', }, { - 'object_name': 'Mac_arm64/clangd-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '9fcd151cfffa01e6befe3760b9bc91d645135c79449dc378af4cb2fe0187150c', - 'size_bytes': 12041956, - 'generation': 1745271354010497, + 'object_name': 'Mac_arm64/clangd-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '6dbb3d3d584e8d2c778f89f48bf9614bfce8e9d5876e03dbc91747991eec33b1', + 'size_bytes': 12138872, + 'generation': 1754486742962580, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clangd', }, { - 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '1e62752ef5fd9d425699ed44098d5a0eec3be3f827990470aa9f9199d34a2fb8', - 'size_bytes': 1975116, - 'generation': 1745271354276821, + 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '0e58aceeb995192461b4a26f059694346e869ba2c2ed806c38e74ed92a3fcf0f', + 'size_bytes': 1933704, + 'generation': 1754486743038880, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/clang-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'd53230dbb7db57ddcda5a8377b5dd8388deee9ff2766617d54c6159c51e806be', - 'size_bytes': 47036964, - 'generation': 1745271363166454, + 'object_name': 'Mac_arm64/llvmobjdump-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': 'd197d5d7581336a63a11f3cb8ca3d3f807c9f6032a21616d029573b90633fed5', + 'size_bytes': 5243848, + 'generation': 1754486742944902, + 'condition': 'host_os == "mac" and host_cpu == "arm64"', + }, + { + 'object_name': 'Win/clang-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '1f3dc2b70567abfa52effbcdcd271aa54fbe5e4325e91a2d488748998df79f7e', + 'size_bytes': 47038772, + 'generation': 1754486753863077, 'condition': 'host_os == "win"', }, { - 'object_name': 'Win/clang-tidy-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'c6022f5923be5afc1685723a2383fcd8f9334cc6ee097ce3c71963de6ded0764', - 'size_bytes': 13415856, - 'generation': 1745271363272778, + 'object_name': 'Win/clang-tidy-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '0e640abc3d4335945662024d0583017ef073d6db59171fad290ee0b86de099bc', + 'size_bytes': 13681872, + 'generation': 1754486754006910, 'condition': 'host_os == "win" and checkout_clang_tidy', }, { - 'object_name': 'Win/clang-win-runtime-library-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '555a34dd110a5fe3f7578745e9f0074cc341e550bed4ec5888accffb0200a7bb', - 'size_bytes': 2483656, - 'generation': 1745271370423782, + 'object_name': 'Win/clang-win-runtime-library-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '3e41cf1c8b4d5996e60353e282e0219608f134ca475a16541f536a63bf1a036f', + 'size_bytes': 2483996, + 'generation': 1754486763172399, 'condition': 'checkout_win and not host_os == "win"', }, { - 'object_name': 'Win/clangd-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '66aafde760608c4c0de94a3947a179db8c8f93c8e474e3081b4401287abe4ee4', - 'size_bytes': 13838692, - 'generation': 1745271363368641, + 'object_name': 'Win/clangd-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': 'd65400e92d8d7393511dc6beab1a2c8be2d4a5b5d946f957a6b55f8e39f666a4', + 'size_bytes': 14175060, + 'generation': 1754486754078416, 'condition': 'host_os == "win" and checkout_clangd', }, { - 'object_name': 'Win/llvm-code-coverage-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '6944dc39b33dca3bb8f219ffb221e3f345fe56a5fa0447c60ea6a2894ae72687', - 'size_bytes': 2373032, - 'generation': 1745271363562596, + 'object_name': 'Win/llvm-code-coverage-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': '01f7cec8caee5cbc89107f0b287b7f41a4c26979bbec3d88f3eee5faebee4c5e', + 'size_bytes': 2349144, + 'generation': 1754486754112875, 'condition': 'host_os == "win" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/llvmobjdump-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'e8b3e9f7cd7512edc7c05a12e818386cdb8d43bea9affbf0bf4db83a553092a5', - 'size_bytes': 5684140, - 'generation': 1745271363450942, - 'condition': 'checkout_linux or checkout_mac or checkout_android and host_os == "win"', + 'object_name': 'Win/llvmobjdump-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', + 'sha256sum': 'f4048cb8c08849e3f4ff8228ccaca4cf08789023df28bdf5cbad07aa0e245b45', + 'size_bytes': 5603744, + 'generation': 1754486754075834, + 'condition': '(checkout_linux or checkout_mac or checkout_android) and host_os == "win"', }, ], }, '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' + '@' + '9f8efc8637f847ab1ba984212598e6fb9cf1b3d4', + Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '4256084ae14175d38a3ff7d739dca83ae49ccec6', 'third_party/ninja': { 'packages': [ { @@ -473,47 +490,49 @@ deps = { 'third_party/perfetto': Var('android_url') + '/platform/external/perfetto.git' + '@' + '40b529923598b739b2892a536a7692eedbed5685', 'third_party/protobuf': - Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + '56b98941c7a305f54fc6c1c0a082fcb232f92954', + Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + 'e354a43e42a0ecacd1d65caafb8d40b21f4b4286', 'third_party/re2/src': - Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + 'c84a140c93352cdabbfb547c531be34515b12228', + Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + '6569a9a3df256f4c0c3813cb8ee2f8eef6e2c1fb', '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' + '@' + 'fa679ed68ee49fb99a7e924f57e4d2b6444103d6', + Var('chromium_url') + '/chromium/src/tools/rust' + '@' + 'f71995f8f92a8d6b0658fafce0f0dde769edabfa', + 'tools/win': + Var('chromium_url') + '/chromium/src/tools/win' + '@' + '89d58ebe78f02706d414154f923f759a05a887b6', 'third_party/rust': - Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + '926ec544992cad0ac638f3594fe6195ed493ebff', + Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + 'f058a25008a8a6b48a35656b21f0589535134d0f', 'third_party/rust-toolchain': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/rust-toolchain-c8f94230282a8e8c1148f3e657f0199aad909228-1-llvmorg-21-init-9266-g09006611.tar.xz', - 'sha256sum': '378c432f7739bb5da11aad7b3a2687f8252565eae5f0dcfc55c39a15382c519c', - 'size_bytes': 118598336, - 'generation': 1745271335898717, + 'object_name': 'Linux_x64/rust-toolchain-22be76b7e259f27bf3e55eb931f354cd8b69d55f-4-llvmorg-21-init-16348-gbd809ffb.tar.xz', + 'sha256sum': '3e5cf980edb893cbdc915d62bce1b29b896eda6df6455e145200bf25a52576b1', + 'size_bytes': 159517088, + 'generation': 1756377175296503, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Mac/rust-toolchain-c8f94230282a8e8c1148f3e657f0199aad909228-1-llvmorg-21-init-9266-g09006611.tar.xz', - 'sha256sum': 'bf05c8b5e90d6904de02dca9b3e4cb5e45a1a56207e7af1fbb3a10707704a26a', - 'size_bytes': 111932536, - 'generation': 1745271337336068, + 'object_name': 'Mac/rust-toolchain-22be76b7e259f27bf3e55eb931f354cd8b69d55f-4-llvmorg-21-init-16348-gbd809ffb.tar.xz', + 'sha256sum': '8f0d15259a48df6c284ebcfb9dfb0ecba77d8267620aae1ff42d23a2f595ad77', + 'size_bytes': 132425148, + 'generation': 1756377177172203, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac_arm64/rust-toolchain-c8f94230282a8e8c1148f3e657f0199aad909228-1-llvmorg-21-init-9266-g09006611.tar.xz', - 'sha256sum': '1aec99f479ff28cefe44ed739844833e016a1da255cf3c17d79e59a273246615', - 'size_bytes': 101605468, - 'generation': 1745271339727037, + 'object_name': 'Mac_arm64/rust-toolchain-22be76b7e259f27bf3e55eb931f354cd8b69d55f-4-llvmorg-21-init-16348-gbd809ffb.tar.xz', + 'sha256sum': 'ef0f5795e28fde6b0708647500fc94138e9518f173c3e99321cd8918006f606c', + 'size_bytes': 120345408, + 'generation': 1756377179094363, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Win/rust-toolchain-c8f94230282a8e8c1148f3e657f0199aad909228-1-llvmorg-21-init-9266-g09006611.tar.xz', - 'sha256sum': 'b291520613a3ebc415e4576a7fa31d840a5ebf4ab9be6e9dc5d90062dc001c1e', - 'size_bytes': 193280372, - 'generation': 1745271341223097, + 'object_name': 'Win/rust-toolchain-22be76b7e259f27bf3e55eb931f354cd8b69d55f-4-llvmorg-21-init-16348-gbd809ffb.tar.xz', + 'sha256sum': '056cfdae49dd3d73b38ca7ef8245dec2105c7a77b47efba99995552ea1d89f6e', + 'size_bytes': 194943632, + 'generation': 1756377180954050, 'condition': 'host_os == "win"', }, ], @@ -521,7 +540,7 @@ deps = { 'third_party/siso': { 'packages': [ { - 'package': 'infra/build/siso/${{platform}}', + 'package': 'build/siso/${{platform}}', 'version': Var('siso_version'), } ], @@ -529,13 +548,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'+ '@' + '1e85c01b15363d11fab81c46fe2b5c2179113f70', + Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + 'caf4afa1afc92e16fef429f182444bed98a46a6c', 'tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '6c4f037a983abf14a4c8bf00e44db73cdf330a97', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '3895bad8d8b0aa864c77deff02fd42ff7b2732d1', 'tools/protoc_wrapper': - Var('chromium_url') + '/chromium/src/tools/protoc_wrapper.git' + '@' + '8ad6d21544b14c7f753852328d71861b363cc512', + Var('chromium_url') + '/chromium/src/tools/protoc_wrapper.git' + '@' + '3438d4183bfc7c0d6850e8b970204cc8189f0323', 'third_party/abseil-cpp': { - 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '91f1a3775e4c509c3eadd4870fc9929c0021e6e3', + 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '5141e83267542f8869adf18b5bd6440440d6801e', 'condition': 'not build_with_chromium', }, 'third_party/zoslib': { @@ -548,6 +567,7 @@ include_rules = [ # Everybody can use some things. '+include', '+unicode', + '+third_party/dragonbox/src/include', '+third_party/fast_float/src/include', '+third_party/fdlibm', '+third_party/fp16/src/include', @@ -561,16 +581,19 @@ include_rules = [ # 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 # different to Chromium's): - # https://chromium.googlesource.com/chromium/src/+/main/styleguide/c++/c++11.md + # https://chromium.googlesource.com/chromium/src/+/main/styleguide/c++/c++-features.md '+absl/container/flat_hash_map.h', '+absl/container/flat_hash_set.h', '+absl/container/btree_map.h', + '+absl/functional/overload.h', '+absl/status', + '+absl/strings/str_format.h', '+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. + '-absl/functional/function_ref.h', # Use base::FunctionRef ] # checkdeps.py shouldn't check for includes in these directories: @@ -624,7 +647,6 @@ hooks = [ 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '--bucket', 'chromium-browser-clang', '-s', 'tools/clang/dsymutil/bin/dsymutil.arm64.sha1', '-o', 'tools/clang/dsymutil/bin/dsymutil', @@ -637,7 +659,6 @@ hooks = [ 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '--bucket', 'chromium-browser-clang', '-s', 'tools/clang/dsymutil/bin/dsymutil.x64.sha1', '-o', 'tools/clang/dsymutil/bin/dsymutil', @@ -667,13 +688,24 @@ hooks = [ '--platform=linux*', ], }, + { + 'name': 'llvm_symbolizer', + 'pattern': '.', + 'condition': 'download_prebuilt_arm64_llvm_symbolizer', + 'action': [ 'python3', + 'third_party/depot_tools/download_from_google_storage.py', + '--bucket', 'chromium-v8/llvm/arm64', + '--no_resume', + '-s', 'tools/sanitizers/linux/arm64/llvm-symbolizer.sha1', + '--platform=linux*', + ], + }, { 'name': 'wasm_spec_tests', 'pattern': '.', 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '-u', '--bucket', 'v8-wasm-spec-tests', '-s', 'test/wasm-spec-tests/tests.tar.gz.sha1', @@ -685,7 +717,6 @@ hooks = [ 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '-u', '--bucket', 'v8-wasm-spec-tests', '-s', 'test/wasm-js/tests.tar.gz.sha1', @@ -699,7 +730,6 @@ hooks = [ 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '--bucket', 'chromium-browser-clang/ciopfs', '-s', 'build/ciopfs.sha1', ] diff --git a/deps/v8/ENG_REVIEW_OWNERS b/deps/v8/ENG_REVIEW_OWNERS index d601572c0b16d3..d59733542dc665 100644 --- a/deps/v8/ENG_REVIEW_OWNERS +++ b/deps/v8/ENG_REVIEW_OWNERS @@ -2,11 +2,9 @@ # disagreement among owners. Please consult before adding top-level # directories. -adamk@chromium.org gdeepti@chromium.org hpayer@chromium.org #{LAST_RESORT_SUGGESTION} leszeks@chromium.org mlippautz@chromium.org -syg@chromium.org verwaest@chromium.org vahl@chromium.org diff --git a/deps/v8/GEMINI.md b/deps/v8/GEMINI.md new file mode 100644 index 00000000000000..a0231b10b29afb --- /dev/null +++ b/deps/v8/GEMINI.md @@ -0,0 +1,242 @@ +# Gemini Workspace for V8 + +This is the workspace configuration for V8 when using Gemini. + +Documentation can be found at https://v8.dev/docs. + +## Key Commands + +- **Build (Debug):** `tools/dev/gm.py quiet x64.debug` +- **Build (Optimized Debug):** `tools/dev/gm.py quiet x64.optdebug` +- **Build (Release):** `tools/dev/gm.py quiet x64.release` +- **Run All Tests:** `tools/run-tests.py --progress dots --exit-after-n-failures=5 --outdir=out/x64.optdebug` +- **Run C++ Tests:** `tools/run-tests.py --progress dots --exit-after-n-failures=5 --outdir=out/x64.optdebug cctest unittests` +- **Run JavaScript Tests:** `tools/run-tests.py --progress dots --exit-after-n-failures=5 --outdir=out/x64.optdebug mjsunit` +- **Format Code:** `git cl format` + +Some hints: +- You are an expert C++ developer. +- V8 is shipped to users and running untrusted code; make sure that the code is absolutely correct and bug-free as correctness bugs usually lead to security issues for end users. +- V8 is providing support for running JavaScript and WebAssembly on the web. As such, it is critical to aim for best possible performance when optimizing V8. + +## Folder structure + +- `src/`: The main source folder providing the implementation of the virtual machine. Key subdirectories include: + - `src/api/`: Implements the V8 public C++ API, as declared in `include/`. + - `src/asmjs/`: Contains V8's Asm.js pipeline, which compiles the Asm.js subset of JavaScript into WebAssembly. + - `src/ast/`: Defines the Abstract Syntax Tree (AST) used to represent parsed JavaScript, including nodes, scopes, and variables. + - `src/base/`: Provides fundamental, low-level utilities, data structures, and a platform abstraction layer for the entire V8 project. + - `src/baseline/`: Implements the Sparkplug baseline compiler, which generates machine code directly from bytecode for a fast performance boost. + - `src/bigint/`: The implementation of BigInt operations. + - `src/builtins/`: Implementation of JavaScript built-in functions (e.g., `Array.prototype.map`). + - `src/codegen/`: Code generation, including direct machine code generation via macro assemblers, higher level codegen via CodeStubAssembler, definitions of machine code metadata like safepoint tables and source position tables, and `compiler.cc` which defines entry points into the compilers. This contains subdirectories for architecture specific implementations, which should be kept in sync with each other as much as possible. + - `src/common/`: Common definitions and utilities. + - `src/compiler/`: The TurboFan optimizing compiler, including the Turboshaft CFG compiler. + - `src/d8/`: The `d8` shell implementation, for running V8 in a CLI. + - `src/debug/`: The debugger and debug protocol implementation. + - `src/deoptimizer/`: The deoptimizer implementation, which translates optimized frames into unoptimized ones. + - `src/execution/`: The definitions of the execution environment, including the Isolate, frame definitions, microtasks, stack guards, tiering, and on-stack argument handling. + - `src/handles/`: The handle implementation for GC-safe object references. + - `src/heap/`: The garbage collector and memory management code. + - `src/ic/`: The Inline Caching implementation. + - `src/init/`: The V8 initialization code. + - `src/inspector/`: The inspector protocol implementation. + - `src/interpreter/`: The Ignition bytecode compiler and interpreter. + - `src/json/`: The JSON parser and serializer. + - `src/libplatform/`: The platform abstraction layer, for task runners and worker threads. + - `src/logging/`: The logging implementation. + - `src/maglev/`: The Maglev mid-tier optimizing compiler. + - `src/numbers/`: Implementations of various numeric operations. + - `src/objects/`: The representation and behaviour of V8 internal and JavaScript objects. + - `src/parsing/`: The parser and scanner implementation. + - `src/profiler/`: The in-process profiler implementations, for heap snapshots, allocation tracking, and a sampling CPU profiler. + - `src/regexp/`: The regular expression implementation. This contains subdirectories for architecture specific implementations, which should be kept in sync with each other as much as possible. + - `src/runtime/`: C++ functions that can be called from JavaScript at runtime. + - `src/sandbox/`: The implementation of the sandbox, which is a security feature that attempts to limit V8 memory operations to be within a single guarded virtual memory allocation, such that corruptions of objects within the sandbox cannot lead to corruption of objects outside of it. + - `src/snapshot/`: The snapshot implementation, for both the startup snapshot (read-only, startup heap, and startup context), as well as the code-serializer, which generates code caches for caching of user script code. + - `src/strings/`: Implementations of string helpers, such as predicates for characters, unicode processing, hashing and string building. + - `src/torque/`: The Torque language implementation. + - `src/tracing/`: The tracing implementation. + - `src/trap-handler/`: Implementations of trap handlers. + - `src/wasm/`: The WebAssembly implementation. + - `src/zone/`: The implementation of a simple bump-pointer region-based zone allocator. +- `test/`: Folder containing most of the tests and testing code. +- `include/`: Folder containing all of V8's publicAPI that is used when V8 is embedded in other projects such as e.g. the Blink rendering engine. +- `out/`: Folder containing the results of a build. Usually organized in sub folders for the respective configurations. + +## Building + +The full documentation for building using GN can be found at https://v8.dev/docs/build-gn. + +Once the initial dependencies are installed, V8 can be built using `gm.py`, which is a wrapper around GN and Ninja. + +```bash +# List all available build configurations and targets +tools/dev/gm.py + +# Build the d8 shell for x64 in release mode +tools/dev/gm.py quiet x64.release + +# Build d8 for x64 in debug mode +tools/dev/gm.py quiet x64.debug +``` + +- **release:** Optimized for performance, with debug information stripped. Use for benchmarking. +- **debug:** Contains full debug information and enables assertions. Slower, but essential for debugging. +- **optdebug:** A compromise with optimizations enabled and debug information included. Good for general development. + +Make sure to pass the `quiet` keyword unless told to otherwise, so that you don't waste tokens on compilation progress. Errors will still be reported. + +## Debugging + +For debugging, it is recommended to use a `debug` or `optdebug` build. You can run `d8` with GDB or LLDB for native code debugging. + +```bash +# Example of running d8 with gdb +gdb --args out/x64.debug/d8 --my-flag my-script.js +``` + +V8 also provides a rich set of flags for diagnostics. Some of the most common ones are: +- `--trace-opt`: Log optimized functions. +- `--trace-deopt`: Log when and why functions are deoptimized. +- `--trace-gc`: Log garbage collection events. +- `--allow-natives-syntax`: Enables calling of internal V8 functions (e.g. `%OptimizeFunctionOnNextCall(f)`) from JavaScript for testing purposes. + +A comprehensive list of all flags can be found by running `out/x64.debug/d8 --help`. Most V8 flags are in `flag-definitions.h`; flags specific to the `d8` shell are located in `src/d8/d8.cc` within the `Shell::SetOptions` function. + +When debugging issues in Torque code, it is often useful to inspect the generated C++ files in `out//gen/torque-generated/`. This allows you to see the low-level CodeStubAssembler code that is actually being executed. + +## Testing + +The primary script for running tests is `tools/run-tests.py`. You specify the build output directory and the tests you want to run. Key test suites include: +- **unittests:** C++ unit tests for V8's internal components. +- **cctest:** Another, older format for C++ unit tests (deprecated, in the process of being moved to unittests). +- **mjsunit:** JavaScript-based tests for JavaScript language features and builtins. + +```bash +# Run all standard tests for the x64.optdebug build +tools/run-tests.py --progress dots --exit-after-n-failures=5 --outdir=out/x64.optdebug + +# Run a specific test suite (e.g., cctest) +tools/run-tests.py --progress dots --exit-after-n-failures=5 --outdir=out/x64.optdebug cctest + +# Run a specific test file +tools/run-tests.py --progress dots --exit-after-n-failures=5 --outdir=out/x64.optdebug cctest/test-heap +``` + +It's important to pass `--progress dots` so that there is minimal progress reporting, to avoid cluttering the output. + +If there are any failing tests, they will be reported along their stderr and a command to reproduce them e.g. + +``` +=== mjsunit/maglev/regress-429656023 === +--- stderr --- +# +# Fatal error in ../../src/heap/local-factory.h, line 41 +# unreachable code +# +# +# +...stack trace... +Received signal 6 +Command: out/x64.optdebug/d8 --test test/mjsunit/mjsunit.js test/mjsunit/maglev/regress-429656023.js --random-seed=-190258694 --nohard-abort --verify-heap --testing-d8-test-runner --allow-natives-syntax +``` + +You can retry the test either by running the test name with `tools/run-tests.py`, e.g. `tools/run-tests.py --progress dots --outdir=out/x64.optdebug mjsunit/maglev/regress-429656023`, or by running the command directly. When running the command directly, you can add additional flags to help debug the issue, and you can try running a different build (e.g. running a debug build if a release build fails). + +The full testing documentation is at https://v8.dev/docs/test. + +## Coding and Committing + +- Always follow the style conventions used in code surrounding your changes. +- Otherwise, follow [Chromium's C++ style guide](https://chromium.googlesource.com/chromium/src/+/main/styleguide/styleguide.md). +- Use `git cl format` to automatically format your changes. + +### Commit Messages +Commit messages should follow the convention described at https:/v8.dev/docs/contribute#commit-messages. A typical format is: + +``` +[component]: Short description of the change + +Longer description explaining the "why" of the change, not just +the "what". Wrap lines at 72 characters. + +Bug: 123456 +``` + +- The `component` is the area of the codebase (e.g., `compiler`, `runtime`, `api`). +- The `Bug:` line is important for linking to issues in the tracker at https://crbug.com/ + +## Working with Torque + +Torque is a V8-specific language used to write V8 builtins and some V8 object definitions. It provides a higher-level syntax that compiles down to CSA code. + +### Key Concepts + +- **Purpose:** Simplify the creation of V8 builtins and object definitions by providing a more abstract language than writing CodeStubAssembler code directly. +- **File Extension:** `.tq` +- **Location:** Torque files are primarily located in `src/builtins` and `src/objects`. +- **Compilation:** Torque files are compiled by the `torque` compiler, which generates C++ and Code Stub Assembler (CSA) files. These generated files are placed in the `out//gen/torque-generated/` directory and then compiled as part of the normal V8 build process. + - **C++ files** `*.tq` files will generate filenames like `*-tq.inc`, `*-tq.cc`, and `*-tq-inl.inc`. Additionally, there are top-level files: + - `class-forward-declarations.h`: Forward declarations for all Torque-defined classes. + - `builtin-definitions.h`: A list of all defined builtins. + - `csa-types.h`: Type definitions for the Code Stub Assembler. + - `factory.cc` and `factory.inc`: Factory functions for creating instances of Torque-defined classes. + - `class-verifiers.h` and `.cc`: Heap object verification functions (for debug builds). + - `exported-macros-assembler.h` and `.cc`: C++ declarations and definitions for exported Torque macros. + - `objects-body-descriptors-inl.inc`: Inline definitions for object body descriptors, which define the memory layout of objects. + - `objects-printer.cc`: Object printer functions for debugging. + - `instance-types.h`: The `InstanceType` enum, used to identify object types at runtime. + - `interface-descriptors.inc`: Definitions for call interface descriptors, which manage function call conventions. + - **CSA files** These have filenames like `*-csa.cc` and `*-csa.h`. They contain the C++ code that uses the `CodeStubAssembler` API to generate the low-level implementation of builtins. + +### Syntax and Features + +- **Typescript-like Syntax:** Torque's syntax is similar to Typescript with support for functions (macros and builtins), variables, types, and control flow. +- **Macros and Builtins:** + - `macro`: Inlined functions for reusable logic. + - `builtin`: Non-inlined functions, callable from other builtins or JavaScript. +- **`extern` Keyword:** Used to call C++ defined CSA functions from Torque. This is how Torque code interfaces with the rest of the V8 codebase. +- **`transitioning` and `javascript` Keywords:** + - `transitioning`: Indicates a function can cause an object's map to change (e.g., when a property is added to a JSObject). + - `javascript`: Marks a builtin as being directly callable from JavaScript, with Javascript linkage. +- **Type System:** Torque has a strong type system that mirrors the V8 object hierarchy. This allows for compile-time type checking and safer code. +- **Labels and `goto`:** Torque uses a `labels` and `goto` system for control flow, which is particularly useful for handling exceptional cases and optimizing performance. + +### Workflow for Modifying Torque Files + +1. **Identify the relevant `.tq` file:** Builtins are in `src/builtins`, and object definitions are in `src/objects`. +2. **Modify the Torque code:** Make the necessary changes to the `.tq` file, following the existing syntax and conventions. +3. **Rebuild V8:** Run the appropriate `gm.py` command (e.g., `tools/dev/gm.py x64.release`) to recompile V8. This will automatically run the Torque compiler and build the generated C++ files. +4. **Test your changes:** Run the relevant tests to ensure that your changes are correct and have not introduced any regressions. + +### Example + +A simple Torque macro to add two SMIs might look like this: + +```torque +macro AddTwoSmis(a: Smi, b: Smi): Smi { + return a + b; +} +``` + +A more complex example showing a JavaScript-callable builtin: + +```torque +transitioning javascript builtin MyAwesomeBuiltin( + js-implicit context: NativeContext)(x: JSAny): Number { + // ... implementation ... +} +``` + +## Common Pitfalls & Best Practices + +- **Always format before committing:** Run `git cl format` before creating a commit to ensure your code adheres to the style guide. +- **Do not edit generated files:** Files in `out/` are generated by the build process. Edits should be made to the source files (e.g., `.tq` files for Torque, `.pdl` for protocol definitions). +- **Match test configuration to build:** Ensure you are running tests against the correct build type (e.g., run mjsunit from out/x64.debug if you built x64.debug). +- **Check surrounding code for conventions:** Before adding new code, always study the existing patterns, naming conventions, and architectural choices in the file and directory you are working in. +- **Avoid changing unrelated code:** Keep diffs small by only changing the code you intended to change. Nearby code should not be cleaned up while making a change -- if you think there is a good cleanup, suggest it to me for a separate patch. +- **Keep related functions together:** When adding a new function, try to insert it near related functions, to keep similar behaviour close. +- **Don't guess header names:** If you don't know where the definition of a class or function is, don't try to guess the header name, but search for it instead. +- **Be careful with forward declarations:** Many types are forward declared; if you want to use them, you'll need to find the definition. +- **Be careful with inline function definitions:** Many functions are declared as `inline` in the `.h` file, and defined in a `-inl.h` file. If you get compile errors about a missing definition, you are likely missing an `#include` for a `-inl.h` file. You can only include `-inl.h` files from other `-inl.h` files and `.cc` files. diff --git a/deps/v8/MODULE.bazel b/deps/v8/MODULE.bazel index 21e089505f101c..65824eaeaa9770 100644 --- a/deps/v8/MODULE.bazel +++ b/deps/v8/MODULE.bazel @@ -4,6 +4,7 @@ module( ) bazel_dep(name = "bazel_skylib", version = "1.7.1") +bazel_dep(name = "rules_cc", version = "0.1.2") 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") diff --git a/deps/v8/OWNERS b/deps/v8/OWNERS index e252b5a2fa648b..546159a30b56e2 100644 --- a/deps/v8/OWNERS +++ b/deps/v8/OWNERS @@ -11,6 +11,7 @@ per-file AUTHORS=file:COMMON_OWNERS per-file BUILD.bazel=file:COMMON_OWNERS per-file BUILD.gn=file:COMMON_OWNERS per-file DEPS=file:COMMON_OWNERS +per-file GEMINI.md=file:COMMON_OWNERS per-file INFRA_OWNERS=file:INFRA_OWNERS per-file MODULE.bazel=file:COMMON_OWNERS per-file PRESUBMIT.py=file:INFRA_OWNERS diff --git a/deps/v8/PPC_OWNERS b/deps/v8/PPC_OWNERS index 6edd45a6ef2e04..514f7980de7335 100644 --- a/deps/v8/PPC_OWNERS +++ b/deps/v8/PPC_OWNERS @@ -1,4 +1,4 @@ -junyan@redhat.com +junyan1@ibm.com joransiu@ca.ibm.com midawson@redhat.com -mfarazma@redhat.com +mfarazma@ibm.com diff --git a/deps/v8/RISCV_OWNERS b/deps/v8/RISCV_OWNERS index e3e11fdf4947db..6650355e2edfe9 100644 --- a/deps/v8/RISCV_OWNERS +++ b/deps/v8/RISCV_OWNERS @@ -1,4 +1,5 @@ brice.dobry@futurewei.com +kasperl@rivosinc.com peng.w@rioslab.org qiuji@iscas.ac.cn yahan@iscas.ac.cn diff --git a/deps/v8/S390_OWNERS b/deps/v8/S390_OWNERS index 6edd45a6ef2e04..514f7980de7335 100644 --- a/deps/v8/S390_OWNERS +++ b/deps/v8/S390_OWNERS @@ -1,4 +1,4 @@ -junyan@redhat.com +junyan1@ibm.com joransiu@ca.ibm.com midawson@redhat.com -mfarazma@redhat.com +mfarazma@ibm.com diff --git a/deps/v8/bazel/defs.bzl b/deps/v8/bazel/defs.bzl index fbd942ba765fe0..b475bf5ff0a160 100644 --- a/deps/v8/bazel/defs.bzl +++ b/deps/v8/bazel/defs.bzl @@ -6,6 +6,9 @@ This module contains helper functions to compile V8. """ +load("@rules_cc//cc:cc_library.bzl", "cc_library") +load("@rules_cc//cc:cc_binary.bzl", "cc_binary") + FlagInfo = provider("The value of an option.", fields = ["value"]) @@ -117,6 +120,7 @@ def _default_args(): "-Wno-implicit-int-float-conversion", "-Wno-deprecated-copy", "-Wno-non-virtual-dtor", + "-Wno-unnecessary-virtual-specifier", "-isystem .", ], "//conditions:default": [], @@ -213,7 +217,7 @@ def v8_binary( **kwargs): default = _default_args() if _should_emit_noicu_and_icu(noicu_srcs, noicu_deps, noicu_defines, icu_srcs, icu_deps, icu_defines): - native.cc_binary( + cc_binary( name = "noicu/" + name, srcs = srcs + noicu_srcs, deps = deps + noicu_deps + default.deps, @@ -223,7 +227,7 @@ def v8_binary( linkopts = linkopts + default.linkopts, **kwargs ) - native.cc_binary( + cc_binary( name = "icu/" + name, srcs = srcs + icu_srcs, deps = deps + icu_deps + default.deps, @@ -234,7 +238,7 @@ def v8_binary( **kwargs ) else: - native.cc_binary( + cc_binary( name = name, srcs = srcs, deps = deps + default.deps, @@ -262,7 +266,7 @@ def v8_library( **kwargs): default = _default_args() if _should_emit_noicu_and_icu(noicu_srcs, noicu_deps, noicu_defines, icu_srcs, icu_deps, icu_defines): - native.cc_library( + cc_library( name = name + "_noicu", srcs = srcs + noicu_srcs, deps = deps + noicu_deps + default.deps, @@ -281,7 +285,7 @@ def v8_library( name = "noicu/" + name, actual = name + "_noicu", ) - native.cc_library( + cc_library( name = name + "_icu", srcs = srcs + icu_srcs, deps = deps + icu_deps + default.deps, @@ -301,7 +305,7 @@ def v8_library( actual = name + "_icu", ) else: - native.cc_library( + cc_library( name = name, srcs = srcs, deps = deps + default.deps, @@ -549,7 +553,6 @@ def build_config_content(cpu, icu): ("code_comments", "false"), ("component_build", "false"), ("concurrent_marking", "false"), - ("conservative_stack_scanning", "false"), ("current_cpu", cpu), ("dcheck_always_on", "false"), ("debug_code", "false"), @@ -582,6 +585,7 @@ def build_config_content(cpu, icu): ("pointer_compression", "true"), ("runtime_call_stats", "false"), ("sandbox", "false"), + ("sandbox_hardware_support", "false"), ("shared_ro_heap", "false"), ("simd_mips", "false"), ("simulator_run", "false"), diff --git a/deps/v8/build_overrides/partition_alloc.gni b/deps/v8/build_overrides/partition_alloc.gni index 33a094d4c9f67a..2954bc4c725491 100644 --- a/deps/v8/build_overrides/partition_alloc.gni +++ b/deps/v8/build_overrides/partition_alloc.gni @@ -34,6 +34,7 @@ _supported = _supported_compiler && _supported_build_type && use_partition_alloc_as_malloc_default = _supported use_allocator_shim_default = _supported +shim_supports_sized_dealloc_default = false enable_backup_ref_ptr_support_default = _supported put_ref_count_in_previous_slot_default = true enable_backup_ref_ptr_slow_checks_default = false diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index e137c84b00b5d5..0ddd653e0eca9d 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -4,6 +4,7 @@ import("//build/config/chrome_build.gni") import("//build/config/compiler/pgo/pgo.gni") +import("//build/config/features.gni") import("//build/config/gclient_args.gni") import("//build/config/ios/config.gni") import("//build/config/ios/ios_sdk_overrides.gni") @@ -52,6 +53,16 @@ declare_args() { # add a dependency on the ICU library. v8_enable_i18n_support = true + # Enable Temporal API. Enabling this feature will + # add a dependency on the temporal_rs library. + # + # We currently only want it enabled on d8 and chromium builds (Functionality + # is still not accessible unless --harmony-temporal is enabled at runtime) + # + # Furthermore, some architectures don't have Rust toolchains in Chromium + v8_enable_temporal_support = !(defined(build_with_node) && build_with_node) && + target_cpu != "ppc64" && target_cpu != "s390x" + # Use static libraries instead of source_sets. v8_static_library = false @@ -79,20 +90,31 @@ declare_args() { # Sets -DV8_LITE_MODE. v8_enable_lite_mode = false - # 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") { - if (target_platform == "iphoneos") { - # iOS executable code pages is in 18.4 SDK. - # TODO(dtapuska): Change this to an assert. - v8_enable_lite_mode = ios_deployment_target != "18.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 - } - } + # WebAssembly interpreter (DrumBrake) build flag. + v8_enable_drumbrake = false + + # Enable Wasm interpreter tracing. + v8_enable_drumbrake_tracing = false + + # 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). + # 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_clang || + is_component_build # Enable the Turbofan compiler. # Sets -dV8_ENABLE_TURBOFAN. @@ -112,6 +134,26 @@ declare_args() { # Enable 256-bit long vector re-vectorization pass in WASM compilation pipeline. v8_enable_wasm_simd256_revec = false + # 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") { + if (target_platform == "iphoneos") { + # iOS executable code pages is in 18.4 SDK which the iOS + Blink targets. + v8_enable_lite_mode = !use_blink + } else if (target_platform == "tvos") { + # tvOS runs in single process mode and is not allowed to use JIT. + v8_enable_lite_mode = true + + # Since v8 has the Wasm interpreter mode with jitless, tvOS enables it + # to use WebAssembly. + v8_enable_drumbrake = true + v8_enable_webassembly = true + + # tvOS doesn't use Turbofan. + v8_enable_turbofan = false + } + } + # Enable runtime call stats. v8_enable_runtime_call_stats = !v8_is_on_release_branch @@ -194,6 +236,10 @@ declare_args() { # Specifies if the target build is a simulator build. By default it is set to # true if the host and target do not match and we are not cross-compiling. v8_target_is_simulator = "" + + # 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 = "" } if (v8_use_external_startup_data == "") { @@ -228,8 +274,9 @@ if (v8_enable_builtins_optimization == "") { if (v8_enable_webassembly == "") { v8_enable_webassembly = !v8_enable_lite_mode } -assert(!(v8_enable_webassembly && v8_enable_lite_mode), - "Webassembly is not available in lite mode.") +assert( + !(v8_enable_webassembly && v8_enable_lite_mode && !v8_enable_drumbrake), + "Webassembly is not available in lite mode without the Wasm interpreter mode.") if (v8_enable_pointer_compression == "") { v8_enable_pointer_compression = @@ -238,18 +285,19 @@ if (v8_enable_pointer_compression == "") { } # The Wasm interpreter is currently supported only on arm64 and x64, on -# Windows, Linux and MacOS. +# Windows, Linux, MacOS and tvOS. is_drumbrake_supported = v8_enable_webassembly && v8_enable_pointer_compression && (v8_current_cpu == "x64" || v8_current_cpu == "arm64") && - (target_os == "win" || target_os == "linux" || target_os == "mac") + (target_os == "win" || target_os == "linux" || target_os == "mac" || + target_os == "ios") # Turbofan is enabled by default, except in lite mode. if (v8_enable_turbofan == "") { v8_enable_turbofan = !v8_enable_lite_mode } -assert(v8_enable_turbofan || !v8_enable_webassembly, - "Webassembly is not available when Turbofan is disabled.") +assert(v8_enable_turbofan || !v8_enable_webassembly || v8_enable_drumbrake, + "WebAssembly requires Turbofan or Drumbrake.") if (v8_target_is_simulator == "") { # We compare target cpu with v8 target cpu to not affect simulator builds for @@ -259,6 +307,14 @@ if (v8_target_is_simulator == "") { (current_cpu != v8_current_cpu && v8_multi_arch_build) } +# 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 +} + # Points to // in v8 stand-alone or to //v8/ in chromium. We need absolute # paths for all configs in templates as they are shared in different # subdirectories. diff --git a/deps/v8/include/DEPS b/deps/v8/include/DEPS index c6d10cd4d7b01d..e3f9da619385c3 100644 --- a/deps/v8/include/DEPS +++ b/deps/v8/include/DEPS @@ -10,4 +10,7 @@ include_rules = [ "+cppgc/type-traits.h", "+cppgc/visitor.h", "+perfetto", + # Used by v8-object.h, for Object::wrap(). + "+cppgc/name-provider.h", + "+cppgc/garbage-collected.h", ] diff --git a/deps/v8/include/OWNERS b/deps/v8/include/OWNERS index be9fad30ae3e56..c0e3a1f767be2f 100644 --- a/deps/v8/include/OWNERS +++ b/deps/v8/include/OWNERS @@ -1,4 +1,3 @@ -adamk@chromium.org cbruni@chromium.org leszeks@chromium.org mlippautz@chromium.org diff --git a/deps/v8/include/cppgc/allocation.h b/deps/v8/include/cppgc/allocation.h index 3e70eff0ddf62c..a7955fd1016e8e 100644 --- a/deps/v8/include/cppgc/allocation.h +++ b/deps/v8/include/cppgc/allocation.h @@ -71,7 +71,7 @@ class MakeGarbageCollectedTraitInternal { template struct AllocationDispatcher final { static void* Invoke(AllocationHandle& handle, size_t size) { - static_assert(std::is_base_of::value, + static_assert(std::is_base_of_v, "Custom space must inherit from CustomSpaceBase."); static_assert( !CustomSpace::kSupportsCompaction, @@ -111,7 +111,7 @@ class MakeGarbageCollectedTraitInternal { api_constants::kDefaultAlignment> final { static void* Invoke(AllocationHandle& handle, size_t size) { - static_assert(std::is_base_of::value, + static_assert(std::is_base_of_v, "Custom space must inherit from CustomSpaceBase."); return MakeGarbageCollectedTraitInternal::Allocate( handle, size, internal::GCInfoTrait::Index(), @@ -164,7 +164,7 @@ class MakeGarbageCollectedTraitBase */ V8_INLINE static void* Allocate(AllocationHandle& handle, size_t size) { static_assert( - std::is_base_of::value, + std::is_base_of_v, "U of GarbageCollected must be a base of T. Check " "GarbageCollected base class inheritance."); static constexpr size_t kWantedAlignment = diff --git a/deps/v8/include/cppgc/cross-thread-persistent.h b/deps/v8/include/cppgc/cross-thread-persistent.h index a5f8bac0b1013e..b389eb582c2957 100644 --- a/deps/v8/include/cppgc/cross-thread-persistent.h +++ b/deps/v8/include/cppgc/cross-thread-persistent.h @@ -102,20 +102,19 @@ class BasicCrossThreadPersistent final : public CrossThreadPersistentBase, // node. } - BasicCrossThreadPersistent( - const SourceLocation& loc = SourceLocation::Current()) + BasicCrossThreadPersistent(SourceLocation loc = SourceLocation::Current()) : LocationPolicy(loc) {} - BasicCrossThreadPersistent( - std::nullptr_t, const SourceLocation& loc = SourceLocation::Current()) + BasicCrossThreadPersistent(std::nullptr_t, + SourceLocation loc = SourceLocation::Current()) : LocationPolicy(loc) {} - BasicCrossThreadPersistent( - SentinelPointer s, const SourceLocation& loc = SourceLocation::Current()) + BasicCrossThreadPersistent(SentinelPointer s, + SourceLocation loc = SourceLocation::Current()) : CrossThreadPersistentBase(s), LocationPolicy(loc) {} - BasicCrossThreadPersistent( - T* raw, const SourceLocation& loc = SourceLocation::Current()) + BasicCrossThreadPersistent(T* raw, + SourceLocation loc = SourceLocation::Current()) : CrossThreadPersistentBase(raw), LocationPolicy(loc) { if (!IsValid(raw)) return; PersistentRegionLock guard; @@ -132,9 +131,8 @@ class BasicCrossThreadPersistent final : public CrossThreadPersistentBase, friend class BasicCrossThreadPersistent; }; - BasicCrossThreadPersistent( - UnsafeCtorTag, T* raw, - const SourceLocation& loc = SourceLocation::Current()) + BasicCrossThreadPersistent(UnsafeCtorTag, T* raw, + SourceLocation loc = SourceLocation::Current()) : CrossThreadPersistentBase(raw), LocationPolicy(loc) { if (!IsValid(raw)) return; CrossThreadPersistentRegion& region = this->GetPersistentRegion(raw); @@ -142,24 +140,23 @@ class BasicCrossThreadPersistent final : public CrossThreadPersistentBase, this->CheckPointer(raw); } - BasicCrossThreadPersistent( - T& raw, const SourceLocation& loc = SourceLocation::Current()) + BasicCrossThreadPersistent(T& raw, + SourceLocation loc = SourceLocation::Current()) : BasicCrossThreadPersistent(&raw, loc) {} template ::value>> + typename = std::enable_if_t>> BasicCrossThreadPersistent( internal::BasicMember member, - const SourceLocation& loc = SourceLocation::Current()) + SourceLocation loc = SourceLocation::Current()) : BasicCrossThreadPersistent(member.Get(), loc) {} - BasicCrossThreadPersistent( - const BasicCrossThreadPersistent& other, - const SourceLocation& loc = SourceLocation::Current()) + BasicCrossThreadPersistent(const BasicCrossThreadPersistent& other, + SourceLocation loc = SourceLocation::Current()) : BasicCrossThreadPersistent(loc) { // Invoke operator=. *this = other; @@ -168,19 +165,18 @@ class BasicCrossThreadPersistent final : public CrossThreadPersistentBase, // Heterogeneous ctor. template ::value>> - BasicCrossThreadPersistent( - const BasicCrossThreadPersistent& other, - const SourceLocation& loc = SourceLocation::Current()) + typename = std::enable_if_t>> + BasicCrossThreadPersistent(const BasicCrossThreadPersistent< + U, OtherWeaknessPolicy, OtherLocationPolicy, + OtherCheckingPolicy>& other, + SourceLocation loc = SourceLocation::Current()) : BasicCrossThreadPersistent(loc) { *this = other; } BasicCrossThreadPersistent( BasicCrossThreadPersistent&& other, - const SourceLocation& loc = SourceLocation::Current()) noexcept { + SourceLocation loc = SourceLocation::Current()) noexcept { // Invoke operator=. *this = std::move(other); } @@ -194,7 +190,7 @@ class BasicCrossThreadPersistent final : public CrossThreadPersistentBase, template ::value>> + typename = std::enable_if_t>> BasicCrossThreadPersistent& operator=( const BasicCrossThreadPersistent::value>> + typename = std::enable_if_t>> BasicCrossThreadPersistent& operator=( internal::BasicMember @@ -338,8 +334,8 @@ class BasicCrossThreadPersistent final : public CrossThreadPersistentBase, } template ::IsStrongPersistent::value>::type> + typename = std::enable_if_t::IsStrongPersistent::value>> BasicCrossThreadPersistent Lock() const { return BasicCrossThreadPersistent< diff --git a/deps/v8/include/cppgc/internal/finalizer-trait.h b/deps/v8/include/cppgc/internal/finalizer-trait.h index ab49af870e0ba3..b62da059fa14d0 100644 --- a/deps/v8/include/cppgc/internal/finalizer-trait.h +++ b/deps/v8/include/cppgc/internal/finalizer-trait.h @@ -70,7 +70,7 @@ struct FinalizerTrait { // - a destructor. static constexpr bool kNonTrivialFinalizer = internal::HasFinalizeGarbageCollectedObject::value || - !std::is_trivially_destructible::type>::value; + !std::is_trivially_destructible_v>; static void Finalize(void* obj) { internal::FinalizerTraitImpl::Finalize(obj); diff --git a/deps/v8/include/cppgc/internal/gc-info.h b/deps/v8/include/cppgc/internal/gc-info.h index d52710b369dc28..b2fbd1fee1cbcf 100644 --- a/deps/v8/include/cppgc/internal/gc-info.h +++ b/deps/v8/include/cppgc/internal/gc-info.h @@ -108,10 +108,10 @@ struct GCInfoTrait final { template struct GCInfoFolding final { static constexpr bool kHasVirtualDestructorAtBase = - std::has_virtual_destructor::value; + std::has_virtual_destructor_v; static constexpr bool kBothTypesAreTriviallyDestructible = - std::is_trivially_destructible::value && - std::is_trivially_destructible::value; + std::is_trivially_destructible_v && + std::is_trivially_destructible_v; static constexpr bool kHasCustomFinalizerDispatchAtBase = internal::HasFinalizeGarbageCollectedObject< ParentMostGarbageCollectedType>::value; diff --git a/deps/v8/include/cppgc/internal/logging.h b/deps/v8/include/cppgc/internal/logging.h index 2129e85f2406e0..887130a16affae 100644 --- a/deps/v8/include/cppgc/internal/logging.h +++ b/deps/v8/include/cppgc/internal/logging.h @@ -12,9 +12,9 @@ namespace cppgc { namespace internal { void V8_EXPORT DCheckImpl(const char*, - const SourceLocation& = SourceLocation::Current()); + SourceLocation = SourceLocation::Current()); [[noreturn]] void V8_EXPORT -FatalImpl(const char*, const SourceLocation& = SourceLocation::Current()); +FatalImpl(const char*, SourceLocation = SourceLocation::Current()); // Used to ignore -Wunused-variable. template diff --git a/deps/v8/include/cppgc/internal/name-trait.h b/deps/v8/include/cppgc/internal/name-trait.h index 6be298557df44b..6e63a72821be76 100644 --- a/deps/v8/include/cppgc/internal/name-trait.h +++ b/deps/v8/include/cppgc/internal/name-trait.h @@ -80,7 +80,7 @@ class NameTrait final : public NameTraitBase { #elif CPPGC_SUPPORTS_OBJECT_NAMES return true; #else // !CPPGC_SUPPORTS_OBJECT_NAMES - return std::is_base_of::value; + return std::is_base_of_v; #endif // !CPPGC_SUPPORTS_OBJECT_NAMES } diff --git a/deps/v8/include/cppgc/internal/pointer-policies.h b/deps/v8/include/cppgc/internal/pointer-policies.h index bba484237da466..432cdb47caa950 100644 --- a/deps/v8/include/cppgc/internal/pointer-policies.h +++ b/deps/v8/include/cppgc/internal/pointer-policies.h @@ -203,11 +203,11 @@ using DefaultCrossThreadPersistentCheckingPolicy = DisabledCheckingPolicy; class KeepLocationPolicy { public: - constexpr const SourceLocation& Location() const { return location_; } + constexpr SourceLocation Location() const { return location_; } protected: constexpr KeepLocationPolicy() = default; - constexpr explicit KeepLocationPolicy(const SourceLocation& location) + constexpr explicit KeepLocationPolicy(SourceLocation location) : location_(location) {} // KeepLocationPolicy must not copy underlying source locations. @@ -228,7 +228,7 @@ class IgnoreLocationPolicy { protected: constexpr IgnoreLocationPolicy() = default; - constexpr explicit IgnoreLocationPolicy(const SourceLocation&) {} + constexpr explicit IgnoreLocationPolicy(SourceLocation) {} }; #if CPPGC_SUPPORTS_OBJECT_NAMES diff --git a/deps/v8/include/cppgc/member.h b/deps/v8/include/cppgc/member.h index c82688d582a8d8..c028bcd06881b2 100644 --- a/deps/v8/include/cppgc/member.h +++ b/deps/v8/include/cppgc/member.h @@ -20,6 +20,8 @@ namespace cppgc { namespace subtle { class HeapConsistency; +template +class TaggedUncompressedMember; } // namespace subtle class Visitor; @@ -163,7 +165,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, template ::value>> + typename = std::enable_if_t>> V8_INLINE BasicMember(const BasicPersistent& p) @@ -219,7 +221,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, template ::value>> + typename = std::enable_if_t>> V8_INLINE BasicMember& operator=( const BasicPersistent& @@ -296,8 +298,10 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, return *this; } - V8_INLINE const T* GetRawAtomic() const { - return static_cast(Base::GetRawAtomic()); + V8_INLINE const void* GetRawAtomic() const { return Base::GetRawAtomic(); } + + V8_INLINE const T* GetAtomic() const { + return static_cast(GetRawAtomic()); } V8_INLINE void InitializingWriteBarrier(T* value) const { @@ -328,6 +332,8 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, V8_INLINE T* GetFromGC() const { return Get(); } friend class cppgc::subtle::HeapConsistency; + template + friend class cppgc::subtle::TaggedUncompressedMember; friend class cppgc::Visitor; template friend struct cppgc::TraceTrait; diff --git a/deps/v8/include/cppgc/persistent.h b/deps/v8/include/cppgc/persistent.h index 6eb1c659267d96..a86a063ed5e05c 100644 --- a/deps/v8/include/cppgc/persistent.h +++ b/deps/v8/include/cppgc/persistent.h @@ -58,20 +58,20 @@ class BasicPersistent final : public PersistentBase, // Null-state/sentinel constructors. BasicPersistent( // NOLINT - const SourceLocation& loc = SourceLocation::Current()) + SourceLocation loc = SourceLocation::Current()) : LocationPolicy(loc) {} BasicPersistent(std::nullptr_t, // NOLINT - const SourceLocation& loc = SourceLocation::Current()) + SourceLocation loc = SourceLocation::Current()) : LocationPolicy(loc) {} BasicPersistent( // NOLINT - SentinelPointer s, const SourceLocation& loc = SourceLocation::Current()) + SentinelPointer s, SourceLocation loc = SourceLocation::Current()) : PersistentBase(s), LocationPolicy(loc) {} // Raw value constructors. BasicPersistent(T* raw, // NOLINT - const SourceLocation& loc = SourceLocation::Current()) + SourceLocation loc = SourceLocation::Current()) : PersistentBase(raw), LocationPolicy(loc) { if (!IsValid()) return; SetNode(WeaknessPolicy::GetPersistentRegion(GetValue()) @@ -80,30 +80,29 @@ class BasicPersistent final : public PersistentBase, } BasicPersistent(T& raw, // NOLINT - const SourceLocation& loc = SourceLocation::Current()) + SourceLocation loc = SourceLocation::Current()) : BasicPersistent(&raw, loc) {} // Copy ctor. BasicPersistent(const BasicPersistent& other, - const SourceLocation& loc = SourceLocation::Current()) + SourceLocation loc = SourceLocation::Current()) : BasicPersistent(other.Get(), loc) {} // Heterogeneous ctor. template ::value>> + typename = std::enable_if_t>> // NOLINTNEXTLINE BasicPersistent( const BasicPersistent& other, - const SourceLocation& loc = SourceLocation::Current()) + SourceLocation loc = SourceLocation::Current()) : BasicPersistent(other.Get(), loc) {} // Move ctor. The heterogeneous move ctor is not supported since e.g. // persistent can't reuse persistent node from weak persistent. - BasicPersistent( - BasicPersistent&& other, - const SourceLocation& loc = SourceLocation::Current()) noexcept + BasicPersistent(BasicPersistent&& other, + SourceLocation loc = SourceLocation::Current()) noexcept : PersistentBase(std::move(other)), LocationPolicy(std::move(other)) { if (!IsValid()) return; GetNode()->UpdateOwner(this); @@ -116,12 +115,12 @@ class BasicPersistent final : public PersistentBase, template ::value>> + typename = std::enable_if_t>> // NOLINTNEXTLINE BasicPersistent(const internal::BasicMember< U, MemberBarrierPolicy, MemberWeaknessTag, MemberCheckingPolicy, MemberStorageType>& member, - const SourceLocation& loc = SourceLocation::Current()) + SourceLocation loc = SourceLocation::Current()) : BasicPersistent(member.Get(), loc) {} ~BasicPersistent() { Clear(); } @@ -133,7 +132,7 @@ class BasicPersistent final : public PersistentBase, template ::value>> + typename = std::enable_if_t>> BasicPersistent& operator=( const BasicPersistent& other) { @@ -158,7 +157,7 @@ class BasicPersistent final : public PersistentBase, template ::value>> + typename = std::enable_if_t>> BasicPersistent& operator=( const internal::BasicMember& diff --git a/deps/v8/include/cppgc/platform.h b/deps/v8/include/cppgc/platform.h index 917fa25e064c56..8e19272f58bb84 100644 --- a/deps/v8/include/cppgc/platform.h +++ b/deps/v8/include/cppgc/platform.h @@ -165,7 +165,7 @@ V8_EXPORT void ShutdownProcess(); namespace internal { V8_EXPORT void Fatal(const std::string& reason = std::string(), - const SourceLocation& = SourceLocation::Current()); + SourceLocation = SourceLocation::Current()); } // namespace internal diff --git a/deps/v8/include/cppgc/tagged-member.h b/deps/v8/include/cppgc/tagged-member.h index 7a2dfbb4c790c0..b100a54a55c2c8 100644 --- a/deps/v8/include/cppgc/tagged-member.h +++ b/deps/v8/include/cppgc/tagged-member.h @@ -6,6 +6,7 @@ #define INCLUDE_CPPGC_TAGGED_MEMBER_H_ #include +#include #include #include @@ -28,7 +29,7 @@ namespace cppgc::subtle { // TaggedUncompressedMember // m(ParentTag{}, parent); template -struct TaggedUncompressedMember final { +class TaggedUncompressedMember final { CPPGC_DISALLOW_NEW(); static constexpr uintptr_t kTagBit = 0b1; static_assert(kTagBit < internal::api_constants::kAllocationGranularity, @@ -98,7 +99,9 @@ struct TaggedUncompressedMember final { // Construct an untagged pointer and pass it to Visitor::Trace(). The plugin // would warn that ptr_ is untraced, which is why CPPGC_PLUGIN_IGNORE is // used. - UncompressedMember temp(GetUntagged()); + auto* untagged = reinterpret_cast( + reinterpret_cast(ptr_.GetRawAtomic()) & ~kTagBit); + UncompressedMember temp(untagged); v->Trace(temp); } diff --git a/deps/v8/include/cppgc/trace-trait.h b/deps/v8/include/cppgc/trace-trait.h index 5fc863d2ebbac5..9b768a15290fab 100644 --- a/deps/v8/include/cppgc/trace-trait.h +++ b/deps/v8/include/cppgc/trace-trait.h @@ -23,8 +23,7 @@ using TraceRootCallback = void (*)(RootVisitor&, const void* object); // Implementation of the default TraceTrait handling GarbageCollected and // GarbageCollectedMixin. template ::type>> + bool = IsGarbageCollectedMixinTypeV>> struct TraceTraitImpl; } // namespace internal diff --git a/deps/v8/include/cppgc/visitor.h b/deps/v8/include/cppgc/visitor.h index e0b1d19beb35ac..765d9b137af484 100644 --- a/deps/v8/include/cppgc/visitor.h +++ b/deps/v8/include/cppgc/visitor.h @@ -91,7 +91,7 @@ class V8_EXPORT Visitor { */ template void Trace(const Member& member) { - const T* value = member.GetRawAtomic(); + const T* value = member.GetAtomic(); CPPGC_DCHECK(value != kSentinelPointer); TraceImpl(value); } @@ -109,7 +109,7 @@ class V8_EXPORT Visitor { static_assert(!internal::IsAllocatedOnCompactableSpace::value, "Weak references to compactable objects are not allowed"); - const T* value = weak_member.GetRawAtomic(); + const T* value = weak_member.GetAtomic(); // Bailout assumes that WeakMember emits write barrier. if (!value) { @@ -129,7 +129,7 @@ class V8_EXPORT Visitor { */ template void Trace(const subtle::UncompressedMember& member) { - const T* value = member.GetRawAtomic(); + const T* value = member.GetAtomic(); CPPGC_DCHECK(value != kSentinelPointer); TraceImpl(value); } @@ -232,12 +232,12 @@ class V8_EXPORT Visitor { template void TraceEphemeron(const WeakMember& weak_member_key, const Member* member_value) { - const KeyType* key = weak_member_key.GetRawAtomic(); + const KeyType* key = weak_member_key.GetAtomic(); if (!key) return; // `value` must always be non-null. CPPGC_DCHECK(member_value); - const ValueType* value = member_value->GetRawAtomic(); + const ValueType* value = member_value->GetAtomic(); if (!value) return; // KeyType and ValueType may refer to GarbageCollectedMixin. @@ -267,7 +267,7 @@ class V8_EXPORT Visitor { const ValueType* value) { static_assert(!IsGarbageCollectedOrMixinTypeV, "garbage-collected types must use WeakMember and Member"); - const KeyType* key = weak_member_key.GetRawAtomic(); + const KeyType* key = weak_member_key.GetAtomic(); if (!key) return; // `value` must always be non-null. @@ -293,7 +293,7 @@ class V8_EXPORT Visitor { */ template void TraceStrongly(const WeakMember& weak_member) { - const T* value = weak_member.GetRawAtomic(); + const T* value = weak_member.GetAtomic(); CPPGC_DCHECK(value != kSentinelPointer); TraceImpl(value); } @@ -369,6 +369,11 @@ class V8_EXPORT Visitor { return false; } + /** + * Checks whether the visitor is running concurrently to the mutator or not. + */ + virtual bool IsConcurrent() const { return false; } + protected: virtual void Visit(const void* self, TraceDescriptor) {} virtual void VisitWeak(const void* self, TraceDescriptor, WeakCallback, @@ -497,9 +502,9 @@ class V8_EXPORT RootVisitor { } protected: - virtual void VisitRoot(const void*, TraceDescriptor, const SourceLocation&) {} + virtual void VisitRoot(const void*, TraceDescriptor, SourceLocation) {} virtual void VisitWeakRoot(const void* self, TraceDescriptor, WeakCallback, - const void* weak_root, const SourceLocation&) {} + const void* weak_root, SourceLocation) {} private: template diff --git a/deps/v8/include/v8-array-buffer.h b/deps/v8/include/v8-array-buffer.h index 1d93457628cf0c..3e64ece5debda3 100644 --- a/deps/v8/include/v8-array-buffer.h +++ b/deps/v8/include/v8-array-buffer.h @@ -198,7 +198,7 @@ class V8_EXPORT ArrayBuffer : public Object { * Convenience allocator. * * When the sandbox is enabled, this allocator will allocate its backing - * memory inside the sandbox that belongs to passed isolate group. + * memory inside the sandbox that belongs to the passed isolate group. * Otherwise, it will rely on malloc/free. * * Caller takes ownership, i.e. the returned object needs to be freed using diff --git a/deps/v8/include/v8-callbacks.h b/deps/v8/include/v8-callbacks.h index a9f380e38abdde..920e4e25f10cdc 100644 --- a/deps/v8/include/v8-callbacks.h +++ b/deps/v8/include/v8-callbacks.h @@ -324,6 +324,9 @@ using WasmLoadSourceMapCallback = Local (*)(Isolate* isolate, // --- Callback for checking if WebAssembly imported strings are enabled --- using WasmImportedStringsEnabledCallback = bool (*)(Local context); +// --- Callback for checking if WebAssembly Custom Descriptors are enabled --- +using WasmCustomDescriptorsEnabledCallback = bool (*)(Local context); + // --- Callback for checking if the SharedArrayBuffer constructor is enabled --- using SharedArrayBufferConstructorEnabledCallback = bool (*)(Local context); diff --git a/deps/v8/include/v8-context.h b/deps/v8/include/v8-context.h index 43dadadeabff59..c93c5652c502f5 100644 --- a/deps/v8/include/v8-context.h +++ b/deps/v8/include/v8-context.h @@ -256,6 +256,9 @@ class V8_EXPORT Context : public Data { Maybe DeepFreeze(DeepFreezeDelegate* delegate = nullptr); /** Returns the isolate associated with a current context. */ + V8_DEPRECATED( + "Use Isolate::GetCurrent() instead, which is guaranteed to return the " + "same isolate since https://crrev.com/c/6458560.") Isolate* GetIsolate(); /** Returns the microtask queue associated with a current context. */ @@ -311,8 +314,14 @@ class V8_EXPORT Context : public Data { * index, growing the data as needed. Note that index 0 currently has a * special meaning for Chrome's debugger. */ + V8_DEPRECATE_SOON( + "Use SetAlignedPointerInEmbedderData with EmbedderDataTypeTag parameter " + "instead.") void SetAlignedPointerInEmbedderData(int index, void* value); + void SetAlignedPointerInEmbedderData(int index, void* value, + EmbedderDataTypeTag slot); + /** * Control whether code generation from strings is allowed. Calling * this method with false will disable 'eval' and the 'Function' @@ -451,8 +460,7 @@ Local Context::GetEmbedderData(int index) { value = I::DecompressTaggedField(embedder_data, static_cast(value)); #endif - auto isolate = reinterpret_cast( - internal::IsolateFromNeverReadOnlySpaceObject(ctx)); + auto* isolate = I::GetCurrentIsolate(); return Local::New(isolate, value); #else return SlowGetEmbedderData(index); @@ -470,7 +478,8 @@ void* Context::GetAlignedPointerFromEmbedderData(Isolate* isolate, int index) { (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; return reinterpret_cast( - I::ReadExternalPointerField( + I::ReadExternalPointerField<{internal::kFirstEmbedderDataTag, + internal::kLastEmbedderDataTag}>( isolate, embedder_data, value_offset)); #else return SlowGetAlignedPointerFromEmbedderData(index); @@ -487,9 +496,10 @@ void* Context::GetAlignedPointerFromEmbedderData(int index) { int value_offset = I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; - Isolate* isolate = I::GetIsolateForSandbox(ctx); + Isolate* isolate = I::GetCurrentIsolateForSandbox(); return reinterpret_cast( - I::ReadExternalPointerField( + I::ReadExternalPointerField<{internal::kFirstEmbedderDataTag, + internal::kLastEmbedderDataTag}>( isolate, embedder_data, value_offset)); #else return SlowGetAlignedPointerFromEmbedderData(index); diff --git a/deps/v8/include/v8-debug.h b/deps/v8/include/v8-debug.h index 23b392c7dca0b1..0aff8b9e675e8a 100644 --- a/deps/v8/include/v8-debug.h +++ b/deps/v8/include/v8-debug.h @@ -172,6 +172,17 @@ class V8_EXPORT StackTrace { * a stack trace. */ static Local CurrentScriptNameOrSourceURL(Isolate* isolate); + + /** + * Returns the first valid script id at the top of + * the JS stack. The returned value is Message::kNoScriptIdInfo if no id + * was found. + * + * This method is equivalent to calling StackTrace::CurrentStackTrace and + * walking the resulting frames from the beginning until a non-empty id is + * found. The difference is that this method won't allocate a stack trace. + */ + static int CurrentScriptId(Isolate* isolate); }; } // namespace v8 diff --git a/deps/v8/include/v8-fast-api-calls.h b/deps/v8/include/v8-fast-api-calls.h index 4ffaf2d44a50fd..7f70eee2d542a6 100644 --- a/deps/v8/include/v8-fast-api-calls.h +++ b/deps/v8/include/v8-fast-api-calls.h @@ -93,27 +93,11 @@ * } * }; * - * // TODO(mslekova): Clean-up these constants - * // The constants kV8EmbedderWrapperTypeIndex and - * // kV8EmbedderWrapperObjectIndex describe the offsets for the type info - * // struct and the native object, when expressed as internal field indices - * // within a JSObject. The existance of this helper function assumes that - * // all embedder objects have their JSObject-side type info at the same - * // offset, but this is not a limitation of the API itself. For a detailed - * // use case, see the third example. - * static constexpr int kV8EmbedderWrapperTypeIndex = 0; - * static constexpr int kV8EmbedderWrapperObjectIndex = 1; - * * // The following setup function can be templatized based on * // the {embedder_object} argument. * void SetupCustomEmbedderObject(v8::Isolate* isolate, * v8::Local context, * CustomEmbedderType* embedder_object) { - * isolate->set_embedder_wrapper_type_index( - * kV8EmbedderWrapperTypeIndex); - * isolate->set_embedder_wrapper_object_index( - * kV8EmbedderWrapperObjectIndex); - * * v8::CFunction c_func = * MakeV8CFunction(CustomEmbedderType::FastMethod); * @@ -235,7 +219,6 @@ namespace v8 { class Isolate; -START_ALLOW_USE_DEPRECATED() class CTypeInfo { public: enum class Type : uint8_t { @@ -269,14 +252,6 @@ class CTypeInfo { // than any valid Type enum. static constexpr Type kCallbackOptionsType = Type(255); - 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 - kIsArrayBuffer // ArrayBuffer - }; - enum class Flags : uint8_t { kNone = 0, kAllowSharedBit = 1 << 0, // Must be an ArrayBuffer or TypedArray @@ -286,27 +261,18 @@ class CTypeInfo { }; 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) {} + : type_(type), flags_(flags) {} typedef uint32_t Identifier; explicit constexpr CTypeInfo(Identifier identifier) - : CTypeInfo(static_cast(identifier >> 16), - static_cast((identifier >> 8) & 255), - static_cast(identifier & 255)) {} + : type_(static_cast((identifier >> 8) & 255)), + flags_(static_cast(identifier & 255)) {} constexpr Identifier GetId() const { - return static_cast(type_) << 16 | - static_cast(sequence_type_) << 8 | + return static_cast(type_) << 8 | static_cast(flags_); } 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_; } static constexpr bool IsIntegralType(Type type) { @@ -326,10 +292,8 @@ class CTypeInfo { private: Type type_; - SequenceType sequence_type_; Flags flags_; }; -END_ALLOW_USE_DEPRECATED() struct FastOneByteString { const char* data; @@ -714,8 +678,7 @@ class CFunctionBuilderWithFunction { // Flags in the template parameter pack are ignored. template struct GetArgBuilder { - using type = - typename std::tuple_element>::type; + using type = std::tuple_element_t>; }; // Returns an ArgBuilder with the same base type as the one at index N, @@ -723,10 +686,8 @@ class CFunctionBuilderWithFunction { template struct GetArgBuilder { using type = CTypeInfoBuilder< - typename std::tuple_element>::type::BaseType, - std::tuple_element>::type::Build() - .GetFlags(), + typename std::tuple_element_t>::BaseType, + std::tuple_element_t>::Build().GetFlags(), Flags...>; }; diff --git a/deps/v8/include/v8-function-callback.h b/deps/v8/include/v8-function-callback.h index 09213431c9200d..0dad94ce22c270 100644 --- a/deps/v8/include/v8-function-callback.h +++ b/deps/v8/include/v8-function-callback.h @@ -42,7 +42,7 @@ class ReturnValue { public: template V8_INLINE ReturnValue(const ReturnValue& that) : value_(that.value_) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); } // Handle-based setters. template @@ -66,12 +66,12 @@ class ReturnValue { V8_INLINE void Set(uint16_t i); V8_INLINE void Set(uint32_t i); V8_INLINE void Set(uint64_t i); - // Fast JS primitive setters + // Fast JS primitive setters. V8_INLINE void SetNull(); V8_INLINE void SetUndefined(); V8_INLINE void SetFalse(); V8_INLINE void SetEmptyString(); - // Convenience getter for Isolate + // Convenience getter for the Isolate. V8_INLINE Isolate* GetIsolate() const; // Pointer setter: Uncompilable to prevent inadvertent misuse. @@ -250,7 +250,7 @@ class PropertyCallbackInfo { * * \note For security reasons, do not pass the object back into the runtime. */ - V8_DEPRECATE_SOON( + V8_DEPRECATED( "V8 will stop providing access to hidden prototype (i.e. " "JSGlobalObject). Use HolderV2() instead. \n" "DO NOT try to workaround this by accessing JSGlobalObject via " @@ -335,7 +335,7 @@ void ReturnValue::SetInternal(internal::Address value) { template template void ReturnValue::Set(const Global& handle) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (V8_UNLIKELY(handle.IsEmpty())) { SetDefaultValue(); } else { @@ -346,7 +346,7 @@ void ReturnValue::Set(const Global& handle) { template template void ReturnValue::SetNonEmpty(const Global& handle) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); #ifdef V8_ENABLE_CHECKS internal::VerifyHandleIsNonEmpty(handle.IsEmpty()); #endif // V8_ENABLE_CHECKS @@ -356,7 +356,7 @@ void ReturnValue::SetNonEmpty(const Global& handle) { template template void ReturnValue::Set(const BasicTracedReference& handle) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (V8_UNLIKELY(handle.IsEmpty())) { SetDefaultValue(); } else { @@ -367,7 +367,7 @@ void ReturnValue::Set(const BasicTracedReference& handle) { template template void ReturnValue::SetNonEmpty(const BasicTracedReference& handle) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); #ifdef V8_ENABLE_CHECKS internal::VerifyHandleIsNonEmpty(handle.IsEmpty()); #endif // V8_ENABLE_CHECKS @@ -380,16 +380,16 @@ void ReturnValue::Set(const Local handle) { // "V8_DEPRECATE_SOON" this method if |T| is |void|. #ifdef V8_IMMINENT_DEPRECATION_WARNINGS static constexpr bool is_allowed_void = false; - static_assert(!std::is_void::value, + static_assert(!std::is_void_v, "ReturnValue::Set(const Local) is deprecated. " "Do nothing to indicate that the operation succeeded or use " "SetFalse() to indicate that the operation failed (don't " "forget to handle info.ShouldThrowOnError()). " "See http://crbug.com/348660658 for details."); #else - static constexpr bool is_allowed_void = std::is_void::value; + static constexpr bool is_allowed_void = std::is_void_v; #endif // V8_IMMINENT_DEPRECATION_WARNINGS - static_assert(is_allowed_void || std::is_base_of::value, "type check"); + static_assert(is_allowed_void || std::is_base_of_v, "type check"); if (V8_UNLIKELY(handle.IsEmpty())) { SetDefaultValue(); } else if constexpr (is_allowed_void) { @@ -407,16 +407,16 @@ void ReturnValue::SetNonEmpty(const Local handle) { // "V8_DEPRECATE_SOON" this method if |T| is |void|. #ifdef V8_IMMINENT_DEPRECATION_WARNINGS static constexpr bool is_allowed_void = false; - static_assert(!std::is_void::value, + static_assert(!std::is_void_v, "ReturnValue::SetNonEmpty(const Local) is deprecated. " "Do nothing to indicate that the operation succeeded or use " "SetFalse() to indicate that the operation failed (don't " "forget to handle info.ShouldThrowOnError()). " "See http://crbug.com/348660658 for details."); #else - static constexpr bool is_allowed_void = std::is_void::value; + static constexpr bool is_allowed_void = std::is_void_v; #endif // V8_IMMINENT_DEPRECATION_WARNINGS - static_assert(is_allowed_void || std::is_base_of::value, "type check"); + static_assert(is_allowed_void || std::is_base_of_v, "type check"); #ifdef V8_ENABLE_CHECKS internal::VerifyHandleIsNonEmpty(handle.IsEmpty()); #endif // V8_ENABLE_CHECKS @@ -431,13 +431,13 @@ void ReturnValue::SetNonEmpty(const Local handle) { template void ReturnValue::Set(double i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); SetNonEmpty(Number::New(GetIsolate(), i)); } template void ReturnValue::Set(int16_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; static_assert(I::IsValidSmi(std::numeric_limits::min())); static_assert(I::IsValidSmi(std::numeric_limits::max())); @@ -446,7 +446,7 @@ void ReturnValue::Set(int16_t i) { template void ReturnValue::Set(int32_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (const auto result = internal::Internals::TryIntegralToSmi(i)) { SetInternal(*result); return; @@ -456,7 +456,7 @@ void ReturnValue::Set(int32_t i) { template void ReturnValue::Set(int64_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (const auto result = internal::Internals::TryIntegralToSmi(i)) { SetInternal(*result); return; @@ -466,7 +466,7 @@ void ReturnValue::Set(int64_t i) { template void ReturnValue::Set(uint16_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; static_assert(I::IsValidSmi(std::numeric_limits::min())); static_assert(I::IsValidSmi(std::numeric_limits::max())); @@ -475,7 +475,7 @@ void ReturnValue::Set(uint16_t i) { template void ReturnValue::Set(uint32_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (const auto result = internal::Internals::TryIntegralToSmi(i)) { SetInternal(*result); return; @@ -485,7 +485,7 @@ void ReturnValue::Set(uint32_t i) { template void ReturnValue::Set(uint64_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (const auto result = internal::Internals::TryIntegralToSmi(i)) { SetInternal(*result); return; @@ -495,7 +495,7 @@ void ReturnValue::Set(uint64_t i) { template void ReturnValue::Set(bool value) { - static_assert(std::is_void::value || std::is_base_of::value, + static_assert(std::is_void_v || std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL @@ -535,7 +535,7 @@ void ReturnValue::SetDefaultValue() { template void ReturnValue::SetNull() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL #ifdef V8_ENABLE_CHECKS @@ -550,7 +550,7 @@ void ReturnValue::SetNull() { template void ReturnValue::SetUndefined() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL #ifdef V8_ENABLE_CHECKS @@ -565,7 +565,7 @@ void ReturnValue::SetUndefined() { template void ReturnValue::SetFalse() { - static_assert(std::is_void::value || std::is_base_of::value, + static_assert(std::is_void_v || std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL @@ -581,7 +581,7 @@ void ReturnValue::SetFalse() { template void ReturnValue::SetEmptyString() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL #ifdef V8_ENABLE_CHECKS diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h index 66bb4b7d233cc2..4bfbac0a8503fe 100644 --- a/deps/v8/include/v8-internal.h +++ b/deps/v8/include/v8-internal.h @@ -237,6 +237,12 @@ 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_OS_IOS) +// On iOS, we only get 64 GB of usable virtual address space even with the +// "jumbo" extended virtual addressing entitlement. Limit the sandbox size to +// 16 GB so that the base address + size for the emulated virtual address space +// lies within the 64 GB total virtual address space. +constexpr size_t kSandboxSizeLog2 = 34; // 16 GB #else // Everywhere else use a 1TB sandbox. constexpr size_t kSandboxSizeLog2 = 40; // 1 TB @@ -415,6 +421,11 @@ constexpr size_t kMaxCppHeapPointers = 0; #endif // V8_COMPRESS_POINTERS +// The number of tags reserved for embedder data. The value is picked +// arbitrarily. In Chrome there are 4 embedders, so at least 4 tags are needed. +// A generic tag was used for embedder data before, so one tag is used for that. +#define V8_EMBEDDER_DATA_TAG_COUNT 5 + // Generic tag range struct to represent ranges of type tags. // // When referencing external objects via pointer tables, type tags are @@ -423,6 +434,19 @@ constexpr size_t kMaxCppHeapPointers = 0; // 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 @@ -551,7 +575,11 @@ enum ExternalPointerTag : uint16_t { // 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, + + // Placeholders for embedder data. + kFirstEmbedderDataTag, + kLastEmbedderDataTag = kFirstEmbedderDataTag + V8_EMBEDDER_DATA_TAG_COUNT - 1, + kEmbedderDataSlotPayloadTag = kLastEmbedderDataTag, // 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. @@ -582,11 +610,7 @@ enum ExternalPointerTag : uint16_t { kLastMaybeReadOnlyExternalPointerTag = kLastInterceptorInfoExternalPointerTag, - kWasmInternalFunctionCallTargetTag, - kWasmTypeInfoNativeTypeTag, - kWasmExportedFunctionDataSignatureTag, kWasmStackMemoryTag, - kWasmIndirectFunctionTargetTag, // Foreigns kFirstForeignExternalPointerTag, @@ -620,6 +644,14 @@ enum ExternalPointerTag : uint16_t { kIcuLocalizedNumberFormatterTag, kIcuPluralRulesTag, kIcuCollatorTag, + kTemporalDurationTag, + kTemporalInstantTag, + kTemporalPlainDateTag, + kTemporalPlainTimeTag, + kTemporalPlainDateTimeTag, + kTemporalPlainYearMonthTag, + kTemporalPlainMonthDayTag, + kTemporalZonedDateTimeTag, kDisplayNamesInternalTag, kD8WorkerTag, kD8ModuleEmbedderDataTag, @@ -690,7 +722,8 @@ V8_INLINE static constexpr bool IsManagedExternalPointerType( V8_INLINE static constexpr bool ExternalPointerCanBeEmpty( ExternalPointerTagRange tag_range) { return tag_range.Contains(kArrayBufferExtensionTag) || - tag_range.Contains(kEmbedderDataSlotPayloadTag) || + (tag_range.first <= kLastEmbedderDataTag && + kFirstEmbedderDataTag <= tag_range.last) || kAnyInterceptorInfoExternalPointerTagRange.Contains(tag_range); } @@ -815,12 +848,33 @@ constexpr bool kAllCodeObjectsLiveInTrustedSpace = // {obj} must be the raw tagged pointer representation of a HeapObject // that's guaranteed to never be in ReadOnlySpace. +V8_DEPRECATE_SOON( + "Use GetCurrentIsolate() instead, which is guaranteed to return the same " + "isolate since https://crrev.com/c/6458560.") V8_EXPORT internal::Isolate* IsolateFromNeverReadOnlySpaceObject(Address obj); // Returns if we need to throw when an error occurs. This infers the language // mode based on the current context and the closure. This returns true if the // language mode is strict. V8_EXPORT bool ShouldThrowOnError(internal::Isolate* isolate); + +struct HandleScopeData final { + static constexpr uint32_t kSizeInBytes = + 2 * kApiSystemPointerSize + 2 * kApiInt32Size; + + Address* next; + Address* limit; + int level; + int sealed_level; + + void Initialize() { + next = limit = nullptr; + sealed_level = level = 0; + } +}; + +static_assert(HandleScopeData::kSizeInBytes == sizeof(HandleScopeData)); + /** * This class exports constants and functionality from within v8 that * is necessary to implement inline functions in the v8 api. Don't @@ -874,14 +928,19 @@ class Internals { static const int kBuiltinTier0EntryTableSize = 7 * kApiSystemPointerSize; static const int kBuiltinTier0TableSize = 7 * kApiSystemPointerSize; static const int kLinearAllocationAreaSize = 3 * kApiSystemPointerSize; - static const int kThreadLocalTopSize = 30 * kApiSystemPointerSize; + static const int kThreadLocalTopSize = 29 * kApiSystemPointerSize; static const int kHandleScopeDataSize = 2 * kApiSystemPointerSize + 2 * kApiInt32Size; // ExternalPointerTable and TrustedPointerTable layout guarantees. static const int kExternalPointerTableBasePointerOffset = 0; - static const int kExternalPointerTableSize = 2 * kApiSystemPointerSize; - static const int kTrustedPointerTableSize = 2 * kApiSystemPointerSize; + static const int kSegmentedTableSegmentPoolSize = 4; + static const int kExternalPointerTableSize = + 4 * kApiSystemPointerSize + + kSegmentedTableSegmentPoolSize * sizeof(uint32_t); + static const int kTrustedPointerTableSize = + 4 * kApiSystemPointerSize + + kSegmentedTableSegmentPoolSize * sizeof(uint32_t); static const int kTrustedPointerTableBasePointerOffset = 0; // IsolateData layout guarantees. @@ -901,12 +960,14 @@ class Internals { kBuiltinTier0TableOffset + kBuiltinTier0TableSize; static const int kOldAllocationInfoOffset = kNewAllocationInfoOffset + kLinearAllocationAreaSize; + static const int kLastYoungAllocationOffset = + kOldAllocationInfoOffset + kApiSystemPointerSize; static const int kFastCCallAlignmentPaddingSize = kApiSystemPointerSize == 8 ? 5 * kApiSystemPointerSize : 1 * kApiSystemPointerSize; static const int kIsolateFastCCallCallerPcOffset = - kOldAllocationInfoOffset + kLinearAllocationAreaSize + + kLastYoungAllocationOffset + kLinearAllocationAreaSize + kFastCCallAlignmentPaddingSize; static const int kIsolateFastCCallCallerFpOffset = kIsolateFastCCallCallerPcOffset + kApiSystemPointerSize; @@ -948,8 +1009,10 @@ class Internals { static const int kIsolateApiCallbackThunkArgumentOffset = kIsolateEmbedderDataOffset + kNumIsolateDataSlots * kApiSystemPointerSize; #endif // V8_COMPRESS_POINTERS - static const int kIsolateRegexpExecVectorArgumentOffset = + static const int kJSDispatchTableOffset = kIsolateApiCallbackThunkArgumentOffset + kApiSystemPointerSize; + static const int kIsolateRegexpExecVectorArgumentOffset = + kJSDispatchTableOffset + kApiSystemPointerSize; static const int kContinuationPreservedEmbedderDataOffset = kIsolateRegexpExecVectorArgumentOffset + kApiSystemPointerSize; static const int kIsolateRootsOffset = @@ -962,16 +1025,32 @@ class Internals { #if V8_STATIC_ROOTS_BOOL // These constants are copied from static-roots.h and guarded by static asserts. -#define EXPORTED_STATIC_ROOTS_PTR_LIST(V) \ - V(UndefinedValue, 0x11) \ - V(NullValue, 0x2d) \ - V(TrueValue, 0x71) \ - V(FalseValue, 0x55) \ - V(EmptyString, 0x49) \ - V(TheHoleValue, 0x761) +#define EXPORTED_STATIC_ROOTS_PTR_LIST(V) \ + V(UndefinedValue, 0x11) \ + V(NullValue, 0x2d) \ + V(TrueValue, 0x71) \ + V(FalseValue, 0x55) \ + V(EmptyString, 0x49) \ + /* The Hole moves around depending on build flags, so define it */ \ + /* separately inside StaticReadOnlyRoot using build macros */ \ + V(TheHoleValue, kBuildDependentTheHoleValue) using Tagged_t = uint32_t; struct StaticReadOnlyRoot { +#ifdef V8_ENABLE_WEBASSEMBLY +#ifdef V8_INTL_SUPPORT + static constexpr Tagged_t kBuildDependentTheHoleValue = 0x67b9; +#else + static constexpr Tagged_t kBuildDependentTheHoleValue = 0x5b1d; +#endif +#else +#ifdef V8_INTL_SUPPORT + static constexpr Tagged_t kBuildDependentTheHoleValue = 0x6511; +#else + static constexpr Tagged_t kBuildDependentTheHoleValue = 0x5875; +#endif +#endif + #define DEF_ROOT(name, value) static constexpr Tagged_t k##name = value; EXPORTED_STATIC_ROOTS_PTR_LIST(DEF_ROOT) #undef DEF_ROOT @@ -988,12 +1067,12 @@ class Internals { #endif // V8_STATIC_ROOTS_BOOL - static const int kUndefinedValueRootIndex = 4; - static const int kTheHoleValueRootIndex = 5; - static const int kNullValueRootIndex = 6; - static const int kTrueValueRootIndex = 7; - static const int kFalseValueRootIndex = 8; - static const int kEmptyStringRootIndex = 9; + static const int kUndefinedValueRootIndex = 0; + static const int kTheHoleValueRootIndex = 1; + static const int kNullValueRootIndex = 2; + static const int kTrueValueRootIndex = 3; + static const int kFalseValueRootIndex = 4; + static const int kEmptyStringRootIndex = 5; static const int kNodeClassIdOffset = 1 * kApiSystemPointerSize; static const int kNodeFlagsOffset = 1 * kApiSystemPointerSize + 3; @@ -1170,6 +1249,12 @@ class Internals { return *reinterpret_cast(addr); } + V8_INLINE static HandleScopeData* GetHandleScopeData(v8::Isolate* isolate) { + Address addr = + reinterpret_cast
(isolate) + kIsolateHandleScopeDataOffset; + return reinterpret_cast(addr); + } + V8_INLINE static void IncrementLongTasksStatsCounter(v8::Isolate* isolate) { Address addr = reinterpret_cast
(isolate) + kIsolateLongTaskStatsCounterOffset; @@ -1222,7 +1307,7 @@ class Internals { V8_INLINE static T ReadRawField(Address heap_object_ptr, int offset) { Address addr = heap_object_ptr + offset - kHeapObjectTag; #ifdef V8_COMPRESS_POINTERS - if (sizeof(T) > kApiTaggedSize) { + if constexpr (sizeof(T) > kApiTaggedSize) { // TODO(ishell, v8:8875): When pointer compression is enabled 8-byte size // fields (external pointers, doubles and BigInt data) are only // kTaggedSize aligned so we have to use unaligned pointer friendly way of @@ -1256,10 +1341,25 @@ class Internals { #endif } + V8_DEPRECATED( + "Use GetCurrentIsolateForSandbox() instead, which is guaranteed to " + "return the same isolate since https://crrev.com/c/6458560.") V8_INLINE static v8::Isolate* GetIsolateForSandbox(Address obj) { #ifdef V8_ENABLE_SANDBOX - return reinterpret_cast( - internal::IsolateFromNeverReadOnlySpaceObject(obj)); + return GetCurrentIsolate(); +#else + // Not used in non-sandbox mode. + return nullptr; +#endif + } + + // Returns v8::Isolate::Current(), but without needing to include the + // v8-isolate.h header. + V8_EXPORT static v8::Isolate* GetCurrentIsolate(); + + V8_INLINE static v8::Isolate* GetCurrentIsolateForSandbox() { +#ifdef V8_ENABLE_SANDBOX + return GetCurrentIsolate(); #else // Not used in non-sandbox mode. return nullptr; @@ -1334,8 +1434,8 @@ void CastCheck::Perform(T* data) {} template V8_INLINE void PerformCastCheck(T* data) { - CastCheck::value && - !std::is_same>::value>::Perform(data); + CastCheck && + !std::is_same_v>>::Perform(data); } // A base class for backing stores, which is needed due to vagaries of diff --git a/deps/v8/include/v8-isolate.h b/deps/v8/include/v8-isolate.h index 280c09729f8cb4..16c61f605f9909 100644 --- a/deps/v8/include/v8-isolate.h +++ b/deps/v8/include/v8-isolate.h @@ -154,6 +154,10 @@ class V8_EXPORT ResourceConstraints { initial_young_generation_size_ = initial_size; } + uint64_t physical_memory_size_in_bytes() const { + return physical_memory_size_; + } + private: static constexpr size_t kMB = 1048576u; size_t code_range_size_ = 0; @@ -161,6 +165,7 @@ class V8_EXPORT ResourceConstraints { size_t max_young_generation_size_ = 0; size_t initial_old_generation_size_ = 0; size_t initial_young_generation_size_ = 0; + uint64_t physical_memory_size_ = 0; uint32_t* stack_limit_ = nullptr; }; @@ -253,6 +258,17 @@ class V8_EXPORT IsolateGroup { return !operator==(other); } +#ifdef V8_ENABLE_SANDBOX + /** + * Whether the sandbox of the isolate group contains a given pointer. + * Will always return true if the sandbox is not enabled. + */ + bool SandboxContains(void* pointer) const; + VirtualAddressSpace* GetSandboxAddressSpace(); +#else + V8_INLINE bool SandboxContains(void* pointer) const { return true; } +#endif + private: friend class Isolate; friend class ArrayBuffer::Allocator; @@ -345,7 +361,9 @@ class V8_EXPORT Isolate { * for wrapped API objects and are used by the fast C API * (for details see v8-fast-api-calls.h). */ + V8_DEPRECATE_SOON("This field is unused.") int embedder_wrapper_type_index = -1; + V8_DEPRECATE_SOON("This field is unused.") int embedder_wrapper_object_index = -1; /** @@ -557,7 +575,8 @@ class V8_EXPORT Isolate { kBreakIteratorTypeWord = 88, kBreakIteratorTypeLine = 89, kInvalidatedArrayBufferDetachingProtector = 90, - kInvalidatedArrayConstructorProtector = 91, + kInvalidatedArrayConstructorProtector V8_DEPRECATE_SOON( + "The ArrayConstructorProtector has been removed") = 91, kInvalidatedArrayIteratorLookupChainProtector = 92, kInvalidatedArraySpeciesLookupChainProtector = 93, kInvalidatedIsConcatSpreadableLookupChainProtector = 94, @@ -575,8 +594,8 @@ class V8_EXPORT Isolate { kWasmSimdOpcodes = 106, kVarRedeclaredCatchBinding = 107, kWasmRefTypes = 108, - kOBSOLETE_WasmBulkMemory = 109, - kOBSOLETE_WasmMultiValue = 110, + kWasmBulkMemory = 109, + kWasmMultiValue = 110, kWasmExceptionHandling = 111, kInvalidatedMegaDOMProtector = 112, kFunctionPrototypeArguments = 113, @@ -634,6 +653,21 @@ class V8_EXPORT Isolate { kFloat16Array = 165, kExplicitResourceManagement = 166, kWasmBranchHinting = 167, + kWasmMutableGlobals = 168, + kUint8ArrayToFromBase64AndHex = 169, + kAtomicsPause = 170, + kTopLevelAwait = 171, + kLogicalAssignment = 172, + kNullishCoalescing = 173, + kInvalidatedNoDateTimeConfigurationChangeProtector = 174, + kWasmNonTrappingFloatToInt = 175, + kWasmSignExtensionOps = 176, + kRegExpCompile = 177, + kRegExpStaticProperties = 178, + kRegExpStaticPropertiesWithLastMatch = 179, + kWithStatement = 180, + kHtmlWrapperMethods = 181, + kWasmCustomDescriptors = 182, // 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 @@ -937,14 +971,31 @@ class V8_EXPORT Isolate { * Returns the value that was set or restored by * SetContinuationPreservedEmbedderData(), if any. */ + V8_DEPRECATED("Use GetContinuationPreservedEmbedderDataV2 instead") Local GetContinuationPreservedEmbedderData(); /** * Sets a value that will be stored on continuations and reset while the * continuation runs. */ + V8_DEPRECATED("Use SetContinuationPreservedEmbedderDataV2 instead") void SetContinuationPreservedEmbedderData(Local data); + /** + * Returns the value set by `SetContinuationPreservedEmbedderDataV2()` or + * restored during microtask execution for the currently running continuation, + * if any. Returns undefiend if no continuation preserved embedder data was + * set. + */ + Local GetContinuationPreservedEmbedderDataV2(); + + /** + * Sets a value that will be stored on continuations and restored while the + * continuation runs. If `data` is empty, the continuation preserved embedder + * data is set to undefined. + */ + void SetContinuationPreservedEmbedderDataV2(Local data); + /** * Get statistics about the heap memory usage. */ @@ -1660,6 +1711,9 @@ class V8_EXPORT Isolate { void SetWasmImportedStringsEnabledCallback( WasmImportedStringsEnabledCallback callback); + void SetWasmCustomDescriptorsEnabledCallback( + WasmCustomDescriptorsEnabledCallback callback); + void SetSharedArrayBufferConstructorEnabledCallback( SharedArrayBufferConstructorEnabledCallback callback); diff --git a/deps/v8/include/v8-json.h b/deps/v8/include/v8-json.h index 23d918fc9736d8..c70f90182c4487 100644 --- a/deps/v8/include/v8-json.h +++ b/deps/v8/include/v8-json.h @@ -5,7 +5,10 @@ #ifndef INCLUDE_V8_JSON_H_ #define INCLUDE_V8_JSON_H_ +#include + #include "v8-local-handle.h" // NOLINT(build/include_directory) +#include "v8-message.h" // NOLINT(build/include_directory) #include "v8config.h" // NOLINT(build/include_directory) namespace v8 { @@ -25,10 +28,14 @@ class V8_EXPORT JSON { * * \param the context in which to parse and create the value. * \param json_string The string to parse. + * \param origin Optional script origin to use for error reporting. + * If not provided, error reporting will use default origin options + * or attempt to infer origin from the current stack. * \return The corresponding value if successfully parsed. */ static V8_WARN_UNUSED_RESULT MaybeLocal Parse( - Local context, Local json_string); + Local context, Local json_string, + std::optional origin = std::nullopt); /** * Tries to stringify the JSON-serializable object |json_object| and returns diff --git a/deps/v8/include/v8-local-handle.h b/deps/v8/include/v8-local-handle.h index dce757465c25be..bdf1a1d6ff8cb8 100644 --- a/deps/v8/include/v8-local-handle.h +++ b/deps/v8/include/v8-local-handle.h @@ -42,6 +42,7 @@ class BasicTracedReference; template class TracedReference; +class ArrayBuffer; class Boolean; class Context; class EscapableHandleScope; @@ -62,6 +63,8 @@ template class Traced; class TypecheckWitness; class Utils; +class Uint32; +class Value; namespace debug { class ConsoleCallArguments; @@ -78,6 +81,25 @@ class SamplingHeapProfiler; namespace api_internal { // Called when ToLocalChecked is called on an empty Local. V8_EXPORT void ToLocalEmpty(); + +#ifdef V8_ENABLE_CHECKS +template +void TypeCheckLocal(V* value) { + // If `T` does not provide a `Cast` method we cannot check anything. + if constexpr (requires { T::Cast(value); }) { + // TODO(419454582): Remove all these exceptions. + if (std::is_same_v && value->IsArgumentsObject()) return; + if (std::is_same_v && value->IsSharedArrayBuffer()) return; + if (std::is_same_v && value->IsNull()) return; + if (std::is_same_v && value->IsString()) return; + if (std::is_same_v && value->IsUndefined()) return; + if (std::is_same_v && value->IsInt32()) return; + if (std::is_same_v && value->IsNumber()) return; + // Execute the actual check (part of the cast). + T::Cast(value); + } +} +#endif } // namespace api_internal /** @@ -96,18 +118,16 @@ V8_EXPORT void ToLocalEmpty(); */ class V8_EXPORT V8_NODISCARD HandleScope { public: - explicit HandleScope(Isolate* isolate); + V8_INLINE explicit HandleScope(Isolate* isolate); - ~HandleScope(); + V8_INLINE ~HandleScope(); /** * Counts the number of allocated handles. */ static int NumberOfHandles(Isolate* isolate); - V8_INLINE Isolate* GetIsolate() const { - return reinterpret_cast(i_isolate_); - } + V8_INLINE Isolate* GetIsolate() const { return isolate_; } HandleScope(const HandleScope&) = delete; void operator=(const HandleScope&) = delete; @@ -118,12 +138,29 @@ class V8_EXPORT V8_NODISCARD HandleScope { protected: V8_INLINE HandleScope() = default; - void Initialize(Isolate* isolate); + V8_INLINE void Initialize(Isolate* isolate); - static internal::Address* CreateHandle(internal::Isolate* i_isolate, - internal::Address value); + V8_INLINE static internal::Address* CreateHandle(Isolate* i_isolate, + internal::Address value); private: + // Extend the HandleScope making room for more handles. Not inlined. + static internal::Address* Extend(Isolate* isolate); + // Delete any extensions in HandleScope destructor. Not called unless there + // are extensions. Not inlined. + void DeleteExtensions(Isolate* isolate); + +#ifdef V8_ENABLE_CHECKS + // Non-inlined asserts on HandleScope constructor. + void DoInitializeAsserts(Isolate* isolate); + // Non-inlined assert for HandleScope destructor. + void AssertScopeLevelsMatch(); + // Non-inlined asserts for HandleScope destructor. Also zaps the slots + // if this is enabled. + void DoCloseScopeAsserts(int before, internal::Address* limit, + internal::HandleScopeData* current); +#endif + // Declaring operator new and delete as deleted is not spec compliant. // Therefore declare them private instead to disable dynamic alloc void* operator new(size_t size); @@ -131,7 +168,7 @@ class V8_EXPORT V8_NODISCARD HandleScope { void operator delete(void*, size_t); void operator delete[](void*, size_t); - internal::Isolate* i_isolate_; + Isolate* isolate_; internal::Address* prev_next_; internal::Address* prev_limit_; #ifdef V8_ENABLE_CHECKS @@ -148,6 +185,61 @@ class V8_EXPORT V8_NODISCARD HandleScope { friend class Context; }; +HandleScope::HandleScope(Isolate* v8_isolate) { Initialize(v8_isolate); } + +void HandleScope::Initialize(Isolate* v8_isolate) { + using I = internal::Internals; + internal::HandleScopeData* current = I::GetHandleScopeData(v8_isolate); + isolate_ = v8_isolate; + prev_next_ = current->next; + prev_limit_ = current->limit; + current->level++; +#ifdef V8_ENABLE_CHECKS + DoInitializeAsserts(v8_isolate); + scope_level_ = current->level; +#endif +} + +HandleScope::~HandleScope() { + if (V8_UNLIKELY(isolate_ == nullptr)) return; +#ifdef V8_ENABLE_CHECKS + AssertScopeLevelsMatch(); + int handle_count_before = NumberOfHandles(isolate_); +#endif + + using I = internal::Internals; + internal::HandleScopeData* current = I::GetHandleScopeData(isolate_); + std::swap(current->next, prev_next_); + current->level--; + internal::Address* limit = prev_next_; + if (V8_UNLIKELY(current->limit != prev_limit_)) { + current->limit = prev_limit_; + limit = prev_limit_; + DeleteExtensions(isolate_); + } +#ifdef V8_ENABLE_CHECKS + DoCloseScopeAsserts(handle_count_before, limit, current); +#else + (void)limit; // Avoid unused variable warning. +#endif +} + +internal::Address* HandleScope::CreateHandle(Isolate* v8_isolate, + internal::Address value) { + using I = internal::Internals; + internal::HandleScopeData* data = I::GetHandleScopeData(v8_isolate); + internal::Address* result = data->next; + if (V8_UNLIKELY(result == data->limit)) { + result = Extend(v8_isolate); + } + // Update the current next field, set the value in the created handle, + // and return the result. + data->next = reinterpret_cast( + reinterpret_cast(result) + sizeof(internal::Address)); + *result = value; + return result; +} + /** * A base class for local handles. * Its implementation depends on whether direct handle support is enabled. @@ -164,7 +256,11 @@ class LocalBase : public api_internal::DirectHandleBase { V8_INLINE LocalBase() = default; - V8_INLINE explicit LocalBase(internal::Address ptr) : DirectHandleBase(ptr) {} + V8_INLINE explicit LocalBase(internal::Address ptr) : DirectHandleBase(ptr) { +#ifdef V8_ENABLE_CHECKS + if (!IsEmpty()) api_internal::TypeCheckLocal(value()); +#endif + } template V8_INLINE LocalBase(const LocalBase& other) : DirectHandleBase(other) {} @@ -200,14 +296,17 @@ class LocalBase : public api_internal::IndirectHandleBase { V8_INLINE LocalBase() = default; V8_INLINE explicit LocalBase(internal::Address* location) - : IndirectHandleBase(location) {} + : IndirectHandleBase(location) { +#ifdef V8_ENABLE_CHECKS + if (!IsEmpty()) api_internal::TypeCheckLocal(value()); +#endif + } template V8_INLINE LocalBase(const LocalBase& other) : IndirectHandleBase(other) {} V8_INLINE static LocalBase New(Isolate* isolate, internal::Address value) { - return LocalBase(HandleScope::CreateHandle( - reinterpret_cast(isolate), value)); + return LocalBase(HandleScope::CreateHandle(isolate, value)); } V8_INLINE static LocalBase New(Isolate* isolate, T* that) { diff --git a/deps/v8/include/v8-maybe.h b/deps/v8/include/v8-maybe.h index c4d17453a279ab..b65456e759aae3 100644 --- a/deps/v8/include/v8-maybe.h +++ b/deps/v8/include/v8-maybe.h @@ -14,6 +14,12 @@ namespace v8 { +namespace internal { +struct NullMaybeType {}; + +constexpr NullMaybeType kNullMaybe; +} // namespace internal + namespace api_internal { // Called when ToChecked is called on an empty Maybe. V8_EXPORT void FromJustIsNothing(); @@ -32,9 +38,19 @@ V8_EXPORT void FromJustIsNothing(); template class Maybe : public cppgc::internal::ConditionalStackAllocatedBase { public: + constexpr Maybe() = default; + + V8_INLINE Maybe(internal::NullMaybeType) {} + V8_INLINE bool IsNothing() const { return !has_value_; } V8_INLINE bool IsJust() const { return has_value_; } + /** + * Same as IsNothing(). It's useful for unified handling of empty states + * with v8::MaybeLocal. + */ + V8_INLINE bool IsEmpty() const { return IsNothing(); } + /** * An alias for |FromJust|. Will crash if the Maybe<> is nothing. */ @@ -57,6 +73,16 @@ class Maybe : public cppgc::internal::ConditionalStackAllocatedBase { return IsJust(); } + /** + * Converts this Maybe<> to a value of type T, moving out of it. If this + * Maybe<> is nothing (empty), |false| is returned and |out| is left + * untouched. + */ + V8_WARN_UNUSED_RESULT V8_INLINE bool MoveTo(T* out) && { + if (V8_LIKELY(IsJust())) *out = std::move(value_); + return IsJust(); + } + /** * Converts this Maybe<> to a value of type T. If this Maybe<> is * nothing (empty), V8 will crash the process. @@ -93,15 +119,12 @@ class Maybe : public cppgc::internal::ConditionalStackAllocatedBase { } private: - Maybe() : has_value_(false) {} explicit Maybe(const T& t) : has_value_(true), value_(t) {} explicit Maybe(T&& t) : has_value_(true), value_(std::move(t)) {} - bool has_value_; + bool has_value_ = false; T value_; - template - friend Maybe Nothing(); template friend Maybe Just(const U& u); template >*> @@ -109,8 +132,8 @@ class Maybe : public cppgc::internal::ConditionalStackAllocatedBase { }; template -inline Maybe Nothing() { - return Maybe(); +inline constexpr Maybe Nothing() { + return {}; } template @@ -130,7 +153,11 @@ inline Maybe Just(T&& t) { template <> class Maybe { public: + constexpr Maybe() = default; + constexpr Maybe(internal::NullMaybeType) {} + V8_INLINE bool IsNothing() const { return !is_valid_; } + V8_INLINE bool IsEmpty() const { return IsNothing(); } V8_INLINE bool IsJust() const { return is_valid_; } V8_INLINE bool operator==(const Maybe& other) const { @@ -144,13 +171,10 @@ class Maybe { private: struct JustTag {}; - Maybe() : is_valid_(false) {} explicit Maybe(JustTag) : is_valid_(true) {} - bool is_valid_; + bool is_valid_ = false; - template - friend Maybe Nothing(); friend Maybe JustVoid(); }; diff --git a/deps/v8/include/v8-memory-span.h b/deps/v8/include/v8-memory-span.h index 5916cdfe06bb5e..1b72b99fef556d 100644 --- a/deps/v8/include/v8-memory-span.h +++ b/deps/v8/include/v8-memory-span.h @@ -87,15 +87,20 @@ class V8_EXPORT MemorySpan { static constexpr bool is_compatible_iterator_v = is_compatible_iterator::value; + // SFINAE-compatible wrapper for `std::to_address()`. + // Adapted from "base/types/to_address.h" in chromium. template + requires(!std::is_function_v) [[nodiscard]] static constexpr U* to_address(U* p) noexcept { return p; } - template ().operator->())>> - [[nodiscard]] static constexpr auto to_address(It it) noexcept { - return it.operator->(); + template + requires( + requires(const It& it) { std::pointer_traits::to_address(it); } || + requires(const It& it) { it.operator->(); }) + [[nodiscard]] static constexpr auto to_address(const It& it) noexcept { + return std::to_address(it); } public: diff --git a/deps/v8/include/v8-message.h b/deps/v8/include/v8-message.h index b50898530cf95e..04ed4c21a2f49a 100644 --- a/deps/v8/include/v8-message.h +++ b/deps/v8/include/v8-message.h @@ -111,6 +111,9 @@ class V8_EXPORT Message { /** * Return the isolate to which the Message belongs. */ + V8_DEPRECATED( + "Use Isolate::GetCurrent() instead, which is guaranteed to return the " + "same isolate since https://crrev.com/c/6458560.") Isolate* GetIsolate() const; V8_WARN_UNUSED_RESULT MaybeLocal GetSource( diff --git a/deps/v8/include/v8-metrics.h b/deps/v8/include/v8-metrics.h index bf19dead0e6120..f62490a83353c9 100644 --- a/deps/v8/include/v8-metrics.h +++ b/deps/v8/include/v8-metrics.h @@ -37,12 +37,22 @@ struct GarbageCollectionSizes { int64_t bytes_freed = -1; }; +struct GarbageCollectionLimits { + int64_t bytes_baseline = -1; + int64_t bytes_limit = -1; + int64_t bytes_current = -1; + int64_t bytes_max = -1; +}; + struct GarbageCollectionFullCycle { int reason = -1; + int incremental_marking_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; + bool reduce_memory = false; + bool is_loading = false; GarbageCollectionPhases total; GarbageCollectionPhases total_cpp; GarbageCollectionPhases main_thread; @@ -55,6 +65,9 @@ struct GarbageCollectionFullCycle { GarbageCollectionSizes objects_cpp; GarbageCollectionSizes memory; GarbageCollectionSizes memory_cpp; + GarbageCollectionLimits old_generation_consumed; + GarbageCollectionLimits global_consumed; + int64_t external_memory_bytes = -1; double collection_rate_in_percent = -1.0; double collection_rate_cpp_in_percent = -1.0; double efficiency_in_bytes_per_us = -1.0; @@ -66,6 +79,7 @@ struct GarbageCollectionFullCycle { double main_thread_collection_weight_in_percent = -1.0; double main_thread_collection_weight_cpp_in_percent = -1.0; int64_t incremental_marking_start_stop_wall_clock_duration_in_us = -1; + int64_t total_duration_since_last_mark_compact = -1; }; struct GarbageCollectionFullMainThreadIncrementalMark { diff --git a/deps/v8/include/v8-object.h b/deps/v8/include/v8-object.h index 3e57ae8efe33f3..860cecaadc3ed7 100644 --- a/deps/v8/include/v8-object.h +++ b/deps/v8/include/v8-object.h @@ -5,6 +5,8 @@ #ifndef INCLUDE_V8_OBJECT_H_ #define INCLUDE_V8_OBJECT_H_ +#include "cppgc/garbage-collected.h" +#include "cppgc/name-provider.h" #include "v8-internal.h" // NOLINT(build/include_directory) #include "v8-local-handle.h" // NOLINT(build/include_directory) #include "v8-maybe.h" // NOLINT(build/include_directory) @@ -23,6 +25,14 @@ class FunctionTemplate; template class PropertyCallbackInfo; +/** + * A tag for embedder data. Objects with different C++ types should use + * different values of EmbedderDataTypeTag when written to embedder data. The + * allowed range is 0..V8_EMBEDDER_DATA_TAG_COUNT - 1. If this is not + * sufficient, V8_EMBEDDER_DATA_TAG_COUNT can be increased. + */ +using EmbedderDataTypeTag = uint16_t; + /** * A private symbol * @@ -427,15 +437,15 @@ class V8_EXPORT Object : public Value { * be skipped by __proto__ and it does not consult the security * handler. */ - V8_DEPRECATE_SOON( + V8_DEPRECATED( "V8 will stop providing access to hidden prototype (i.e. " "JSGlobalObject). Use GetPrototypeV2() instead. " "See http://crbug.com/333672197.") Local GetPrototype(); /** - * Get the prototype object (same as getting __proto__ property). This does - * not consult the security handler. + * Get the prototype object (same as calling Object.getPrototypeOf(..)). + * This does not consult the security handler. * TODO(333672197): rename back to GetPrototype() once the old version goes * through the deprecation process and is removed. */ @@ -446,7 +456,7 @@ class V8_EXPORT Object : public Value { * be skipped by __proto__ and it does not consult the security * handler. */ - V8_DEPRECATE_SOON( + V8_DEPRECATED( "V8 will stop providing access to hidden prototype (i.e. " "JSGlobalObject). Use SetPrototypeV2() instead. " "See http://crbug.com/333672197.") @@ -454,8 +464,8 @@ class V8_EXPORT Object : public Value { Local prototype); /** - * Set the prototype object (same as setting __proto__ property). This does - * does not consult the security handler. + * Set the prototype object (same as calling Object.setPrototypeOf(..)). + * This does not consult the security handler. * TODO(333672197): rename back to SetPrototype() once the old version goes * through the deprecation process and is removed. */ @@ -544,10 +554,43 @@ class V8_EXPORT Object : public Value { * a field, GetAlignedPointerFromInternalField must be used, everything else * leads to undefined behavior. */ + V8_DEPRECATE_SOON( + "Use SetAlignedPointerInInternalField with EmbedderDataTypeTag parameter " + "instead.") void SetAlignedPointerInInternalField(int index, void* value); + + void SetAlignedPointerInInternalField(int index, void* value, + EmbedderDataTypeTag tag); + + V8_DEPRECATE_SOON( + "Use SetAlignedPointerInInternalField with EmbedderDataTypeTag " + "parameter instead.") void SetAlignedPointerInInternalFields(int argc, int indices[], void* values[]); + // Type information for a Wrappable object that got wrapped with + // `v8::Object::Wrap()`. + struct WrapperTypeInfo { + const int16_t type_id; + }; + + // v8::Object::Wrappable serves as the base class for all C++ objects that can + // be wrapped by a JavaScript object using `v8::Object::Wrap()`. + // + // Note that v8::Object::Wrappable` inherits from `NameProvider` and provides + // `GetWrapperTypeInfo` to allow subclasses to have smaller object sizes. + class Wrappable : public cppgc::GarbageCollected, + public cppgc::NameProvider { + public: + virtual const WrapperTypeInfo* GetWrapperTypeInfo() const { + return nullptr; + } + + const char* GetHumanReadableName() const override { return "internal"; } + + virtual void Trace(cppgc::Visitor* visitor) const {} + }; + /** * Unwraps a JS wrapper object. * @@ -593,24 +636,37 @@ class V8_EXPORT Object : public Value { template static V8_INLINE void Wrap(v8::Isolate* isolate, const v8::Local& wrapper, - void* wrappable); + Wrappable* wrappable); template static V8_INLINE void Wrap(v8::Isolate* isolate, const PersistentBase& wrapper, - void* wrappable); + Wrappable* wrappable); template static V8_INLINE void Wrap(v8::Isolate* isolate, const BasicTracedReference& wrapper, - void* wrappable); + Wrappable* wrappable); static V8_INLINE void Wrap(v8::Isolate* isolate, const v8::Local& wrapper, - void* wrappable, CppHeapPointerTag tag); + Wrappable* wrappable, CppHeapPointerTag tag); static V8_INLINE void Wrap(v8::Isolate* isolate, const PersistentBase& wrapper, - void* wrappable, CppHeapPointerTag tag); + Wrappable* wrappable, CppHeapPointerTag tag); static V8_INLINE void Wrap(v8::Isolate* isolate, const BasicTracedReference& wrapper, - void* wrappable, CppHeapPointerTag tag); + Wrappable* wrappable, CppHeapPointerTag tag); + + // Version of Wrap() function for v8::Context::Global() objects. + // Unlike the functions above it wraps both JSGlobalProxy and its hidden + // prototype (JSGlobalObject or remote object). + static void WrapGlobal(v8::Isolate* isolate, + const v8::Local& wrapper, + Wrappable* wrappable, CppHeapPointerTag tag); + + // Checks that wrappables set on JSGlobalProxy and its hidden prototype are + // the same. + static bool CheckGlobalWrappable(v8::Isolate* isolate, + const v8::Local& wrapper, + CppHeapPointerTagRange tag_range); /** * HasOwnProperty() is like JavaScript's @@ -795,8 +851,14 @@ class V8_EXPORT Object : public Value { /** * Return the isolate to which the Object belongs to. */ + V8_DEPRECATED( + "Use Isolate::GetCurrent() instead, which is guaranteed to return the " + "same isolate since https://crrev.com/c/6458560.") Isolate* GetIsolate(); + V8_DEPRECATED( + "Use Isolate::GetCurrent() instead, which is guaranteed to return the " + "same isolate since https://crrev.com/c/6458560.") V8_INLINE static Isolate* GetIsolate(const TracedReference& handle) { return handle.template value()->GetIsolate(); } @@ -871,8 +933,7 @@ Local Object::GetInternalField(int index) { value = I::DecompressTaggedField(obj, static_cast(value)); #endif - auto isolate = reinterpret_cast( - internal::IsolateFromNeverReadOnlySpaceObject(obj)); + auto* isolate = I::GetCurrentIsolate(); return Local::New(isolate, value); } #endif @@ -893,7 +954,8 @@ void* Object::GetAlignedPointerFromInternalField(v8::Isolate* isolate, (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; A value = - I::ReadExternalPointerField( + I::ReadExternalPointerField<{internal::kFirstEmbedderDataTag, + internal::kLastEmbedderDataTag}>( isolate, obj, offset); return reinterpret_cast(value); } @@ -913,9 +975,10 @@ void* Object::GetAlignedPointerFromInternalField(int index) { int offset = I::kJSAPIObjectWithEmbedderSlotsHeaderSize + (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; - Isolate* isolate = I::GetIsolateForSandbox(obj); + Isolate* isolate = I::GetCurrentIsolateForSandbox(); A value = - I::ReadExternalPointerField( + I::ReadExternalPointerField<{internal::kFirstEmbedderDataTag, + internal::kLastEmbedderDataTag}>( isolate, obj, offset); return reinterpret_cast(value); } @@ -1011,7 +1074,7 @@ T* Object::Unwrap(v8::Isolate* isolate, // static template void Object::Wrap(v8::Isolate* isolate, const v8::Local& wrapper, - void* wrappable) { + v8::Object::Wrappable* wrappable) { auto obj = internal::ValueHelper::ValueAsAddress(*wrapper); Wrap(isolate, obj, tag, wrappable); } @@ -1019,7 +1082,7 @@ void Object::Wrap(v8::Isolate* isolate, const v8::Local& wrapper, // static template void Object::Wrap(v8::Isolate* isolate, const PersistentBase& wrapper, - void* wrappable) { + v8::Object::Wrappable* wrappable) { auto obj = internal::ValueHelper::ValueAsAddress(wrapper.template value()); Wrap(isolate, obj, tag, wrappable); @@ -1029,7 +1092,7 @@ void Object::Wrap(v8::Isolate* isolate, const PersistentBase& wrapper, template void Object::Wrap(v8::Isolate* isolate, const BasicTracedReference& wrapper, - void* wrappable) { + v8::Object::Wrappable* wrappable) { auto obj = internal::ValueHelper::ValueAsAddress(wrapper.template value()); Wrap(isolate, obj, tag, wrappable); @@ -1037,14 +1100,14 @@ void Object::Wrap(v8::Isolate* isolate, // static void Object::Wrap(v8::Isolate* isolate, const v8::Local& wrapper, - void* wrappable, CppHeapPointerTag tag) { + v8::Object::Wrappable* wrappable, CppHeapPointerTag tag) { auto obj = internal::ValueHelper::ValueAsAddress(*wrapper); Wrap(isolate, obj, tag, wrappable); } // static void Object::Wrap(v8::Isolate* isolate, const PersistentBase& wrapper, - void* wrappable, CppHeapPointerTag tag) { + v8::Object::Wrappable* wrappable, CppHeapPointerTag tag) { auto obj = internal::ValueHelper::ValueAsAddress(wrapper.template value()); Wrap(isolate, obj, tag, wrappable); @@ -1052,8 +1115,8 @@ void Object::Wrap(v8::Isolate* isolate, const PersistentBase& wrapper, // static void Object::Wrap(v8::Isolate* isolate, - const BasicTracedReference& wrapper, void* wrappable, - CppHeapPointerTag tag) { + const BasicTracedReference& wrapper, + v8::Object::Wrappable* wrappable, CppHeapPointerTag tag) { auto obj = internal::ValueHelper::ValueAsAddress(wrapper.template value()); Wrap(isolate, obj, tag, wrappable); diff --git a/deps/v8/include/v8-persistent-handle.h b/deps/v8/include/v8-persistent-handle.h index d08412fbd05dc4..126fbdb8ff5a21 100644 --- a/deps/v8/include/v8-persistent-handle.h +++ b/deps/v8/include/v8-persistent-handle.h @@ -431,7 +431,7 @@ internal::Address* PersistentBase::New(Isolate* isolate, T* that) { template template void Persistent::Copy(const Persistent& that) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); this->Reset(); if (that.IsEmpty()) return; this->slot() = api_internal::CopyGlobalReference(that.slot()); @@ -459,7 +459,7 @@ void PersistentBase::Reset() { template template void PersistentBase::Reset(Isolate* isolate, const Local& other) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); Reset(); if (other.IsEmpty()) return; this->slot() = New(isolate, *other); @@ -473,7 +473,7 @@ template template void PersistentBase::Reset(Isolate* isolate, const PersistentBase& other) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); Reset(); if (other.IsEmpty()) return; this->slot() = New(isolate, other.template value()); @@ -546,7 +546,7 @@ Global::Global(Global&& other) : PersistentBase(other.slot()) { template template Global& Global::operator=(Global&& rhs) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (this != &rhs) { this->Reset(); if (!rhs.IsEmpty()) { diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 43ffeb57d708d3..6aadcab4ba987e 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -11,6 +11,7 @@ #include // For abort. #include +#include #include #include "v8-source-location.h" // NOLINT(build/include_directory) @@ -80,7 +81,7 @@ class TaskRunner { * Embedders should override PostTaskImpl instead of this. */ void PostTask(std::unique_ptr task, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { PostTaskImpl(std::move(task), location); } @@ -103,7 +104,7 @@ class TaskRunner { */ void PostNonNestableTask( std::unique_ptr task, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { PostNonNestableTaskImpl(std::move(task), location); } @@ -114,9 +115,8 @@ class TaskRunner { * * Embedders should override PostDelayedTaskImpl instead of this. */ - void PostDelayedTask( - std::unique_ptr task, double delay_in_seconds, - const SourceLocation& location = SourceLocation::Current()) { + void PostDelayedTask(std::unique_ptr task, double delay_in_seconds, + SourceLocation location = SourceLocation::Current()) { PostDelayedTaskImpl(std::move(task), delay_in_seconds, location); } @@ -140,7 +140,7 @@ class TaskRunner { */ void PostNonNestableDelayedTask( std::unique_ptr task, double delay_in_seconds, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { PostNonNestableDelayedTaskImpl(std::move(task), delay_in_seconds, location); } @@ -154,9 +154,8 @@ class TaskRunner { * * Embedders should override PostIdleTaskImpl instead of this. */ - void PostIdleTask( - std::unique_ptr task, - const SourceLocation& location = SourceLocation::Current()) { + void PostIdleTask(std::unique_ptr task, + SourceLocation location = SourceLocation::Current()) { PostIdleTaskImpl(std::move(task), location); } @@ -499,12 +498,49 @@ class PageAllocator { kNoAccessWillJitLater }; + /** + * Optional hints for AllocatePages(). + */ + class AllocationHint final { + public: + AllocationHint() = default; + + V8_WARN_UNUSED_RESULT constexpr AllocationHint WithAddress( + void* address) const { + return AllocationHint(address, may_grow_); + } + + V8_WARN_UNUSED_RESULT constexpr AllocationHint WithMayGrow() const { + return AllocationHint(address_, true); + } + + bool MayGrow() const { return may_grow_; } + void* Address() const { return address_; } + + private: + constexpr AllocationHint(void* address, bool may_grow) + : address_(address), may_grow_(may_grow) {} + + void* address_ = nullptr; + bool may_grow_ = false; + }; + /** * Allocates memory in range with the given alignment and permission. */ virtual void* AllocatePages(void* address, size_t length, size_t alignment, Permission permissions) = 0; + /** + * Allocates memory in range with the given alignment and permission. In + * addition to AllocatePages it allows to pass in allocation hints. The + * underlying implementation may not make use of hints. + */ + virtual void* AllocatePages(size_t length, size_t alignment, + Permission permissions, AllocationHint hint) { + return AllocatePages(hint.Address(), length, alignment, permissions); + } + /** * Resizes the previously allocated memory at the given address. Returns true * if the allocation could be resized. Returns false if this operation is @@ -665,14 +701,6 @@ class ThreadIsolatedAllocator { * Return the pkey used to implement the thread isolation if Type == kPkey. */ virtual int Pkey() const { return -1; } - - /** - * Per-thread permissions can be reset on signal handler entry. Even reading - * ThreadIsolated memory will segfault in that case. - * Call this function on signal handler entry to ensure that read permissions - * are restored. - */ - static void SetDefaultPermissionsForSignalHandler(); }; // Opaque type representing a handle to a shared memory region. @@ -958,6 +986,29 @@ class VirtualAddressSpace { */ virtual void FreeSharedPages(Address address, size_t size) = 0; + /** + * Memory protection key support. + * + * If supported by the hardware and operating system, virtual address spaces + * can use memory protection keys in addition to the regular page + * permissions. The MemoryProtectionKeyId type identifies a memory protection + * key and is used by the related APIs in this class. + * + * TODO(saelo): consider renaming to just MemoryProtectionKey, but currently + * there's a naming conflict with base::MemoryProtectionKey. + */ + using MemoryProtectionKeyId = int; + + /** + * The memory protection key used by this space, if any. + * + * If this space uses a memory protection key, then all memory pages in it + * will have this key set. In that case, this API will return that key. + * + * \returns the memory protection key used by this space or std::nullopt. + */ + virtual std::optional ActiveMemoryProtectionKey() = 0; + /** * Whether this instance can allocate subspaces or not. * @@ -984,11 +1035,15 @@ class VirtualAddressSpace { * \param max_page_permissions The maximum permissions that pages allocated in * the subspace can obtain. * + * \param key Optional memory protection key for the subspace. If used, the + * returned subspace will use this key for all its memory pages. + * * \returns a new subspace or nullptr on failure. */ virtual std::unique_ptr AllocateSubspace( Address hint, size_t size, size_t alignment, - PagePermissions max_page_permissions) = 0; + PagePermissions max_page_permissions, + std::optional key = std::nullopt) = 0; // // TODO(v8) maybe refactor the methods below before stabilizing the API. For @@ -1127,9 +1182,8 @@ class Platform { * CallOnWorkerThread(). */ V8_DEPRECATE_SOON("Use PostTaskOnWorkerThread instead.") - void CallOnWorkerThread( - std::unique_ptr task, - const SourceLocation& location = SourceLocation::Current()) { + void CallOnWorkerThread(std::unique_ptr task, + SourceLocation location = SourceLocation::Current()) { PostTaskOnWorkerThreadImpl(TaskPriority::kUserVisible, std::move(task), location); } @@ -1143,7 +1197,7 @@ class Platform { V8_DEPRECATE_SOON("Use PostTaskOnWorkerThread instead.") void CallBlockingTaskOnWorkerThread( std::unique_ptr task, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { // Embedders may optionally override this to process these tasks in a high // priority pool. PostTaskOnWorkerThreadImpl(TaskPriority::kUserBlocking, std::move(task), @@ -1158,7 +1212,7 @@ class Platform { V8_DEPRECATE_SOON("Use PostTaskOnWorkerThread instead.") void CallLowPriorityTaskOnWorkerThread( std::unique_ptr task, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { // Embedders may optionally override this to process these tasks in a low // priority pool. PostTaskOnWorkerThreadImpl(TaskPriority::kBestEffort, std::move(task), @@ -1174,7 +1228,7 @@ class Platform { V8_DEPRECATE_SOON("Use PostDelayedTaskOnWorkerThread instead.") void CallDelayedOnWorkerThread( std::unique_ptr task, double delay_in_seconds, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { PostDelayedTaskOnWorkerThreadImpl(TaskPriority::kUserVisible, std::move(task), delay_in_seconds, location); @@ -1187,7 +1241,7 @@ class Platform { */ void PostTaskOnWorkerThread( TaskPriority priority, std::unique_ptr task, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { PostTaskOnWorkerThreadImpl(priority, std::move(task), location); } @@ -1200,7 +1254,7 @@ class Platform { void PostDelayedTaskOnWorkerThread( TaskPriority priority, std::unique_ptr task, double delay_in_seconds, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { PostDelayedTaskOnWorkerThreadImpl(priority, std::move(task), delay_in_seconds, location); } @@ -1257,7 +1311,7 @@ class Platform { */ std::unique_ptr PostJob( TaskPriority priority, std::unique_ptr job_task, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { auto handle = CreateJob(priority, std::move(job_task), location); handle->NotifyConcurrencyIncrease(); return handle; @@ -1280,7 +1334,7 @@ class Platform { */ std::unique_ptr CreateJob( TaskPriority priority, std::unique_ptr job_task, - const SourceLocation& location = SourceLocation::Current()) { + SourceLocation location = SourceLocation::Current()) { return CreateJobImpl(priority, std::move(job_task), location); } diff --git a/deps/v8/include/v8-primitive.h b/deps/v8/include/v8-primitive.h index 50b07d9c10a7bb..1bf21e60ad9a99 100644 --- a/deps/v8/include/v8-primitive.h +++ b/deps/v8/include/v8-primitive.h @@ -635,11 +635,10 @@ class V8_EXPORT String : public Name { bool StringEquals(Local str) const; /** - * Converts an object to a UTF-8-encoded character array. Useful if - * you want to print the object. If conversion to a string fails - * (e.g. due to an exception in the toString() method of the object) - * then the length() method returns 0 and the * operator returns - * NULL. + * Converts an object to a null-terminated UTF-8-encoded character array. + * Useful if you want to print the object. If conversion to a string fails + * (e.g. due to an exception in the toString() method of the object) then the + * length() method returns 0 and the * operator returns NULL. * * WARNING: This will unconditionally copy the contents of the JavaScript * string, and should be avoided in situations where performance is a concern. @@ -647,8 +646,7 @@ class V8_EXPORT String : public Name { */ class V8_EXPORT Utf8Value { public: - Utf8Value(Isolate* isolate, Local obj, - WriteOptions options = REPLACE_INVALID_UTF8); + Utf8Value(Isolate* isolate, Local obj); ~Utf8Value(); char* operator*() { return str_; } const char* operator*() const { return str_; } @@ -851,6 +849,19 @@ class V8_EXPORT Number : public Numeric { public: double Value() const; static Local New(Isolate* isolate, double value); + template + requires(std::is_integral::value && !std::is_same::value && + std::is_signed_v && sizeof(Int) <= sizeof(int32_t)) + V8_INLINE static Local New(Isolate* isolate, Int value) { + return NewFromInt32(isolate, value); + } + template + requires(std::is_integral::value && + !std::is_same::value && std::is_unsigned_v && + sizeof(UInt) <= sizeof(uint32_t)) + V8_INLINE static Local New(Isolate* isolate, UInt value) { + return NewFromUint32(isolate, value); + } V8_INLINE static Number* Cast(v8::Data* data) { #ifdef V8_ENABLE_CHECKS CheckCast(data); @@ -860,6 +871,8 @@ class V8_EXPORT Number : public Numeric { private: Number(); + static Local NewFromInt32(Isolate* isolate, int32_t value); + static Local NewFromUint32(Isolate* isolate, uint32_t value); static void CheckCast(v8::Data* that); }; @@ -994,7 +1007,7 @@ String::ExternalStringResource* String::GetExternalStringResource() const { ExternalStringResource* result; if (I::IsExternalTwoByteString(I::GetInstanceType(obj))) { - Isolate* isolate = I::GetIsolateForSandbox(obj); + Isolate* isolate = I::GetCurrentIsolateForSandbox(); A value = I::ReadExternalPointerField( isolate, obj, I::kStringResourceOffset); result = reinterpret_cast(value); @@ -1039,7 +1052,7 @@ String::ExternalStringResourceBase* String::GetExternalStringResourceBase( ExternalStringResourceBase* resource; if (type == I::kExternalOneByteRepresentationTag || type == I::kExternalTwoByteRepresentationTag) { - Isolate* isolate = I::GetIsolateForSandbox(obj); + Isolate* isolate = I::GetCurrentIsolateForSandbox(); A value = I::ReadExternalPointerField( isolate, obj, I::kStringResourceOffset); resource = reinterpret_cast(value); diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 9581cdb2dbe4ee..f7f88ba6c74969 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -71,6 +71,10 @@ class V8_EXPORT CpuProfileNode { /** The 1-based number of the source line where the function originates. */ int line; + /** The 1-based number of the source column where the function originates. + */ + int column; + /** The count of samples associated with the source line. */ unsigned int hit_count; }; diff --git a/deps/v8/include/v8-sandbox.h b/deps/v8/include/v8-sandbox.h index 857caea3076e00..06d01761798582 100644 --- a/deps/v8/include/v8-sandbox.h +++ b/deps/v8/include/v8-sandbox.h @@ -101,6 +101,12 @@ struct CppHeapPointerTagRange { constexpr CppHeapPointerTagRange kAnyCppHeapPointer( CppHeapPointerTag::kFirstTag, CppHeapPointerTag::kLastTag); +/** + * Hardware support for the V8 Sandbox. + * + * This is an experimental feature that may change or be removed without + * further notice. Use at your own risk. + */ class SandboxHardwareSupport { public: /** @@ -109,6 +115,16 @@ class SandboxHardwareSupport { * hardware permissions to the memory that will be inherited on clone. */ V8_EXPORT static void InitializeBeforeThreadCreation(); + + /** + * Prepares the current thread for executing sandboxed code. + * + * This must be called on newly created threads before they execute any + * sandboxed code (in particular any JavaScript or WebAssembly code). It + * should not be invoked on threads that never execute sandboxed code, + * although it is fine to do so from a security point of view. + */ + V8_EXPORT static void PrepareCurrentThreadForHardwareSandboxing(); }; namespace internal { diff --git a/deps/v8/include/v8-source-location.h b/deps/v8/include/v8-source-location.h index eb307099c5f922..268e3e679aad59 100644 --- a/deps/v8/include/v8-source-location.h +++ b/deps/v8/include/v8-source-location.h @@ -6,21 +6,12 @@ #define INCLUDE_SOURCE_LOCATION_H_ #include +#include #include #include "v8config.h" // NOLINT(build/include_directory) -#if defined(__has_builtin) -#define V8_SUPPORTS_SOURCE_LOCATION \ - (__has_builtin(__builtin_FUNCTION) && __has_builtin(__builtin_FILE) && \ - __has_builtin(__builtin_LINE)) // NOLINT -#elif defined(V8_CC_GNU) && __GNUC__ >= 7 #define V8_SUPPORTS_SOURCE_LOCATION 1 -#elif defined(V8_CC_INTEL) && __ICC >= 1800 -#define V8_SUPPORTS_SOURCE_LOCATION 1 -#else -#define V8_SUPPORTS_SOURCE_LOCATION 0 -#endif namespace v8 { @@ -34,15 +25,18 @@ class V8_EXPORT SourceLocation final { * Construct source location information corresponding to the location of the * call site. */ -#if V8_SUPPORTS_SOURCE_LOCATION static constexpr SourceLocation Current( - const char* function = __builtin_FUNCTION(), - const char* file = __builtin_FILE(), size_t line = __builtin_LINE()) { - return SourceLocation(function, file, line); + const std::source_location& loc = std::source_location::current()) { + return SourceLocation(loc); + } +#ifdef DEBUG + static constexpr SourceLocation CurrentIfDebug( + const std::source_location& loc = std::source_location::current()) { + return SourceLocation(loc); } #else - static constexpr SourceLocation Current() { return SourceLocation(); } -#endif // V8_SUPPORTS_SOURCE_LOCATION + static constexpr SourceLocation CurrentIfDebug() { return {}; } +#endif /** * Constructs unspecified source location information. @@ -55,21 +49,21 @@ class V8_EXPORT SourceLocation final { * * \returns the function name as cstring. */ - constexpr const char* Function() const { return function_; } + constexpr const char* Function() const { return loc_.function_name(); } /** * Returns the name of the current source file represented by this object. * * \returns the file name as cstring. */ - constexpr const char* FileName() const { return file_; } + constexpr const char* FileName() const { return loc_.file_name(); } /** * Returns the line number represented by this object. * * \returns the line number. */ - constexpr size_t Line() const { return line_; } + constexpr size_t Line() const { return loc_.line(); } /** * Returns a human-readable string representing this object. @@ -77,19 +71,18 @@ class V8_EXPORT SourceLocation final { * \returns a human-readable string representing source location information. */ std::string ToString() const { - if (!file_) { + if (loc_.line() == 0) { return {}; } - return std::string(function_) + "@" + file_ + ":" + std::to_string(line_); + return std::string(loc_.function_name()) + "@" + loc_.file_name() + ":" + + std::to_string(loc_.line()); } private: - constexpr SourceLocation(const char* function, const char* file, size_t line) - : function_(function), file_(file), line_(line) {} + constexpr explicit SourceLocation(const std::source_location& loc) + : loc_(loc) {} - const char* function_ = nullptr; - const char* file_ = nullptr; - size_t line_ = 0u; + std::source_location loc_; }; } // namespace v8 diff --git a/deps/v8/include/v8-trace-categories.h b/deps/v8/include/v8-trace-categories.h index aaa0ae586f287c..9072cb45675620 100644 --- a/deps/v8/include/v8-trace-categories.h +++ b/deps/v8/include/v8-trace-categories.h @@ -5,10 +5,11 @@ #ifndef INCLUDE_V8_TRACE_CATEGORIES_H_ #define INCLUDE_V8_TRACE_CATEGORIES_H_ +#include "v8config.h" + #if defined(V8_USE_PERFETTO) #include "perfetto/tracing/track_event.h" -#include "v8config.h" namespace v8 { diff --git a/deps/v8/include/v8-traced-handle.h b/deps/v8/include/v8-traced-handle.h index 28fe6cf5ae3ad0..3eb8e7835d74e7 100644 --- a/deps/v8/include/v8-traced-handle.h +++ b/deps/v8/include/v8-traced-handle.h @@ -181,7 +181,7 @@ class TracedReference : public BasicTracedReference { */ template TracedReference(Isolate* isolate, Local that) : BasicTracedReference() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (V8_UNLIKELY(that.IsEmpty())) { return; } @@ -202,7 +202,7 @@ class TracedReference : public BasicTracedReference { template TracedReference(Isolate* isolate, Local that, IsDroppable) : BasicTracedReference() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (V8_UNLIKELY(that.IsEmpty())) { return; } @@ -351,7 +351,7 @@ V8_INLINE bool operator!=(const v8::Local& lhs, template template void TracedReference::Reset(Isolate* isolate, const Local& other) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); this->Reset(); if (V8_UNLIKELY(other.IsEmpty())) { return; @@ -366,7 +366,7 @@ template template void TracedReference::Reset(Isolate* isolate, const Local& other, IsDroppable) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); this->Reset(); if (V8_UNLIKELY(other.IsEmpty())) { return; @@ -381,7 +381,7 @@ template template TracedReference& TracedReference::operator=( TracedReference&& rhs) noexcept { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); *this = std::move(rhs.template As()); return *this; } @@ -390,7 +390,7 @@ template template TracedReference& TracedReference::operator=( const TracedReference& rhs) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); *this = rhs.template As(); return *this; } diff --git a/deps/v8/include/v8-unwinder.h b/deps/v8/include/v8-unwinder.h index 5771eb05a81ecf..7f5a2556f275a9 100644 --- a/deps/v8/include/v8-unwinder.h +++ b/deps/v8/include/v8-unwinder.h @@ -33,6 +33,9 @@ struct V8_EXPORT RegisterState { }; // A StateTag represents a possible state of the VM. +// This enum is append-only to preserve compatibility with historical logs. +// Add new states only at the end and do not reorder or remove existing values. +// LINT.IfChange enum StateTag : uint16_t { JS, GC, @@ -44,7 +47,17 @@ enum StateTag : uint16_t { ATOMICS_WAIT, IDLE, LOGGING, + IDLE_EXTERNAL, }; +// LINT.ThenChange(../tools/profile.mjs, ../tools/tickprocessor.mjs) + +constexpr bool IsExternal(StateTag state) { + return state == EXTERNAL || state == IDLE_EXTERNAL; +} + +constexpr bool IsIdle(StateTag state) { + return state == IDLE || state == IDLE_EXTERNAL; +} // The output structure filled up by GetStackSample API function. struct SampleInfo { diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 40256277702074..9ef4d60891d7b3 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -8,10 +8,10 @@ // These macros define the version number for the current version. // 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 7 -#define V8_BUILD_NUMBER 152 -#define V8_PATCH_LEVEL 19 +#define V8_MAJOR_VERSION 14 +#define V8_MINOR_VERSION 1 +#define V8_BUILD_NUMBER 146 +#define V8_PATCH_LEVEL 11 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index 9581df67fd18c3..7f75a2c4819e0f 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -85,6 +85,7 @@ path. Add it with -I to the command line // V8_OS_DARWIN - Darwin (macOS, iOS) // V8_OS_MACOS - macOS // V8_OS_IOS - iOS +// V8_OS_TVOS - tvOS (also sets V8_OS_IOS) // V8_OS_NETBSD - NetBSD // V8_OS_OPENBSD - OpenBSD // V8_OS_POSIX - POSIX compatible (mostly everything except Windows) @@ -108,6 +109,9 @@ path. Add it with -I to the command line # if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE # define V8_OS_IOS 1 # define V8_OS_STRING "ios" +# if defined(TARGET_OS_TV) && TARGET_OS_TV +# define V8_OS_TVOS 1 +# endif # else # define V8_OS_MACOS 1 # define V8_OS_STRING "macos" @@ -187,6 +191,7 @@ path. Add it with -I to the command line // V8_TARGET_OS_ANDROID // V8_TARGET_OS_FUCHSIA // V8_TARGET_OS_IOS +// V8_TARGET_OS_TVOS (also sets V8_TARGET_OS_IOS) // V8_TARGET_OS_LINUX // V8_TARGET_OS_MACOS // V8_TARGET_OS_WIN @@ -200,6 +205,7 @@ path. Add it with -I to the command line # if !defined(V8_TARGET_OS_ANDROID) \ && !defined(V8_TARGET_OS_FUCHSIA) \ && !defined(V8_TARGET_OS_IOS) \ + && !defined(V8_TARGET_OS_TVOS) \ && !defined(V8_TARGET_OS_LINUX) \ && !defined(V8_TARGET_OS_MACOS) \ && !defined(V8_TARGET_OS_WIN) \ @@ -212,6 +218,7 @@ path. Add it with -I to the command line # if defined(V8_TARGET_OS_ANDROID) \ || defined(V8_TARGET_OS_FUCHSIA) \ || defined(V8_TARGET_OS_IOS) \ + || defined(V8_TARGET_OS_TVOS) \ || defined(V8_TARGET_OS_LINUX) \ || defined(V8_TARGET_OS_MACOS) \ || defined(V8_TARGET_OS_WIN) \ @@ -232,6 +239,10 @@ path. Add it with -I to the command line # define V8_TARGET_OS_IOS #endif +#ifdef V8_OS_TVOS +# define V8_TARGET_OS_TVOS +#endif + #ifdef V8_OS_LINUX # define V8_TARGET_OS_LINUX #endif @@ -322,6 +333,7 @@ path. Add it with -I to the command line // V8_HAS_CPP_ATTRIBUTE_NODISCARD - [[nodiscard]] supported // V8_HAS_CPP_ATTRIBUTE_NO_UNIQUE_ADDRESS // - [[no_unique_address]] supported +// V8_HAS_CPP_ATTRIBUTE_LIFETIME_BOUND - [[clang::lifetimebound]] supported // V8_HAS_BUILTIN_ADD_OVERFLOW - __builtin_add_overflow() supported // V8_HAS_BUILTIN_BIT_CAST - __builtin_bit_cast() supported // V8_HAS_BUILTIN_BSWAP16 - __builtin_bswap16() supported @@ -401,6 +413,7 @@ path. Add it with -I to the command line # define V8_HAS_CPP_ATTRIBUTE_NO_UNIQUE_ADDRESS \ (V8_HAS_CPP_ATTRIBUTE(no_unique_address)) #endif +# define V8_HAS_CPP_ATTRIBUTE_LIFETIME_BOUND (V8_HAS_CPP_ATTRIBUTE(clang::lifetimebound)) # define V8_HAS_BUILTIN_ADD_OVERFLOW (__has_builtin(__builtin_add_overflow)) # define V8_HAS_BUILTIN_ASSUME (__has_builtin(__builtin_assume)) @@ -592,15 +605,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. @@ -697,6 +706,17 @@ path. Add it with -I to the command line #define V8_NODISCARD /* NOT SUPPORTED */ #endif + +// Annotate a function to ensure the function is retained in the compiled binary +// even if it appears to be unused to the compiler. +#if V8_HAS_ATTRIBUTE_USED && V8_HAS_ATTRIBUTE_VISIBILITY +#define V8_SYMBOL_USED \ + __attribute__((used, visibility("default"))) +#else +#define V8_SYMBOL_USED /* NOT SUPPORTED */ +#endif + + // The no_unique_address attribute allows tail padding in a non-static data // member to overlap other members of the enclosing class (and in the special // case when the type is empty, permits it to fully overlap other members). The @@ -726,6 +746,41 @@ path. Add it with -I to the command line #define V8_NO_UNIQUE_ADDRESS /* NOT SUPPORTED */ #endif +// Annotates a pointer or reference parameter or return value for a member +// function as having lifetime intertwined with the instance on which the +// function is called. For parameters, the function is assumed to store the +// value into the called-on object, so if the referred-to object is later +// destroyed, the called-on object is also considered to be dangling. For return +// values, the value is assumed to point into the called-on object, so if that +// object is destroyed, the returned value is also considered to be dangling. +// Useful to diagnose some cases of lifetime errors. +// +// See also: +// https://clang.llvm.org/docs/AttributeReference.html#lifetimebound +// +// Usage: +// ``` +// struct S { +// S(int* p V8_LIFETIME_BOUND); +// int* Get() V8_LIFETIME_BOUND; +// }; +// S Func1() { +// int i = 0; +// // The following return will not compile; diagnosed as returning address +// // of a stack object. +// return S(&i); +// } +// int* Func2(int* p) { +// // The following return will not compile; diagnosed as returning address +// // of a local temporary. +// return S(p).Get(); +// } +#if V8_HAS_CPP_ATTRIBUTE_LIFETIME_BOUND +#define V8_LIFETIME_BOUND [[clang::lifetimebound]] +#else +#define V8_LIFETIME_BOUND /* NOT SUPPORTED */ +#endif + // Marks a type as being eligible for the "trivial" ABI despite having a // non-trivial destructor or copy/move constructor. Such types can be relocated // after construction by simply copying their memory, which makes them eligible @@ -798,7 +853,8 @@ V8 shared library set USING_V8_SHARED. #else // V8_OS_WIN // Setup for Linux shared library export. -#if V8_HAS_ATTRIBUTE_VISIBILITY && (defined(BUILDING_V8_SHARED) || USING_V8_SHARED) +#if (V8_HAS_ATTRIBUTE_VISIBILITY && \ + (defined(BUILDING_V8_SHARED) || USING_V8_SHARED)) # define V8_EXPORT __attribute__((visibility("default"))) #else # define V8_EXPORT @@ -909,8 +965,6 @@ V8 shared library set USING_V8_SHARED. #define V8_TARGET_ARCH_32_BIT 1 #elif V8_TARGET_ARCH_ARM64 #define V8_TARGET_ARCH_64_BIT 1 -#elif V8_TARGET_ARCH_MIPS -#define V8_TARGET_ARCH_32_BIT 1 #elif V8_TARGET_ARCH_MIPS64 #define V8_TARGET_ARCH_64_BIT 1 #elif V8_TARGET_ARCH_LOONG64 @@ -948,8 +1002,10 @@ V8 shared library set USING_V8_SHARED. #if (V8_TARGET_ARCH_MIPS64 && !(V8_HOST_ARCH_X64 || V8_HOST_ARCH_MIPS64)) #error Target architecture mips64 is only supported on mips64 and x64 host #endif -#if (V8_TARGET_ARCH_RISCV64 && !(V8_HOST_ARCH_X64 || V8_HOST_ARCH_RISCV64)) -#error Target architecture riscv64 is only supported on riscv64 and x64 host +#if (V8_TARGET_ARCH_RISCV64 && \ + !(V8_HOST_ARCH_X64 || V8_HOST_ARCH_ARM64 || V8_HOST_ARCH_RISCV64)) +#error Target architecture riscv64 is only supported on riscv64, x64, and \ +arm64 host #endif #if (V8_TARGET_ARCH_RISCV32 && !(V8_HOST_ARCH_IA32 || V8_HOST_ARCH_RISCV32)) #error Target architecture riscv32 is only supported on riscv32 and ia32 host diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index 6f6d3720b79dc6..147910193bd666 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -66,11 +66,8 @@ 'V8 Linux - verify csa - builder': 'release_x86_verify_csa', # Linux64. 'V8 Linux64 - builder': 'release_x64_gcmole', - 'V8 Linux64 - builder (reclient)': 'release_x64_reclient', - 'V8 Linux64 - builder (reclient compare)': 'release_x64_reclient', 'V8 Linux64 - official - builder': 'official_x64_on_release_branch', '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 - custom snapshot - debug builder': 'debug_x64_custom', 'V8 Linux64 - internal snapshot - builder': 'release_x64_internal', @@ -80,25 +77,22 @@ 'V8 Linux64 - shared - builder': 'release_x64_shared_verify_heap', 'V8 Linux64 - verify csa - builder': 'release_x64_verify_csa', 'V8 Linux64 - no wasm - builder': 'release_x64_webassembly_disabled', + 'V8 Linux64 - PKU - debug builder': 'debug_x64_sandbox_hardware_support', + 'V8 Linux64 - PKU - builder': 'release_x64_sandbox_hardware_support', # Windows. 'V8 Win - arm64 - debug builder': 'debug_arm64', 'V8 Win32 - builder': 'release_x86_minimal_symbols', - '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', # 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', # Mac. 'V8 Mac64 - builder': 'release_x64', 'V8 Mac64 - debug builder': 'debug_x64', - 'V8 Mac64 - builder (reclient)': 'release_x64_reclient', 'V8 Official Mac ARM64': 'release_arm64', 'V8 Official Mac ARM64 Debug': 'debug_arm64', 'V8 Mac64 ASAN - builder': 'release_x64_asan_no_lsan', @@ -111,10 +105,10 @@ 'V8 Linux64 TSAN - builder': 'release_x64_tsan', 'V8 Linux64 TSAN - debug builder': 'debug_x64_tsan_minimal_symbols', 'V8 Linux64 TSAN - no-concurrent-marking - builder': 'release_x64_tsan_no_cm', - 'V8 Linux - arm64 - sim - CFI - builder': 'release_simulate_arm64_cfi', 'V8 Linux - arm64 - sim - MSAN - builder': 'release_simulate_arm64_msan', # FYI. 'V8 iOS - sim - builder': 'release_x64_ios_simulator', + 'V8 Linux64 - arm64 - ASAN - builder': 'release_arm64_asan', 'V8 Linux64 - arm64 - builder': 'release_arm64', 'V8 Linux64 - arm64 - debug builder': 'debug_arm64', 'V8 Linux64 - arm64 - sim - no pointer compression - builder': @@ -127,12 +121,10 @@ 'V8 Linux64 - debug - single generation - builder': 'debug_x64_single_generation', 'V8 Linux64 - no pointer compression - builder': 'release_x64_no_pointer_compression', 'V8 Linux64 - sticky mark bits - debug builder': 'debug_x64_sticky_mark_bits', + 'V8 Linux64 - undefined double - debug builder': 'debug_x64_undefined_double', 'V8 Linux64 css - debug builder': 'debug_x64_conservative_stack_scanning', - 'V8 Linux64 gcc - builder': 'release_x64_gcc', 'V8 Linux64 - jammy - gcc - builder': 'release_x64_gcc', - 'V8 Linux64 gcc - debug builder': 'debug_x64_gcc', 'V8 Linux64 - jammy - gcc - debug builder': 'debug_x64_gcc', - 'V8 Linux64 gcc light - debug builder': 'debug_x64_gcc', 'V8 Fuchsia - builder': 'release_x64_fuchsia', 'V8 Fuchsia - debug builder': 'debug_x64_fuchsia', 'V8 Linux64 - cfi - builder': 'release_x64_cfi', @@ -153,43 +145,44 @@ 'V8 Centipede Linux64 ASAN - release builder': 'release_x64_asan_centipede', 'V8 Clusterfuzz Win64 ASAN - release builder': - 'release_x64_asan_no_lsan_verify_heap_turboshaft_csa', + 'release_x64_asan_no_lsan_verify_heap', # Note this is called a debug builder, but it uses a release build # configuration with dchecks (which enables DEBUG in V8), since win-asan # debug is not supported. 'V8 Clusterfuzz Win64 ASAN - debug builder': - 'release_x64_asan_no_lsan_verify_heap_dchecks_turboshaft_csa', + 'release_x64_asan_no_lsan_verify_heap_dchecks', 'V8 Clusterfuzz Mac64 ASAN - release builder': - 'release_x64_asan_no_lsan_verify_heap_turboshaft_csa', + 'release_x64_asan_no_lsan_verify_heap', 'V8 Clusterfuzz Mac64 ASAN - debug builder': - 'debug_x64_asan_no_lsan_static_turboshaft_csa', + 'debug_x64_asan_no_lsan_static', 'V8 Clusterfuzz Linux64 - release builder': - 'release_x64_correctness_fuzzer_turboshaft_csa', - 'V8 Clusterfuzz Linux64 - debug builder': 'debug_x64_turboshaft_csa', + 'release_x64_correctness_fuzzer', + 'V8 Clusterfuzz Linux64 - debug builder': 'debug_x64', 'V8 Clusterfuzz Linux64 ASAN no inline - release builder': - 'release_x64_asan_symbolized_verify_heap_turboshaft_csa', + 'release_x64_asan_symbolized_verify_heap', 'V8 Clusterfuzz Linux ASAN no inline - release builder': - 'release_x86_asan_symbolized_verify_heap_turboshaft_csa', - 'V8 Clusterfuzz Linux64 ASAN - debug builder': 'debug_x64_asan_turboshaft_csa', - 'V8 Clusterfuzz Linux ASAN - debug builder': 'debug_x86_asan_turboshaft_csa', + 'release_x86_asan_symbolized_verify_heap', + 'V8 Clusterfuzz Linux64 ASAN - debug builder': 'debug_x64_asan', + 'V8 Clusterfuzz Linux64 ASAN - undefined double - debug builder': 'debug_x64_asan_undefined_double', + 'V8 Clusterfuzz Linux ASAN - debug builder': 'debug_x86_asan', 'V8 Clusterfuzz Linux64 ASAN arm64 - debug builder': - 'debug_simulate_arm64_asan_turboshaft_csa', - 'V8 Clusterfuzz Linux - debug builder': 'debug_x86_turboshaft_csa', + 'debug_simulate_arm64_asan', + 'V8 Clusterfuzz Linux - debug builder': 'debug_x86', 'V8 Clusterfuzz Linux ASAN arm - debug builder': - 'debug_simulate_arm_asan_turboshaft_csa', + 'debug_simulate_arm_asan', 'V8 Clusterfuzz Linux64 CFI - release builder': - 'release_x64_cfi_clusterfuzz_turboshaft_csa', + 'release_x64_cfi_clusterfuzz', 'V8 Clusterfuzz Linux MSAN no origins': - 'release_simulate_arm64_msan_no_origins_turboshaft_csa', + 'release_simulate_arm64_msan_no_origins', 'V8 Clusterfuzz Linux MSAN chained origins': - 'release_simulate_arm64_msan_turboshaft_csa', - 'V8 Clusterfuzz Linux64 TSAN - release builder': 'release_x64_tsan_turboshaft_csa', + 'release_simulate_arm64_msan', + 'V8 Clusterfuzz Linux64 TSAN - release builder': 'release_x64_tsan', 'V8 Clusterfuzz Linux64 UBSan - release builder': - 'release_x64_ubsan_recover_turboshaft_csa', + 'release_x64_ubsan_recover', 'V8 Clusterfuzz Linux64 sandbox testing - release builder': - 'release_x64_sandbox_testing_turboshaft_csa', + 'release_x64_sandbox_testing', 'V8 Clusterfuzz Linux64 ASAN sandbox testing - release builder': - 'release_x64_asan_sandbox_testing_turboshaft_csa', + 'release_x64_asan_sandbox_testing', }, 'client.v8.perf' : { # Arm @@ -250,7 +243,6 @@ 'v8_android_arm_verify_deterministic_dbg': 'debug_android_arm_verify_deterministic', 'v8_android_arm64_compile_dbg': 'debug_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', @@ -265,6 +257,7 @@ 'v8_linux_gc_stress_compile_dbg': 'debug_x86_trybot', 'v8_linux_shared_compile_rel': 'release_x86_shared_verify_heap', 'v8_linux_vtunejit': 'debug_x86_vtunejit', + 'v8_linux64_arm64_asan_compile_rel': 'release_arm64_asan', 'v8_linux64_arm64_compile_dbg': 'debug_arm64_trybot', 'v8_linux64_arm64_compile_rel': 'release_arm64_trybot', 'v8_linux64_native_arm64_no_pointer_compression_compile_rel': 'release_arm64_no_pointer_compression_trybot', @@ -272,9 +265,9 @@ 'release_simulate_arm64_no_pointer_compression', 'v8_linux64_asan_centipede_compile_dbg': 'debug_x64_asan_centipede', 'v8_linux64_asan_centipede_compile_rel': 'release_x64_asan_centipede', + 'v8_linux64_asan_undefined_double_compile_dbg': 'debug_x64_asan_undefined_double', 'v8_linux64_cppgc_non_default_compile_dbg': 'debug_x64_non_default_cppgc', 'v8_linux64_compile_dbg': 'debug_x64_trybot', - 'v8_linux64_no_leaptiering_compile_dbg': 'debug_x64_no_leaptiering', 'v8_linux64_no_shared_cage_compile_dbg': 'debug_x64_no_shared_cage', 'v8_linux64_coverage_dbg': 'debug_x64_coverage', 'v8_linux64_coverage_rel': 'release_x64_coverage', @@ -299,16 +292,16 @@ '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_pku_compile_dbg': 'debug_x64_sandbox_hardware_support', + 'v8_linux64_pku_compile_rel': 'release_x64_sandbox_hardware_support', 'v8_linux64_shared_compile_rel': 'release_x64_shared_verify_heap', 'v8_linux64_single_generation_compile_dbg': 'debug_x64_single_generation', 'v8_linux64_no_wasm_compile_rel': 'release_x64_webassembly_disabled', 'v8_linux64_arm64_no_wasm_compile_dbg': 'debug_arm64_webassembly_disabled', 'v8_linux64_verify_csa_compile_rel': 'release_x64_verify_csa', 'v8_linux64_asan_compile_rel': 'release_x64_asan_minimal_symbols', - 'v8_linux64_sandbox_testing_compile_rel': 'release_x64_sandbox_testing_turboshaft_csa', - 'v8_linux64_asan_sandbox_testing_compile_rel': 'release_x64_asan_sandbox_testing_turboshaft_csa', + 'v8_linux64_sandbox_testing_compile_rel': 'release_x64_sandbox_testing', + 'v8_linux64_asan_sandbox_testing_compile_rel': 'release_x64_asan_sandbox_testing', 'v8_linux64_cfi_compile_rel': 'release_x64_cfi', 'v8_linux64_fuzzilli_compile_rel': 'release_x64_fuzzilli', 'v8_linux64_loong64_compile_rel': 'release_simulate_loong64', @@ -324,6 +317,7 @@ 'v8_linux64_tsan_isolates_compile_rel': 'release_x64_tsan_minimal_symbols', 'v8_linux64_ubsan_compile_rel': 'release_x64_ubsan_minimal_symbols', + 'v8_linux64_undefined_double_compile_dbg': 'debug_x64_undefined_double', 'v8_linux64_verify_builtins_rel': 'release_x64_verify_builtins', 'v8_linux64_verify_deterministic_rel': 'release_x64_verify_deterministic', 'v8_linux_torque_compare': 'torque_compare', @@ -354,11 +348,10 @@ 'v8_linux_arm_armv8a_rel': 'release_simulate_arm_trybot', 'v8_linux_arm_armv8a_dbg': 'debug_simulate_arm', 'v8_linux_arm64_compile_rel': 'release_simulate_arm64_gcmole_trybot', - 'v8_linux_arm64_cfi_compile_rel' : 'release_simulate_arm64_cfi', '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_asan_compile_rel': 'release_x64_asan_symbolized_verify_heap', 'v8_numfuzz_compile_rel': 'release_x64', 'v8_numfuzz_compile_dbg': 'debug_x64', 'v8_numfuzz_tsan_compile_rel': 'release_x64_tsan', @@ -457,15 +450,14 @@ # Debug configs for simulators. 'debug_simulate_arm': [ 'debug_bot', 'simulate_arm'], - 'debug_simulate_arm_asan_turboshaft_csa': [ - 'debug_bot', 'simulate_arm', 'asan', 'v8_enable_turboshaft_csa'], + 'debug_simulate_arm_asan': [ + 'debug_bot', 'simulate_arm', 'asan'], 'debug_simulate_arm_lite': [ 'debug_bot', 'simulate_arm', 'v8_enable_lite_mode'], 'debug_simulate_arm64': [ 'debug_bot', 'simulate_arm64'], - 'debug_simulate_arm64_asan_turboshaft_csa': [ - 'debug_bot', 'simulate_arm64', 'asan', 'lsan', - 'v8_enable_turboshaft_csa'], + 'debug_simulate_arm64_asan': [ + 'debug_bot', 'simulate_arm64', 'asan', 'lsan'], # Release configs for simulators. 'release_simulate_arm_gcmole': [ @@ -478,8 +470,6 @@ 'release_trybot', 'simulate_arm', 'v8_enable_lite_mode'], 'release_simulate_arm_trybot': [ 'release_trybot', 'simulate_arm'], - 'release_simulate_arm64_cfi': [ - 'release_bot', 'simulate_arm64', 'v8_control_flow_integrity'], 'release_simulate_arm64_gcmole': [ 'release_bot', 'simulate_arm64', 'gcmole'], 'release_simulate_arm64_gcmole_trybot': [ @@ -491,11 +481,10 @@ 'release_bot', 'simulate_arm64', 'msan'], 'release_simulate_arm64_msan_minimal_symbols': [ 'release_bot', 'simulate_arm64', 'msan', 'minimal_symbols'], - 'release_simulate_arm64_msan_no_origins_turboshaft_csa': [ - 'release_bot', 'simulate_arm64', 'msan_no_origins', - 'v8_enable_turboshaft_csa'], - 'release_simulate_arm64_msan_turboshaft_csa': [ - 'release_bot', 'simulate_arm64', 'msan', 'v8_enable_turboshaft_csa'], + 'release_simulate_arm64_msan_no_origins': [ + 'release_bot', 'simulate_arm64', 'msan_no_origins'], + 'release_simulate_arm64_msan': [ + 'release_bot', 'simulate_arm64', 'msan'], 'release_simulate_loong64': [ 'release_bot', 'simulate_loong64'], 'release_simulate_mips64el': [ @@ -535,6 +524,8 @@ 'release_bot', 'arm', 'hard_float'], 'release_arm64': [ 'release_bot', 'arm64'], + 'release_arm64_asan': [ + 'release_bot', 'arm64', 'asan'], 'release_arm64_no_pointer_compression': [ 'release_bot', 'arm64', 'v8_disable_pointer_compression'], 'release_arm64_trybot': [ @@ -587,27 +578,25 @@ 'release_bot', 'x64', 'asan', 'lsan', 'minimal_symbols'], 'release_x64_asan_no_lsan': [ 'release_bot', 'x64', 'asan'], - 'release_x64_asan_no_lsan_verify_heap_turboshaft_csa': [ - 'release_bot', 'x64', 'asan', 'v8_verify_heap', - 'v8_enable_turboshaft_csa'], - 'release_x64_asan_no_lsan_verify_heap_dchecks_turboshaft_csa': [ + 'release_x64_asan_no_lsan_verify_heap': [ + 'release_bot', 'x64', 'asan', 'v8_verify_heap'], + 'release_x64_asan_no_lsan_verify_heap_dchecks': [ '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', 'backtrace', 'v8_enable_memory_corruption_api', - 'v8_enable_turboshaft_csa'], - 'release_x64_asan_sandbox_testing_turboshaft_csa': [ + 'v8_enable_slow_dchecks', 'v8_verify_heap'], + 'release_x64_sandbox_testing': [ + 'release_bot', 'x64', 'symbolized', 'backtrace', 'v8_enable_memory_corruption_api'], + 'release_x64_asan_sandbox_testing': [ 'release_bot', 'x64', 'asan', 'symbolized', - 'v8_enable_memory_corruption_api', 'v8_enable_turboshaft_csa'], - 'release_x64_asan_symbolized_verify_heap_turboshaft_csa': [ + 'v8_enable_memory_corruption_api'], + 'release_x64_asan_symbolized_verify_heap': [ 'release_bot', 'x64', 'asan', 'lsan', 'symbolized', - 'v8_verify_heap', 'v8_enable_turboshaft_csa'], + 'v8_verify_heap'], 'release_x64_cet_shadow_stack': [ 'release_bot', 'x64', 'cet_shadow_stack'], 'release_x64_cfi': [ 'release_bot', 'x64', 'cfi'], - 'release_x64_cfi_clusterfuzz_turboshaft_csa': [ - 'release_bot', 'x64', 'cfi_clusterfuzz', 'v8_enable_turboshaft_csa'], + 'release_x64_cfi_clusterfuzz': [ + 'release_bot', 'x64', 'cfi_clusterfuzz'], 'release_x64_coverage': [ 'release_bot', 'x64', 'clang_coverage'], 'release_x64_fuzzilli': [ @@ -615,9 +604,8 @@ 'v8_verify_heap', 'v8_verify_csa', 'fuzzilli'], 'release_x64_gcmole': [ 'release_bot', 'x64', 'gcmole'], - 'release_x64_correctness_fuzzer_turboshaft_csa' : [ - 'release_bot', 'x64', 'v8_correctness_fuzzer', - 'v8_enable_turboshaft_csa'], + 'release_x64_correctness_fuzzer' : [ + 'release_bot', 'x64', 'v8_correctness_fuzzer'], 'release_x64_disable_runtime_call_stats': [ 'release_bot', 'x64', 'v8_disable_runtime_call_stats'], 'release_x64_fuchsia': [ @@ -625,7 +613,7 @@ 'release_x64_fuchsia_trybot': [ 'release_trybot', 'x64', 'fuchsia'], 'release_x64_gcc': [ - 'release_bot_no_reclient', 'x64', 'gcc', 'lld', 'no_custom_libcxx'], + 'release_bot_no_remoteexec', 'x64', 'gcc', 'lld', 'no_custom_libcxx'], 'release_x64_ios_simulator': [ 'release_bot', 'x64', 'ios_simulator'], 'release_x64_internal': [ @@ -634,15 +622,13 @@ 'release_bot', 'x64', 'v8_lower_limits_mode'], 'release_x64_minimal_symbols': [ 'release_bot', 'x64', 'minimal_symbols'], - 'release_x64_minimal_symbols_reclient': [ - 'release_bot_reclient', 'x64', 'minimal_symbols'], 'release_x64_no_pointer_compression': [ 'release_bot', 'x64', 'no_sandbox', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_enable_javascript_promise_hooks', 'v8_disable_pointer_compression'], - 'release_x64_reclient': [ - 'release_bot_reclient', 'x64'], 'release_x64_no_sandbox': [ 'release_bot', 'x64', 'no_sandbox'], + 'release_x64_sandbox_hardware_support': [ + 'release_bot', 'x64', 'sandbox_hardware_support'], 'release_x64_trybot': [ 'release_trybot', 'x64'], 'release_x64_test_features_gcmole_trybot': [ @@ -655,14 +641,14 @@ 'release_bot', 'x64', 'tsan', 'disable_concurrent_marking'], 'release_x64_tsan_minimal_symbols': [ 'release_bot', 'x64', 'tsan', 'minimal_symbols'], - 'release_x64_tsan_turboshaft_csa': [ - 'release_bot', 'x64', 'tsan', 'v8_enable_turboshaft_csa'], + 'release_x64_tsan': [ + 'release_bot', 'x64', 'tsan'], 'release_x64_ubsan': [ 'release_bot', 'x64', 'ubsan'], 'release_x64_ubsan_minimal_symbols': [ 'release_bot', 'x64', 'ubsan', 'minimal_symbols'], - 'release_x64_ubsan_recover_turboshaft_csa': [ - 'release_bot', 'x64', 'ubsan_recover', 'v8_enable_turboshaft_csa'], + 'release_x64_ubsan_recover': [ + 'release_bot', 'x64', 'ubsan_recover'], 'release_x64_shared_verify_heap': [ 'release_bot', 'x64', 'shared', 'v8_verify_heap'], 'release_x64_verify_builtins': [ @@ -688,13 +674,15 @@ # Debug configs for x64. 'debug_x64': [ 'debug_bot', 'x64'], - 'debug_x64_asan_turboshaft_csa': [ - 'debug_bot', 'x64', 'asan', 'lsan', 'v8_enable_turboshaft_csa'], + 'debug_x64_asan': [ + 'debug_bot', 'x64', 'asan', 'lsan'], 'debug_x64_asan_centipede': [ 'debug_bot', 'x64', 'asan', 'use_centipede'], - 'debug_x64_asan_no_lsan_static_turboshaft_csa': [ - 'debug', 'static', 'reclient', 'v8_enable_slow_dchecks', - 'v8_optimized_debug', 'x64', 'asan', 'v8_enable_turboshaft_csa'], + 'debug_x64_asan_no_lsan_static': [ + 'debug', 'static', 'remoteexec', 'v8_enable_slow_dchecks', + 'v8_optimized_debug', 'x64', 'asan'], + 'debug_x64_asan_undefined_double': [ + 'debug_bot', 'x64', 'asan', 'v8_enable_undefined_double'], 'debug_x64_conservative_stack_scanning': [ 'debug_bot', 'x64', 'conservative_stack_scanning'], 'debug_x64_coverage': [ @@ -706,11 +694,9 @@ 'debug_x64_fuchsia': [ 'debug_bot', 'x64', 'fuchsia'], 'debug_x64_gcc': [ - 'debug_bot_no_reclient', 'x64', 'gcc', 'lld', 'no_custom_libcxx'], + 'debug_bot_no_remoteexec', 'x64', 'gcc', 'lld', 'no_custom_libcxx'], 'debug_x64_header_includes': [ 'debug_bot', 'x64', 'v8_check_header_includes'], - 'debug_x64_no_leaptiering': [ - 'debug_bot', 'x64', 'v8_disable_leaptiering'], 'debug_x64_no_shared_cage': [ 'debug_bot', 'x64', 'v8_disable_pointer_compression_shared_cage'], 'debug_x64_minimal_symbols': [ @@ -721,14 +707,16 @@ 'debug_bot', 'x64', 'perfetto'], 'debug_x64_no_sandbox': [ 'debug_bot', 'x64', 'no_sandbox'], + 'debug_x64_sandbox_hardware_support': [ + 'debug_bot', 'x64', 'sandbox_hardware_support'], 'debug_x64_single_generation': [ 'debug_bot', 'x64', 'v8_enable_single_generation'], 'debug_x64_sticky_mark_bits': [ 'debug_bot', 'x64', 'v8_enable_sticky_mark_bits'], 'debug_x64_trybot': [ 'debug_trybot', 'x64'], - 'debug_x64_turboshaft_csa': [ - 'debug_bot', 'x64', 'v8_enable_turboshaft_csa'], + 'debug_x64': [ + 'debug_bot', 'x64'], 'debug_x64_dict_tracking_trybot': [ 'debug_trybot', 'x64', 'v8_enable_dict_property_const_tracking'], 'debug_x64_trybot_custom': [ @@ -736,45 +724,45 @@ 'debug_x64_tsan_minimal_symbols': [ 'debug_bot_no_slow_dchecks', 'minimal_symbols', 'x64', 'dcheck_always_on', 'tsan', 'v8_disable_verify_heap', 'v8_fast_mksnapshot'], + 'debug_x64_undefined_double': [ + 'debug_bot', 'x64', 'v8_enable_undefined_double'], 'full_debug_x64': [ 'debug_bot', 'x64', 'v8_full_debug'], # Debug configs for x86. 'debug_x86': [ 'debug_bot', 'x86'], - 'debug_x86_asan_turboshaft_csa': [ - 'debug_bot', 'x86', 'asan', 'lsan', 'v8_enable_turboshaft_csa'], + 'debug_x86_asan': [ + 'debug_bot', 'x86', 'asan', 'lsan'], 'debug_x86_minimal_symbols': [ 'debug_bot', 'x86', 'minimal_symbols'], 'debug_x86_no_i18n': [ 'debug_bot', 'x86', 'v8_no_i18n'], 'debug_x86_trybot': [ 'debug_trybot', 'x86'], - 'debug_x86_turboshaft_csa': [ - 'debug_bot', 'x86', 'v8_enable_turboshaft_csa'], + 'debug_x86': [ + 'debug_bot', 'x86'], 'debug_x86_vtunejit': [ 'debug_bot', 'x86', 'v8_enable_vtunejit'], 'full_debug_x86': [ - 'debug', 'x86', 'reclient', 'v8_enable_slow_dchecks', 'v8_full_debug'], + 'debug', 'x86', 'remoteexec', 'v8_enable_slow_dchecks', 'v8_full_debug'], # Release configs for x86. - 'release_x86_asan_symbolized_verify_heap_turboshaft_csa': [ + 'release_x86_asan_symbolized_verify_heap': [ 'release_bot', 'x86', 'asan', 'lsan', 'symbolized', - 'v8_verify_heap', 'v8_enable_turboshaft_csa'], + 'v8_verify_heap'], 'release_x86_gcmole': [ 'release_bot', 'x86', 'gcmole'], 'release_x86_gcmole_trybot': [ 'release_trybot', 'x86', 'gcmole'], 'release_x86_minimal_symbols': [ 'release_bot', 'x86', 'minimal_symbols'], - 'release_x86_minimal_symbols_reclient': [ - 'release_bot_reclient', 'x86', 'minimal_symbols'], 'release_x86_no_i18n_trybot': [ 'release_trybot', 'x86', 'v8_no_i18n'], 'release_x64_predictable': [ 'release_bot', 'x64', 'v8_enable_verify_predictable'], 'release_x86_shared_verify_heap': [ - 'release', 'x86', 'reclient', 'shared', 'v8_verify_heap'], + 'release', 'x86', 'remoteexec', 'shared', 'v8_verify_heap'], 'release_x86_trybot': [ 'release_trybot', 'x86'], 'release_x86_verify_csa': [ @@ -799,7 +787,7 @@ 'mixins': { 'android': { - 'gn_args': 'target_os="android" v8_android_log_stdout=true default_min_sdk_version=21', + 'gn_args': 'target_os="android" v8_android_log_stdout=true default_min_sdk_version=23', }, 'android_strip_outputs': { @@ -820,7 +808,7 @@ }, 'builtins_profiling': { - 'mixins' : ['release_bot_reclient'], + 'mixins' : ['release_bot_remoteexec'], 'gn_args': 'v8_enable_builtins_profiling=true', }, @@ -866,19 +854,19 @@ 'debug_bot_no_slow_dchecks': { 'mixins': [ - 'debug', 'shared', 'reclient', 'v8_disable_slow_dchecks', + 'debug', 'shared', 'remoteexec', 'v8_disable_slow_dchecks', 'v8_optimized_debug', 'v8_enable_google_benchmark'], }, 'debug_bot': { 'mixins': [ - 'debug', 'shared', 'reclient', 'v8_enable_slow_dchecks', + 'debug', 'shared', 'remoteexec', 'v8_enable_slow_dchecks', 'v8_optimized_debug', 'v8_enable_google_benchmark'], }, - 'debug_bot_no_reclient': { + 'debug_bot_no_remoteexec': { 'mixins': [ - 'debug', 'shared', 'no_reclient', 'v8_enable_slow_dchecks', + 'debug', 'shared', 'no_remoteexec', 'v8_enable_slow_dchecks', 'v8_optimized_debug'], }, @@ -952,14 +940,18 @@ 'gn_args': 'use_custom_libcxx=false', }, - 'no_reclient': { - 'gn_args': 'use_remoteexec=false use_siso=false', + 'no_remoteexec': { + 'gn_args': 'use_remoteexec=false', }, 'no_sandbox': { 'gn_args': 'v8_enable_sandbox=false', }, + 'sandbox_hardware_support': { + 'gn_args': 'v8_enable_sandbox_hardware_support=true', + }, + 'non_default_cppgc': { 'gn_args': 'cppgc_enable_object_names=true cppgc_enable_young_generation=true', }, @@ -968,11 +960,8 @@ 'gn_args': 'v8_use_perfetto=true', }, - # TODO(https://crbug.com/414724525): Temporarily use the reclient and siso - # configs synonym. In a follow up we'll drop the reclient parts and replace - # them with SISO configs. - 'reclient': { - 'gn_args': 'use_remoteexec=true use_siso=true', + 'remoteexec': { + 'gn_args': 'use_remoteexec=true', }, 'release': { @@ -984,15 +973,15 @@ }, 'release_bot': { - 'mixins': ['release', 'static', 'reclient', 'v8_enable_google_benchmark'], + 'mixins': ['release', 'static', 'remoteexec', 'v8_enable_google_benchmark'], }, - 'release_bot_no_reclient': { - 'mixins': ['release', 'static', 'no_reclient'], + 'release_bot_no_remoteexec': { + 'mixins': ['release', 'static', 'no_remoteexec'], }, - 'release_bot_reclient': { - 'mixins': ['release', 'static', 'reclient'], + 'release_bot_remoteexec': { + 'mixins': ['release', 'static', 'remoteexec'], }, 'release_trybot': { @@ -1080,14 +1069,6 @@ 'gn_args': 'v8_correctness_fuzzer=true v8_multi_arch_build=true', }, - 'v8_control_flow_integrity' : { - 'gn_args': 'v8_control_flow_integrity=true', - }, - - 'v8_disable_leaptiering': { - 'gn_args': 'v8_enable_leaptiering=false v8_enable_sandbox=false', - }, - 'v8_disable_runtime_call_stats': { 'gn_args': 'v8_enable_runtime_call_stats=false', }, @@ -1154,8 +1135,8 @@ 'gn_args': 'v8_enable_test_features=true', }, - 'v8_enable_turboshaft_csa': { - 'gn_args': 'v8_enable_turboshaft_csa=true', + 'v8_enable_undefined_double': { + 'gn_args': 'v8_enable_experimental_undefined_double=true', }, 'v8_enable_verify_predictable': { diff --git a/deps/v8/infra/testing/PRESUBMIT.py b/deps/v8/infra/testing/PRESUBMIT.py index 2e93155d8132fc..67e72197eab1b4 100644 --- a/deps/v8/infra/testing/PRESUBMIT.py +++ b/deps/v8/infra/testing/PRESUBMIT.py @@ -24,13 +24,14 @@ # This is not an exhaustive list. It only reflects what we currently use. If # there's need to specify a different dimension, just add it here. SUPPORTED_SWARMING_DIMENSIONS = [ - 'cores', - 'cpu', - 'device_os', - 'device_type', - 'gpu', - 'os', - 'pool', + 'cores', + 'cpu', + 'device_os', + 'device_type', + 'gpu', + 'host_class', + 'os', + 'pool', ] # This is not an exhaustive list. It only reflects what we currently use. If diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl index 787c43b1d5f95b..8e00738857d1a1 100644 --- a/deps/v8/infra/testing/builders.pyl +++ b/deps/v8/infra/testing/builders.pyl @@ -32,18 +32,6 @@ ### luci.v8.try ############################################################################## # Android - 'v8_android_arm64_n5x_rel': { - 'swarming_dimensions' : { - 'device_os': 'OPR4.170623.020', - 'device_type': 'bullhead', - 'os': 'Android', - }, - 'tests': [ - {'name': 'mozilla', 'variant': 'default'}, - {'name': 'test262', 'variant': 'default', 'shards': 12}, - {'name': 'v8testing', 'variant': 'default', 'shards': 4}, - ], - }, 'v8_android_arm64_p7_rel': { 'swarming_dimensions' : { 'device_os': 'AP2A.240705.004', @@ -329,11 +317,21 @@ }, ############################################################################## # Linux64 + 'v8_linux64_arm64_asan_rel': { + 'swarming_dimensions': { + 'os': 'Linux', + 'cpu': 'arm64', + 'pool': 'v8.tests', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default'}, + ], + }, 'v8_linux64_arm64_dbg': { 'swarming_dimensions': { 'os': 'Linux', 'cpu': 'arm64', - 'pool': 'chromium.tests', + 'pool': 'v8.tests', }, 'tests': [ {'name': 'v8testing', 'variant': 'default'}, @@ -343,7 +341,7 @@ 'swarming_dimensions': { 'os': 'Linux', 'cpu': 'arm64', - 'pool': 'chromium.tests', + 'pool': 'v8.tests', }, 'tests': [ {'name': 'v8testing', 'variant': 'default'}, @@ -422,10 +420,10 @@ {'name': 'test262', 'variant': 'default', 'shards': 3}, {'name': 'test262', 'variant': 'future', 'shards': 3}, {'name': 'test262', 'variant': 'extra', 'shards': 14}, - {'name': 'v8testing', 'shards': 5}, + {'name': 'v8testing', 'shards': 8}, {'name': 'v8testing', 'variant': 'extra', 'shards': 5}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, @@ -486,7 +484,7 @@ }, 'tests': [ # Infra staging. - {'name': 'v8testing', 'variant': 'infra_staging', 'shards': 2}, + {'name': 'v8testing', 'variant': 'infra_staging', 'shards': 4}, # Stress sampling. {'name': 'mjsunit', 'variant': 'stress_sampling'}, {'name': 'webkit', 'variant': 'stress_sampling'}, @@ -539,7 +537,7 @@ }, { 'name': 'mjsunit', - 'variant': 'conservative_pinning', + 'variant': 'conservative_stack_scanning', 'test_args': ['--gc-stress'], 'shards': 2 }, @@ -627,7 +625,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -639,20 +637,12 @@ {'name': 'v8testing', 'shards': 3}, ], }, - 'v8_linux64_no_leaptiering_dbg': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-22.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 5}, - ], - }, 'v8_linux64_no_shared_cage_dbg': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 5}, + {'name': 'v8testing', 'shards': 8}, ], }, 'v8_linux64_no_pointer_compression_rel': { @@ -686,9 +676,13 @@ 'os': 'Ubuntu-22.04', 'cpu': 'x86-64-avx2', 'pool': 'v8.tests', + 'host_class': 'pku', }, 'tests': [ - {'name': 'v8testing', 'variant': 'default'}, + {'name': 'v8testing', + 'variant': 'default', + 'test_args': ['--extra-flags', '--force-memory-protection-keys'] + }, ], }, 'v8_linux64_pku_rel': { @@ -696,9 +690,13 @@ 'os': 'Ubuntu-22.04', 'cpu': 'x86-64-avx2', 'pool': 'v8.tests', + 'host_class': 'pku', }, 'tests': [ - {'name': 'v8testing', 'variant': 'default'}, + {'name': 'v8testing', + 'variant': 'default', + 'test_args': ['--extra-flags', '--force-memory-protection-keys'] + }, ], }, 'v8_linux64_sandbox_testing_rel': { @@ -742,7 +740,7 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'slow_path'}, @@ -809,7 +807,7 @@ {'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': 'conservative_stack_scanning', 'shards': 2}, {'name': 'v8testing', 'variant': 'precise_pinning', 'shards': 2}, ], }, @@ -853,6 +851,15 @@ {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, ], }, + 'v8_linux64_undefined_double_dbg': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + 'cpu': 'x86-64', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 3}, + ], + }, 'v8_linux64_verify_csa_rel': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -872,6 +879,13 @@ {'name': 'test262', 'variant': 'default', 'shards': 4}, {'name': 'v8testing', 'shards': 14}, {'name': 'v8testing', 'variant': 'extra', 'shards': 14}, + { + 'name': 'v8testing', + 'suffix': 'all_features', + 'variant': 'default', + 'test_args': ['--extra-flags', '--sim-arm64-optional-features="all"'], + 'shards': 4, + }, ], }, 'v8_linux_arm64_gc_stress_dbg': { @@ -887,20 +901,18 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ + {'name': 'gcmole_v3', 'variant': 'arm64', 'shards': 6}, {'name': 'mozilla', 'shards': 4}, {'name': 'test262', 'variant': 'default', 'shards': 4}, {'name': 'v8testing', 'shards': 14}, {'name': 'v8testing', 'variant': 'extra', 'shards': 14}, - {'name': 'gcmole_v3', 'variant': 'arm64', 'shards': 6}, - ], - }, - 'v8_linux_arm64_cfi_rel': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-22.04', - }, - 'tests': [ - {'name': 'test262', 'variant': 'default', 'shards': 3}, - {'name': 'v8testing', 'shards': 4}, + { + 'name': 'v8testing', + 'suffix': 'all_features', + 'variant': 'default', + 'test_args': ['--extra-flags', '--sim-arm64-optional-features="all"'], + 'shards': 4, + }, ], }, 'v8_linux64_arm64_no_pointer_compression_rel': { @@ -1001,7 +1013,7 @@ {'name': 'v8testing', 'shards': 4}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1026,7 +1038,7 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1041,7 +1053,7 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1067,7 +1079,7 @@ {'name': 'v8testing', 'shards': 6}, {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1100,7 +1112,7 @@ {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1121,7 +1133,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1142,7 +1154,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1163,7 +1175,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1253,15 +1265,6 @@ {'name': 'gcmole_v3', 'variant': 'ia32', 'shards': 6}, ], }, - 'V8 Linux - arm64 - sim - CFI': { - 'swarming_dimensions': { - 'os': 'Ubuntu-22.04', - }, - 'tests': [ - {'name': 'test262', 'variant': 'default', 'shards': 3}, - {'name': 'v8testing', 'shards': 4}, - ], - }, 'V8 Linux - arm64 - sim - MSAN': { 'swarming_dimensions': { 'os': 'Ubuntu-22.04', @@ -1466,7 +1469,7 @@ {'name': 'v8testing', 'variant': 'assert_types'}, {'name': 'v8testing', 'variant': 'extra'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, @@ -1569,12 +1572,12 @@ {'name': 'mozilla'}, {'name': 'mozilla', 'variant': 'extra'}, {'name': 'optimize_for_size'}, - {'name': 'test262', 'shards': 9}, - {'name': 'test262', 'variant': 'extra', 'shards': 7}, - {'name': 'v8testing', 'shards': 3}, + {'name': 'test262', 'shards': 12}, + {'name': 'test262', 'variant': 'extra', 'shards': 12}, + {'name': 'v8testing', 'shards': 5}, {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'slow_path'}, @@ -1606,7 +1609,7 @@ 'name': 'v8testing', 'suffix': 'noavx', 'test_args': ['--extra-flags', '--noenable-avx'], - 'shards': 3 + 'shards': 5 }, # Code serializer. {'name': 'benchmarks', 'variant': 'code_serializer', 'shards': 1}, @@ -1644,7 +1647,7 @@ }, 'tests': [ # Infra staging. - {'name': 'v8testing', 'variant': 'infra_staging', 'shards': 2}, + {'name': 'v8testing', 'variant': 'infra_staging', 'shards': 3}, # Stress sampling. {'name': 'mjsunit', 'variant': 'stress_sampling'}, {'name': 'webkit', 'variant': 'stress_sampling'}, @@ -1718,9 +1721,13 @@ 'os': 'Ubuntu-22.04', 'cpu': 'x86-64-avx2', 'pool': 'v8.tests', + 'host_class': 'pku', }, 'tests': [ - {'name': 'v8testing', 'variant': 'default'}, + {'name': 'v8testing', + 'variant': 'default', + 'test_args': ['--extra-flags', '--force-memory-protection-keys'] + }, ], }, 'V8 Linux64 - PKU - debug': { @@ -1728,9 +1735,13 @@ 'os': 'Ubuntu-22.04', 'cpu': 'x86-64-avx2', 'pool': 'v8.tests', + 'host_class': 'pku', }, 'tests': [ - {'name': 'v8testing', 'variant': 'default'}, + {'name': 'v8testing', + 'variant': 'default', + 'test_args': ['--extra-flags', '--force-memory-protection-keys'] + }, ], }, 'V8 Linux64 gcc': { @@ -1780,7 +1791,7 @@ }, { 'name': 'mjsunit', - 'variant': 'conservative_pinning', + 'variant': 'conservative_stack_scanning', 'test_args': ['--gc-stress'], 'shards': 2 }, @@ -1808,14 +1819,6 @@ {'name': 'v8testing'}, ], }, - 'V8 Linux64 - no leaptiering - debug': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-22.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 5}, - ], - }, 'V8 Linux64 - no shared cage - debug': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -1826,7 +1829,7 @@ 'priority': 35, }, 'tests': [ - {'name': 'v8testing', 'shards': 2}, + {'name': 'v8testing', 'shards': 4}, ], }, 'V8 Linux64 - no pointer compression': { @@ -1883,12 +1886,21 @@ {'name': 'v8testing', 'shards': 3}, ], }, + 'V8 Linux64 - undefined double - debug': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + 'cpu': 'x86-64', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 3}, + ], + }, 'V8 Linux64 - verify csa': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, ], }, 'V8 Linux64 ASAN': { @@ -1946,7 +1958,7 @@ {'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': 'conservative_stack_scanning', 'shards': 2}, {'name': 'v8testing', 'variant': 'precise_pinning', 'shards': 2}, ], }, @@ -2034,7 +2046,7 @@ {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2049,7 +2061,7 @@ {'name': 'v8testing', 'shards': 6}, {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2089,7 +2101,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2111,7 +2123,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2133,7 +2145,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2188,7 +2200,7 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2212,7 +2224,7 @@ {'name': 'v8testing', 'shards': 4}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2249,18 +2261,6 @@ }, ############################################################################## # Ports. - 'V8 Android Arm64 - N5X': { - 'swarming_dimensions': { - 'device_os': 'OPR4.170623.020', - 'device_type': 'bullhead', - 'os': 'Android', - }, - 'tests': [ - {'name': 'mozilla', 'variant': 'default'}, - {'name': 'test262', 'variant': 'default', 'shards': 12}, - {'name': 'v8testing', 'variant': 'default', 'shards': 4}, - ], - }, 'V8 Android Arm64 - P7': { 'swarming_dimensions': { 'device_os': 'AP2A.240705.004', @@ -2399,11 +2399,18 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ + {'name': 'gcmole_v3', 'variant': 'arm64', 'shards': 6}, {'name': 'mozilla'}, {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, - {'name': 'gcmole_v3', 'variant': 'arm64', 'shards': 6}, + { + 'name': 'v8testing', + 'suffix': 'all_features', + 'variant': 'default', + 'test_args': ['--extra-flags', '--sim-arm64-optional-features="all"'], + 'shards': 2, + }, ], }, 'V8 Linux - arm64 - sim - debug': { @@ -2419,6 +2426,13 @@ {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 12}, {'name': 'v8testing', 'variant': 'extra', 'shards': 14}, + { + 'name': 'v8testing', + 'suffix': 'all_features', + 'variant': 'default', + 'test_args': ['--extra-flags', '--sim-arm64-optional-features="all"'], + 'shards': 3, + }, ], }, 'V8 Linux - arm64 - sim - gc stress': { @@ -2530,11 +2544,21 @@ {'name': 'v8testing', 'shards': 3}, ], }, + 'V8 Linux64 - arm64 - ASAN': { + 'swarming_dimensions': { + 'os': 'Linux', + 'cpu': 'arm64', + 'pool': 'v8.tests', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default'}, + ], + }, 'V8 Linux64 - arm64': { 'swarming_dimensions': { 'os': 'Linux', 'cpu': 'arm64', - 'pool': 'chromium.tests', + 'pool': 'v8.tests', }, 'tests': [ {'name': 'v8testing', 'variant': 'default'}, @@ -2544,7 +2568,7 @@ 'swarming_dimensions': { 'os': 'Linux', 'cpu': 'arm64', - 'pool': 'chromium.tests', + 'pool': 'v8.tests', }, 'tests': [ {'name': 'v8testing', 'variant': 'default'}, @@ -2587,107 +2611,57 @@ }, ], }, - 'V8 NumFuzz - ASAN': { + 'V8 NumFuzz - TSAN': { 'swarming_dimensions': { 'os': 'Ubuntu-22.04', }, 'swarming_task_attrs': { 'expiration': 13800, - 'hard_timeout': 4200, + 'hard_timeout': 4800, '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', + 'suffix': 'allocation', '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 + '--total-timeout-sec=4200', + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] }, - { - 'name': 'numfuzz', - 'suffix': 'scavenge', - 'test_args': ['--total-timeout-sec=2100', '--stress-scavenge=1'] - }, - ], - }, - 'V8 NumFuzz - TSAN': { - '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'] + 'test_args': ['--total-timeout-sec=4200', '--stress-marking=1'] }, { 'name': 'numfuzz', 'suffix': 'delay', - 'test_args': ['--total-timeout-sec=2100', '--stress-delay-tasks=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-delay-tasks=1'] }, { 'name': 'numfuzz', 'suffix': 'interrupt', - 'test_args': ['--total-timeout-sec=2100', '--stress-interrupt-budget=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-interrupt-budget=1'] }, { 'name': 'numfuzz', 'suffix': 'threads', - 'test_args': ['--total-timeout-sec=2100', '--stress-thread-pool-size=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-thread-pool-size=1'] }, { 'name': 'numfuzz', 'suffix': 'stack', - 'test_args': ['--total-timeout-sec=2100', '--stress-stack-size=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-stack-size=1'] }, { 'name': 'numfuzz', 'suffix': 'combined', 'test_args': [ - '--total-timeout-sec=2100', + '--total-timeout-sec=4200', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2703,7 +2677,7 @@ { 'name': 'numfuzz', 'suffix': 'scavenge', - 'test_args': ['--total-timeout-sec=2100', '--stress-scavenge=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-scavenge=1'] }, ], }, @@ -2713,42 +2687,52 @@ }, 'swarming_task_attrs': { 'expiration': 13800, - 'hard_timeout': 4200, + 'hard_timeout': 4800, 'priority': 35, }, 'tests': [ {'name': 'd8testing_random_gc'}, + { + 'name': 'numfuzz', + 'suffix': 'allocation', + 'test_args': [ + '--total-timeout-sec=4200', + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] + }, { 'name': 'numfuzz', 'suffix': 'marking', - 'test_args': ['--total-timeout-sec=2100', '--stress-marking=1'], + 'test_args': ['--total-timeout-sec=4200', '--stress-marking=1'], 'shards': 2 }, { 'name': 'numfuzz', 'suffix': 'delay', - 'test_args': ['--total-timeout-sec=2100', '--stress-delay-tasks=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-delay-tasks=1'] }, { 'name': 'numfuzz', 'suffix': 'interrupt', - 'test_args': ['--total-timeout-sec=2100', '--stress-interrupt-budget=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-interrupt-budget=1'] }, { 'name': 'numfuzz', 'suffix': 'threads', - 'test_args': ['--total-timeout-sec=2100', '--stress-thread-pool-size=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-thread-pool-size=1'] }, { 'name': 'numfuzz', 'suffix': 'stack', - 'test_args': ['--total-timeout-sec=2100', '--stress-stack-size=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-stack-size=1'] }, { 'name': 'numfuzz', 'suffix': 'combined', 'test_args': [ - '--total-timeout-sec=2100', + '--total-timeout-sec=4200', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2764,12 +2748,12 @@ { 'name': 'numfuzz', 'suffix': 'scavenge', - 'test_args': ['--total-timeout-sec=2100', '--stress-scavenge=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-scavenge=1'] }, { 'name': 'numfuzz', 'suffix': 'deopt', - 'test_args': ['--total-timeout-sec=2100', '--stress-deopt=1'], + 'test_args': ['--total-timeout-sec=4200', '--stress-deopt=1'], 'shards': 2 }, ], @@ -2791,64 +2775,20 @@ }, ], }, - 'v8_numfuzz_asan_rel': { + 'v8_numfuzz_tsan_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', + 'suffix': 'allocation', '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', - ], + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] }, - { - 'name': 'numfuzz', - 'suffix': 'scavenge', - 'test_args': ['--total-timeout-sec=900', '--stress-scavenge=1'] - }, - ], - }, - 'v8_numfuzz_tsan_rel': { - 'swarming_dimensions': { - 'os': 'Ubuntu-22.04', - }, - 'tests': [ { 'name': 'numfuzz', 'suffix': 'marking', @@ -2879,6 +2819,7 @@ 'suffix': 'combined', 'test_args': [ '--total-timeout-sec=900', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2902,6 +2843,15 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ + { + 'name': 'numfuzz', + 'suffix': 'allocation', + 'test_args': [ + '--total-timeout-sec=900', + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] + }, { 'name': 'numfuzz', 'suffix': 'marking', @@ -2932,6 +2882,7 @@ 'suffix': 'combined', 'test_args': [ '--total-timeout-sec=900', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', diff --git a/deps/v8/infra/whitespace.txt b/deps/v8/infra/whitespace.txt index 7692b0d582ff77..15ba92a9a75e82 100644 --- a/deps/v8/infra/whitespace.txt +++ b/deps/v8/infra/whitespace.txt @@ -1 +1 @@ -Some infra-owned whitespace to test the cherry-picker. \ No newline at end of file +Some infra-owned whitespace to test the cherry-picker. diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS index 8a8423c112b384..d6da189c53496c 100644 --- a/deps/v8/src/DEPS +++ b/deps/v8/src/DEPS @@ -26,6 +26,8 @@ include_rules = [ "+src/heap/factory-inl.h", # TODO(v8:10496): Don't expose so much (through transitive includes) outside # of heap/. + "+src/heap/gc-callbacks.h", + "+src/heap/gc-callbacks-inl.h", "+src/heap/gc-tracer.h", "+src/heap/gc-tracer-inl.h", "+src/heap/heap.h", @@ -45,7 +47,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/memory-pool.h", "+src/heap/paged-spaces-inl.h", "+src/heap/parked-scope-inl.h", "+src/heap/parked-scope.h", @@ -129,4 +131,13 @@ specific_include_rules = { "snapshot\.cc": [ "+src/heap/read-only-promotion.h", ], + "string-hasher-inl\.h": [ + "+third_party/rapidhash-v8/rapidhash.h", + ], + "heap\.cc": [ + "+third_party/rapidhash-v8/secret.h", + ], + "hash-seed-inl\.h": [ + "+third_party/rapidhash-v8/secret.h", + ], } diff --git a/deps/v8/src/api/api-inl.h b/deps/v8/src/api/api-inl.h index 965ded69be67b7..5ac2bd712866e3 100644 --- a/deps/v8/src/api/api-inl.h +++ b/deps/v8/src/api/api-inl.h @@ -11,52 +11,49 @@ #include "include/v8-fast-api-calls.h" #include "src/common/assert-scope.h" #include "src/execution/microtask-queue.h" +#include "src/execution/vm-state-inl.h" #include "src/flags/flags.h" #include "src/handles/handles-inl.h" #include "src/heap/heap-inl.h" +#include "src/logging/runtime-call-stats.h" #include "src/objects/foreign-inl.h" #include "src/objects/objects-inl.h" namespace v8 { template -inline T ToCData(i::Isolate* isolate, - v8::internal::Tagged obj) { - static_assert(sizeof(T) == sizeof(v8::internal::Address)); - if (obj == v8::internal::Smi::zero()) return nullptr; +inline T ToCData(i::Isolate* isolate, i::Tagged obj) { + static_assert(sizeof(T) == sizeof(i::Address)); + if (obj == i::Smi::zero()) return nullptr; return reinterpret_cast( - v8::internal::Cast(obj)->foreign_address( - isolate)); + i::Cast(obj)->foreign_address(isolate)); } template -inline v8::internal::Address ToCData( - i::Isolate* isolate, v8::internal::Tagged obj) { - if (obj == v8::internal::Smi::zero()) return v8::internal::kNullAddress; - return v8::internal::Cast(obj)->foreign_address( - isolate); +inline i::Address ToCData(i::Isolate* isolate, i::Tagged obj) { + if (obj == i::Smi::zero()) return i::kNullAddress; + return i::Cast(obj)->foreign_address(isolate); } template -inline v8::internal::DirectHandle> FromCData( - v8::internal::Isolate* isolate, T obj) { - static_assert(sizeof(T) == sizeof(v8::internal::Address)); - if (obj == nullptr) return direct_handle(v8::internal::Smi::zero(), isolate); - return isolate->factory()->NewForeign( - reinterpret_cast(obj)); +inline i::DirectHandle> FromCData( + i::Isolate* isolate, T obj) { + static_assert(sizeof(T) == sizeof(i::Address)); + if (obj == nullptr) return direct_handle(i::Smi::zero(), isolate); + return isolate->factory()->NewForeign(reinterpret_cast(obj)); } template -inline v8::internal::DirectHandle> FromCData( - v8::internal::Isolate* isolate, v8::internal::Address obj) { - if (obj == v8::internal::kNullAddress) { - return direct_handle(v8::internal::Smi::zero(), isolate); +inline i::DirectHandle> FromCData( + i::Isolate* isolate, i::Address obj) { + if (obj == i::kNullAddress) { + return direct_handle(i::Smi::zero(), isolate); } return isolate->factory()->NewForeign(obj); } template -inline Local Utils::Convert(v8::internal::DirectHandle obj) { +inline Local Utils::Convert(i::DirectHandle obj) { DCHECK(obj.is_null() || IsSmi(*obj) || !IsTheHole(*obj)); #ifdef V8_ENABLE_DIRECT_HANDLE if (obj.is_null()) return Local(); @@ -70,66 +67,54 @@ inline Local Utils::Convert(v8::internal::DirectHandle obj) { // Implementations of ToLocal -#define MAKE_TO_LOCAL(Name) \ - template