From fd1abc6a399d4859c7b22714972c5af7b74971db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Fri, 20 Feb 2026 09:20:58 +0100 Subject: [PATCH 01/20] deps: update V8 to 14.6.202.4 --- deps/v8/.clang-format | 5 + deps/v8/.gitignore | 1 + deps/v8/.gn | 3 + deps/v8/AUTHORS | 2 + deps/v8/BUILD.bazel | 113 +- deps/v8/BUILD.gn | 384 +- deps/v8/COMMON_OWNERS | 1 + deps/v8/DEPS | 311 +- deps/v8/MODULE.bazel | 180 +- deps/v8/WATCHLISTS | 7 + deps/v8/bazel/config/BUILD.bazel | 25 + deps/v8/bazel/defs.bzl | 3 +- deps/v8/bazel/toolchain/BUILD.bazel | 2 + deps/v8/bazel/toolchain/libcxx_repository.bzl | 99 + deps/v8/bazel/toolchain/llvm_repository.bzl | 40 + deps/v8/gni/v8.gni | 29 +- deps/v8/include/cppgc/allocation.h | 13 +- .../v8/include/cppgc/internal/api-constants.h | 2 +- deps/v8/include/libplatform/v8-tracing.h | 15 +- deps/v8/include/v8-array-buffer.h | 10 + deps/v8/include/v8-callbacks.h | 9 + deps/v8/include/v8-context.h | 47 +- deps/v8/include/v8-data.h | 3 +- deps/v8/include/v8-debug.h | 26 +- deps/v8/include/v8-exception.h | 11 +- deps/v8/include/v8-extension.h | 2 - deps/v8/include/v8-external.h | 26 +- deps/v8/include/v8-function-callback.h | 355 +- deps/v8/include/v8-function.h | 4 +- deps/v8/include/v8-internal.h | 128 +- deps/v8/include/v8-isolate.h | 32 +- deps/v8/include/v8-metrics.h | 1 + deps/v8/include/v8-object.h | 114 +- deps/v8/include/v8-platform.h | 220 +- deps/v8/include/v8-primitive.h | 2 +- deps/v8/include/v8-profiler.h | 25 +- deps/v8/include/v8-promise.h | 21 +- deps/v8/include/v8-sandbox.h | 87 +- deps/v8/include/v8-script.h | 27 + deps/v8/include/v8-source-location.h | 17 +- deps/v8/include/v8-template.h | 129 +- deps/v8/include/v8-trace-categories.h | 6 +- deps/v8/include/v8-version.h | 6 +- deps/v8/include/v8-wasm.h | 145 +- deps/v8/include/v8config.h | 17 +- deps/v8/infra/mb/mb_config.pyl | 84 +- deps/v8/infra/testing/builders.pyl | 166 +- deps/v8/src/DEPS | 9 +- deps/v8/src/api/api-arguments-inl.h | 416 +- deps/v8/src/api/api-arguments.cc | 62 +- deps/v8/src/api/api-arguments.h | 328 +- deps/v8/src/api/api.cc | 559 +- deps/v8/src/api/api.h | 22 +- deps/v8/src/asmjs/asm-parser.cc | 19 +- .../ast/ast-function-literal-id-reindexer.cc | 14 +- deps/v8/src/ast/ast-traversal-visitor.h | 7 + deps/v8/src/ast/ast.cc | 6 +- deps/v8/src/ast/ast.h | 7 +- deps/v8/src/ast/modules.cc | 23 +- deps/v8/src/ast/modules.h | 13 +- deps/v8/src/ast/scopes.cc | 228 +- deps/v8/src/ast/scopes.h | 403 +- deps/v8/src/ast/variables.h | 3 + deps/v8/src/base/DEPS | 3 + deps/v8/src/base/algorithm.h | 51 + deps/v8/src/base/atomic-utils.h | 5 + deps/v8/src/base/bits.h | 31 + deps/v8/src/base/bounded-page-allocator.h | 13 + deps/v8/src/base/bounds.h | 9 + deps/v8/src/base/cpu.cc | 80 +- deps/v8/src/base/cpu.h | 10 +- deps/v8/src/base/debug/stack_trace.h | 2 +- .../base/emulated-virtual-address-subspace.cc | 4 +- .../base/emulated-virtual-address-subspace.h | 6 +- deps/v8/src/base/flags.h | 4 + deps/v8/src/{wasm => base}/float16.h | 12 +- deps/v8/src/base/ieee754.cc | 8 - deps/v8/src/base/logging.h | 13 + deps/v8/src/base/macros.h | 27 + deps/v8/src/base/memcopy.h | 261 + deps/v8/src/base/numbers/diy-fp.cc | 23 - deps/v8/src/base/numbers/diy-fp.h | 19 +- deps/v8/src/base/numbers/fixed-dtoa.cc | 77 +- .../base/platform/memory-protection-key.cc | 34 +- .../src/base/platform/memory-protection-key.h | 6 +- deps/v8/src/base/platform/platform-darwin.cc | 20 +- deps/v8/src/base/platform/platform-fuchsia.cc | 92 +- deps/v8/src/base/platform/platform-linux.cc | 232 +- deps/v8/src/base/platform/platform-linux.h | 36 +- deps/v8/src/base/platform/platform-posix.cc | 75 +- deps/v8/src/base/platform/platform-posix.h | 3 +- .../src/base/platform/platform-starboard.cc | 6 +- deps/v8/src/base/platform/platform-win32.cc | 41 +- deps/v8/src/base/platform/platform-zos.cc | 8 +- deps/v8/src/base/platform/platform.h | 40 +- .../sanitizer/lsan-virtual-address-space.cc | 4 +- .../sanitizer/lsan-virtual-address-space.h | 6 +- deps/v8/src/base/small-vector.h | 4 +- .../src/base/template-meta-programming/list.h | 73 +- .../src/base/utils/random-number-generator.cc | 10 +- .../src/base/utils/random-number-generator.h | 8 +- deps/v8/src/base/vector.h | 7 +- .../virtual-address-space-page-allocator.cc | 28 +- deps/v8/src/base/virtual-address-space.cc | 128 +- deps/v8/src/base/virtual-address-space.h | 26 +- .../arm64/baseline-assembler-arm64-inl.h | 34 +- deps/v8/src/baseline/baseline-assembler.h | 8 + deps/v8/src/baseline/baseline-compiler.cc | 393 +- deps/v8/src/baseline/baseline-compiler.h | 21 +- .../loong64/baseline-assembler-loong64-inl.h | 39 +- .../mips64/baseline-assembler-mips64-inl.h | 2 +- .../riscv/baseline-assembler-riscv-inl.h | 33 +- .../baseline/x64/baseline-assembler-x64-inl.h | 35 + deps/v8/src/bigint/fromstring.cc | 26 +- deps/v8/src/builtins/DEPS | 3 + deps/v8/src/builtins/accessors.cc | 128 +- deps/v8/src/builtins/accessors.h | 20 +- deps/v8/src/builtins/arm/builtins-arm.cc | 574 +- deps/v8/src/builtins/arm64/builtins-arm64.cc | 656 +- deps/v8/src/builtins/array-join.tq | 11 +- deps/v8/src/builtins/array-map.tq | 8 +- deps/v8/src/builtins/arraybuffer.tq | 21 + deps/v8/src/builtins/base.tq | 15 +- deps/v8/src/builtins/builtins-api.cc | 126 +- deps/v8/src/builtins/builtins-array-gen.cc | 76 +- deps/v8/src/builtins/builtins-arraybuffer.cc | 426 +- .../builtins/builtins-async-function-gen.cc | 16 +- deps/v8/src/builtins/builtins-async-gen.cc | 190 +- deps/v8/src/builtins/builtins-async-gen.h | 28 +- .../builtins/builtins-async-generator-gen.cc | 17 +- .../builtins-atomics-synchronization.cc | 143 - deps/v8/src/builtins/builtins-call-gen.cc | 12 + deps/v8/src/builtins/builtins-callsite.cc | 14 +- .../src/builtins/builtins-collections-gen.cc | 8 +- .../src/builtins/builtins-constructor-gen.cc | 20 +- deps/v8/src/builtins/builtins-dataview.cc | 16 +- deps/v8/src/builtins/builtins-definitions.h | 147 +- deps/v8/src/builtins/builtins-ic-gen.cc | 60 +- deps/v8/src/builtins/builtins-inl.h | 80 +- deps/v8/src/builtins/builtins-internal-gen.cc | 203 +- deps/v8/src/builtins/builtins-intl.cc | 67 +- deps/v8/src/builtins/builtins-iterator-inl.h | 496 ++ deps/v8/src/builtins/builtins-iterator.h | 38 + deps/v8/src/builtins/builtins-math-xsum.cc | 312 + deps/v8/src/builtins/builtins-math-xsum.h | 146 + deps/v8/src/builtins/builtins-math.cc | 74 + .../builtins/builtins-microtask-queue-gen.cc | 176 +- deps/v8/src/builtins/builtins-number-gen.cc | 313 +- deps/v8/src/builtins/builtins-object-gen.cc | 21 +- deps/v8/src/builtins/builtins-object.cc | 23 +- deps/v8/src/builtins/builtins-regexp-gen.cc | 9 +- deps/v8/src/builtins/builtins-regexp.cc | 2 +- .../builtins-sharedarraybuffer-gen.cc | 140 +- .../builtins/builtins-sharedarraybuffer.cc | 7 +- deps/v8/src/builtins/builtins-string-gen.cc | 44 +- .../v8/src/builtins/builtins-string-tsa-inl.h | 699 ++ deps/v8/src/builtins/builtins-string-tsa.cc | 141 +- deps/v8/src/builtins/builtins-string.cc | 2 +- deps/v8/src/builtins/builtins-string.tq | 12 +- deps/v8/src/builtins/builtins-trace.cc | 9 +- .../src/builtins/builtins-typed-array-gen.cc | 142 +- .../src/builtins/builtins-typed-array-gen.h | 27 +- deps/v8/src/builtins/builtins-typed-array.cc | 88 +- deps/v8/src/builtins/builtins-utils.h | 23 +- deps/v8/src/builtins/builtins-wasm-gen.h | 8 - deps/v8/src/builtins/builtins.cc | 36 +- deps/v8/src/builtins/builtins.h | 58 +- deps/v8/src/builtins/cast.tq | 38 +- deps/v8/src/builtins/conversion.tq | 26 +- deps/v8/src/builtins/convert.tq | 8 + deps/v8/src/builtins/data-view.tq | 42 +- deps/v8/src/builtins/function.tq | 6 +- .../generate-bytecodes-builtins-list.cc | 15 +- deps/v8/src/builtins/ia32/builtins-ia32.cc | 938 +-- deps/v8/src/builtins/iterator-from.tq | 8 +- deps/v8/src/builtins/iterator-helpers.tq | 405 +- deps/v8/src/builtins/iterator.tq | 31 +- deps/v8/src/builtins/js-to-js.tq | 2 +- deps/v8/src/builtins/js-to-wasm.tq | 61 +- .../src/builtins/js-trampoline-assembler.cc | 139 +- .../v8/src/builtins/js-trampoline-assembler.h | 15 - .../src/builtins/loong64/builtins-loong64.cc | 948 +-- deps/v8/src/builtins/math.tq | 3 +- .../v8/src/builtins/mips64/builtins-mips64.cc | 462 +- deps/v8/src/builtins/ppc/builtins-ppc.cc | 572 +- .../builtins/promise-abstract-operations.tq | 12 +- deps/v8/src/builtins/promise-misc.tq | 24 + deps/v8/src/builtins/reflect.tq | 4 +- deps/v8/src/builtins/regexp-replace.tq | 8 +- deps/v8/src/builtins/riscv/builtins-riscv.cc | 840 +-- deps/v8/src/builtins/s390/builtins-s390.cc | 543 +- deps/v8/src/builtins/typed-array-at.tq | 3 +- .../builtins/typed-array-createtypedarray.tq | 80 +- deps/v8/src/builtins/typed-array-entries.tq | 6 +- deps/v8/src/builtins/typed-array-every.tq | 11 +- deps/v8/src/builtins/typed-array-filter.tq | 12 +- deps/v8/src/builtins/typed-array-find.tq | 11 +- deps/v8/src/builtins/typed-array-findindex.tq | 12 +- deps/v8/src/builtins/typed-array-findlast.tq | 12 +- .../src/builtins/typed-array-findlastindex.tq | 11 +- deps/v8/src/builtins/typed-array-foreach.tq | 12 +- deps/v8/src/builtins/typed-array-from.tq | 12 +- deps/v8/src/builtins/typed-array-keys.tq | 5 +- deps/v8/src/builtins/typed-array-of.tq | 3 +- deps/v8/src/builtins/typed-array-reduce.tq | 14 +- .../src/builtins/typed-array-reduceright.tq | 14 +- deps/v8/src/builtins/typed-array-set.tq | 23 +- deps/v8/src/builtins/typed-array-slice.tq | 23 +- deps/v8/src/builtins/typed-array-some.tq | 11 +- deps/v8/src/builtins/typed-array-sort.tq | 13 +- deps/v8/src/builtins/typed-array-subarray.tq | 11 +- .../src/builtins/typed-array-to-reversed.tq | 5 +- deps/v8/src/builtins/typed-array-to-sorted.tq | 4 +- deps/v8/src/builtins/typed-array-values.tq | 5 +- deps/v8/src/builtins/typed-array-with.tq | 13 +- deps/v8/src/builtins/typed-array.tq | 57 +- deps/v8/src/builtins/wasm.tq | 40 +- deps/v8/src/builtins/x64/builtins-x64.cc | 792 ++- deps/v8/src/codegen/DEPS | 2 +- deps/v8/src/codegen/arm/assembler-arm.cc | 30 +- .../arm/interface-descriptors-arm-inl.h | 14 +- .../v8/src/codegen/arm/macro-assembler-arm.cc | 241 +- deps/v8/src/codegen/arm/macro-assembler-arm.h | 28 +- deps/v8/src/codegen/arm64/assembler-arm64.cc | 82 +- deps/v8/src/codegen/arm64/assembler-arm64.h | 4 + .../arm64/interface-descriptors-arm64-inl.h | 24 +- .../codegen/arm64/macro-assembler-arm64-inl.h | 11 +- .../codegen/arm64/macro-assembler-arm64.cc | 501 +- .../src/codegen/arm64/macro-assembler-arm64.h | 56 +- deps/v8/src/codegen/assembler.cc | 2 +- deps/v8/src/codegen/assembler.h | 5 +- deps/v8/src/codegen/atomic-memory-order.h | 7 +- deps/v8/src/codegen/background-merge-task.h | 2 + deps/v8/src/codegen/bailout-reason.h | 234 +- deps/v8/src/codegen/code-stub-assembler.cc | 862 ++- deps/v8/src/codegen/code-stub-assembler.h | 151 +- deps/v8/src/codegen/compiler.cc | 176 +- deps/v8/src/codegen/cpu-features.h | 21 +- .../define-code-stub-assembler-macros.inc | 7 +- .../src/codegen/external-reference-table.cc | 32 +- .../v8/src/codegen/external-reference-table.h | 7 +- deps/v8/src/codegen/external-reference.cc | 99 +- deps/v8/src/codegen/external-reference.h | 82 +- deps/v8/src/codegen/ia32/assembler-ia32.cc | 5 +- .../ia32/interface-descriptors-ia32-inl.h | 9 +- .../src/codegen/ia32/macro-assembler-ia32.cc | 221 +- .../src/codegen/ia32/macro-assembler-ia32.h | 24 +- .../src/codegen/interface-descriptors-inl.h | 47 +- deps/v8/src/codegen/interface-descriptors.h | 549 +- deps/v8/src/codegen/label.h | 1 + .../codegen/loong64/assembler-loong64-inl.h | 2 +- .../src/codegen/loong64/assembler-loong64.cc | 3920 +++++++++++- .../src/codegen/loong64/assembler-loong64.h | 727 ++- .../src/codegen/loong64/constants-loong64.cc | 40 + .../src/codegen/loong64/constants-loong64.h | 1796 +++++- .../interface-descriptors-loong64-inl.h | 30 +- .../loong64/macro-assembler-loong64.cc | 1392 ++-- .../codegen/loong64/macro-assembler-loong64.h | 285 +- .../v8/src/codegen/loong64/register-loong64.h | 47 +- deps/v8/src/codegen/maglev-safepoint-table.cc | 2 + .../v8/src/codegen/mips64/assembler-mips64.cc | 18 +- .../mips64/interface-descriptors-mips64-inl.h | 14 +- .../codegen/mips64/macro-assembler-mips64.cc | 353 +- .../codegen/mips64/macro-assembler-mips64.h | 40 +- .../src/codegen/optimized-compilation-info.cc | 3 + deps/v8/src/codegen/ppc/assembler-ppc.cc | 27 +- .../ppc/interface-descriptors-ppc-inl.h | 11 +- .../v8/src/codegen/ppc/macro-assembler-ppc.cc | 338 +- deps/v8/src/codegen/ppc/macro-assembler-ppc.h | 39 +- deps/v8/src/codegen/reloc-info-inl.h | 4 - deps/v8/src/codegen/reloc-info.cc | 19 +- .../src/codegen/riscv/assembler-riscv-inl.h | 6 - deps/v8/src/codegen/riscv/assembler-riscv.cc | 82 +- deps/v8/src/codegen/riscv/assembler-riscv.h | 56 +- .../src/codegen/riscv/base-assembler-riscv.h | 9 +- .../src/codegen/riscv/base-constants-riscv.h | 18 + .../src/codegen/riscv/constant-pool-riscv.cc | 131 +- .../src/codegen/riscv/constant-pool-riscv.h | 99 +- deps/v8/src/codegen/riscv/constant-riscv-v.h | 33 + .../src/codegen/riscv/extension-riscv-zicsr.h | 1 + .../src/codegen/riscv/extension-riscv-zimop.h | 8 +- .../riscv/interface-descriptors-riscv-inl.h | 14 +- .../codegen/riscv/macro-assembler-riscv.cc | 666 +- .../src/codegen/riscv/macro-assembler-riscv.h | 83 +- deps/v8/src/codegen/s390/assembler-s390.cc | 42 +- .../s390/interface-descriptors-s390-inl.h | 11 +- .../src/codegen/s390/macro-assembler-s390.cc | 280 +- .../src/codegen/s390/macro-assembler-s390.h | 29 +- .../macro-assembler-shared-ia32-x64.cc | 1 + deps/v8/src/codegen/signature.h | 29 +- .../turboshaft-builtins-assembler-inl.h | 395 +- deps/v8/src/codegen/x64/assembler-x64-inl.h | 108 + deps/v8/src/codegen/x64/assembler-x64.cc | 350 +- deps/v8/src/codegen/x64/assembler-x64.h | 239 +- .../x64/interface-descriptors-x64-inl.h | 18 +- .../v8/src/codegen/x64/macro-assembler-x64.cc | 496 +- deps/v8/src/codegen/x64/macro-assembler-x64.h | 75 +- deps/v8/src/codegen/x64/register-x64.h | 7 + deps/v8/src/common/checks.h | 19 + deps/v8/src/common/code-memory-access-inl.h | 14 + deps/v8/src/common/code-memory-access.cc | 37 +- deps/v8/src/common/code-memory-access.h | 30 +- deps/v8/src/common/globals.h | 287 +- deps/v8/src/common/message-template.h | 22 +- deps/v8/src/common/segmented-table-inl.h | 21 +- .../optimizing-compile-dispatcher.cc | 2 +- deps/v8/src/compiler/access-builder.cc | 102 +- deps/v8/src/compiler/access-builder.h | 16 +- deps/v8/src/compiler/access-info.cc | 70 +- .../backend/arm/code-generator-arm.cc | 11 +- .../backend/arm/instruction-selector-arm.cc | 5 +- .../backend/arm64/code-generator-arm64.cc | 666 +- .../backend/arm64/instruction-codes-arm64.h | 83 +- .../arm64/instruction-scheduler-arm64.cc | 85 +- .../arm64/instruction-selector-arm64.cc | 774 ++- .../compiler/backend/code-generator-impl.h | 15 + .../v8/src/compiler/backend/code-generator.cc | 16 +- deps/v8/src/compiler/backend/code-generator.h | 14 +- .../backend/ia32/code-generator-ia32.cc | 40 +- .../src/compiler/backend/instruction-codes.h | 3 +- .../compiler/backend/instruction-scheduler.cc | 5 + .../compiler/backend/instruction-selector.cc | 75 +- .../compiler/backend/instruction-selector.h | 36 +- deps/v8/src/compiler/backend/instruction.h | 6 +- .../backend/loong64/code-generator-loong64.cc | 2688 +++++++- .../loong64/instruction-codes-loong64.h | 22 +- .../loong64/instruction-selector-loong64.cc | 658 +- .../backend/mips64/code-generator-mips64.cc | 12 +- .../mips64/instruction-selector-mips64.cc | 36 +- .../backend/ppc/code-generator-ppc.cc | 46 +- .../backend/register-allocator-verifier.cc | 14 +- .../backend/riscv/code-generator-riscv.cc | 414 +- .../backend/riscv/instruction-codes-riscv.h | 6 +- .../riscv/instruction-scheduler-riscv.cc | 8 + .../riscv/instruction-selector-riscv.h | 101 +- .../riscv/instruction-selector-riscv32.cc | 5 + .../riscv/instruction-selector-riscv64.cc | 187 +- .../riscv/register-constraints-riscv.h | 4 +- .../backend/s390/code-generator-s390.cc | 15 +- deps/v8/src/compiler/backend/spill-placer.cc | 10 +- .../backend/x64/code-generator-x64.cc | 58 +- .../backend/x64/instruction-codes-x64.h | 3 +- .../backend/x64/instruction-scheduler-x64.cc | 1 + .../backend/x64/instruction-selector-x64.cc | 44 +- .../basic-block-call-graph-profiler.cc | 79 + ...or.h => basic-block-call-graph-profiler.h} | 18 +- .../src/compiler/basic-block-instrumentor.cc | 269 - deps/v8/src/compiler/bytecode-analysis.cc | 4 +- .../v8/src/compiler/bytecode-graph-builder.cc | 328 +- deps/v8/src/compiler/code-assembler.cc | 29 + deps/v8/src/compiler/code-assembler.h | 30 +- deps/v8/src/compiler/common-operator.cc | 9 + deps/v8/src/compiler/common-operator.h | 1 + .../src/compiler/compilation-dependencies.cc | 9 +- .../src/compiler/compilation-dependencies.h | 10 +- .../src/compiler/escape-analysis-reducer.cc | 17 + deps/v8/src/compiler/fast-api-calls.cc | 4 +- deps/v8/src/compiler/feedback-source.cc | 18 + deps/v8/src/compiler/feedback-source.h | 39 + deps/v8/src/compiler/graph-assembler.cc | 5 +- deps/v8/src/compiler/heap-refs.cc | 174 +- deps/v8/src/compiler/heap-refs.h | 30 +- deps/v8/src/compiler/js-call-reducer.cc | 97 +- deps/v8/src/compiler/js-create-lowering.cc | 98 +- deps/v8/src/compiler/js-create-lowering.h | 7 +- deps/v8/src/compiler/js-generic-lowering.cc | 32 +- deps/v8/src/compiler/js-graph.cc | 7 +- deps/v8/src/compiler/js-heap-broker.cc | 10 - deps/v8/src/compiler/js-heap-broker.h | 5 - deps/v8/src/compiler/js-inlining-heuristic.cc | 7 +- deps/v8/src/compiler/js-intrinsic-lowering.cc | 23 +- deps/v8/src/compiler/js-intrinsic-lowering.h | 2 + .../js-native-context-specialization.cc | 42 +- .../js-native-context-specialization.h | 12 +- deps/v8/src/compiler/js-operator.cc | 125 +- deps/v8/src/compiler/js-operator.h | 145 +- deps/v8/src/compiler/js-type-hint-lowering.cc | 126 +- deps/v8/src/compiler/js-type-hint-lowering.h | 11 +- deps/v8/src/compiler/js-typed-lowering.cc | 117 +- deps/v8/src/compiler/linkage.cc | 84 +- deps/v8/src/compiler/linkage.h | 23 +- .../v8/src/compiler/machine-graph-verifier.cc | 1 + deps/v8/src/compiler/machine-operator.cc | 27 + deps/v8/src/compiler/machine-operator.h | 4 + deps/v8/src/compiler/memory-lowering.cc | 2 +- deps/v8/src/compiler/node-properties.cc | 5 +- deps/v8/src/compiler/opcodes.h | 47 +- deps/v8/src/compiler/phase.h | 1 + deps/v8/src/compiler/pipeline-statistics.h | 16 + deps/v8/src/compiler/pipeline.cc | 130 +- .../src/compiler/property-access-builder.cc | 5 +- deps/v8/src/compiler/raw-machine-assembler.cc | 11 +- deps/v8/src/compiler/raw-machine-assembler.h | 9 +- deps/v8/src/compiler/representation-change.cc | 2 +- deps/v8/src/compiler/schedule.h | 2 - .../compiler/simplified-lowering-verifier.cc | 2 + deps/v8/src/compiler/simplified-lowering.cc | 28 +- .../compiler/simplified-operator-reducer.cc | 4 +- deps/v8/src/compiler/simplified-operator.cc | 21 +- deps/v8/src/compiler/simplified-operator.h | 16 +- .../src/compiler/turbofan-graph-visualizer.cc | 2 + deps/v8/src/compiler/turbofan-typer.cc | 28 +- deps/v8/src/compiler/turbofan-types.cc | 11 +- .../src/compiler/turboshaft/access-builder.h | 26 + deps/v8/src/compiler/turboshaft/assembler.h | 1136 ++-- .../turboshaft/branch-elimination-reducer.h | 8 +- .../compiler/turboshaft/build-graph-phase.cc | 5 +- .../turboshaft/builtin-call-descriptors.h | 136 +- .../compiler/turboshaft/builtin-compiler.cc | 2 +- .../turboshaft/call-descriptors-util.h | 46 +- ...de-elimination-and-simplification-phase.cc | 10 +- .../src/compiler/turboshaft/copying-phase.h | 56 +- .../turboshaft/dataview-lowering-reducer.h | 2 + .../turboshaft/decompression-optimization.cc | 2 +- .../turboshaft/define-assembler-macros.inc | 5 + .../duplication-optimization-reducer.h | 3 +- .../fast-api-call-lowering-reducer.h | 13 +- .../src/compiler/turboshaft/graph-builder.cc | 74 +- .../compiler/turboshaft/graph-visualizer.cc | 4 + deps/v8/src/compiler/turboshaft/graph.h | 42 +- deps/v8/src/compiler/turboshaft/index.h | 40 +- .../turboshaft/instruction-selection-phase.cc | 2 +- .../turboshaft/int64-lowering-reducer.h | 4 +- .../late-load-elimination-reducer.cc | 59 +- .../late-load-elimination-reducer.h | 169 +- .../load-store-simplification-reducer.h | 59 + .../load-store-verification-reducer.h | 117 + .../turboshaft/loop-peeling-reducer.h | 19 +- .../turboshaft/loop-unrolling-reducer.cc | 6 +- .../turboshaft/loop-unrolling-reducer.h | 57 +- .../turboshaft/machine-lowering-reducer-inl.h | 226 +- .../turboshaft/machine-optimization-reducer.h | 194 +- .../turboshaft/maglev-assert-types-reducer.h | 38 + .../turboshaft/memory-optimization-reducer.h | 47 +- deps/v8/src/compiler/turboshaft/operations.cc | 195 +- deps/v8/src/compiler/turboshaft/operations.h | 588 +- deps/v8/src/compiler/turboshaft/opmasks.h | 4 + deps/v8/src/compiler/turboshaft/phase.cc | 7 +- deps/v8/src/compiler/turboshaft/phase.h | 18 +- deps/v8/src/compiler/turboshaft/pipelines.h | 63 +- .../src/compiler/turboshaft/reducer-traits.h | 61 +- .../src/compiler/turboshaft/representations.h | 11 +- .../turboshaft/runtime-call-descriptors.h | 83 +- .../turboshaft/select-lowering-reducer.h | 42 +- .../simplified-optimization-reducer.h | 114 +- .../turbolev-early-lowering-reducer-inl.h | 58 +- .../turboshaft/turbolev-frontend-pipeline.cc | 325 +- .../turboshaft/turbolev-frontend-pipeline.h | 34 +- .../turboshaft/turbolev-graph-builder.cc | 1655 +++-- .../turboshaft/turbolev-graph-builder.h | 6 +- .../turboshaft/type-inference-analysis.h | 20 +- .../turboshaft/type-inference-reducer.h | 4 +- .../turboshaft/typed-optimizations-reducer.h | 12 +- deps/v8/src/compiler/turboshaft/typeswitch.h | 103 +- .../turboshaft/undef-assembler-macros.inc | 1 + deps/v8/src/compiler/turboshaft/use-map.cc | 9 +- .../turboshaft/value-numbering-reducer.h | 28 +- .../compiler/turboshaft/variable-reducer.h | 36 + .../turboshaft/wasm-assembler-helpers.h | 28 - .../wasm-gc-typed-optimization-reducer.h | 6 +- .../turboshaft/wasm-in-js-inlining-phase.cc | 5 +- .../wasm-in-js-inlining-reducer-inl.h | 180 +- .../turboshaft/wasm-lowering-reducer.h | 100 +- .../compiler/turboshaft/wasm-revec-reducer.cc | 139 +- .../compiler/turboshaft/wasm-revec-reducer.h | 77 +- .../turboshaft/wasm-shuffle-reducer.cc | 247 +- .../turboshaft/wasm-shuffle-reducer.h | 207 +- deps/v8/src/compiler/verifier.cc | 4 + .../src/compiler/wasm-compiler-definitions.cc | 20 +- .../src/compiler/wasm-compiler-definitions.h | 7 + deps/v8/src/compiler/wasm-compiler.cc | 16 +- deps/v8/src/compiler/wasm-compiler.h | 4 +- deps/v8/src/compiler/wasm-gc-lowering.cc | 8 +- deps/v8/src/compiler/wasm-graph-assembler.cc | 63 +- deps/v8/src/compiler/wasm-graph-assembler.h | 9 +- deps/v8/src/compiler/wasm-load-elimination.cc | 3 +- deps/v8/src/d8/d8.cc | 343 +- deps/v8/src/d8/d8.h | 23 +- deps/v8/src/d8/hardware-watchpoints.cc | 490 ++ deps/v8/src/d8/hardware-watchpoints.h | 36 + deps/v8/src/debug/debug-evaluate.cc | 255 +- deps/v8/src/debug/debug-interface.cc | 10 +- deps/v8/src/debug/debug-interface.h | 2 - deps/v8/src/debug/debug-wasm-objects.cc | 65 +- deps/v8/src/debug/debug.cc | 36 +- deps/v8/src/debug/debug.h | 12 +- deps/v8/src/deoptimizer/deoptimize-reason.h | 3 +- deps/v8/src/deoptimizer/deoptimizer.cc | 267 +- deps/v8/src/deoptimizer/deoptimizer.h | 94 +- .../deoptimizer/riscv/deoptimizer-riscv.cc | 1 + deps/v8/src/deoptimizer/translated-state.cc | 25 +- deps/v8/src/diagnostics/arm64/disasm-arm64.cc | 4 +- deps/v8/src/diagnostics/disasm.h | 2 +- deps/v8/src/diagnostics/disassembler.cc | 8 +- .../src/diagnostics/loong64/disasm-loong64.cc | 2027 ++++-- deps/v8/src/diagnostics/objects-debug.cc | 364 +- deps/v8/src/diagnostics/objects-printer.cc | 524 +- deps/v8/src/diagnostics/perf-jit.cc | 61 +- deps/v8/src/diagnostics/perf-jit.h | 2 - deps/v8/src/diagnostics/ppc/disasm-ppc.cc | 96 +- deps/v8/src/diagnostics/riscv/disasm-riscv.cc | 2 +- deps/v8/src/diagnostics/x64/disasm-x64.cc | 26 +- deps/v8/src/dumpling/OWNERS | 1 + deps/v8/src/dumpling/dumpling-manager.cc | 283 + deps/v8/src/dumpling/dumpling-manager.h | 181 + deps/v8/src/dumpling/object-dumping.cc | 523 ++ deps/v8/src/dumpling/object-dumping.h | 21 + deps/v8/src/execution/arguments.h | 1 + deps/v8/src/execution/arm/simulator-arm.cc | 107 +- .../arm64/pointer-authentication-arm64.h | 2 +- .../v8/src/execution/arm64/simulator-arm64.cc | 48 +- deps/v8/src/execution/frame-constants.h | 189 +- deps/v8/src/execution/frames-inl.h | 39 +- deps/v8/src/execution/frames.cc | 238 +- deps/v8/src/execution/frames.h | 180 +- deps/v8/src/execution/futex-emulation.cc | 68 +- deps/v8/src/execution/futex-emulation.h | 28 +- deps/v8/src/execution/isolate-data-fields.h | 209 + deps/v8/src/execution/isolate-data.h | 255 +- deps/v8/src/execution/isolate-inl.h | 2 +- deps/v8/src/execution/isolate.cc | 758 ++- deps/v8/src/execution/isolate.h | 92 +- deps/v8/src/execution/local-isolate.h | 4 + .../loong64/frame-constants-loong64.h | 6 +- .../execution/loong64/simulator-loong64.cc | 183 +- .../src/execution/loong64/simulator-loong64.h | 25 +- deps/v8/src/execution/messages.cc | 2 +- .../src/execution/mips64/simulator-mips64.cc | 39 +- .../execution/pointer-authentication-dummy.h | 2 +- .../v8/src/execution/pointer-authentication.h | 7 +- deps/v8/src/execution/ppc/simulator-ppc.cc | 73 +- deps/v8/src/execution/ppc/simulator-ppc.h | 9 + .../src/execution/riscv/shadow-stack-riscv.cc | 45 + .../src/execution/riscv/shadow-stack-riscv.h | 63 + .../v8/src/execution/riscv/simulator-riscv.cc | 487 +- deps/v8/src/execution/riscv/simulator-riscv.h | 98 +- deps/v8/src/execution/s390/simulator-s390.cc | 86 +- deps/v8/src/execution/s390/simulator-s390.h | 8 + deps/v8/src/execution/simulator.h | 18 +- deps/v8/src/execution/thread-local-top.h | 4 - deps/v8/src/execution/tiering-manager.cc | 6 +- .../externalize-string-extension.cc | 37 +- .../extensions/externalize-string-extension.h | 1 - deps/v8/src/flags/flag-definitions.h | 582 +- deps/v8/src/flags/flags-impl.h | 20 +- deps/v8/src/flags/flags.cc | 243 +- deps/v8/src/fuzzilli/cov.cc | 112 +- deps/v8/src/fuzzilli/cov.h | 1 - deps/v8/src/fuzzilli/fuzzilli.cc | 23 + deps/v8/src/handles/handles.h | 3 +- deps/v8/src/handles/traced-handles.cc | 3 +- deps/v8/src/heap/WRITE_BARRIER.md | 3 + deps/v8/src/heap/allocation-stats.h | 11 +- deps/v8/src/heap/array-buffer-sweeper.cc | 29 +- deps/v8/src/heap/array-buffer-sweeper.h | 12 +- deps/v8/src/heap/base-page-inl.h | 72 + ...{memory-chunk-metadata.cc => base-page.cc} | 26 +- .../{memory-chunk-metadata.h => base-page.h} | 128 +- deps/v8/src/heap/base/bytes.h | 4 + deps/v8/src/heap/code-range.cc | 117 +- deps/v8/src/heap/concurrent-marking.cc | 45 +- deps/v8/src/heap/concurrent-marking.h | 2 +- .../src/heap/conservative-stack-visitor-inl.h | 8 +- deps/v8/src/heap/cppgc-js/cpp-heap.cc | 10 +- deps/v8/src/heap/cppgc-js/cpp-snapshot.cc | 5 +- deps/v8/src/heap/cppgc/caged-heap.cc | 8 +- deps/v8/src/heap/cppgc/compactor.cc | 4 +- deps/v8/src/heap/cppgc/concurrent-marker.cc | 5 + deps/v8/src/heap/cppgc/gc-invoker.cc | 2 +- deps/v8/src/heap/cppgc/heap-config.h | 21 +- deps/v8/src/heap/cppgc/heap-object-header.h | 34 +- deps/v8/src/heap/cppgc/heap-page.h | 5 +- deps/v8/src/heap/cppgc/heap.cc | 2 +- deps/v8/src/heap/cppgc/marker.cc | 5 +- deps/v8/src/heap/cppgc/marking-state.cc | 5 +- deps/v8/src/heap/cppgc/marking-verifier.h | 8 +- deps/v8/src/heap/cppgc/marking-worklists.h | 11 +- deps/v8/src/heap/cppgc/name-trait.cc | 14 +- deps/v8/src/heap/cppgc/object-allocator.cc | 2 +- deps/v8/src/heap/cppgc/object-start-bitmap.h | 9 +- deps/v8/src/heap/cppgc/page-memory.cc | 25 +- deps/v8/src/heap/cppgc/page-memory.h | 4 - deps/v8/src/heap/cppgc/stats-collector.h | 4 + deps/v8/src/heap/cppgc/sweeper.cc | 30 +- deps/v8/src/heap/ephemeron-remembered-set.h | 13 +- deps/v8/src/heap/evacuation-verifier.cc | 4 +- deps/v8/src/heap/factory-base.cc | 43 +- deps/v8/src/heap/factory-base.h | 15 +- deps/v8/src/heap/factory.cc | 225 +- deps/v8/src/heap/factory.h | 24 +- deps/v8/src/heap/free-list-inl.h | 6 +- deps/v8/src/heap/free-list.cc | 30 +- deps/v8/src/heap/free-list.h | 21 +- deps/v8/src/heap/gc-callbacks.h | 9 +- deps/v8/src/heap/gc-tracer-inl.h | 29 +- deps/v8/src/heap/gc-tracer.cc | 96 +- deps/v8/src/heap/gc-tracer.h | 65 +- deps/v8/src/heap/heap-allocator.cc | 36 +- deps/v8/src/heap/heap-allocator.h | 2 - deps/v8/src/heap/heap-controller.cc | 314 +- deps/v8/src/heap/heap-controller.h | 207 +- deps/v8/src/heap/heap-inl.h | 53 +- deps/v8/src/heap/heap-layout-inl.h | 20 +- deps/v8/src/heap/heap-layout-tracer.cc | 17 +- deps/v8/src/heap/heap-layout-tracer.h | 5 +- deps/v8/src/heap/heap-layout.cc | 2 +- deps/v8/src/heap/heap-layout.h | 8 +- deps/v8/src/heap/heap-verifier.cc | 37 +- deps/v8/src/heap/heap-verifier.h | 6 +- deps/v8/src/heap/heap-visitor.h | 2 + deps/v8/src/heap/heap-write-barrier-inl.h | 27 +- deps/v8/src/heap/heap-write-barrier.cc | 81 +- deps/v8/src/heap/heap-write-barrier.h | 7 + deps/v8/src/heap/heap.cc | 1963 +++--- deps/v8/src/heap/heap.h | 624 +- deps/v8/src/heap/incremental-marking-job.cc | 30 +- deps/v8/src/heap/incremental-marking-job.h | 6 +- deps/v8/src/heap/incremental-marking.cc | 75 +- deps/v8/src/heap/incremental-marking.h | 6 +- deps/v8/src/heap/large-page-inl.h | 24 + deps/v8/src/heap/large-page-metadata-inl.h | 25 - deps/v8/src/heap/large-page-metadata.h | 69 - .../{large-page-metadata.cc => large-page.cc} | 29 +- deps/v8/src/heap/large-page.h | 60 + deps/v8/src/heap/large-spaces.cc | 82 +- deps/v8/src/heap/large-spaces.h | 34 +- deps/v8/src/heap/live-object-range-inl.h | 4 +- deps/v8/src/heap/live-object-range.h | 10 +- deps/v8/src/heap/local-heap.cc | 22 +- deps/v8/src/heap/local-heap.h | 8 +- deps/v8/src/heap/main-allocator.cc | 42 +- deps/v8/src/heap/mark-compact-inl.h | 17 +- deps/v8/src/heap/mark-compact.cc | 1522 +++-- deps/v8/src/heap/mark-compact.h | 45 +- deps/v8/src/heap/mark-sweep-utilities.cc | 27 +- deps/v8/src/heap/mark-sweep-utilities.h | 15 +- deps/v8/src/heap/marking-barrier-inl.h | 11 +- deps/v8/src/heap/marking-barrier.cc | 13 +- deps/v8/src/heap/marking-barrier.h | 6 +- deps/v8/src/heap/marking-inl.h | 69 +- deps/v8/src/heap/marking-state-inl.h | 6 +- deps/v8/src/heap/marking-state.h | 4 +- deps/v8/src/heap/marking-visitor-inl.h | 142 +- deps/v8/src/heap/marking-visitor.h | 3 - deps/v8/src/heap/marking.h | 4 +- deps/v8/src/heap/memory-allocator.cc | 172 +- deps/v8/src/heap/memory-allocator.h | 68 +- deps/v8/src/heap/memory-balancer.cc | 9 +- deps/v8/src/heap/memory-chunk-inl.h | 39 +- deps/v8/src/heap/memory-chunk-metadata-inl.h | 48 - deps/v8/src/heap/memory-chunk.cc | 44 +- deps/v8/src/heap/memory-chunk.h | 171 +- deps/v8/src/heap/memory-measurement.cc | 6 +- deps/v8/src/heap/memory-measurement.h | 2 +- deps/v8/src/heap/memory-pool.cc | 454 +- deps/v8/src/heap/memory-pool.h | 132 +- deps/v8/src/heap/memory-reducer.cc | 40 +- deps/v8/src/heap/memory-reducer.h | 4 - deps/v8/src/heap/minor-mark-sweep-inl.h | 2 +- deps/v8/src/heap/minor-mark-sweep.cc | 61 +- deps/v8/src/heap/minor-mark-sweep.h | 10 +- deps/v8/src/heap/mutable-page-inl.h | 107 + deps/v8/src/heap/mutable-page-metadata-inl.h | 135 - ...table-page-metadata.cc => mutable-page.cc} | 65 +- ...mutable-page-metadata.h => mutable-page.h} | 122 +- deps/v8/src/heap/new-spaces-inl.h | 14 +- deps/v8/src/heap/new-spaces.cc | 208 +- deps/v8/src/heap/new-spaces.h | 118 +- deps/v8/src/heap/normal-page-inl.h | 47 + .../heap/{page-metadata.cc => normal-page.cc} | 60 +- .../heap/{page-metadata.h => normal-page.h} | 80 +- deps/v8/src/heap/object-lock-inl.h | 10 +- deps/v8/src/heap/object-lock.h | 2 +- deps/v8/src/heap/object-stats.cc | 28 +- deps/v8/src/heap/object-stats.h | 4 +- deps/v8/src/heap/page-metadata-inl.h | 51 - deps/v8/src/heap/paged-spaces-inl.h | 10 +- deps/v8/src/heap/paged-spaces.cc | 120 +- deps/v8/src/heap/paged-spaces.h | 94 +- deps/v8/src/heap/parked-scope.h | 5 +- deps/v8/src/heap/pretenuring-handler-inl.h | 8 +- deps/v8/src/heap/pretenuring-handler.cc | 3 +- deps/v8/src/heap/read-only-heap-inl.h | 7 +- deps/v8/src/heap/read-only-heap.cc | 56 +- deps/v8/src/heap/read-only-heap.h | 22 +- deps/v8/src/heap/read-only-promotion.cc | 33 +- deps/v8/src/heap/read-only-spaces.cc | 157 +- deps/v8/src/heap/read-only-spaces.h | 51 +- deps/v8/src/heap/remembered-set.h | 56 +- deps/v8/src/heap/safepoint.cc | 34 +- deps/v8/src/heap/safepoint.h | 9 +- deps/v8/src/heap/scavenger.cc | 359 +- deps/v8/src/heap/setup-heap-internal.cc | 134 +- deps/v8/src/heap/slot-set.h | 2 +- deps/v8/src/heap/spaces-inl.h | 37 +- deps/v8/src/heap/spaces.cc | 2 +- deps/v8/src/heap/spaces.h | 72 +- deps/v8/src/heap/sweeper.cc | 221 +- deps/v8/src/heap/sweeper.h | 72 +- deps/v8/src/heap/trusted-range.cc | 12 +- .../young-generation-marking-visitor-inl.h | 49 +- .../heap/young-generation-marking-visitor.h | 12 +- deps/v8/src/heap/zapping.cc | 4 +- deps/v8/src/ic/accessor-assembler.cc | 566 +- deps/v8/src/ic/accessor-assembler.h | 174 +- deps/v8/src/ic/handler-configuration-inl.h | 24 +- deps/v8/src/ic/handler-configuration.cc | 130 +- deps/v8/src/ic/handler-configuration.h | 47 +- deps/v8/src/ic/ic.cc | 537 +- deps/v8/src/ic/ic.h | 18 +- deps/v8/src/ic/keyed-store-generic.cc | 39 +- deps/v8/src/init/OWNERS | 1 + deps/v8/src/init/bootstrapper.cc | 166 +- deps/v8/src/init/heap-symbols.h | 146 +- deps/v8/src/init/isolate-group.cc | 111 +- deps/v8/src/init/isolate-group.h | 39 +- deps/v8/src/init/v8.cc | 93 +- .../src/inspector/v8-debugger-agent-impl.cc | 1 - .../src/inspector/v8-profiler-agent-impl.cc | 6 +- .../v8/src/inspector/v8-runtime-agent-impl.cc | 102 +- deps/v8/src/inspector/value-mirror.cc | 12 + .../src/interpreter/bytecode-array-builder.cc | 33 +- .../src/interpreter/bytecode-array-builder.h | 9 +- .../interpreter/bytecode-array-iterator.cc | 168 +- .../src/interpreter/bytecode-array-iterator.h | 68 +- .../src/interpreter/bytecode-array-writer.cc | 112 +- .../src/interpreter/bytecode-array-writer.h | 7 +- deps/v8/src/interpreter/bytecode-decoder.cc | 69 +- deps/v8/src/interpreter/bytecode-decoder.h | 9 + deps/v8/src/interpreter/bytecode-generator.cc | 237 +- deps/v8/src/interpreter/bytecode-generator.h | 26 +- deps/v8/src/interpreter/bytecode-jump-table.h | 13 +- deps/v8/src/interpreter/bytecode-operands.h | 25 +- deps/v8/src/interpreter/bytecodes.h | 303 +- .../src/interpreter/constant-array-builder.cc | 3 +- .../src/interpreter/control-flow-builders.cc | 3 +- .../src/interpreter/interpreter-assembler.cc | 127 +- .../src/interpreter/interpreter-assembler.h | 37 +- .../interpreter/interpreter-generator-tsa.cc | 12 +- .../src/interpreter/interpreter-generator.cc | 200 +- deps/v8/src/interpreter/interpreter.cc | 16 +- .../prototype-assignment-sequence-builder.cc | 2 +- .../prototype-assignment-sequence-builder.h | 14 +- deps/v8/src/json/json-parser.cc | 110 +- deps/v8/src/json/json-parser.h | 121 +- deps/v8/src/json/json-stringifier.cc | 22 + .../libplatform/tracing/tracing-controller.cc | 47 +- deps/v8/src/libsampler/sampler.cc | 3 +- deps/v8/src/logging/counters-definitions.h | 5 +- deps/v8/src/logging/log.cc | 29 +- deps/v8/src/logging/runtime-call-stats.h | 18 +- .../src/maglev/arm/maglev-assembler-arm-inl.h | 71 +- .../v8/src/maglev/arm/maglev-assembler-arm.cc | 28 +- deps/v8/src/maglev/arm/maglev-ir-arm.cc | 341 +- .../maglev/arm64/maglev-assembler-arm64-inl.h | 69 +- .../maglev/arm64/maglev-assembler-arm64.cc | 25 +- deps/v8/src/maglev/arm64/maglev-ir-arm64.cc | 348 +- deps/v8/src/maglev/hamt.h | 513 ++ .../loong64/maglev-assembler-loong64-inl.h | 1813 ++++++ .../loong64/maglev-assembler-loong64.cc | 690 ++ .../src/maglev/loong64/maglev-ir-loong64.cc | 1253 ++++ deps/v8/src/maglev/maglev-assembler-inl.h | 33 +- deps/v8/src/maglev/maglev-assembler.cc | 148 +- deps/v8/src/maglev/maglev-assembler.h | 62 +- deps/v8/src/maglev/maglev-code-generator.cc | 41 +- deps/v8/src/maglev/maglev-compilation-info.cc | 13 +- deps/v8/src/maglev/maglev-compilation-info.h | 113 +- deps/v8/src/maglev/maglev-compiler.cc | 5 +- .../src/maglev/maglev-deopt-frame-visitor.h | 12 +- deps/v8/src/maglev/maglev-graph-builder.cc | 3828 ++++++----- deps/v8/src/maglev/maglev-graph-builder.h | 381 +- deps/v8/src/maglev/maglev-graph-labeller.h | 25 + deps/v8/src/maglev/maglev-graph-optimizer.cc | 1014 ++- deps/v8/src/maglev/maglev-graph-optimizer.h | 52 +- deps/v8/src/maglev/maglev-graph-printer.cc | 82 +- deps/v8/src/maglev/maglev-graph-printer.h | 4 + deps/v8/src/maglev/maglev-graph-processor.h | 5 + deps/v8/src/maglev/maglev-graph.cc | 19 +- deps/v8/src/maglev/maglev-graph.h | 40 +- deps/v8/src/maglev/maglev-inlining.cc | 122 +- deps/v8/src/maglev/maglev-inlining.h | 12 +- .../maglev/maglev-interpreter-frame-state.cc | 73 +- .../maglev/maglev-interpreter-frame-state.h | 11 +- deps/v8/src/maglev/maglev-ir-inl.h | 25 +- deps/v8/src/maglev/maglev-ir.cc | 2871 +++++---- deps/v8/src/maglev/maglev-ir.h | 5596 ++++++---------- deps/v8/src/maglev/maglev-kna-processor.h | 156 +- .../src/maglev/maglev-known-node-aspects.cc | 79 +- .../v8/src/maglev/maglev-known-node-aspects.h | 268 +- deps/v8/src/maglev/maglev-node-type.cc | 168 + deps/v8/src/maglev/maglev-node-type.h | 288 + .../maglev-phi-representation-selector.cc | 1000 ++- .../maglev-phi-representation-selector.h | 93 +- ...maglev-post-hoc-optimizations-processors.h | 43 +- deps/v8/src/maglev/maglev-range-analysis.h | 684 +- .../src/maglev/maglev-range-verification.cc | 65 + .../v8/src/maglev/maglev-range-verification.h | 38 + deps/v8/src/maglev/maglev-range.h | 403 ++ deps/v8/src/maglev/maglev-reducer-inl.h | 997 ++- deps/v8/src/maglev/maglev-reducer.h | 153 +- deps/v8/src/maglev/maglev-regalloc.cc | 50 +- deps/v8/src/maglev/maglev-regalloc.h | 2 +- deps/v8/src/maglev/maglev-truncation.cc | 80 +- deps/v8/src/maglev/maglev-truncation.h | 126 +- .../src/maglev/ppc/maglev-assembler-ppc-inl.h | 150 +- .../v8/src/maglev/ppc/maglev-assembler-ppc.cc | 27 +- deps/v8/src/maglev/ppc/maglev-ir-ppc.cc | 422 +- .../maglev/riscv/maglev-assembler-riscv-inl.h | 119 +- .../maglev/riscv/maglev-assembler-riscv.cc | 35 +- deps/v8/src/maglev/riscv/maglev-ir-riscv.cc | 361 +- .../maglev/s390/maglev-assembler-s390-inl.h | 127 +- .../src/maglev/s390/maglev-assembler-s390.cc | 24 +- deps/v8/src/maglev/s390/maglev-ir-s390.cc | 343 +- .../src/maglev/x64/maglev-assembler-x64-inl.h | 61 +- .../v8/src/maglev/x64/maglev-assembler-x64.cc | 21 +- deps/v8/src/maglev/x64/maglev-ir-x64.cc | 343 +- deps/v8/src/numbers/math-random.cc | 5 +- deps/v8/src/objects/allocation-site-inl.h | 17 - deps/v8/src/objects/allocation-site.h | 18 +- deps/v8/src/objects/api-callbacks-inl.h | 128 +- deps/v8/src/objects/api-callbacks.h | 71 +- deps/v8/src/objects/api-callbacks.tq | 13 +- deps/v8/src/objects/arguments-inl.h | 12 +- deps/v8/src/objects/arguments.h | 8 +- deps/v8/src/objects/backing-store.cc | 72 +- deps/v8/src/objects/backing-store.h | 51 +- deps/v8/src/objects/bytecode-array-inl.h | 15 + deps/v8/src/objects/bytecode-array.cc | 29 +- deps/v8/src/objects/bytecode-array.h | 11 + deps/v8/src/objects/call-site-info-inl.h | 52 +- deps/v8/src/objects/call-site-info.cc | 10 +- deps/v8/src/objects/call-site-info.h | 55 +- deps/v8/src/objects/call-site-info.tq | 1 + deps/v8/src/objects/casting.h | 140 +- deps/v8/src/objects/code-inl.h | 5 +- deps/v8/src/objects/code.cc | 14 +- deps/v8/src/objects/contexts-inl.h | 35 +- deps/v8/src/objects/contexts.cc | 8 - deps/v8/src/objects/contexts.h | 32 +- deps/v8/src/objects/contexts.tq | 5 +- deps/v8/src/objects/debug-objects-inl.h | 1 + deps/v8/src/objects/deoptimization-data-inl.h | 4 +- deps/v8/src/objects/dependent-code.cc | 3 +- deps/v8/src/objects/descriptor-array-inl.h | 52 +- deps/v8/src/objects/descriptor-array.h | 49 +- deps/v8/src/objects/descriptor-array.tq | 1 + deps/v8/src/objects/dictionary-inl.h | 45 +- deps/v8/src/objects/dictionary.h | 13 +- deps/v8/src/objects/elements-kind.h | 12 +- deps/v8/src/objects/elements.cc | 703 +- deps/v8/src/objects/elements.h | 6 +- deps/v8/src/objects/feedback-vector-inl.h | 51 + deps/v8/src/objects/feedback-vector.cc | 46 + deps/v8/src/objects/feedback-vector.h | 8 + deps/v8/src/objects/fixed-array-inl.h | 109 +- deps/v8/src/objects/fixed-array.cc | 7 +- deps/v8/src/objects/fixed-array.h | 100 +- deps/v8/src/objects/function-kind.h | 38 +- deps/v8/src/objects/hash-table-inl.h | 8 + deps/v8/src/objects/hash-table.h | 1 + deps/v8/src/objects/heap-object-inl.h | 25 +- deps/v8/src/objects/heap-object.h | 81 +- deps/v8/src/objects/hole.h | 19 +- deps/v8/src/objects/hole.tq | 6 +- deps/v8/src/objects/instance-type.h | 2 + deps/v8/src/objects/internal-index.h | 4 +- deps/v8/src/objects/intl-objects.cc | 138 +- deps/v8/src/objects/intl-objects.h | 3 +- deps/v8/src/objects/js-array-buffer-inl.h | 90 +- deps/v8/src/objects/js-array-buffer.cc | 146 +- deps/v8/src/objects/js-array-buffer.h | 103 +- deps/v8/src/objects/js-array-buffer.tq | 22 +- deps/v8/src/objects/js-array.h | 11 +- .../src/objects/js-atomics-synchronization.cc | 898 +-- .../src/objects/js-atomics-synchronization.h | 102 +- deps/v8/src/objects/js-collator.cc | 48 +- deps/v8/src/objects/js-date-time-format.cc | 179 +- deps/v8/src/objects/js-duration-format.cc | 138 +- deps/v8/src/objects/js-function-inl.h | 101 +- deps/v8/src/objects/js-function.cc | 26 +- deps/v8/src/objects/js-function.h | 16 +- deps/v8/src/objects/js-generator.tq | 4 + deps/v8/src/objects/js-iterator-helpers-inl.h | 2 + deps/v8/src/objects/js-iterator-helpers.h | 44 +- deps/v8/src/objects/js-iterator-helpers.tq | 37 +- deps/v8/src/objects/js-locale.cc | 10 +- deps/v8/src/objects/js-number-format.cc | 83 +- deps/v8/src/objects/js-number-format.h | 4 +- deps/v8/src/objects/js-objects-inl.h | 10 +- deps/v8/src/objects/js-objects.cc | 252 +- deps/v8/src/objects/js-objects.h | 7 +- deps/v8/src/objects/js-objects.tq | 25 +- deps/v8/src/objects/js-regexp-inl.h | 1 + .../v8/src/objects/js-relative-time-format.cc | 3 +- deps/v8/src/objects/js-segment-iterator.cc | 15 +- deps/v8/src/objects/js-segment-iterator.h | 2 +- deps/v8/src/objects/js-segments.h | 2 +- deps/v8/src/objects/js-temporal-objects-inl.h | 15 +- deps/v8/src/objects/js-temporal-objects.cc | 95 +- deps/v8/src/objects/js-temporal-objects.h | 2 +- deps/v8/src/objects/js-weak-refs-inl.h | 2 +- deps/v8/src/objects/keys.cc | 108 +- deps/v8/src/objects/keys.h | 25 +- deps/v8/src/objects/literal-objects-inl.h | 124 +- deps/v8/src/objects/literal-objects.h | 155 +- deps/v8/src/objects/literal-objects.tq | 11 +- deps/v8/src/objects/lookup-inl.h | 39 +- deps/v8/src/objects/lookup.cc | 60 +- deps/v8/src/objects/lookup.h | 28 +- deps/v8/src/objects/managed.h | 6 + deps/v8/src/objects/map-inl.h | 57 +- deps/v8/src/objects/map-updater.cc | 69 +- deps/v8/src/objects/map-updater.h | 7 + deps/v8/src/objects/map.cc | 233 +- deps/v8/src/objects/map.h | 46 +- deps/v8/src/objects/map.tq | 23 +- deps/v8/src/objects/microtask-inl.h | 33 +- deps/v8/src/objects/microtask.h | 74 +- deps/v8/src/objects/microtask.tq | 3 + deps/v8/src/objects/module-inl.h | 18 +- deps/v8/src/objects/module.cc | 115 +- deps/v8/src/objects/module.h | 51 +- deps/v8/src/objects/module.tq | 6 +- deps/v8/src/objects/name-inl.h | 55 +- deps/v8/src/objects/name.h | 102 +- deps/v8/src/objects/name.tq | 11 +- deps/v8/src/objects/object-list-macros.h | 8 + deps/v8/src/objects/object-macros.h | 165 +- deps/v8/src/objects/object-type.cc | 19 +- .../objects/objects-body-descriptors-inl.h | 75 +- .../v8/src/objects/objects-body-descriptors.h | 16 +- deps/v8/src/objects/objects-definitions.h | 2 + deps/v8/src/objects/objects-inl.h | 327 +- deps/v8/src/objects/objects.cc | 361 +- deps/v8/src/objects/objects.h | 20 +- deps/v8/src/objects/oddball.h | 4 + deps/v8/src/objects/off-heap-hash-table-inl.h | 12 + deps/v8/src/objects/off-heap-hash-table.h | 2 + deps/v8/src/objects/ordered-hash-table.cc | 4 - deps/v8/src/objects/promise-inl.h | 137 +- deps/v8/src/objects/promise.h | 191 +- deps/v8/src/objects/promise.tq | 23 +- .../objects/property-descriptor-object-inl.h | 24 +- .../src/objects/property-descriptor-object.h | 36 +- .../src/objects/property-descriptor-object.tq | 1 + deps/v8/src/objects/property.cc | 4 +- deps/v8/src/objects/property.h | 1 + deps/v8/src/objects/prototype-info-inl.h | 3 +- deps/v8/src/objects/prototype-info.h | 2 + deps/v8/src/objects/prototype-info.tq | 4 + deps/v8/src/objects/scope-info.cc | 28 +- deps/v8/src/objects/scope-info.h | 3 +- deps/v8/src/objects/scope-info.tq | 5 + .../v8/src/objects/shared-function-info-inl.h | 98 +- deps/v8/src/objects/shared-function-info.cc | 28 +- deps/v8/src/objects/shared-function-info.h | 17 +- deps/v8/src/objects/shared-function-info.tq | 5 +- deps/v8/src/objects/slots-inl.h | 51 +- deps/v8/src/objects/slots.h | 93 +- deps/v8/src/objects/smi.h | 13 + deps/v8/src/objects/source-text-module.cc | 197 +- deps/v8/src/objects/source-text-module.h | 12 +- deps/v8/src/objects/string-inl.h | 32 +- deps/v8/src/objects/string-table.cc | 13 + deps/v8/src/objects/string-table.h | 1 + deps/v8/src/objects/string.cc | 29 +- deps/v8/src/objects/string.h | 1 + deps/v8/src/objects/struct-inl.h | 14 + deps/v8/src/objects/struct.h | 6 + .../v8/src/objects/swiss-hash-table-helpers.h | 6 +- .../src/objects/swiss-hash-table-helpers.tq | 6 +- deps/v8/src/objects/synthetic-module.cc | 11 +- deps/v8/src/objects/tagged-field.h | 33 +- deps/v8/src/objects/tagged-impl.cc | 9 +- deps/v8/src/objects/template-objects-inl.h | 16 +- deps/v8/src/objects/template-objects.h | 25 +- deps/v8/src/objects/template-objects.tq | 1 + deps/v8/src/objects/templates-inl.h | 47 +- deps/v8/src/objects/templates.h | 23 +- deps/v8/src/objects/templates.tq | 6 +- deps/v8/src/objects/transitions-inl.h | 12 +- deps/v8/src/objects/transitions.cc | 29 +- deps/v8/src/objects/transitions.h | 14 +- deps/v8/src/objects/trusted-object-inl.h | 54 +- deps/v8/src/objects/trusted-object.h | 40 +- deps/v8/src/objects/trusted-pointer-inl.h | 177 + deps/v8/src/objects/trusted-pointer.h | 165 + deps/v8/src/objects/value-serializer.cc | 74 +- deps/v8/src/objects/value-serializer.h | 3 +- deps/v8/src/objects/visitors.h | 1 + deps/v8/src/objects/waiter-queue-node.cc | 113 +- deps/v8/src/objects/waiter-queue-node.h | 43 +- deps/v8/src/parsing/expression-scope.h | 16 +- deps/v8/src/parsing/parser-base.h | 28 +- deps/v8/src/parsing/parser.cc | 75 +- deps/v8/src/parsing/parser.h | 7 +- deps/v8/src/parsing/preparser.cc | 24 +- deps/v8/src/parsing/preparser.h | 16 +- .../src/parsing/scanner-character-streams.cc | 6 +- deps/v8/src/parsing/token.h | 4 + .../src/profiler/heap-snapshot-generator.cc | 136 +- .../v8/src/profiler/heap-snapshot-generator.h | 12 +- deps/v8/src/profiler/profile-generator.cc | 43 +- deps/v8/src/profiler/profiler-listener.cc | 2 +- .../v8/src/profiler/sampling-heap-profiler.cc | 4 +- deps/v8/src/profiler/strings-storage.cc | 2 +- deps/v8/src/profiler/tick-sample.cc | 10 +- deps/v8/src/profiler/tracing-cpu-profiler.cc | 6 +- .../regexp/arm/regexp-macro-assembler-arm.cc | 92 +- .../regexp/arm/regexp-macro-assembler-arm.h | 9 +- .../arm64/regexp-macro-assembler-arm64.cc | 415 +- .../arm64/regexp-macro-assembler-arm64.h | 18 +- .../experimental/experimental-compiler.cc | 15 +- .../ia32/regexp-macro-assembler-ia32.cc | 126 +- .../regexp/ia32/regexp-macro-assembler-ia32.h | 9 +- .../loong64/regexp-macro-assembler-loong64.cc | 86 +- .../loong64/regexp-macro-assembler-loong64.h | 9 +- .../mips64/regexp-macro-assembler-mips64.cc | 86 +- .../mips64/regexp-macro-assembler-mips64.h | 9 +- .../regexp/ppc/regexp-macro-assembler-ppc.cc | 96 +- .../regexp/ppc/regexp-macro-assembler-ppc.h | 9 +- deps/v8/src/regexp/regexp-ast-printer.cc | 265 + deps/v8/src/regexp/regexp-ast-printer.h | 58 + deps/v8/src/regexp/regexp-ast.cc | 239 +- deps/v8/src/regexp/regexp-ast.h | 44 +- .../v8/src/regexp/regexp-bytecode-analysis.cc | 516 ++ deps/v8/src/regexp/regexp-bytecode-analysis.h | 117 + .../regexp/regexp-bytecode-generator-inl.h | 91 +- .../src/regexp/regexp-bytecode-generator.cc | 540 +- .../v8/src/regexp/regexp-bytecode-generator.h | 150 +- .../src/regexp/regexp-bytecode-iterator-inl.h | 5 +- .../v8/src/regexp/regexp-bytecode-iterator.cc | 17 +- deps/v8/src/regexp/regexp-bytecode-iterator.h | 1 + .../v8/src/regexp/regexp-bytecode-peephole.cc | 1271 ++-- deps/v8/src/regexp/regexp-bytecode-peephole.h | 8 +- deps/v8/src/regexp/regexp-bytecodes-inl.h | 231 +- deps/v8/src/regexp/regexp-bytecodes.cc | 92 +- deps/v8/src/regexp/regexp-bytecodes.h | 655 +- deps/v8/src/regexp/regexp-code-generator.cc | 329 +- deps/v8/src/regexp/regexp-code-generator.h | 4 + deps/v8/src/regexp/regexp-compiler-tonode.cc | 388 +- deps/v8/src/regexp/regexp-compiler.cc | 1041 ++- deps/v8/src/regexp/regexp-compiler.h | 106 +- deps/v8/src/regexp/regexp-dotprinter.cc | 11 +- deps/v8/src/regexp/regexp-dotprinter.h | 2 + deps/v8/src/regexp/regexp-graph-printer.cc | 663 ++ deps/v8/src/regexp/regexp-graph-printer.h | 92 + deps/v8/src/regexp/regexp-interpreter.cc | 932 +-- .../regexp/regexp-macro-assembler-tracer.cc | 72 +- .../regexp/regexp-macro-assembler-tracer.h | 12 +- deps/v8/src/regexp/regexp-macro-assembler.cc | 69 +- deps/v8/src/regexp/regexp-macro-assembler.h | 87 +- deps/v8/src/regexp/regexp-node-printer.cc | 235 + deps/v8/src/regexp/regexp-node-printer.h | 45 + deps/v8/src/regexp/regexp-nodes.h | 221 +- deps/v8/src/regexp/regexp-parser.cc | 15 +- deps/v8/src/regexp/regexp-printer.cc | 44 + deps/v8/src/regexp/regexp-printer.h | 183 + deps/v8/src/regexp/regexp.cc | 99 +- .../riscv/regexp-macro-assembler-riscv.cc | 104 +- .../riscv/regexp-macro-assembler-riscv.h | 9 +- .../s390/regexp-macro-assembler-s390.cc | 94 +- .../regexp/s390/regexp-macro-assembler-s390.h | 9 +- .../regexp/x64/regexp-macro-assembler-x64.cc | 612 +- .../regexp/x64/regexp-macro-assembler-x64.h | 48 +- deps/v8/src/roots/roots-inl.h | 30 +- deps/v8/src/roots/roots.h | 35 +- deps/v8/src/roots/static-roots-intl-nowasm.h | 1779 +++--- deps/v8/src/roots/static-roots-intl-wasm.h | 1815 +++--- .../v8/src/roots/static-roots-nointl-nowasm.h | 1495 ++--- deps/v8/src/roots/static-roots-nointl-wasm.h | 1531 ++--- deps/v8/src/runtime/runtime-atomics.cc | 7 +- deps/v8/src/runtime/runtime-collections.cc | 4 +- deps/v8/src/runtime/runtime-compiler.cc | 174 +- deps/v8/src/runtime/runtime-debug.cc | 44 + deps/v8/src/runtime/runtime-forin.cc | 13 +- deps/v8/src/runtime/runtime-function.cc | 4 +- deps/v8/src/runtime/runtime-internal.cc | 4 + deps/v8/src/runtime/runtime-literals.cc | 179 +- deps/v8/src/runtime/runtime-numbers.cc | 17 +- deps/v8/src/runtime/runtime-object.cc | 26 +- deps/v8/src/runtime/runtime-regexp.cc | 1 - deps/v8/src/runtime/runtime-scopes.cc | 10 +- deps/v8/src/runtime/runtime-symbol.cc | 7 +- deps/v8/src/runtime/runtime-test-wasm.cc | 111 +- deps/v8/src/runtime/runtime-test.cc | 567 +- deps/v8/src/runtime/runtime-trace.cc | 75 +- deps/v8/src/runtime/runtime-typedarray.cc | 4 +- deps/v8/src/runtime/runtime-wasm.cc | 590 +- deps/v8/src/runtime/runtime.cc | 19 +- deps/v8/src/runtime/runtime.h | 98 +- deps/v8/src/sandbox/README.md | 2 + deps/v8/src/sandbox/bytecode-verifier.cc | 271 + deps/v8/src/sandbox/bytecode-verifier.h | 52 + deps/v8/src/sandbox/check.h | 9 +- deps/v8/src/sandbox/code-pointer-table-inl.h | 10 +- deps/v8/src/sandbox/code-pointer-table.h | 2 +- deps/v8/src/sandbox/code-sandboxing-mode.h | 13 + deps/v8/src/sandbox/cppheap-pointer-inl.h | 6 +- .../src/sandbox/cppheap-pointer-table-inl.h | 3 +- deps/v8/src/sandbox/cppheap-pointer-table.cc | 45 + deps/v8/src/sandbox/cppheap-pointer-table.h | 130 +- .../src/sandbox/external-entity-table-inl.h | 56 +- deps/v8/src/sandbox/external-entity-table.h | 13 + .../src/sandbox/external-pointer-table-inl.h | 3 +- deps/v8/src/sandbox/external-pointer-table.cc | 53 +- deps/v8/src/sandbox/external-pointer-table.h | 123 +- deps/v8/src/sandbox/external-strings-cage.cc | 131 + deps/v8/src/sandbox/external-strings-cage.h | 106 + deps/v8/src/sandbox/hardware-support.cc | 99 +- deps/v8/src/sandbox/hardware-support.h | 41 +- deps/v8/src/sandbox/indirect-pointer-inl.h | 63 +- deps/v8/src/sandbox/indirect-pointer-tag.h | 344 +- deps/v8/src/sandbox/indirect-pointer.h | 5 +- deps/v8/src/sandbox/isolate-inl.h | 12 +- deps/v8/src/sandbox/isolate.h | 7 +- deps/v8/src/sandbox/js-dispatch-table-inl.h | 42 +- deps/v8/src/sandbox/js-dispatch-table.cc | 44 - deps/v8/src/sandbox/js-dispatch-table.h | 33 +- deps/v8/src/sandbox/sandbox.cc | 15 +- deps/v8/src/sandbox/sandbox.h | 5 +- deps/v8/src/sandbox/sandboxable-thread.cc | 44 + deps/v8/src/sandbox/sandboxable-thread.h | 33 + deps/v8/src/sandbox/tagged-payload.h | 125 +- deps/v8/src/sandbox/testing.cc | 655 +- deps/v8/src/sandbox/testing.h | 55 + deps/v8/src/sandbox/trusted-pointer-scope.cc | 4 +- .../src/sandbox/trusted-pointer-table-inl.h | 95 +- deps/v8/src/sandbox/trusted-pointer-table.h | 63 +- deps/v8/src/snapshot/code-serializer.cc | 4 +- deps/v8/src/snapshot/deserializer.cc | 42 +- deps/v8/src/snapshot/deserializer.h | 12 +- .../platform-embedded-file-writer-aix.cc | 14 +- .../platform-embedded-file-writer-generic.cc | 12 +- .../platform-embedded-file-writer-mac.cc | 14 +- .../platform-embedded-file-writer-win.cc | 14 +- deps/v8/src/snapshot/object-deserializer.cc | 4 +- .../v8/src/snapshot/read-only-deserializer.cc | 43 +- deps/v8/src/snapshot/read-only-serializer.cc | 74 +- .../src/snapshot/serializer-deserializer.cc | 12 - .../v8/src/snapshot/serializer-deserializer.h | 5 - deps/v8/src/snapshot/serializer.cc | 33 +- deps/v8/src/snapshot/startup-deserializer.cc | 19 +- deps/v8/src/snapshot/startup-serializer.cc | 26 +- deps/v8/src/snapshot/startup-serializer.h | 1 + deps/v8/src/snapshot/static-roots-gen.cc | 16 +- deps/v8/src/strings/OWNERS | 1 + .../strings/owning-external-string-resource.h | 98 + deps/v8/src/strings/string-hasher-inl.h | 22 +- deps/v8/src/strings/string-hasher.cc | 28 + deps/v8/src/strings/string-hasher.h | 6 + deps/v8/src/strings/string-stream.cc | 3 +- deps/v8/src/strings/unicode-inl.h | 20 +- deps/v8/src/strings/unicode.cc | 39 + deps/v8/src/strings/unicode.h | 8 +- deps/v8/src/strings/uri.cc | 200 +- deps/v8/src/tools/dumpling/dumpling_v8.patch | 5638 ----------------- deps/v8/src/torque/ast-visitor.h | 518 ++ deps/v8/src/torque/ast.h | 38 +- deps/v8/src/torque/cc-generator.cc | 4 +- .../torque/class-debug-reader-generator.cc | 7 +- deps/v8/src/torque/constants.h | 3 +- deps/v8/src/torque/csa-generator.cc | 4 +- deps/v8/src/torque/declarable.cc | 7 +- deps/v8/src/torque/declarable.h | 15 +- deps/v8/src/torque/declaration-visitor.cc | 6 +- deps/v8/src/torque/earley-parser.cc | 6 +- deps/v8/src/torque/global-context.h | 32 +- deps/v8/src/torque/implementation-visitor.cc | 71 +- deps/v8/src/torque/implementation-visitor.h | 6 +- deps/v8/src/torque/runtime-support.h | 37 +- deps/v8/src/torque/torque-compiler.cc | 19 +- deps/v8/src/torque/torque-compiler.h | 3 + deps/v8/src/torque/torque-parser.cc | 86 +- deps/v8/src/torque/torque-parser.h | 5 + deps/v8/src/torque/torque.cc | 6 + deps/v8/src/torque/tsa-generator.cc | 1477 +++++ deps/v8/src/torque/tsa-generator.h | 16 + deps/v8/src/torque/type-oracle.h | 6 - deps/v8/src/torque/utils.cc | 21 +- deps/v8/src/torque/utils.h | 9 +- deps/v8/src/tracing/code-data-source.cc | 7 +- deps/v8/src/tracing/code-data-source.h | 5 +- deps/v8/src/tracing/code-trace-context.h | 2 +- deps/v8/src/tracing/perfetto-logger.cc | 5 +- deps/v8/src/tracing/perfetto-sdk.h | 42 + deps/v8/src/tracing/perfetto-utils.cc | 12 +- deps/v8/src/tracing/trace-categories.h | 9 +- deps/v8/src/tracing/trace-event.h | 19 +- deps/v8/src/tracing/traced-value.cc | 5 +- deps/v8/src/trap-handler/handler-shared.cc | 4 + deps/v8/src/utils/bit-vector.h | 8 + deps/v8/src/utils/boxed-float.h | 16 + deps/v8/src/utils/identity-map.cc | 40 +- deps/v8/src/utils/identity-map.h | 17 +- deps/v8/src/utils/memcopy.cc | 59 - deps/v8/src/utils/memcopy.h | 274 +- deps/v8/src/utils/utils.cc | 11 +- deps/v8/src/utils/utils.h | 44 +- deps/v8/src/wasm/DEPS | 3 + .../baseline/arm/liftoff-assembler-arm-inl.h | 41 +- .../arm64/liftoff-assembler-arm64-inl.h | 8 +- .../ia32/liftoff-assembler-ia32-inl.h | 75 +- .../wasm/baseline/liftoff-assembler-defs.h | 7 +- .../v8/src/wasm/baseline/liftoff-assembler.cc | 2 +- deps/v8/src/wasm/baseline/liftoff-assembler.h | 8 +- deps/v8/src/wasm/baseline/liftoff-compiler.cc | 112 +- .../loong64/liftoff-assembler-loong64-inl.h | 1217 ++-- .../mips64/liftoff-assembler-mips64-inl.h | 21 +- deps/v8/src/wasm/baseline/parallel-move.h | 5 +- .../baseline/ppc/liftoff-assembler-ppc-inl.h | 18 +- .../riscv/liftoff-assembler-riscv-inl.h | 76 +- .../riscv/liftoff-assembler-riscv32-inl.h | 2 +- .../riscv/liftoff-assembler-riscv64-inl.h | 256 +- .../s390/liftoff-assembler-s390-inl.h | 14 +- .../baseline/x64/liftoff-assembler-x64-inl.h | 24 +- deps/v8/src/wasm/basic-block-calculator.cc | 4 +- deps/v8/src/wasm/c-api.cc | 36 +- deps/v8/src/wasm/canonical-types.cc | 127 +- deps/v8/src/wasm/canonical-types.h | 34 +- .../v8/src/wasm/compilation-environment-inl.h | 6 +- deps/v8/src/wasm/compilation-environment.h | 13 +- .../src/wasm/compilation-hints-generation.cc | 215 + .../src/wasm/compilation-hints-generation.h | 25 + .../src/wasm/constant-expression-interface.cc | 21 +- deps/v8/src/wasm/decoder.h | 2 +- deps/v8/src/wasm/function-body-decoder-impl.h | 303 +- deps/v8/src/wasm/function-compiler.h | 2 +- .../wasm/fuzzing/random-module-generation.cc | 125 +- deps/v8/src/wasm/inlining-tree.h | 281 +- .../arm64/interpreter-builtins-arm64.cc | 82 +- .../wasm/interpreter/instruction-handlers.h | 1 + .../riscv/interpreter-builtins-riscv.cc | 1841 ++++++ .../wasm-interpreter-runtime-inl.h | 10 +- .../interpreter/wasm-interpreter-runtime.cc | 404 +- .../interpreter/wasm-interpreter-runtime.h | 61 +- .../wasm/interpreter/wasm-interpreter-simd.cc | 4 +- .../src/wasm/interpreter/wasm-interpreter.cc | 550 +- .../src/wasm/interpreter/wasm-interpreter.h | 152 +- .../x64/interpreter-builtins-x64.cc | 138 +- deps/v8/src/wasm/module-compiler.cc | 676 +- deps/v8/src/wasm/module-compiler.h | 127 +- deps/v8/src/wasm/module-decoder-impl.h | 156 +- deps/v8/src/wasm/module-decoder.cc | 97 +- deps/v8/src/wasm/module-decoder.h | 34 +- deps/v8/src/wasm/module-instantiate.cc | 242 +- deps/v8/src/wasm/module-instantiate.h | 9 +- deps/v8/src/wasm/names-provider.cc | 9 +- deps/v8/src/wasm/simd-shuffle.cc | 20 +- deps/v8/src/wasm/simd-shuffle.h | 8 + deps/v8/src/wasm/stacks.cc | 34 +- deps/v8/src/wasm/stacks.h | 65 +- deps/v8/src/wasm/streaming-decoder.cc | 87 +- deps/v8/src/wasm/streaming-decoder.h | 22 +- deps/v8/src/wasm/struct-types.h | 35 +- deps/v8/src/wasm/sync-streaming-decoder.cc | 60 +- .../src/wasm/turboshaft-graph-interface-inl.h | 6 +- .../v8/src/wasm/turboshaft-graph-interface.cc | 587 +- deps/v8/src/wasm/turboshaft-graph-interface.h | 8 +- deps/v8/src/wasm/value-type.cc | 13 + deps/v8/src/wasm/value-type.h | 26 +- deps/v8/src/wasm/wasm-builtin-list.h | 1 + deps/v8/src/wasm/wasm-code-manager.cc | 129 +- deps/v8/src/wasm/wasm-code-manager.h | 110 +- deps/v8/src/wasm/wasm-code-pointer-table.h | 11 +- deps/v8/src/wasm/wasm-constants.h | 23 +- deps/v8/src/wasm/wasm-debug.cc | 5 +- deps/v8/src/wasm/wasm-disassembler.cc | 9 +- deps/v8/src/wasm/wasm-engine.cc | 125 +- deps/v8/src/wasm/wasm-engine.h | 21 +- deps/v8/src/wasm/wasm-export-wrapper-cache.h | 4 +- deps/v8/src/wasm/wasm-external-refs.cc | 18 +- deps/v8/src/wasm/wasm-external-refs.h | 5 +- deps/v8/src/wasm/wasm-feature-flags.h | 42 +- deps/v8/src/wasm/wasm-features.cc | 3 +- deps/v8/src/wasm/wasm-features.h | 9 - deps/v8/src/wasm/wasm-import-wrapper-cache.cc | 285 +- deps/v8/src/wasm/wasm-import-wrapper-cache.h | 160 +- deps/v8/src/wasm/wasm-init-expr.h | 22 +- deps/v8/src/wasm/wasm-js.cc | 507 +- deps/v8/src/wasm/wasm-module-builder.cc | 14 +- deps/v8/src/wasm/wasm-module-builder.h | 14 +- deps/v8/src/wasm/wasm-module.cc | 31 +- deps/v8/src/wasm/wasm-module.h | 132 +- deps/v8/src/wasm/wasm-objects-inl.h | 35 +- deps/v8/src/wasm/wasm-objects.cc | 422 +- deps/v8/src/wasm/wasm-objects.h | 136 +- deps/v8/src/wasm/wasm-objects.tq | 22 +- deps/v8/src/wasm/wasm-opcodes.h | 25 +- deps/v8/src/wasm/wasm-serialization.cc | 153 +- deps/v8/src/wasm/wasm-serialization.h | 33 +- deps/v8/src/wasm/wasm-stack-wrapper-cache.cc | 27 + deps/v8/src/wasm/wasm-stack-wrapper-cache.h | 53 + deps/v8/src/wasm/wasm-subtyping.cc | 3 +- deps/v8/src/wasm/wasm-subtyping.h | 3 +- deps/v8/src/wasm/wasm-value.h | 8 +- deps/v8/src/wasm/wasm-wrapper-cache-inl.h | 258 + deps/v8/src/wasm/wasm-wrapper-cache.cc | 28 + deps/v8/src/wasm/wasm-wrapper-cache.h | 112 + deps/v8/src/wasm/wrappers-inl.h | 242 +- deps/v8/src/wasm/wrappers.cc | 9 +- deps/v8/src/wasm/wrappers.h | 351 +- deps/v8/src/zone/accounting-allocator.cc | 155 +- deps/v8/src/zone/accounting-allocator.h | 39 +- deps/v8/src/zone/zone-containers.h | 34 +- deps/v8/src/zone/zone-list-inl.h | 2 +- deps/v8/test/benchmarks/cpp/bindings.cc | 11 +- deps/v8/test/cctest/BUILD.gn | 68 +- deps/v8/test/cctest/cctest.h | 30 +- deps/v8/test/cctest/cctest.status | 28 +- deps/v8/test/cctest/collector.h | 9 +- .../cctest/compiler/test-js-typed-lowering.cc | 69 +- .../compiler/turboshaft-codegen-tester.h | 7 +- .../turboshaft-test-select-combine.cc | 80 +- deps/v8/test/cctest/heap/heap-tester.h | 2 +- deps/v8/test/cctest/heap/heap-utils.cc | 114 +- deps/v8/test/cctest/heap/heap-utils.h | 36 +- deps/v8/test/cctest/heap/test-alloc.cc | 2 +- ...racker.cc => test-array-buffer-sweeper.cc} | 42 +- deps/v8/test/cctest/heap/test-compaction.cc | 70 +- .../cctest/heap/test-concurrent-allocation.cc | 13 +- .../heap/test-external-string-tracker.cc | 47 +- deps/v8/test/cctest/heap/test-heap.cc | 224 +- .../cctest/heap/test-incremental-marking.cc | 77 - deps/v8/test/cctest/heap/test-mark-compact.cc | 14 +- .../cctest/heap/test-memory-measurement.cc | 57 +- deps/v8/test/cctest/heap/test-spaces.cc | 20 +- .../test/cctest/heap/test-weak-references.cc | 2 +- .../cctest/manually-externalized-buffer.h | 12 +- .../v8/test/cctest/test-accessor-assembler.cc | 7 +- deps/v8/test/cctest/test-accessors.cc | 152 +- deps/v8/test/cctest/test-api-array-buffer.cc | 30 +- deps/v8/test/cctest/test-api-interceptors.cc | 666 +- deps/v8/test/cctest/test-api-stack-traces.cc | 265 +- deps/v8/test/cctest/test-api.cc | 213 +- deps/v8/test/cctest/test-api.h | 2 +- .../test/cctest/test-code-stub-assembler.cc | 2 +- deps/v8/test/cctest/test-cpu-profiler.cc | 322 +- deps/v8/test/cctest/test-debug-helper.cc | 4 +- deps/v8/test/cctest/test-debug.cc | 32 +- .../test/cctest/test-field-type-tracking.cc | 367 -- deps/v8/test/cctest/test-heap-profiler.cc | 20 +- deps/v8/test/cctest/test-lockers.cc | 26 +- .../test/cctest/test-macro-assembler-arm.cc | 337 - .../cctest/test-macro-assembler-loong64.cc | 2906 --------- .../cctest/test-macro-assembler-mips64.cc | 1726 ----- deps/v8/test/cctest/test-profile-generator.cc | 4 +- deps/v8/test/cctest/test-serialize.cc | 17 +- deps/v8/test/cctest/test-shared-strings.cc | 37 +- deps/v8/test/cctest/test-strings.cc | 8 +- deps/v8/test/cctest/test-transitions.cc | 148 + .../test/cctest/test-unwinder-code-pages.cc | 2 +- .../v8/test/cctest/wasm/test-backing-store.cc | 5 +- .../cctest/wasm/test-compilation-cache.cc | 5 +- deps/v8/test/cctest/wasm/test-gc.cc | 4 +- deps/v8/test/cctest/wasm/test-grow-memory.cc | 9 +- .../test/cctest/wasm/test-run-wasm-module.cc | 7 +- .../cctest/wasm/test-run-wasm-relaxed-simd.cc | 44 +- .../v8/test/cctest/wasm/test-run-wasm-simd.cc | 917 +-- .../cctest/wasm/test-streaming-compilation.cc | 5 +- .../wasm/test-wasm-import-wrapper-cache.cc | 53 +- .../cctest/wasm/test-wasm-serialization.cc | 35 +- .../cctest/wasm/test-wasm-shared-engine.cc | 7 +- deps/v8/test/cctest/wasm/wasm-simd-utils.cc | 691 +- deps/v8/test/cctest/wasm/wasm-simd-utils.h | 72 +- deps/v8/test/common/noop-bytecode-verifier.h | 27 + deps/v8/test/common/types-fuzz.h | 2 +- deps/v8/test/common/wasm/fuzzer-common.cc | 162 +- deps/v8/test/common/wasm/wasm-macro-gen.h | 2 + deps/v8/test/common/wasm/wasm-run-utils.cc | 156 +- deps/v8/test/common/wasm/wasm-run-utils.h | 23 +- .../debug-evaluate-no-side-effect-builtins.js | 17 +- deps/v8/test/debugging/testcfg.py | 12 +- .../crash/proto-assign-seq-opt-count-0.js | 10 + deps/v8/test/filecheck/filecheck.status | 16 +- .../filecheck/proto-assign-seq-opt-count.js | 49 + deps/v8/test/filecheck/testcfg.py | 3 +- .../wasm-turbolev-inlined-wrapper.js | 55 + .../crash/failed-type-assertion.js} | 0 .../{wasm-pause.js => wasm/pause.js} | 0 deps/v8/test/fuzzer/fuzzer.status | 3 +- .../test/fuzzer/wasm/code/regress-470274340 | Bin 0 -> 124 bytes deps/v8/test/fuzzer/wasm/init-expr.cc | 10 +- .../wasm/interpreter/interpreter-diff.cc | 2 +- .../interpreter/interpreter-fuzzer-common.cc | 9 +- .../wasm/interpreter/interpreter-init-expr.cc | 161 +- .../fuzzer/wasm/module/regress-419922463.wasm | Bin 0 -> 287 bytes .../fuzzer/wasm/module/regress-478553475.wasm | Bin 0 -> 60 bytes deps/v8/test/fuzzer/wasm/streaming.cc | 7 +- .../paused-function-location-expected.txt | 212 + .../debugger/paused-function-location.js | 195 + .../debugger/set-script-source-repl-mode.js | 6 +- .../debugger/wasm-gc-anyref-expected.txt | 6 +- .../debugger/wasm-gc-breakpoints-expected.txt | 2 +- .../wasm-gc-multi-module-expected.txt | 8 +- .../debugger/wasm-jspi-async-stack.js | 1 + deps/v8/test/inspector/inspector.status | 8 +- deps/v8/test/inspector/isolate-data.cc | 30 +- .../regress-crbug-466244926-expected.txt | 3 + .../regress/regress-crbug-466244926.js | 51 + .../runtime/add-binding-expected.txt | 27 +- deps/v8/test/inspector/runtime/add-binding.js | 53 +- .../runtime/get-properties-expected.txt | 11 + .../test/inspector/runtime/get-properties.js | 14 +- deps/v8/test/intl/intl.status | 4 - deps/v8/test/intl/regress-450077863.js | 6 + deps/v8/test/intl/regress-463070442.js | 58 + deps/v8/test/intl/temporal/calendar/fields.js | 24 - deps/v8/test/message/debug-trace-minimal.js | 19 + deps/v8/test/message/debug-trace-minimal.out | 5 + .../js-wasm-wrapper-inlining-turbolev-32.js | 17 + ... js-wasm-wrapper-inlining-turbolev-32.out} | 38 +- .../js-wasm-wrapper-inlining-turbolev-64.js | 309 +- .../js-wasm-wrapper-inlining-turbolev-64.out | 46 + .../js-wasm-wrapper-inlining-turbolev.js | 310 - deps/v8/test/message/message.status | 17 +- deps/v8/test/message/testcfg.py | 12 +- ...m-compilation-hints-inlining-no-liftoff.js | 66 + ...-compilation-hints-inlining-no-liftoff.out | 11 + .../wasm-compilation-hints-inlining.js | 342 + .../wasm-compilation-hints-inlining.out | 57 + .../test/message/wasm-debug-trace-minimal.js | 39 + .../test/message/wasm-debug-trace-minimal.out | 7 + .../wasm-generate-compilation-hints.js | 84 + .../wasm-generate-compilation-hints.out | 19 + .../array-buffer-view-tracking-regress.js | 24 + .../mjsunit/array-buffer-view-tracking.js | 126 + .../mjsunit/array-constructor-subclass.js | 20 + .../mjsunit/compiler/dataview-detached.js | 8 +- .../test/mjsunit/compiler/deopt-pretenure.js | 5 +- .../compiler/fast-api-calls-exception.js | 28 + .../mjsunit/compiler/regress-461531853.js | 18 + .../mjsunit/compiler/regress-463606272.js | 15 + .../mjsunit/compiler/regress-475479135-1.js | 45 + .../mjsunit/compiler/regress-475479135-2.js | 45 + .../mjsunit/compiler/regress-477645118.js | 28 + .../compiler/regress-array-const-tracking.js | 33 + .../compiler/typed-array-js-call-reducer.js | 155 + .../compiler/typed-array-length-detached-1.js | 2 +- .../typedarray-resizablearraybuffer.js | 9 +- .../test/mjsunit/debug-trace-minimal-in-gc.js | 12 + .../mjsunit/debug-trace-minimal-in-print.js | 13 + ...ss-396461004.js => debug-trace-minimal.js} | 17 +- .../mjsunit/decorators/regress-456538025.js | 12 + .../mjsunit/decorators/regress-461485805.js | 13 + deps/v8/test/mjsunit/equals-feedback.js | 36 + .../mjsunit/es6/array-iterator-detached.js | 4 +- ...of-array-iterator-optimization-baseline.js | 4 + ...of-array-iterator-optimization-ignition.js | 4 + ...r-of-array-iterator-optimization-maglev.js | 5 + ...of-array-iterator-optimization-turbofan.js | 5 + .../mjsunit/es8/async-await-closure-reuse.js | 229 + .../await-using-assignment-in-for-loop.js | 15 + ...ait-using-valid-assignments-in-for-loop.js | 23 + .../test/mjsunit/harmony/iterator-concat.js | 317 + ...odules-import-defer-define-class-field.mjs | 20 + ...defer-delete-property-missing-property.mjs | 15 + .../modules-import-defer-delete-property.mjs | 15 + .../harmony/modules-import-defer-for-in.mjs | 20 + ...n-property-descriptor-missing-property.mjs | 17 + ...port-defer-get-own-property-descriptor.mjs | 20 + ...port-defer-has-nonexistent-that-throws.mjs | 33 + ...s-on-prototype-nonexistent-that-throws.mjs | 35 + ...ort-defer-has-on-prototype-that-throws.mjs | 35 + ...rt-defer-has-property-missing-property.mjs | 15 + ...perty-ns-as-prototype-missing-property.mjs | 17 + .../modules-import-defer-has-property.mjs | 15 + .../modules-import-defer-has-that-throws.mjs | 33 + .../modules-import-defer-lookup-getter.mjs | 17 + .../modules-import-defer-lookup-setter.mjs | 17 + .../modules-import-defer-missing-property.mjs | 15 + .../modules-import-defer-no-trigger.mjs | 53 + ...t-defer-non-existant-field-that-throws.mjs | 33 + ...r-nonexistent-on-prototype-that-throws.mjs | 35 + ...defer-ns-as-prototype-missing-property.mjs | 16 + .../modules-import-defer-ns-as-prototype.mjs | 19 + ...es-import-defer-object-define-property.mjs | 15 + ...-defer-object-has-own-missing-property.mjs | 15 + .../modules-import-defer-object-has-own.mjs | 15 + .../modules-import-defer-object-keys.mjs | 16 + ...-import-defer-on-prototype-that-throws.mjs | 35 + ...modules-import-defer-own-property-keys.mjs | 16 + ...es-import-defer-property-is-enumerable.mjs | 17 + .../modules-import-defer-prototype-for-in.mjs | 21 + ...es-import-defer-prototype-has-property.mjs | 19 + ...s-import-defer-prototype-lookup-getter.mjs | 19 + ...s-import-defer-prototype-lookup-setter.mjs | 19 + .../modules-import-defer-that-throws.mjs | 33 + .../mjsunit/harmony/modules-import-defer.mjs | 15 + .../harmony/modules-skip-import-defer-1.mjs | 10 + .../modules-skip-import-defer-throws-1.mjs | 12 + .../harmony/regress/regress-454630441.js | 29 + .../harmony/regress/regress-463528051.js | 170 + .../harmony/regress/regress-468626968.js | 14 + deps/v8/test/mjsunit/immutable-arraybuffer.js | 566 ++ deps/v8/test/mjsunit/iterable-foreach.js | 451 ++ .../regress/regress-crbug-405910175-map.js | 3 +- .../regress/regress-crbug-405910175-set.js | 3 +- deps/v8/test/mjsunit/maglev-470137280.js | 14 + .../maglev/array-push-with-smi-object.js | 43 + .../maglev/checked_value_alt_overwrite.js | 36 + .../maglev/construct-spread-forward-vaargs.js | 77 + .../mjsunit/maglev/dataview-almost-oob.js | 28 + ...-getbytelength-const-non-eager-inlining.js | 37 + .../maglev/dataview-getbytelength-const.js | 30 + .../dataview-getbytelength-not-dataview.js | 29 + .../dataview-getbytelength-undefined.js | 26 + .../mjsunit/maglev/dataview-getbytelength.js | 20 + .../mjsunit/maglev/maglev-assert-types.js | 20 + .../test/mjsunit/maglev/number-to-string.js | 25 + .../maglev/optimize-float64-ieee754.js | 155 + .../mjsunit/maglev/optimize-float64-unary.js | 60 + .../maglev/phi-untagging-backedge-self-1.js | 32 + .../maglev/phi-untagging-backedge-self-2.js | 36 + ...phi-untagging-conversions-no-truncation.js | 42 + .../maglev/phi-untagging-conversions.js | 38 - ...ging-float64-into-smi-check-speculative.js | 37 + .../phi-untagging-float64-into-smi-check.js | 37 + .../phi-untagging-float64-load-input.js | 21 + .../phi-untagging-holeyfloat64-load-input.js | 26 + .../maglev/phi-untagging-int32-load-input.js | 21 + .../test/mjsunit/maglev/regress-455554110.js | 23 + .../test/mjsunit/maglev/regress-456014076.js | 26 + .../test/mjsunit/maglev/regress-456697305.js | 17 + .../test/mjsunit/maglev/regress-456778855.js | 15 + .../test/mjsunit/maglev/regress-457475186.js | 20 + .../test/mjsunit/maglev/regress-457475530.js | 20 + .../test/mjsunit/maglev/regress-457866756.js | 15 + .../test/mjsunit/maglev/regress-458608439.js | 18 + .../test/mjsunit/maglev/regress-460084175.js | 21 + .../test/mjsunit/maglev/regress-460220166.js | 34 + .../test/mjsunit/maglev/regress-460668396.js | 27 + .../test/mjsunit/maglev/regress-460678755.js | 26 + .../test/mjsunit/maglev/regress-461541271.js | 19 + .../test/mjsunit/maglev/regress-463237815.js | 21 + .../test/mjsunit/maglev/regress-463565998.js | 47 + .../test/mjsunit/maglev/regress-463722459.js | 22 + .../test/mjsunit/maglev/regress-464105362.js | 15 + .../test/mjsunit/maglev/regress-464323255.js | 22 + .../test/mjsunit/maglev/regress-464612781.js | 9 + .../test/mjsunit/maglev/regress-464965404.js | 31 + .../test/mjsunit/maglev/regress-465730465.js | 39 + .../test/mjsunit/maglev/regress-466510900.js | 14 + .../test/mjsunit/maglev/regress-466701290.js | 19 + .../test/mjsunit/maglev/regress-469481626.js | 16 + .../test/mjsunit/maglev/regress-473913278.js | 29 + .../test/mjsunit/maglev/regress-474458890.js | 16 + .../test/mjsunit/maglev/regress-476329375.js | 34 + .../test/mjsunit/maglev/regress-479557032.js | 20 + .../test/mjsunit/maglev/regress-480100972.mjs | 19 + .../test/mjsunit/maglev/regress-480568109.js | 20 + .../mjsunit/maglev/regress-482261044-1.js | 24 + .../mjsunit/maglev/regress-482261044-2.js | 19 + .../mjsunit/maglev/regress-482261044-3.js | 26 + .../maglev/store-constant-field-nan.js | 29 + deps/v8/test/mjsunit/maglev/string-slice.js | 40 +- .../mjsunit/maglev/typed-array-length-abs.js | 4 + .../typed-array-length-as-number-large.js | 4 + .../maglev/typed-array-length-as-number.js | 4 + .../maglev/typed-array-length-bitwise.js | 4 + .../typed-array-length-branch-if-root.js | 4 + ...-array-length-branch-if-to-boolean-true.js | 4 + .../maglev/typed-array-length-detached-1.js | 2 +- .../typed-array-length-exception-phi.js | 4 + .../typed-array-length-index-into-array.js | 4 + ...ray-length-index-into-typed-array-large.js | 34 +- ...ped-array-length-index-into-typed-array.js | 12 +- .../typed-array-length-iteration-large.js | 4 + .../maglev/typed-array-length-iteration.js | 4 + .../maglev/typed-array-length-parseint.js | 4 + .../mjsunit/maglev/typed-array-length-phi.js | 4 + ...yped-array-length-store-as-uint8clamped.js | 4 + .../typed-array-length-store-into-global.js | 4 + ...array-length-store-script-context-large.js | 4 + ...typed-array-length-store-script-context.js | 4 + .../maglev/typed-array-length-to-boolean.js | 4 + .../typed-array-length-to-number-large.js | 4 + .../maglev/typed-array-length-to-number.js | 4 + .../maglev/typedarray-resizablearraybuffer.js | 1 - .../array-iterator-modification-1.js | 34 + .../array-iterator-modification-2.js | 39 + .../v8/test/mjsunit/math-sum-precise/basic.js | 244 + .../test/mjsunit/math-sum-precise/regress.js | 13 + .../typed-array-iterator-modification-1.js | 31 + .../typed-array-iterator-modification-2.js | 35 + .../typed-array-iterator-modification-3.js | 30 + .../typed-array-iterator-modification-4.js | 33 + deps/v8/test/mjsunit/messages.js | 6 +- deps/v8/test/mjsunit/mjsunit.status | 189 +- deps/v8/test/mjsunit/modules-namespace1.mjs | 7 + deps/v8/test/mjsunit/natives-builtins.js | 52 + ...ion.js => proto-seq-opt-arrow-function.js} | 34 +- ...roto-seq-opt-assign-key-multiple-times.js} | 20 +- .../opt-proto-seq/proto-seq-opt-basic.js | 57 + .../proto-seq-opt-before-after.js | 50 + ...th.js => proto-seq-opt-class-fast-path.js} | 22 +- .../opt-proto-seq/proto-seq-opt-computed.js | 43 + .../proto-seq-opt-constructor.js | 44 + .../proto-seq-opt-destructuring.js | 36 + ... proto-seq-opt-different-left-most-var.js} | 14 +- .../proto-seq-opt-different-objects.js | 47 + .../opt-proto-seq/proto-seq-opt-duplicate.js | 46 + ...-seq-opt-eval-return-last-set-property.js} | 10 +- ...to-seq-opt-feedback-vector-side-effect.js} | 17 +- .../proto-seq-opt-frozen-objects-strict.js | 47 + .../proto-seq-opt-frozen-objects.js | 44 + ...js => proto-seq-opt-function-fast-path.js} | 28 +- .../opt-proto-seq/proto-seq-opt-functions.js | 47 + ...oto-seq-opt-get-own-property-descriptor.js | 43 + ...to-seq-opt-get-own-property-descriptors.js | 43 + .../proto-seq-opt-global-proxy.js | 45 + ...js => proto-seq-opt-has-prototype-keys.js} | 29 +- ...etters.js => proto-seq-opt-has-setters.js} | 25 +- .../proto-seq-opt-ignore-chain-descriptors.js | 52 + .../opt-proto-seq/proto-seq-opt-iife.js | 46 + .../proto-seq-opt-interleaved.js | 46 + .../proto-seq-opt-lazy-override-builtin.js | 42 + .../opt-proto-seq/proto-seq-opt-limit.js | 46 + .../proto-seq-opt-locked-proto-strict.js | 56 + .../proto-seq-opt-locked-proto.js | 53 + ...o-seq-opt-non-extensible-objects-strict.js | 47 + .../proto-seq-opt-non-extensible-objects.js | 44 + .../proto-seq-opt-non-literal.js | 43 + .../proto-seq-opt-not-function.js | 44 + ... => proto-seq-opt-not-proto-assign-seq.js} | 27 +- ...ype.js => proto-seq-opt-null-prototype.js} | 24 +- .../proto-seq-opt-object-assign.js | 43 + .../proto-seq-opt-object-entries.js | 44 + .../proto-seq-opt-object-values.js | 42 + ... => proto-seq-opt-poison-default-proto.js} | 25 +- .../proto-seq-opt-preserve-descriptor.js | 51 + ...to-seq-opt-proto-of-prototype-assigned.js} | 16 +- .../opt-proto-seq/proto-seq-opt-proto-prop.js | 45 + ... => proto-seq-opt-prototype-proto-keys.js} | 35 +- ...s => proto-seq-opt-prototype-read-only.js} | 36 +- .../proto-seq-opt-readonly-chain.js | 65 + .../proto-seq-opt-reassign-local.js | 53 + ...opt-reflect-get-own-property-descriptor.js | 43 + .../proto-seq-opt-reflect-get.js | 42 + .../proto-seq-opt-setter-chain.js | 74 + .../opt-proto-seq/proto-seq-opt-shadow.js | 51 + .../proto-seq-opt-slow-modified.js | 51 + .../proto-seq-opt-slow-non-extensible.js | 43 + .../opt-proto-seq/proto-seq-opt-spreading.js | 45 + .../opt-proto-seq/proto-seq-opt-strict.js | 43 + .../proto-seq-opt-structured-clone.js | 46 + ...s => proto-seq-opt-variable-proxy-eval.js} | 13 +- ...oxy.js => proto-seq-opt-variable-proxy.js} | 12 +- deps/v8/test/mjsunit/optimized-typeof.js | 55 + .../v8/test/mjsunit/regexp-backtrack-limit.js | 2 +- deps/v8/test/mjsunit/regexp-boyer-moore.js | 15 + deps/v8/test/mjsunit/regexp-capture-3.js | 26 +- deps/v8/test/mjsunit/regexp-capture-4.js | 17 + .../regexp/skip-until-one-of-masked3.js | 61 + deps/v8/test/mjsunit/regress-450308355.js | 41 + deps/v8/test/mjsunit/regress-459629345.js | 26 + deps/v8/test/mjsunit/regress-463527959.js | 18 + deps/v8/test/mjsunit/regress-477993735.js | 15 + deps/v8/test/mjsunit/regress-478126027.js | 19 + deps/v8/test/mjsunit/regress-480271345.js | 15 + .../regress/regress-319722-ArrayBuffer.js | 2 +- .../regress/regress-319722-TypedArrays.js | 2 +- .../test/mjsunit/regress/regress-441205658.js | 14 + .../test/mjsunit/regress/regress-448997822.js | 24 + .../test/mjsunit/regress/regress-452082290.js | 15 + .../test/mjsunit/regress/regress-454568212.js | 6 + .../test/mjsunit/regress/regress-455191443.js | 41 + .../test/mjsunit/regress/regress-455515497.js | 47 + .../test/mjsunit/regress/regress-456131918.js | 15 + .../test/mjsunit/regress/regress-456307067.js | 22 + .../test/mjsunit/regress/regress-457452276.js | 7 + .../test/mjsunit/regress/regress-457475185.js | 7 + .../test/mjsunit/regress/regress-457866804.js | 20 + .../test/mjsunit/regress/regress-458609996.js | 19 + .../test/mjsunit/regress/regress-458677902.js | 14 + .../test/mjsunit/regress/regress-458790911.js | 27 + .../test/mjsunit/regress/regress-458849015.js | 39 + .../test/mjsunit/regress/regress-459129418.js | 25 + .../test/mjsunit/regress/regress-459130968.js | 30 + .../test/mjsunit/regress/regress-459310839.js | 22 + .../test/mjsunit/regress/regress-459335522.js | 43 + .../test/mjsunit/regress/regress-459526523.js | 24 + .../test/mjsunit/regress/regress-459526524.js | 41 + .../test/mjsunit/regress/regress-459629118.js | 42 + .../test/mjsunit/regress/regress-459857147.js | 13 + .../test/mjsunit/regress/regress-460180700.js | 14 + .../test/mjsunit/regress/regress-460285610.js | 19 + .../test/mjsunit/regress/regress-460300660.js | 20 + .../test/mjsunit/regress/regress-460328643.js | 10 + .../test/mjsunit/regress/regress-460946135.js | 9 + .../test/mjsunit/regress/regress-461041351.js | 15 + .../test/mjsunit/regress/regress-461203133.js | 10 + .../test/mjsunit/regress/regress-461464257.js | 10 + .../test/mjsunit/regress/regress-461531861.js | 12 + .../test/mjsunit/regress/regress-461969023.js | 10 + .../test/mjsunit/regress/regress-462477283.js | 21 + .../test/mjsunit/regress/regress-462758899.js | 30 + .../test/mjsunit/regress/regress-463124098.js | 12 + .../test/mjsunit/regress/regress-463405539.js | 14 + .../test/mjsunit/regress/regress-463593768.js | 13 + .../test/mjsunit/regress/regress-463634335.js | 19 + .../test/mjsunit/regress/regress-464210575.js | 16 + .../test/mjsunit/regress/regress-464678348.js | 25 + .../test/mjsunit/regress/regress-464961493.js | 10 + .../test/mjsunit/regress/regress-467247247.js | 17 + .../test/mjsunit/regress/regress-470137261.js | 30 + .../test/mjsunit/regress/regress-474179451.js | 25 + .../test/mjsunit/regress/regress-474401153.js | 28 + .../test/mjsunit/regress/regress-474417795.js | 10 + .../test/mjsunit/regress/regress-478681249.js | 23 + .../test/mjsunit/regress/regress-479872236.js | 19 + .../test/mjsunit/regress/regress-482199449.js | 9 + .../mjsunit/regress/wasm/regress-374820218.js | 22 +- .../mjsunit/regress/wasm/regress-397043084.js | 7 +- .../mjsunit/regress/wasm/regress-433984397.js | 2 +- .../mjsunit/regress/wasm/regress-435301441.js | 4 +- .../mjsunit/regress/wasm/regress-435315689.js | 4 +- .../mjsunit/regress/wasm/regress-436362279.js | 8 +- .../mjsunit/regress/wasm/regress-436937141.js | 2 +- .../mjsunit/regress/wasm/regress-446122633.js | 124 + .../mjsunit/regress/wasm/regress-446124893.js | 29 + .../mjsunit/regress/wasm/regress-447613211.js | 2 +- .../mjsunit/regress/wasm/regress-448404198.js | 2 +- .../mjsunit/regress/wasm/regress-449028728.js | 34 + .../mjsunit/regress/wasm/regress-450868409.js | 25 + .../mjsunit/regress/wasm/regress-451144692.js | 16 + .../mjsunit/regress/wasm/regress-452541294.js | 2 +- .../mjsunit/regress/wasm/regress-454276076.js | 24 + .../mjsunit/regress/wasm/regress-455711115.js | 28 + .../mjsunit/regress/wasm/regress-455832038.js | 30 + .../mjsunit/regress/wasm/regress-456319253.js | 45 + .../mjsunit/regress/wasm/regress-457106696.js | 19 + .../mjsunit/regress/wasm/regress-461547336.js | 55 + .../mjsunit/regress/wasm/regress-462045796.js | 20 + .../mjsunit/regress/wasm/regress-463089250.js | 15 + .../mjsunit/regress/wasm/regress-463546420.js | 22 + .../mjsunit/regress/wasm/regress-464606523.js | 17 + .../mjsunit/regress/wasm/regress-465815689.js | 32 + .../mjsunit/regress/wasm/regress-470127856.js | 117 + .../mjsunit/regress/wasm/regress-471380636.js | 87 + .../mjsunit/regress/wasm/regress-473272199.js | 58 + .../mjsunit/regress/wasm/regress-474491347.js | 45 + .../mjsunit/regress/wasm/regress-475896261.js | 28 + .../mjsunit/regress/wasm/regress-476177765.js | 38 + .../mjsunit/regress/wasm/regress-476461881.js | 21 + .../mjsunit/regress/wasm/regress-477654119.js | 67 + .../mjsunit/regress/wasm/regress-837417.js | 7 +- .../regress/wasm/regress-simd-458024245.js | 54 + .../regress/wasm/regress-simd-467479137.js | 27 + ...ytecode-verifier-rejects-empty-bytecode.js | 15 + ...ecode-verifier-rejects-invalid-bytecode.js | 17 + .../sandbox/bytecode-verifier-testing-api.js | 87 + .../basic-hardware-watchpoints.js | 18 + .../test/mjsunit/sandbox/regress-443182220.js | 40 - .../test/mjsunit/sandbox/regress-447307165.js | 39 - .../test/mjsunit/sandbox/regress-458679939.js | 22 + .../test/mjsunit/sandbox/regress-461097476.js | 27 + .../sandbox/regress/regress-379768241.js | 4 +- .../regress/regress-435630464-ccall.js | 31 - .../sandbox/regress/regress-454734141.js | 12 + .../sandbox/regress/regress-462217236.js | 96 + .../sandbox/regress/regress-469759459.js | 18 + .../sandbox/regress/regress-472139305.js | 40 + .../sandbox/regress/regress-473478130.js | 16 + ...sync-synchronization-workers-terminated.js | 110 - .../condition-async-wait-no-await.js | 27 - .../condition-async-wait-realm-disposed.js | 99 - .../condition-async-wait-timeout.js | 30 - .../shared-memory/condition-async-wait.js | 47 - .../mutex-async-lock-promise-reject.js | 34 - .../mutex-async-lock-promise-resolve.js | 38 - .../mutex-async-lock-realm-disposed.js | 89 - .../mutex-async-lock-workers-timeout.js | 68 - .../shared-memory/mutex-async-lock-workers.js | 64 - .../mjsunit/shared-memory/mutex-async-lock.js | 32 - .../mutex-async-locked-worker-terminated.js | 52 - .../mutex-async-unlocked-worker-terminated.js | 62 - .../shared-memory/regress-crbug-339043696.js | 30 - .../shared-memory/regress-crbug-349639796.js | 17 - .../shared-memory/regress-crbug-350641990.js | 21 - .../shared-memory/regress-crbug-366323424.js | 11 - .../shared-memory/regress-crbug-366643711.js | 39 - .../shared-memory/regress-crbug-371659887.js | 40 - .../regress/regress-468231509.js | 37 + .../regress/regress-469804007.js | 15 + .../mjsunit/temporal/calendar-constructor.js | 15 - .../mjsunit/temporal/calendar-date-add.js | 95 - .../temporal/calendar-date-from-fields.js | 197 - .../mjsunit/temporal/calendar-date-until.js | 224 - .../mjsunit/temporal/calendar-day-of-week.js | 80 - .../mjsunit/temporal/calendar-day-of-year.js | 43 - deps/v8/test/mjsunit/temporal/calendar-day.js | 17 - .../temporal/calendar-days-in-month.js | 77 - .../mjsunit/temporal/calendar-days-in-week.js | 18 - .../mjsunit/temporal/calendar-days-in-year.js | 57 - .../test/mjsunit/temporal/calendar-fields.js | 58 - .../v8/test/mjsunit/temporal/calendar-from.js | 21 - .../mjsunit/temporal/calendar-in-leap-year.js | 57 - .../mjsunit/temporal/calendar-merge-fields.js | 58 - .../mjsunit/temporal/calendar-month-code.js | 19 - .../calendar-month-day-from-fields.js | 187 - .../test/mjsunit/temporal/calendar-month.js | 18 - .../temporal/calendar-months-in-year.js | 22 - .../mjsunit/temporal/calendar-week-of-year.js | 68 - .../calendar-year-month-from-fields.js | 130 - .../v8/test/mjsunit/temporal/calendar-year.js | 18 - .../temporal/date-totemporalinstant.js | 9 - deps/v8/test/mjsunit/temporal/duration-abs.js | 22 - deps/v8/test/mjsunit/temporal/duration-add.js | 50 - .../mjsunit/temporal/duration-constructor.js | 81 - .../v8/test/mjsunit/temporal/duration-from.js | 205 - .../test/mjsunit/temporal/duration-negated.js | 28 - .../duration-to-json-boundary-cases.js | 126 - .../test/mjsunit/temporal/duration-to-json.js | 184 - .../test/mjsunit/temporal/duration-valueOf.js | 7 - .../v8/test/mjsunit/temporal/duration-with.js | 82 - .../temporal/function-exist-no-intl.js | 329 - .../test/mjsunit/temporal/function-exist.js | 339 - deps/v8/test/mjsunit/temporal/instant-add.js | 48 - .../test/mjsunit/temporal/instant-compare.js | 21 - .../mjsunit/temporal/instant-constructor.js | 43 - .../test/mjsunit/temporal/instant-equals.js | 17 - .../instant-from-epoch-microseconds.js | 28 - .../instant-from-epoch-milliseconds.js | 32 - .../instant-from-epoch-nanoseconds.js | 27 - .../temporal/instant-from-epoch-seconds.js | 30 - .../test/mjsunit/temporal/instant-subtract.js | 54 - .../test/mjsunit/temporal/instant-to-json.js | 45 - .../test/mjsunit/temporal/instant-toJSON.js | 52 - .../test/mjsunit/temporal/instant-valueOf.js | 7 - .../test/mjsunit/temporal/plain-date-add.js | 25 - .../mjsunit/temporal/plain-date-compare.js | 30 - .../temporal/plain-date-constructor.js | 82 - .../mjsunit/temporal/plain-date-equals.js | 15 - .../test/mjsunit/temporal/plain-date-from.js | 51 - .../temporal/plain-date-get-calendar.js | 8 - .../mjsunit/temporal/plain-date-get-day.js | 9 - .../temporal/plain-date-get-dayOfWeek.js | 9 - .../temporal/plain-date-get-dayOfYear.js | 9 - .../temporal/plain-date-get-daysInMonth.js | 9 - .../temporal/plain-date-get-daysInWeek.js | 9 - .../temporal/plain-date-get-daysInYear.js | 9 - .../mjsunit/temporal/plain-date-get-era.js | 10 - .../temporal/plain-date-get-eraYear.js | 9 - .../temporal/plain-date-get-inLeapYear.js | 10 - .../temporal/plain-date-get-iso-fields.js | 21 - .../mjsunit/temporal/plain-date-get-month.js | 9 - .../temporal/plain-date-get-monthCode.js | 9 - .../temporal/plain-date-get-monthsInYear.js | 9 - .../temporal/plain-date-get-weekOfYear.js | 9 - .../mjsunit/temporal/plain-date-get-year.js | 9 - .../mjsunit/temporal/plain-date-time-add.js | 68 - .../temporal/plain-date-time-compare.js | 34 - .../temporal/plain-date-time-constructor.js | 154 - .../temporal/plain-date-time-equals.js | 18 - .../mjsunit/temporal/plain-date-time-from.js | 101 - .../temporal/plain-date-time-get-calendar.js | 9 - .../temporal/plain-date-time-get-day.js | 9 - .../temporal/plain-date-time-get-dayOfWeek.js | 9 - .../temporal/plain-date-time-get-dayOfYear.js | 9 - .../plain-date-time-get-daysInMonth.js | 9 - .../plain-date-time-get-daysInWeek.js | 9 - .../plain-date-time-get-daysInYear.js | 9 - .../temporal/plain-date-time-get-era.js | 10 - .../temporal/plain-date-time-get-eraYear.js | 9 - .../temporal/plain-date-time-get-hour.js | 9 - .../plain-date-time-get-inLeapYear.js | 10 - .../plain-date-time-get-iso-fields.js | 50 - .../plain-date-time-get-microsecond.js | 9 - .../plain-date-time-get-millisecond.js | 9 - .../temporal/plain-date-time-get-minute.js | 9 - .../temporal/plain-date-time-get-month.js | 9 - .../temporal/plain-date-time-get-monthCode.js | 9 - .../plain-date-time-get-monthsInYear.js | 9 - .../plain-date-time-get-nanosecond.js | 9 - .../temporal/plain-date-time-get-second.js | 9 - .../plain-date-time-get-weekOfYear.js | 9 - .../temporal/plain-date-time-get-year.js | 9 - .../temporal/plain-date-time-subtract.js | 68 - .../temporal/plain-date-time-to-json.js | 94 - .../temporal/plain-date-time-to-plain-date.js | 12 - .../plain-date-time-to-plain-month-day.js | 12 - .../temporal/plain-date-time-to-plain-time.js | 12 - .../plain-date-time-to-plain-year-month.js | 12 - .../temporal/plain-date-time-valueOf.js | 7 - .../temporal/plain-date-time-with-calendar.js | 32 - .../plain-date-time-with-plain-date.js | 40 - .../plain-date-time-with-plain-time.js | 44 - .../mjsunit/temporal/plain-date-time-with.js | 54 - .../mjsunit/temporal/plain-date-to-json.js | 18 - .../temporal/plain-date-to-plain-date-time.js | 44 - .../temporal/plain-date-to-plain-month-day.js | 12 - .../plain-date-to-plain-year-month.js | 12 - .../mjsunit/temporal/plain-date-valueOf.js | 7 - .../temporal/plain-date-with-calendar.js | 32 - .../test/mjsunit/temporal/plain-date-with.js | 59 - .../test/mjsunit/temporal/temporal-helpers.js | 107 - .../mjsunit/temporal/time-zone-constructor.js | 12 - deps/v8/test/mjsunit/testcfg.py | 27 +- ...CalledIfHole-folding-in-outer-try-catch.js | 84 + ...perNotCalledIfHole-folding-in-try-catch.js | 85 + .../Uint8Clamped-typed-array.js | 0 .../add-double-property.js | 0 .../api-call-no-prof.js | 0 .../api-call-prof.js | 0 .../array-buffer-detached.js | 5 +- ...uffer-length-detached-protector-invalid.js | 36 + .../array-destruct.js | 0 .../array-double-load.js | 0 .../array-foreach.js | 0 .../array-holey-double-load.js | 0 .../array-load-hole.js | 0 .../array-oob-load.js | 0 ...ototype-map-array-constructor-protector.js | 0 ...array-prototype-map-elements-kinds-dict.js | 0 .../array-prototype-map-elements-kinds.js | 0 .../array-push-grow.js | 0 .../turbolev/array-push-multi-double.js | 28 + .../mjsunit/turbolev/array-push-multi-poly.js | 39 + .../mjsunit/turbolev/array-push-multi-smi.js | 28 + .../array-push-pop.js | 0 .../array-smi-load.js | 0 .../array-transitions.js | 0 .../turbolev/async-function-inline-1.js | 28 + .../turbolev/async-function-inline-2.js | 33 + .../turbolev/async-function-inline-3.js | 37 + .../bigint-checknumber-no-deopt-loop.js | 17 + .../bitwise-smi.js | 0 .../branch-on-math.js | 0 .../builtin-continuation-deopt.js | 0 .../call-spread-and-args.js | 0 .../call-spread.js | 0 .../catch-and-return.js | 0 .../catch-multiple.js | 0 .../maglev-frontend => turbolev}/catch.js | 0 .../maglev-frontend => turbolev}/char-at.js | 0 .../char-code-at-uint32max-deopt.js | 0 .../check-float64-is-nan.js | 0 .../mjsunit/turbolev/check-intptr-is-smi.js | 19 + .../check-value-equals-f64.js | 0 .../const-tracking-let.js | 0 .../construct-array-feedback.js | 0 .../construct-with-spread.js | 0 .../constructor-extend-null-throw.js | 0 .../constructor-super-called-twice.js | 0 .../constructor-super-not-called.js | 0 .../constructors.js | 0 .../convert-receiver.js | 0 .../create-array-lit.js | 0 .../create-closure.js | 0 .../create-object-lit.js | 0 .../create-regexp-lit.js | 0 .../create-shallow-array-literal.js | 0 .../create-shallow-literal.js | 0 .../dataview-getbytelength-not-dataview.js | 29 + .../dataview-getbytelength-undefined.js | 26 + .../turbolev/dataview-getbytelength.js | 20 + .../dataview-load-not-stale-float64.js | 40 + .../turbolev/dataview-load-not-stale-int32.js | 40 + .../maglev-frontend => turbolev}/dataview.js | 0 .../delete-property-sloppy.js | 0 .../delete-property-strict.js | 0 .../dematerialized-arguments-length.js | 0 .../dematerialized-arguments.js | 0 .../dematerialized-double-array.js | 0 .../dematerialized-double-array2.js | 0 .../dematerialized-duplicated-recursive.js | 0 .../dematerialized-duplicated.js | 0 .../dematerialized-heap-number.js | 0 ...terialized-identical-heap-number-fields.js | 0 .../dematerialized-multi-escape.js | 0 .../dematerialized-nested-objects.js | 0 .../dematerialized-regexp.js | 0 .../dematerialized-rest-length.js | 0 .../dematerialized-rest.js | 0 .../dematerialized-simple-object.js | 0 .../deopt-raw-float-int32.js | 0 .../maglev-frontend => turbolev}/eval.js | 0 .../exception-phis-retagging.js | 0 .../extend-property-backing-store-1.js | 0 .../extend-property-backing-store-2.js | 0 .../maglev-frontend => turbolev}/fact.js | 0 .../float-arith.js | 0 .../float64-compare.js | 0 .../float64-phi-osr.js | 0 .../float64-to-bool-branch.js | 0 .../float64-to-bool.js | 0 .../for-in-arr.js | 0 .../for-in-obj.js | 0 .../for-in-this.js | 0 .../function-apply-arguments.js | 0 .../function-apply.js | 0 .../function-call-generic.js | 0 .../generator-async-await-loop.js | 0 .../generator-async.js | 0 .../generator-if.js | 0 .../generator-infinite-loop.js | 0 .../generator-loop-if.js | 0 .../mjsunit/turbolev/generator-loop-inline.js | 25 + .../generator-loop-multi-if.js | 0 .../generator-loop-no-forward-edge.js | 0 .../generator-loop-untagged-phis.js | 0 .../generator-loop.js | 0 .../generator-nested-loops.js | 0 .../generator-return-finally-loop.js | 0 .../generator-return-finally.js | 0 .../generator-return.js | 0 .../generator-straight-line.js | 0 .../generator-throw-loop-2-yields.js | 0 .../generator-throw-loop.js | 0 .../generator-throw-nested-loop.js | 0 .../generator-throw.js | 0 .../generator-yield-star-loop-1.js | 0 .../generator-yield-star-loop-2.js | 0 .../generator-yield-star.js | 0 .../generic-binop-exception.js | 0 .../generic-binops-unops.js | 0 .../get-template-object.js | 0 .../has-in-prototype-chain-wasm.js | 0 .../has-in-prototype-chain.js | 0 .../holey-array-load.js | 0 .../holey-float64-deopt.js | 0 .../holey-float64-phi-deopt.js | 0 .../holey-float64-phi-to-smi.js | 0 .../ieee754-unary.js | 0 .../inlined-function-loop.js | 0 .../turbolev/inlined-generator-basic.js | 18 + .../turbolev/inlined-generator-loop.js | 20 + .../turbolev/inlined-generator-next.js | 24 + .../inner-function.js | 0 .../instanceof.js | 0 .../int32-compare.js | 0 .../javascript-builtin-continuation.js | 0 .../js-call-lazy-deopt.js | 0 .../js-call-on-receiver.js | 0 .../js-fun-call.js | 0 .../lazy-deopt-multi-return.js | 0 .../literal-nan-hole-deopt.js | 0 .../load-arr-with-float64-index.js | 0 .../load-const-string-key.js | 0 .../turbolev/load-constant-holey-array.js | 17 + .../load-elimination-backing-store-alias.js | 38 + .../load-field.js | 0 .../load-global-inside-typeof.js | 0 .../load-global.js | 0 .../load-holey-double-arr-for-branch.js | 0 .../load-holey-double-arr-for-return.js | 0 .../load-named-from-super.js | 0 .../load-named-generic.js | 0 .../load-named-on-num.js | 0 .../loop-multiple-forward-edges-no-phi.js | 0 .../loop-multiple-forward-edges.js | 0 .../maglev-frontend => turbolev}/loop.js | 0 .../mjsunit/turbolev/maglev-assert-types.js | 20 + .../make-array-init-size.js | 0 .../make-array-no-init-size.js | 0 .../make-fast-arr.js | 0 .../make_objects.js | 0 .../map-migration.js | 0 .../math-atan2.js | 0 .../maglev-frontend => turbolev}/math-pow.js | 0 .../math-round.js | 0 .../maglev-frontend => turbolev}/math-sqrt.js | 0 .../megamorphic-load.js | 0 .../mutable-heap-number-field.js | 0 .../nested-loop-osr-throw.js | 0 .../maglev-frontend => turbolev}/new-array.js | 0 .../new-derived.js | 0 .../new-obj-deopt.js | 0 .../maglev-frontend => turbolev}/new-obj.js | 0 .../new_obj_arr_proto.js | 0 .../new_obj_int_property.js | 0 .../no-backedge-loop.js | 0 .../not-initialized-let-in-switch.js | 3 + .../number-float-truncate.js | 0 .../test/mjsunit/turbolev/number-to-hf64.js | 27 + .../number-to-string.js | 0 .../maglev-frontend => turbolev}/osr.js | 0 .../over-under-application-inline.js | 0 .../over-under-application-not-inline.js | 0 .../phi-untagging-conversions-truncation.js | 35 + .../poly-store-transition.js | 0 .../maglev-frontend => turbolev}/raw-abs.js | 0 .../regress-351177452.js | 0 .../regress-351219206.js | 0 .../regress-351283984.js | 0 .../regress-351418008.js | 0 .../mjsunit/turbolev/regress-351418019.js | 94 + .../regress-351576252.js | 0 .../regress-354145409-1.js | 0 .../regress-354145409-2.js | 0 .../regress-355016861.js | 0 .../regress-356194021.js | 0 .../regress-356436621.js | 0 .../regress-356649152.js | 0 .../regress-356720579.js | 0 .../regress-356901359.js | 0 .../regress-356913279.js | 0 .../regress-356913284-1.js | 0 .../regress-356913284-2.js | 0 .../regress-358461173-1.js | 0 .../regress-358461173-2.js | 0 .../regress-358957666.js | 0 .../regress-359266991.js | 0 .../regress-360207713.js | 0 .../regress-361124378.js | 0 .../regress-368725681.js | 0 .../regress-372754523.js | 0 .../regress-373025979.js | 0 .../regress-379207983.js | 0 .../regress-379776583.js | 0 .../regress-385657142.js | 0 .../regress-406054652.js | 0 .../mjsunit/turbolev/regress-453772795.js | 28 + .../mjsunit/turbolev/regress-454314508.js | 43 + .../mjsunit/turbolev/regress-456370968.js | 19 + .../mjsunit/turbolev/regress-457490096.js | 29 + .../mjsunit/turbolev/regress-462853804.js | 23 + .../mjsunit/turbolev/regress-464196074.js | 20 + .../mjsunit/turbolev/regress-464504276.js | 13 + .../mjsunit/turbolev/regress-465696601.js | 19 + .../mjsunit/turbolev/regress-466333912.js | 22 + .../mjsunit/turbolev/regress-468909596.js | 30 + .../mjsunit/turbolev/regress-469831362.js | 19 + .../mjsunit/turbolev/regress-470668818.js | 17 + .../mjsunit/turbolev/regress-475276561.js | 15 + .../mjsunit/turbolev/regress-475583927.js | 15 + .../mjsunit/turbolev/regress-476507590.js | 33 + .../mjsunit/turbolev/regress-477658238.js | 15 + .../mjsunit/turbolev/regress-478009695.js | 18 + .../mjsunit/turbolev/regress-478035107.js | 26 + .../mjsunit/turbolev/regress-478126029.js | 16 + .../mjsunit/turbolev/regress-478252842.js | 23 + .../mjsunit/turbolev/regress-479881588.js | 15 + .../rest-param-length.js | 0 .../script-context-smi-generator.js | 0 .../set-get-keyed-generic.js | 0 .../set-named-generic.js | 0 .../set-prototype-has.js | 0 .../shift_left.js | 0 .../test/mjsunit/turbolev/single-input-phi.js | 29 + .../maglev-frontend => turbolev}/smi-arith.js | 0 .../stack-overflow.js | 0 .../mjsunit/turbolev/static-assert-fail.js | 21 + .../mjsunit/turbolev/static-assert-simple.js | 19 + .../store-field.js | 0 .../store-float-to-smi-field.js | 0 .../store-global.js | 0 .../store-jsarray.js | 0 .../store-uint32-to-smi-field.js | 0 .../string-cmp.js | 0 .../string-concat-throw.js | 0 .../string-concat.js | 0 .../string-from-charcode.js | 0 .../maglev-frontend => turbolev}/string-lt.js | 0 .../string-or-oddball-compare.js | 0 deps/v8/test/mjsunit/turbolev/string-slice.js | 160 + .../string-to-boolean.js | 0 .../maglev-frontend => turbolev}/switch.js | 0 .../maglev-frontend => turbolev}/symbol-eq.js | 0 .../tagged-equal.js | 0 .../test-undetectable.js | 0 .../maglev-frontend => turbolev}/throw.js | 0 .../to-boolean.js | 0 .../maglev-frontend => turbolev}/to-name.js | 0 .../to-number-int32-phi.js | 0 .../maglev-frontend => turbolev}/to-number.js | 0 .../maglev-frontend => turbolev}/to-string.js | 0 .../typed-array-length-all-kinds.js | 0 .../typed-array-length-as-number-large.js | 4 + .../typed-array-length-as-number.js | 4 + ...-array-length-branch-if-to-boolean-true.js | 4 + .../typed-array-length-deopt-large.js | 4 + .../typed-array-length-deopt.js | 0 .../typed-array-length-exception-phi.js | 4 + ...ped-array-length-index-into-array-large.js | 4 + .../typed-array-length-index-into-array.js | 4 + ...ray-length-index-into-typed-array-large.js | 38 + ...ped-array-length-index-into-typed-array.js | 14 +- .../typed-array-length-iteration-large.js | 4 + .../typed-array-length-iteration.js | 4 + .../typed-array-length-phi.js | 0 .../typed-array-length-rab-gsab.js | 0 ...ed-array-length-store-into-global-large.js | 4 + .../typed-array-length-store-into-global.js | 4 + ...array-length-store-script-context-large.js | 4 + ...typed-array-length-store-script-context.js | 4 + .../typed-array-length-to-boolean.js | 4 + .../typed-array-length-to-number-large.js | 4 + .../typed-array-length-to-number.js | 4 + .../typed-arrays.js | 0 .../typeof-self.js | 0 .../uint32-conv.js | 0 .../uint8-clamped-arr-deopt.js | 0 .../unary_minus_smi_minus_0.js | 0 .../unconditional-deopt.js | 0 .../under-applied-builtin-call.js | 0 .../turbolev/unreachable-catch-handler.js | 54 + .../unreachable-catch.js | 0 .../write-const-glob.js | 0 .../maglev-frontend/regress-351418019.js | 148 - ...ray-length-index-into-typed-array-large.js | 32 - .../mjsunit/turboshaft/regress-456779480.js | 18 + .../mjsunit/turboshaft/regress-475299908.js | 15 + deps/v8/test/mjsunit/wasm/cont-bind.js | 305 + .../mjsunit/wasm/custom-descriptors-casts.js | 16 +- .../wasm/custom-descriptors-imports.js | 48 + .../wasm/custom-descriptors-inlining.js | 2 +- .../wasm/custom-descriptors-interop.js | 117 +- .../wasm/custom-descriptors-proxies.js | 2 +- .../test/mjsunit/wasm/custom-descriptors.js | 140 +- .../test/mjsunit/wasm/debug-trace-minimal.js | 39 + deps/v8/test/mjsunit/wasm/exact-types.js | 15 +- .../mjsunit/wasm/gc-js-interop-objects.js | 4 +- deps/v8/test/mjsunit/wasm/gc-js-interop.js | 9 +- .../wasm/grow-huge-memory-resizable-buffer.js | 1 + deps/v8/test/mjsunit/wasm/half-shuffles.js | 32 + .../mjsunit/wasm/imported-strings-invalid.js | 10 + deps/v8/test/mjsunit/wasm/many-modules.js | 2 + .../mjsunit/wasm/redundant-shuffle-lanes.js | 135 + .../v8/test/mjsunit/wasm/regress-455605199.js | 22 + .../v8/test/mjsunit/wasm/regress-462100921.js | 38 + .../v8/test/mjsunit/wasm/regress-467205576.js | 30 + .../v8/test/mjsunit/wasm/regress-467863659.js | 28 + .../v8/test/mjsunit/wasm/regress-471363817.js | 73 + .../v8/test/mjsunit/wasm/regress-474141354.js | 50 + deps/v8/test/mjsunit/wasm/resume-throw.js | 140 + .../wasm/shared-everything/array-new-elem.js | 44 + .../test-acq-rel-instructions.js | 152 + deps/v8/test/mjsunit/wasm/simd-dot-i8.js | 128 + .../test/mjsunit/wasm/simd-extract-replace.js | 151 + .../test/mjsunit/wasm/simd-load-replaces.js | 92 + deps/v8/test/mjsunit/wasm/simd-s128-orn.js | 42 + deps/v8/test/mjsunit/wasm/simd-usaddl.js | 214 + deps/v8/test/mjsunit/wasm/simd-usaddw.js | 227 + deps/v8/test/mjsunit/wasm/simd-ussubl.js | 220 + deps/v8/test/mjsunit/wasm/simd-ussubw.js | 202 + .../mjsunit/wasm/stack-switching-params.js | 243 + deps/v8/test/mjsunit/wasm/stack-switching.js | 60 +- deps/v8/test/mjsunit/wasm/wasm-interpreter.js | 161 + .../test/mjsunit/wasm/wasm-module-builder.js | 148 +- deps/v8/test/mkgrokdump/mkgrokdump.cc | 6 +- .../local-tests/test/staging/features.txt | 8 + deps/v8/test/test262/test262.status | 419 +- deps/v8/test/test262/testcfg.py | 5 +- deps/v8/test/unittests/BUILD.gn | 68 +- .../test/unittests/api/api-wasm-unittest.cc | 130 + .../unittests/api/interceptor-unittest.cc | 44 +- .../v8/test/unittests/api/isolate-unittest.cc | 96 + .../api/resource-constraints-unittest.cc | 9 +- .../assembler/assembler-arm-unittest.cc} | 414 +- .../assembler/assembler-arm64-unittest.cc} | 1510 ++--- .../assembler}/assembler-helper-arm.cc | 2 +- .../assembler}/assembler-helper-arm.h | 0 .../assembler/assembler-ia32-unittest.cc} | 176 +- .../assembler/assembler-loong64-unittest.cc} | 338 +- .../assembler/assembler-mips64-unittest.cc} | 3360 +++++----- .../assembler/assembler-ppc-unittest.cc} | 79 +- .../assembler/assembler-riscv32-unittest.cc} | 761 +-- .../assembler/assembler-riscv64-unittest.cc} | 949 +-- .../assembler/assembler-s390-unittest.cc} | 134 +- .../assembler/assembler-x64-unittest.cc | 231 + .../assembler/disasm-arm64-unittest.cc | 3 + .../assembler/disasm-loong64-unittest.cc | 1445 +++++ .../assembler/disasm-riscv-unittest.cc | 8 +- .../assembler/disasm-x64-unittest.cc | 5 +- .../assembler/macro-assembler-arm-unittest.cc | 285 + .../macro-assembler-loong64-unittest.cc | 2810 +++++++- .../macro-assembler-mips64-unittest.cc | 1644 ++++- .../macro-assembler-riscv-unittest.cc | 66 - .../macro-assembler-riscv32-unittest.cc} | 224 +- .../macro-assembler-riscv64-unittest.cc} | 248 +- .../assembler/simple-riscv32-unittest.cc} | 33 +- .../assembler/simple-riscv64-unittest.cc} | 38 +- .../sync-primitives-arm-unittest.cc} | 24 +- .../assembler}/test-helper-riscv32.cc | 6 +- .../assembler}/test-helper-riscv32.h | 14 +- .../assembler}/test-helper-riscv64.cc | 6 +- .../assembler}/test-helper-riscv64.h | 20 +- .../assembler}/test-utils-arm64.cc | 64 +- .../assembler}/test-utils-arm64.h | 4 +- .../base/platform/platform-unittest.cc | 231 +- .../unittests/base/platform/time-unittest.cc | 2 +- .../base/virtual-address-space-unittest.cc | 68 +- .../builtins/builtins-math-unittest.cc | 352 + .../unittests/codegen/code-pages-unittest.cc | 6 +- ...aft-instruction-selector-arm64-unittest.cc | 1178 +++- .../backend/instruction-selector-unittest.cc | 2 +- .../backend/instruction-selector-unittest.h | 10 +- ...urboshaft-instruction-selector-unittest.cc | 2 +- ...turboshaft-instruction-selector-unittest.h | 55 +- .../compiler/bytecode-analysis-unittest.cc | 2 +- .../unittests/compiler/function-tester.cc | 11 + .../test/unittests/compiler/function-tester.h | 1 + .../compiler/js-create-lowering-unittest.cc | 20 +- .../js-intrinsic-lowering-unittest.cc | 18 - .../compiler/js-typed-lowering-unittest.cc | 20 +- .../compiler/linkage-tail-call-unittest.cc | 18 +- ...t-instruction-selector-loong64-unittest.cc | 197 +- ...ft-instruction-selector-mips64-unittest.cc | 127 +- .../regalloc/register-allocator-unittest.cc | 2 +- ...t-instruction-selector-riscv64-unittest.cc | 13 + .../turboshaft/call-runtime-unittest.cc | 103 + .../turboshaft/control-flow-unittest.cc | 2 +- .../loop-unrolling-analyzer-unittest.cc | 8 +- .../compiler/turboshaft/reducer-test.h | 42 +- .../wasm-shuffle-reducer-unittest.cc | 301 +- .../compiler/turboshaft/wasm-simd-unittest.cc | 99 + .../test/unittests/compiler/typer-unittest.cc | 37 +- ...shaft-instruction-selector-x64-unittest.cc | 4 +- .../unittests/dumpling/dumpling-unittest.cc | 78 + .../flags/flag-definitions-unittest.cc | 10 + .../v8/test/unittests/gen_fuzztest_configs.py | 16 +- .../unittests/gen_fuzztest_configs_test.py | 17 +- .../unittests/heap/code-range-unittest.cc | 4 +- .../conservative-stack-visitor-unittest.cc | 14 +- .../unified-heap-snapshot-unittest.cc | 2 +- .../heap/cppgc-js/unified-heap-unittest.cc | 15 +- .../heap/cppgc/free-list-unittest.cc | 9 +- .../heap/cppgc/heap-object-header-unittest.cc | 4 +- .../heap-statistics-collector-unittest.cc | 4 +- .../heap/cppgc/metric-recorder-unittest.cc | 85 +- .../heap/cppgc/page-memory-unittest.cc | 13 +- .../heap/cppgc/source-location-unittest.cc | 2 + deps/v8/test/unittests/heap/cppgc/tests.h | 2 +- .../heap/global-safepoint-unittest.cc | 1 - .../heap/heap-controller-unittest.cc | 16 +- deps/v8/test/unittests/heap/heap-unittest.cc | 691 +- deps/v8/test/unittests/heap/heap-utils.cc | 40 +- deps/v8/test/unittests/heap/heap-utils.h | 11 +- .../heap/inner-pointer-resolution-unittest.cc | 30 +- .../unittests/heap/memory-reducer-unittest.cc | 52 +- .../unittests/heap/page-casting-unittest.cc | 136 + .../unittests/heap/page-promotion-unittest.cc | 10 +- deps/v8/test/unittests/heap/pool-unittest.cc | 9 +- .../unittests/heap/shared-heap-unittest.cc | 11 +- .../test/unittests/heap/slot-set-unittest.cc | 4 +- .../v8/test/unittests/heap/spaces-unittest.cc | 11 +- .../bytecode-array-builder-unittest.cc | 60 +- .../bytecode-array-iterator-unittest.cc | 18 +- ...bytecode-array-random-iterator-unittest.cc | 46 +- .../bytecode-array-writer-unittest.cc | 11 +- .../interpreter/bytecode-decoder-unittest.cc | 24 +- .../bytecode-expectations-printer.cc | 63 +- .../ArrayLiterals.golden | 58 +- .../AssignmentsInBinaryExpression.golden | 50 +- .../AsyncGenerators.golden | 206 +- .../bytecode_expectations/AsyncModules.golden | 110 +- .../BasicBlockToBoolean.golden | 18 +- .../bytecode_expectations/BasicLoops.golden | 202 +- .../BreakableBlocks.golden | 54 +- .../CallAndSpread.golden | 46 +- .../bytecode_expectations/CallGlobal.golden | 8 +- .../CallLookupSlot.golden | 24 +- .../bytecode_expectations/CallNew.golden | 22 +- .../bytecode_expectations/CallRuntime.golden | 6 +- .../ClassAndSuperClass.golden | 26 +- .../ClassDeclarations.golden | 86 +- .../CompareBoolean.golden | 8 +- .../bytecode_expectations/CompareNil.golden | 4 +- .../CompareTypeOf.golden | 206 +- .../CompoundExpressions.golden | 32 +- .../bytecode_expectations/Conditional.golden | 4 +- .../ConstVariable.golden | 6 +- .../ConstVariableContextSlot.golden | 34 +- .../ContextParameters.golden | 28 +- .../ContextVariables.golden | 560 +- .../CountOperators.golden | 86 +- .../CreateArguments.golden | 16 +- .../CreateRestParameter.golden | 8 +- .../DeclareGlobals.golden | 26 +- .../bytecode_expectations/Delete.golden | 20 +- .../DeleteLookupSlotInEval.golden | 8 +- .../DestructuringAssignment.golden | 112 +- .../ElideRedundantHoleChecks.golden | 482 +- ...dantLoadOperationOfImmutableContext.golden | 6 +- .../bytecode_expectations/Eval.golden | 16 +- .../bytecode_expectations/ForAwaitOf.golden | 224 +- .../bytecode_expectations/ForIn.golden | 62 +- .../bytecode_expectations/ForOf.golden | 108 +- .../bytecode_expectations/ForOfLoop.golden | 264 +- .../ForOfOptimization.golden | 74 +- .../FunctionLiterals.golden | 10 +- .../GenerateTestUndetectable.golden | 16 +- .../bytecode_expectations/Generators.golden | 134 +- .../GlobalCompoundExpressions.golden | 12 +- .../GlobalCountOperators.golden | 28 +- .../bytecode_expectations/GlobalDelete.golden | 14 +- .../HeapNumberConstants.golden | 10 +- .../bytecode_expectations/IIFE.golden | 94 +- .../bytecode_expectations/IfConditions.golden | 46 +- .../bytecode_expectations/LetVariable.golden | 2 +- .../LetVariableContextSlot.golden | 34 +- .../bytecode_expectations/LoadGlobal.golden | 264 +- .../LogicalExpressions.golden | 16 +- .../bytecode_expectations/LookupSlot.golden | 92 +- .../LookupSlotInEval.golden | 10 +- .../bytecode_expectations/Modules.golden | 186 +- .../bytecode_expectations/NewAndSpread.golden | 58 +- .../ObjectLiterals.golden | 98 +- .../OuterContextVariables.golden | 10 +- .../PrimitiveExpressions.golden | 44 +- .../PrivateAccessorAccess.golden | 98 +- .../PrivateAccessorDeclaration.golden | 178 +- .../PrivateClassFieldAccess.golden | 24 +- .../PrivateClassFields.golden | 134 +- .../PrivateMethodAccess.golden | 116 +- .../PrivateMethodDeclaration.golden | 86 +- .../bytecode_expectations/PropertyCall.golden | 288 +- .../PropertyLoadStore.golden | 48 +- .../PropertyLoads.golden | 528 +- .../PropertyStores.golden | 1064 ++-- .../PublicClassFields.golden | 114 +- .../RegExpLiterals.golden | 12 +- .../RemoveRedundantLdar.golden | 16 +- .../SetPrototypePropertiesOptimization.golden | 76 +- .../StandardForLoop.golden | 212 +- .../StaticClassFields.golden | 202 +- .../StaticPrivateMethodAccess.golden | 144 +- .../StaticPrivateMethodDeclaration.golden | 78 +- .../bytecode_expectations/StoreGlobal.golden | 524 +- .../bytecode_expectations/StringConcat.golden | 56 +- .../StringConstants.golden | 10 +- .../SuperCallAndSpread.golden | 28 +- .../bytecode_expectations/Switch.golden | 72 +- .../TemplateLiterals.golden | 56 +- .../bytecode_expectations/Throw.golden | 4 +- .../TopLevelObjectLiterals.golden | 12 +- .../bytecode_expectations/TryCatch.golden | 6 +- .../bytecode_expectations/TryFinally.golden | 6 +- .../bytecode_expectations/Typeof.golden | 6 +- .../UnaryOperators.golden | 26 +- .../VariableWithHint.golden | 68 +- .../WideRegisters.golden | 32 +- .../WithStatement.golden | 6 +- .../interpreter-assembler-unittest.cc | 27 +- .../interpreter/interpreter-tester.cc | 38 + .../interpreter/interpreter-tester.h | 11 + .../interpreter/interpreter-unittest.cc | 144 +- .../v8/test/unittests/maglev/hamt-unittest.cc | 270 + .../maglev/maglev-graph-builder-unittest.cc | 68 + .../unittests/maglev/node-type-unittest.cc | 12 +- .../unittests/objects/dictionary-unittest.cc | 4 +- .../unittests/objects/modules-unittest.cc | 169 +- .../test/unittests/objects/object-unittest.cc | 46 + .../test/unittests/objects/roots-unittest.cc | 4 +- .../objects/value-serializer-unittest.cc | 12 +- .../unittests/objects/weakmaps-unittest.cc | 9 +- .../unittests/objects/weaksets-unittest.cc | 4 +- .../test/unittests/parser/parsing-unittest.cc | 32 +- .../parser/scanner-streams-unittest.cc | 4 +- .../test/unittests/regexp/regexp-unittest.cc | 244 +- .../sandbox/bytecode-verifier-unittest.cc | 578 ++ .../sandbox-hardware-support-unittest.cc | 157 +- .../unittests/sandbox/sandbox-unittest.cc | 36 + .../sandbox/sandbox-violation-unittest.cc | 45 + deps/v8/test/unittests/test-utils.cc | 44 + deps/v8/test/unittests/test-utils.h | 43 + deps/v8/test/unittests/unittests.status | 19 + .../unittests/utils/allocation-unittest.cc | 22 +- .../unittests/utils/identity-map-unittest.cc | 136 +- .../wasm/compilation-hints-unittest.cc | 244 + .../wasm/function-body-decoder-unittest.cc | 293 +- .../unittests/wasm/module-decoder-unittest.cc | 122 +- .../wasm/module-generation-fuzztest.cc | 50 +- ...imd-cross-compiler-determinism-fuzztest.cc | 43 +- .../wasm/streaming-decoder-unittest.cc | 16 +- .../unittests/wasm/struct-types-unittest.cc | 20 +- .../test/unittests/wasm/subtyping-unittest.cc | 14 +- .../test/unittests/wasm/wasm-compile-module.h | 4 +- ...mbler-unittest-custom-descriptors.wasm.inc | 4 +- ...embler-unittest-custom-descriptors.wat.inc | 4 +- .../unittests/wasm/wasm-tracing-unittest.cc | 4 +- .../zone/zone-chunk-list-unittest.cc | 5 +- deps/v8/test/wasm-js/report.js | 53 +- deps/v8/test/wasm-js/testcfg.py | 4 + deps/v8/test/wasm-js/tests.tar.gz.sha1 | 2 +- deps/v8/test/wasm-js/wasm-js.status | 32 +- .../v8/test/wasm-spec-tests/tests.tar.gz.sha1 | 2 +- .../wasm-spec-tests/wasm-spec-tests.status | 29 +- deps/v8/third_party/abseil-cpp/BUILD.gn | 19 + .../abseil-cpp/CMake/AbseilDll.cmake | 23 +- .../abseil-cpp/CMake/AbseilHelpers.cmake | 7 +- .../v8/third_party/abseil-cpp/README.chromium | 2 +- .../abseil-cpp/absl/base/BUILD.bazel | 8 +- .../third_party/abseil-cpp/absl/base/BUILD.gn | 14 +- .../abseil-cpp/absl/base/CMakeLists.txt | 1 + .../abseil-cpp/absl/base/attributes.h | 6 +- .../third_party/abseil-cpp/absl/base/casts.cc | 61 + .../third_party/abseil-cpp/absl/base/casts.h | 110 + .../abseil-cpp/absl/base/casts_test.cc | 130 +- .../third_party/abseil-cpp/absl/base/config.h | 29 +- .../absl/base/internal/iterator_traits.h | 4 + .../abseil-cpp/absl/base/internal/spinlock.cc | 20 +- .../abseil-cpp/absl/base/internal/spinlock.h | 27 +- .../absl/base/internal/strerror_test.cc | 3 +- .../absl/base/internal/unscaledcycleclock.cc | 2 +- .../third_party/abseil-cpp/absl/base/macros.h | 57 +- .../abseil-cpp/absl/base/options.h | 26 - .../abseil-cpp/absl/cleanup/cleanup.h | 4 + .../abseil-cpp/absl/container/BUILD.bazel | 197 +- .../abseil-cpp/absl/container/BUILD.gn | 107 +- .../abseil-cpp/absl/container/CMakeLists.txt | 138 +- .../abseil-cpp/absl/container/btree_map.h | 62 +- .../abseil-cpp/absl/container/btree_set.h | 58 +- .../abseil-cpp/absl/container/btree_test.cc | 108 +- .../abseil-cpp/absl/container/chunked_queue.h | 755 +++ .../absl/container/chunked_queue_benchmark.cc | 386 ++ .../absl/container/chunked_queue_test.cc | 768 +++ .../abseil-cpp/absl/container/fixed_array.h | 10 +- .../abseil-cpp/absl/container/flat_hash_map.h | 18 +- .../absl/container/flat_hash_map_test.cc | 3 +- .../abseil-cpp/absl/container/flat_hash_set.h | 18 +- .../absl/container/flat_hash_set_test.cc | 2 - .../absl/container/internal/btree_container.h | 15 +- .../absl/container/internal/chunked_queue.h | 173 + .../absl/container/internal/common.h | 51 + .../container/internal/container_memory.h | 8 +- .../internal/container_memory_test.cc | 11 + .../internal/hash_generator_testing.cc | 2 - .../internal/hash_generator_testing.h | 3 +- .../container/internal/hash_policy_testing.h | 14 - .../container/internal/hashtablez_sampler.cc | 7 +- .../container/internal/hashtablez_sampler.h | 29 +- .../internal/hashtablez_sampler_test.cc | 46 +- .../internal/heterogeneous_lookup_testing.h | 80 + .../absl/container/internal/inlined_vector.h | 13 +- .../absl/container/internal/raw_hash_map.h | 27 +- .../absl/container/internal/raw_hash_set.cc | 42 +- .../absl/container/internal/raw_hash_set.h | 116 +- .../internal/raw_hash_set_allocator_test.cc | 4 + .../internal/raw_hash_set_benchmark.cc | 8 + .../internal/raw_hash_set_probe_benchmark.cc | 10 +- .../container/internal/raw_hash_set_test.cc | 90 +- .../internal/unordered_map_constructor_test.h | 165 +- .../internal/unordered_map_lookup_test.h | 25 +- .../internal/unordered_map_members_test.h | 6 +- .../internal/unordered_map_modifiers_test.h | 106 +- .../internal/unordered_set_constructor_test.h | 165 +- .../internal/unordered_set_lookup_test.h | 15 +- .../internal/unordered_set_members_test.h | 6 +- .../internal/unordered_set_modifiers_test.h | 56 +- .../absl/container/linked_hash_map.h | 663 ++ .../container/linked_hash_map_benchmark.cc | 140 + .../absl/container/linked_hash_map_test.cc | 964 +++ .../absl/container/linked_hash_set.h | 524 ++ .../container/linked_hash_set_benchmark.cc | 84 + .../absl/container/linked_hash_set_test.cc | 917 +++ .../abseil-cpp/absl/container/node_hash_map.h | 19 +- .../abseil-cpp/absl/container/node_hash_set.h | 17 +- .../absl/container/node_hash_set_test.cc | 3 +- .../absl/copts/GENERATED_AbseilCopts.cmake | 79 + .../abseil-cpp/absl/copts/GENERATED_copts.bzl | 79 + .../abseil-cpp/absl/copts/copts.py | 21 +- .../abseil-cpp/absl/debugging/BUILD.bazel | 30 + .../abseil-cpp/absl/debugging/BUILD.gn | 21 + .../abseil-cpp/absl/debugging/CMakeLists.txt | 33 + .../absl/debugging/failure_signal_handler.cc | 4 +- .../internal/borrowed_fixup_buffer.cc | 118 + .../internal/borrowed_fixup_buffer.h | 71 + .../internal/borrowed_fixup_buffer_test.cc | 97 + .../absl/debugging/internal/demangle.cc | 4 +- .../absl/debugging/internal/examine_stack.cc | 4 + .../absl/debugging/internal/examine_stack.h | 7 + .../internal/stacktrace_powerpc-inl.inc | 5 +- .../debugging/internal/stacktrace_x86-inl.inc | 11 +- .../abseil-cpp/absl/debugging/stacktrace.cc | 102 +- .../abseil-cpp/absl/debugging/stacktrace.h | 3 + .../absl/debugging/stacktrace_benchmark.cc | 25 +- .../absl/debugging/stacktrace_test.cc | 52 +- .../third_party/abseil-cpp/absl/flags/flag.h | 3 +- .../abseil-cpp/absl/flags/marshalling.cc | 17 +- .../abseil-cpp/absl/flags/parse.cc | 6 +- .../abseil-cpp/absl/flags/parse_test.cc | 2 +- .../absl/functional/internal/any_invocable.h | 15 +- .../abseil-cpp/absl/hash/hash_benchmark.cc | 11 + .../abseil-cpp/absl/hash/hash_test.cc | 4 +- .../abseil-cpp/absl/hash/internal/hash.cc | 236 +- .../abseil-cpp/absl/hash/internal/hash.h | 126 +- .../absl/hash/internal/low_level_hash_test.cc | 47 +- .../abseil-cpp/absl/log/CMakeLists.txt | 33 + .../abseil-cpp/absl/log/check_test_impl.inc | 60 +- .../abseil-cpp/absl/log/internal/BUILD.bazel | 31 + .../abseil-cpp/absl/log/internal/BUILD.gn | 21 + .../abseil-cpp/absl/log/internal/check_op.h | 35 +- .../abseil-cpp/absl/log/internal/container.h | 312 + .../absl/log/internal/container_test.cc | 254 + .../absl/log/internal/vlog_config.cc | 34 +- .../abseil-cpp/absl/meta/BUILD.bazel | 51 + .../third_party/abseil-cpp/absl/meta/BUILD.gn | 23 + .../abseil-cpp/absl/meta/CMakeLists.txt | 46 + .../absl/meta/internal/constexpr_testing.h | 73 + .../meta/internal/constexpr_testing_test.cc | 40 + .../abseil-cpp/absl/meta/internal/requires.h | 67 + .../absl/meta/internal/requires_test.cc | 66 + .../abseil-cpp/absl/profiling/BUILD.bazel | 1 + .../abseil-cpp/absl/profiling/BUILD.gn | 1 + .../abseil-cpp/absl/profiling/CMakeLists.txt | 1 + .../abseil-cpp/absl/profiling/hashtable.cc | 7 +- .../profiling/internal/profile_builder.cc | 1 + .../abseil-cpp/absl/status/BUILD.bazel | 17 + .../abseil-cpp/absl/status/CMakeLists.txt | 16 + .../absl/status/internal/status_matchers.h | 4 +- .../abseil-cpp/absl/status/status.cc | 4 + .../abseil-cpp/absl/status/status.h | 5 + .../abseil-cpp/absl/status/status_matchers.h | 48 + .../absl/status/status_matchers_test.cc | 27 + .../abseil-cpp/absl/status/status_test.cc | 1 + .../abseil-cpp/absl/strings/BUILD.bazel | 90 +- .../abseil-cpp/absl/strings/BUILD.gn | 58 +- .../abseil-cpp/absl/strings/CMakeLists.txt | 71 +- .../abseil-cpp/absl/strings/cord.cc | 13 +- .../abseil-cpp/absl/strings/escaping.cc | 220 +- .../strings/internal/append_and_overwrite.h | 93 + .../internal/append_and_overwrite_test.cc | 95 + .../strings/internal/cord_rep_btree_test.cc | 16 +- .../absl/strings/internal/escaping.h | 16 +- .../absl/strings/internal/generic_printer.cc | 107 + .../absl/strings/internal/generic_printer.h | 115 + .../internal/generic_printer_internal.h | 423 ++ .../strings/internal/generic_printer_test.cc | 685 ++ .../strings/internal/resize_uninitialized.h | 12 - .../internal/str_format/convert_test.cc | 28 +- .../internal/str_format/float_conversion.cc | 503 +- .../abseil-cpp/absl/strings/numbers.cc | 71 +- .../abseil-cpp/absl/strings/numbers.h | 37 +- .../abseil-cpp/absl/strings/numbers_test.cc | 70 + .../absl/strings/resize_and_overwrite.h | 40 +- .../absl/strings/resize_and_overwrite_test.cc | 3 +- .../abseil-cpp/absl/strings/str_cat.cc | 100 +- .../abseil-cpp/absl/strings/str_split.h | 2 +- .../abseil-cpp/absl/strings/string_view.cc | 257 - .../abseil-cpp/absl/strings/string_view.h | 760 +-- .../absl/strings/string_view_benchmark.cc | 380 -- .../absl/strings/string_view_test.cc | 1313 ---- .../abseil-cpp/absl/strings/substitute.cc | 48 +- .../absl/synchronization/BUILD.bazel | 4 +- .../synchronization/internal/kernel_timeout.h | 4 +- .../internal/kernel_timeout_test.cc | 20 +- .../abseil-cpp/absl/synchronization/mutex.cc | 3 +- .../abseil-cpp/absl/synchronization/mutex.h | 21 +- .../absl/synchronization/notification.h | 2 +- .../abseil-cpp/absl/time/CMakeLists.txt | 2 + .../third_party/abseil-cpp/absl/time/clock.cc | 20 +- .../absl/time/internal/cctz/BUILD.bazel | 8 +- .../absl/time/internal/cctz/BUILD.gn | 6 + .../internal/cctz/src/time_zone_format.cc | 6 +- .../internal/cctz/src/time_zone_lookup.cc | 109 +- .../internal/cctz/src/time_zone_name_win.cc | 186 + .../internal/cctz/src/time_zone_name_win.h | 37 + .../absl/time/internal/cctz/testdata/version | 2 +- .../cctz/testdata/zoneinfo/America/Ensenada | Bin 1079 -> 1367 bytes .../testdata/zoneinfo/America/Santa_Isabel | Bin 1079 -> 1367 bytes .../cctz/testdata/zoneinfo/America/Tijuana | Bin 1079 -> 1367 bytes .../cctz/testdata/zoneinfo/Mexico/BajaNorte | Bin 1079 -> 1367 bytes .../cctz/testdata/zoneinfo/iso3166.tab | 18 +- .../cctz/testdata/zoneinfo/zone1970.tab | 24 +- .../cctz/testdata/zoneinfo/zonenow.tab | 94 +- .../third_party/abseil-cpp/absl/types/span.h | 8 + .../abseil-cpp/absl_hardening_test.cc | 13 +- .../0004-string-view-transitive-includes | 14 + .../patches/0005-mutex-deprecations.patch | 130 + .../abseil-cpp/symbols_arm64_dbg.def | 922 ++- .../abseil-cpp/symbols_arm64_dbg_cxx23.def | 920 ++- .../abseil-cpp/symbols_arm64_rel.def | 49 +- .../abseil-cpp/symbols_arm64_rel_cxx23.def | 49 +- .../abseil-cpp/symbols_x64_dbg.def | 922 ++- .../abseil-cpp/symbols_x64_dbg_cxx23.def | 920 ++- .../abseil-cpp/symbols_x64_rel.def | 50 +- .../abseil-cpp/symbols_x64_rel_asan.def | 68 +- .../abseil-cpp/symbols_x64_rel_asan_cxx23.def | 68 +- .../abseil-cpp/symbols_x64_rel_cxx23.def | 50 +- .../abseil-cpp/symbols_x86_dbg.def | 922 ++- .../abseil-cpp/symbols_x86_dbg_cxx23.def | 920 ++- .../abseil-cpp/symbols_x86_rel.def | 48 +- .../abseil-cpp/symbols_x86_rel_cxx23.def | 48 +- .../src/include/dragonbox/dragonbox.h | 817 ++- .../include/dragonbox/dragonbox_to_chars.h | 391 +- deps/v8/third_party/fp16/README.v8 | 5 +- .../highway/src/hwy/contrib/sort/BUILD | 308 + .../highway/src/hwy/ops/set_macros-inl.h | 9 +- deps/v8/third_party/simdutf/README.chromium | 3 +- deps/v8/third_party/simdutf/simdutf.cpp | 3829 ++++++++++- deps/v8/third_party/simdutf/simdutf.h | 400 +- deps/v8/third_party/zlib/BUILD.gn | 16 +- deps/v8/third_party/zlib/chromeconf.h | 3 - deps/v8/third_party/zlib/google/DEPS | 1 + deps/v8/third_party/zlib/google/zip_reader.cc | 108 +- deps/v8/third_party/zlib/google/zip_reader.h | 34 +- .../zlib/google/zip_reader_unittest.cc | 92 +- .../third_party/zlib/google/zip_unittest.cc | 5 +- deps/v8/third_party/zlib/google/zip_writer.cc | 18 +- deps/v8/tools/.vpython3 | 5 + deps/v8/tools/bazel/bazel.sha1 | 2 +- .../tools/clusterfuzz/foozzie/v8_commands.py | 6 +- .../clusterfuzz/foozzie/v8_fuzz_flags.json | 4 +- deps/v8/tools/clusterfuzz/js_fuzzer/corpus.js | 11 +- .../clusterfuzz/js_fuzzer/package-lock.json | 1773 +++++- .../tools/clusterfuzz/js_fuzzer/package.json | 2 + deps/v8/tools/clusterfuzz/js_fuzzer/runner.js | 7 +- .../clusterfuzz/js_fuzzer/source_helpers.js | 84 +- .../js_fuzzer/test/test_differential_fuzz.js | 5 + .../clusterfuzz/js_fuzzer/test/test_load.js | 31 + .../clusterfuzz/js_fuzzer/test/test_runner.js | 16 +- .../expected_code_0.js | 4 +- .../expected_code_1.js | 4 +- .../expected_flags_2.js | 6 +- .../js_fuzzer/test_data/transpile/proto1.js | 99 + .../test_data/transpile/proto1_expected.js | 67 + .../transpile/v8/test/mjsunit/mjsunit.js | 5 + .../transpile/v8/test/mjsunit/test1.js | 39 + .../v8/test/mjsunit/test1_expected.js | 102 + .../trials/clusterfuzz_trials_config.json | 6 +- deps/v8/tools/debug_helper/debug-helper.h | 7 + .../debug_helper/get-object-properties.cc | 19 +- deps/v8/tools/dev/gen-static-roots.py | 91 + deps/v8/tools/dev/gm.py | 39 +- deps/v8/tools/gdbinit | 79 + deps/v8/tools/heap-layout/index.html | 6 +- .../v8/tools/js/log-file-reader-template.html | 4 +- deps/v8/tools/lldb_commands.py | 6 + deps/v8/tools/perf-bisect.pl | 97 +- .../tools/process-wasm-compilation-times.py | 22 +- deps/v8/tools/profiling/linux-perf-d8.py | 2 +- deps/v8/tools/regexp-sequences.py | 97 +- deps/v8/tools/release/roll_merge_gerrit.py | 19 +- deps/v8/tools/run_perf.py | 2 +- .../v8/tools/sanitizers/tsan_suppressions.txt | 2 +- .../view/script-panel-template.html | 12 +- .../system-analyzer/view/script-panel.mjs | 565 +- deps/v8/tools/testrunner/base_runner.py | 5 +- deps/v8/tools/testrunner/build_config.py | 1 + deps/v8/tools/testrunner/local/android.py | 3 +- deps/v8/tools/testrunner/local/command.py | 21 +- deps/v8/tools/testrunner/local/statusfile.py | 1 + deps/v8/tools/testrunner/local/utils.py | 12 + deps/v8/tools/testrunner/local/variants.py | 4 +- .../tools/testrunner/standard_runner_test.py | 6 +- .../testrunner/testdata/v8_build_config.json | 1 + deps/v8/tools/testrunner/testproc/fuzzer.py | 16 +- .../tools/testrunner/testproc/fuzzer_test.py | 16 + deps/v8/tools/torque/format-torque.py | 13 +- .../v8windbg/src/v8-debug-helper-interop.cc | 52 +- deps/v8/tools/v8windbg/test/script.js | 1 - deps/v8/tools/v8windbg/test/v8windbg-test.cc | 7 + .../wasm/mjsunit-module-disassembler-impl.h | 33 +- deps/v8/tools/whitespace.txt | 2 +- 2747 files changed, 165486 insertions(+), 91787 deletions(-) create mode 100644 deps/v8/bazel/toolchain/BUILD.bazel create mode 100644 deps/v8/bazel/toolchain/libcxx_repository.bzl create mode 100644 deps/v8/bazel/toolchain/llvm_repository.bzl create mode 100644 deps/v8/src/base/algorithm.h rename deps/v8/src/{wasm => base}/float16.h (77%) create mode 100644 deps/v8/src/base/memcopy.h create mode 100644 deps/v8/src/builtins/builtins-iterator-inl.h create mode 100644 deps/v8/src/builtins/builtins-iterator.h create mode 100644 deps/v8/src/builtins/builtins-math-xsum.cc create mode 100644 deps/v8/src/builtins/builtins-math-xsum.h create mode 100644 deps/v8/src/builtins/builtins-math.cc create mode 100644 deps/v8/src/builtins/builtins-string-tsa-inl.h create mode 100644 deps/v8/src/compiler/basic-block-call-graph-profiler.cc rename deps/v8/src/compiler/{basic-block-instrumentor.h => basic-block-call-graph-profiler.h} (53%) delete mode 100644 deps/v8/src/compiler/basic-block-instrumentor.cc create mode 100644 deps/v8/src/compiler/turboshaft/load-store-verification-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/maglev-assert-types-reducer.h create mode 100644 deps/v8/src/d8/hardware-watchpoints.cc create mode 100644 deps/v8/src/d8/hardware-watchpoints.h create mode 100644 deps/v8/src/dumpling/OWNERS create mode 100644 deps/v8/src/dumpling/dumpling-manager.cc create mode 100644 deps/v8/src/dumpling/dumpling-manager.h create mode 100644 deps/v8/src/dumpling/object-dumping.cc create mode 100644 deps/v8/src/dumpling/object-dumping.h create mode 100644 deps/v8/src/execution/isolate-data-fields.h create mode 100644 deps/v8/src/execution/riscv/shadow-stack-riscv.cc create mode 100644 deps/v8/src/execution/riscv/shadow-stack-riscv.h create mode 100644 deps/v8/src/heap/base-page-inl.h rename deps/v8/src/heap/{memory-chunk-metadata.cc => base-page.cc} (75%) rename deps/v8/src/heap/{memory-chunk-metadata.h => base-page.h} (77%) create mode 100644 deps/v8/src/heap/large-page-inl.h delete mode 100644 deps/v8/src/heap/large-page-metadata-inl.h delete mode 100644 deps/v8/src/heap/large-page-metadata.h rename deps/v8/src/heap/{large-page-metadata.cc => large-page.cc} (67%) create mode 100644 deps/v8/src/heap/large-page.h delete mode 100644 deps/v8/src/heap/memory-chunk-metadata-inl.h create mode 100644 deps/v8/src/heap/mutable-page-inl.h delete mode 100644 deps/v8/src/heap/mutable-page-metadata-inl.h rename deps/v8/src/heap/{mutable-page-metadata.cc => mutable-page.cc} (80%) rename deps/v8/src/heap/{mutable-page-metadata.h => mutable-page.h} (75%) create mode 100644 deps/v8/src/heap/normal-page-inl.h rename deps/v8/src/heap/{page-metadata.cc => normal-page.cc} (69%) rename deps/v8/src/heap/{page-metadata.h => normal-page.h} (57%) delete mode 100644 deps/v8/src/heap/page-metadata-inl.h create mode 100644 deps/v8/src/maglev/hamt.h create mode 100644 deps/v8/src/maglev/loong64/maglev-assembler-loong64-inl.h create mode 100644 deps/v8/src/maglev/loong64/maglev-assembler-loong64.cc create mode 100644 deps/v8/src/maglev/loong64/maglev-ir-loong64.cc create mode 100644 deps/v8/src/maglev/maglev-node-type.cc create mode 100644 deps/v8/src/maglev/maglev-node-type.h create mode 100644 deps/v8/src/maglev/maglev-range-verification.cc create mode 100644 deps/v8/src/maglev/maglev-range-verification.h create mode 100644 deps/v8/src/maglev/maglev-range.h create mode 100644 deps/v8/src/objects/trusted-pointer-inl.h create mode 100644 deps/v8/src/objects/trusted-pointer.h create mode 100644 deps/v8/src/regexp/regexp-ast-printer.cc create mode 100644 deps/v8/src/regexp/regexp-ast-printer.h create mode 100644 deps/v8/src/regexp/regexp-bytecode-analysis.cc create mode 100644 deps/v8/src/regexp/regexp-bytecode-analysis.h create mode 100644 deps/v8/src/regexp/regexp-graph-printer.cc create mode 100644 deps/v8/src/regexp/regexp-graph-printer.h create mode 100644 deps/v8/src/regexp/regexp-node-printer.cc create mode 100644 deps/v8/src/regexp/regexp-node-printer.h create mode 100644 deps/v8/src/regexp/regexp-printer.cc create mode 100644 deps/v8/src/regexp/regexp-printer.h create mode 100644 deps/v8/src/sandbox/bytecode-verifier.cc create mode 100644 deps/v8/src/sandbox/bytecode-verifier.h create mode 100644 deps/v8/src/sandbox/external-strings-cage.cc create mode 100644 deps/v8/src/sandbox/external-strings-cage.h create mode 100644 deps/v8/src/sandbox/sandboxable-thread.cc create mode 100644 deps/v8/src/sandbox/sandboxable-thread.h create mode 100644 deps/v8/src/strings/owning-external-string-resource.h delete mode 100644 deps/v8/src/tools/dumpling/dumpling_v8.patch create mode 100644 deps/v8/src/torque/ast-visitor.h create mode 100644 deps/v8/src/torque/tsa-generator.cc create mode 100644 deps/v8/src/torque/tsa-generator.h create mode 100644 deps/v8/src/tracing/perfetto-sdk.h delete mode 100644 deps/v8/src/utils/memcopy.cc create mode 100644 deps/v8/src/wasm/compilation-hints-generation.cc create mode 100644 deps/v8/src/wasm/compilation-hints-generation.h create mode 100644 deps/v8/src/wasm/interpreter/riscv/interpreter-builtins-riscv.cc create mode 100644 deps/v8/src/wasm/wasm-stack-wrapper-cache.cc create mode 100644 deps/v8/src/wasm/wasm-stack-wrapper-cache.h create mode 100644 deps/v8/src/wasm/wasm-wrapper-cache-inl.h create mode 100644 deps/v8/src/wasm/wasm-wrapper-cache.cc create mode 100644 deps/v8/src/wasm/wasm-wrapper-cache.h rename deps/v8/test/cctest/heap/{test-array-buffer-tracker.cc => test-array-buffer-sweeper.cc} (91%) delete mode 100644 deps/v8/test/cctest/test-macro-assembler-arm.cc delete mode 100644 deps/v8/test/cctest/test-macro-assembler-loong64.cc delete mode 100644 deps/v8/test/cctest/test-macro-assembler-mips64.cc create mode 100644 deps/v8/test/common/noop-bytecode-verifier.h create mode 100644 deps/v8/test/filecheck/crash/proto-assign-seq-opt-count-0.js create mode 100644 deps/v8/test/filecheck/proto-assign-seq-opt-count.js create mode 100644 deps/v8/test/filecheck/wasm-turbolev-inlined-wrapper.js rename deps/v8/test/filecheck/{crash/wasm-failed-type-assertion.js => wasm/crash/failed-type-assertion.js} (100%) rename deps/v8/test/filecheck/{wasm-pause.js => wasm/pause.js} (100%) create mode 100644 deps/v8/test/fuzzer/wasm/code/regress-470274340 create mode 100644 deps/v8/test/fuzzer/wasm/module/regress-419922463.wasm create mode 100644 deps/v8/test/fuzzer/wasm/module/regress-478553475.wasm create mode 100644 deps/v8/test/inspector/debugger/paused-function-location-expected.txt create mode 100644 deps/v8/test/inspector/debugger/paused-function-location.js create mode 100644 deps/v8/test/inspector/regress/regress-crbug-466244926-expected.txt create mode 100644 deps/v8/test/inspector/regress/regress-crbug-466244926.js create mode 100644 deps/v8/test/intl/regress-450077863.js create mode 100644 deps/v8/test/intl/regress-463070442.js delete mode 100644 deps/v8/test/intl/temporal/calendar/fields.js create mode 100644 deps/v8/test/message/debug-trace-minimal.js create mode 100644 deps/v8/test/message/debug-trace-minimal.out create mode 100644 deps/v8/test/message/js-wasm-wrapper-inlining-turbolev-32.js rename deps/v8/test/message/{js-wasm-wrapper-inlining-turbolev.out => js-wasm-wrapper-inlining-turbolev-32.out} (73%) delete mode 100644 deps/v8/test/message/js-wasm-wrapper-inlining-turbolev.js create mode 100644 deps/v8/test/message/wasm-compilation-hints-inlining-no-liftoff.js create mode 100644 deps/v8/test/message/wasm-compilation-hints-inlining-no-liftoff.out create mode 100644 deps/v8/test/message/wasm-compilation-hints-inlining.js create mode 100644 deps/v8/test/message/wasm-compilation-hints-inlining.out create mode 100644 deps/v8/test/message/wasm-debug-trace-minimal.js create mode 100644 deps/v8/test/message/wasm-debug-trace-minimal.out create mode 100644 deps/v8/test/message/wasm-generate-compilation-hints.js create mode 100644 deps/v8/test/message/wasm-generate-compilation-hints.out create mode 100644 deps/v8/test/mjsunit/array-buffer-view-tracking-regress.js create mode 100644 deps/v8/test/mjsunit/array-buffer-view-tracking.js create mode 100644 deps/v8/test/mjsunit/array-constructor-subclass.js create mode 100644 deps/v8/test/mjsunit/compiler/fast-api-calls-exception.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-461531853.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-463606272.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-475479135-1.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-475479135-2.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-477645118.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-array-const-tracking.js create mode 100644 deps/v8/test/mjsunit/compiler/typed-array-js-call-reducer.js create mode 100644 deps/v8/test/mjsunit/debug-trace-minimal-in-gc.js create mode 100644 deps/v8/test/mjsunit/debug-trace-minimal-in-print.js rename deps/v8/test/mjsunit/{regress/wasm/regress-396461004.js => debug-trace-minimal.js} (50%) create mode 100644 deps/v8/test/mjsunit/decorators/regress-456538025.js create mode 100644 deps/v8/test/mjsunit/decorators/regress-461485805.js create mode 100644 deps/v8/test/mjsunit/es8/async-await-closure-reuse.js create mode 100644 deps/v8/test/mjsunit/harmony/await-using-assignment-in-for-loop.js create mode 100644 deps/v8/test/mjsunit/harmony/await-using-valid-assignments-in-for-loop.js create mode 100644 deps/v8/test/mjsunit/harmony/iterator-concat.js create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-define-class-field.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-delete-property-missing-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-delete-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-for-in.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-get-own-property-descriptor-missing-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-get-own-property-descriptor.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-has-nonexistent-that-throws.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-has-on-prototype-nonexistent-that-throws.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-has-on-prototype-that-throws.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-has-property-missing-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-has-property-ns-as-prototype-missing-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-has-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-has-that-throws.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-lookup-getter.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-lookup-setter.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-missing-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-no-trigger.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-non-existant-field-that-throws.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-nonexistent-on-prototype-that-throws.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-ns-as-prototype-missing-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-ns-as-prototype.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-object-define-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-object-has-own-missing-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-object-has-own.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-object-keys.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-on-prototype-that-throws.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-own-property-keys.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-property-is-enumerable.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-prototype-for-in.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-prototype-has-property.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-prototype-lookup-getter.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-prototype-lookup-setter.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer-that-throws.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-import-defer.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-skip-import-defer-1.mjs create mode 100644 deps/v8/test/mjsunit/harmony/modules-skip-import-defer-throws-1.mjs create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-454630441.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-463528051.js create mode 100644 deps/v8/test/mjsunit/harmony/regress/regress-468626968.js create mode 100644 deps/v8/test/mjsunit/immutable-arraybuffer.js create mode 100644 deps/v8/test/mjsunit/iterable-foreach.js create mode 100644 deps/v8/test/mjsunit/maglev-470137280.js create mode 100644 deps/v8/test/mjsunit/maglev/array-push-with-smi-object.js create mode 100644 deps/v8/test/mjsunit/maglev/checked_value_alt_overwrite.js create mode 100644 deps/v8/test/mjsunit/maglev/construct-spread-forward-vaargs.js create mode 100644 deps/v8/test/mjsunit/maglev/dataview-almost-oob.js create mode 100644 deps/v8/test/mjsunit/maglev/dataview-getbytelength-const-non-eager-inlining.js create mode 100644 deps/v8/test/mjsunit/maglev/dataview-getbytelength-const.js create mode 100644 deps/v8/test/mjsunit/maglev/dataview-getbytelength-not-dataview.js create mode 100644 deps/v8/test/mjsunit/maglev/dataview-getbytelength-undefined.js create mode 100644 deps/v8/test/mjsunit/maglev/dataview-getbytelength.js create mode 100644 deps/v8/test/mjsunit/maglev/maglev-assert-types.js create mode 100644 deps/v8/test/mjsunit/maglev/number-to-string.js create mode 100644 deps/v8/test/mjsunit/maglev/optimize-float64-ieee754.js create mode 100644 deps/v8/test/mjsunit/maglev/optimize-float64-unary.js create mode 100644 deps/v8/test/mjsunit/maglev/phi-untagging-backedge-self-1.js create mode 100644 deps/v8/test/mjsunit/maglev/phi-untagging-backedge-self-2.js create mode 100644 deps/v8/test/mjsunit/maglev/phi-untagging-conversions-no-truncation.js create mode 100644 deps/v8/test/mjsunit/maglev/phi-untagging-float64-into-smi-check-speculative.js create mode 100644 deps/v8/test/mjsunit/maglev/phi-untagging-float64-into-smi-check.js create mode 100644 deps/v8/test/mjsunit/maglev/phi-untagging-float64-load-input.js create mode 100644 deps/v8/test/mjsunit/maglev/phi-untagging-holeyfloat64-load-input.js create mode 100644 deps/v8/test/mjsunit/maglev/phi-untagging-int32-load-input.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-455554110.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-456014076.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-456697305.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-456778855.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-457475186.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-457475530.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-457866756.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-458608439.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-460084175.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-460220166.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-460668396.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-460678755.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-461541271.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-463237815.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-463565998.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-463722459.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-464105362.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-464323255.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-464612781.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-464965404.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-465730465.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-466510900.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-466701290.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-469481626.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-473913278.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-474458890.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-476329375.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-479557032.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-480100972.mjs create mode 100644 deps/v8/test/mjsunit/maglev/regress-480568109.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-482261044-1.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-482261044-2.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-482261044-3.js create mode 100644 deps/v8/test/mjsunit/maglev/store-constant-field-nan.js create mode 100644 deps/v8/test/mjsunit/math-sum-precise/array-iterator-modification-1.js create mode 100644 deps/v8/test/mjsunit/math-sum-precise/array-iterator-modification-2.js create mode 100644 deps/v8/test/mjsunit/math-sum-precise/basic.js create mode 100644 deps/v8/test/mjsunit/math-sum-precise/regress.js create mode 100644 deps/v8/test/mjsunit/math-sum-precise/typed-array-iterator-modification-1.js create mode 100644 deps/v8/test/mjsunit/math-sum-precise/typed-array-iterator-modification-2.js create mode 100644 deps/v8/test/mjsunit/math-sum-precise/typed-array-iterator-modification-3.js create mode 100644 deps/v8/test/mjsunit/math-sum-precise/typed-array-iterator-modification-4.js create mode 100644 deps/v8/test/mjsunit/natives-builtins.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_arrow_function.js => proto-seq-opt-arrow-function.js} (66%) rename deps/v8/test/mjsunit/opt-proto-seq/{test_assign_key_multiple_times.js => proto-seq-opt-assign-key-multiple-times.js} (81%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-basic.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-before-after.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_class_fast_path.js => proto-seq-opt-class-fast-path.js} (80%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-computed.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-constructor.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-destructuring.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_different_left_most_var.js => proto-seq-opt-different-left-most-var.js} (91%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-different-objects.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-duplicate.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_eval_return_last_set_property.js => proto-seq-opt-eval-return-last-set-property.js} (93%) rename deps/v8/test/mjsunit/opt-proto-seq/{test_feedback_vector_side_effect.js => proto-seq-opt-feedback-vector-side-effect.js} (90%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-frozen-objects-strict.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-frozen-objects.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_function_fast_path.js => proto-seq-opt-function-fast-path.js} (72%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-functions.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-get-own-property-descriptor.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-get-own-property-descriptors.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-global-proxy.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_has_prototype_keys.js => proto-seq-opt-has-prototype-keys.js} (73%) rename deps/v8/test/mjsunit/opt-proto-seq/{test_has_setters.js => proto-seq-opt-has-setters.js} (75%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-ignore-chain-descriptors.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-iife.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-interleaved.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-lazy-override-builtin.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-limit.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-locked-proto-strict.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-locked-proto.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-non-extensible-objects-strict.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-non-extensible-objects.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-non-literal.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-not-function.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_not_proto_assign_seq.js => proto-seq-opt-not-proto-assign-seq.js} (73%) rename deps/v8/test/mjsunit/opt-proto-seq/{test_null_prototype.js => proto-seq-opt-null-prototype.js} (68%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-object-assign.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-object-entries.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-object-values.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_poison_default_proto.js => proto-seq-opt-poison-default-proto.js} (75%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-preserve-descriptor.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_proto_of_prototype_assigned.js => proto-seq-opt-proto-of-prototype-assigned.js} (85%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-proto-prop.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_prototype_proto_keys.js => proto-seq-opt-prototype-proto-keys.js} (70%) rename deps/v8/test/mjsunit/opt-proto-seq/{test_prototype_read_only.js => proto-seq-opt-prototype-read-only.js} (71%) create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-readonly-chain.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-reassign-local.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-reflect-get-own-property-descriptor.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-reflect-get.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-setter-chain.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-shadow.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-slow-modified.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-slow-non-extensible.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-spreading.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-strict.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/proto-seq-opt-structured-clone.js rename deps/v8/test/mjsunit/opt-proto-seq/{test_variable_proxy_eval.js => proto-seq-opt-variable-proxy-eval.js} (92%) rename deps/v8/test/mjsunit/opt-proto-seq/{test_variable_proxy.js => proto-seq-opt-variable-proxy.js} (92%) create mode 100644 deps/v8/test/mjsunit/regexp-boyer-moore.js create mode 100644 deps/v8/test/mjsunit/regexp-capture-4.js create mode 100644 deps/v8/test/mjsunit/regexp/skip-until-one-of-masked3.js create mode 100644 deps/v8/test/mjsunit/regress-450308355.js create mode 100644 deps/v8/test/mjsunit/regress-459629345.js create mode 100644 deps/v8/test/mjsunit/regress-463527959.js create mode 100644 deps/v8/test/mjsunit/regress-477993735.js create mode 100644 deps/v8/test/mjsunit/regress-478126027.js create mode 100644 deps/v8/test/mjsunit/regress-480271345.js create mode 100644 deps/v8/test/mjsunit/regress/regress-441205658.js create mode 100644 deps/v8/test/mjsunit/regress/regress-448997822.js create mode 100644 deps/v8/test/mjsunit/regress/regress-452082290.js create mode 100644 deps/v8/test/mjsunit/regress/regress-454568212.js create mode 100644 deps/v8/test/mjsunit/regress/regress-455191443.js create mode 100644 deps/v8/test/mjsunit/regress/regress-455515497.js create mode 100644 deps/v8/test/mjsunit/regress/regress-456131918.js create mode 100644 deps/v8/test/mjsunit/regress/regress-456307067.js create mode 100644 deps/v8/test/mjsunit/regress/regress-457452276.js create mode 100644 deps/v8/test/mjsunit/regress/regress-457475185.js create mode 100644 deps/v8/test/mjsunit/regress/regress-457866804.js create mode 100644 deps/v8/test/mjsunit/regress/regress-458609996.js create mode 100644 deps/v8/test/mjsunit/regress/regress-458677902.js create mode 100644 deps/v8/test/mjsunit/regress/regress-458790911.js create mode 100644 deps/v8/test/mjsunit/regress/regress-458849015.js create mode 100644 deps/v8/test/mjsunit/regress/regress-459129418.js create mode 100644 deps/v8/test/mjsunit/regress/regress-459130968.js create mode 100644 deps/v8/test/mjsunit/regress/regress-459310839.js create mode 100644 deps/v8/test/mjsunit/regress/regress-459335522.js create mode 100644 deps/v8/test/mjsunit/regress/regress-459526523.js create mode 100644 deps/v8/test/mjsunit/regress/regress-459526524.js create mode 100644 deps/v8/test/mjsunit/regress/regress-459629118.js create mode 100644 deps/v8/test/mjsunit/regress/regress-459857147.js create mode 100644 deps/v8/test/mjsunit/regress/regress-460180700.js create mode 100644 deps/v8/test/mjsunit/regress/regress-460285610.js create mode 100644 deps/v8/test/mjsunit/regress/regress-460300660.js create mode 100644 deps/v8/test/mjsunit/regress/regress-460328643.js create mode 100644 deps/v8/test/mjsunit/regress/regress-460946135.js create mode 100644 deps/v8/test/mjsunit/regress/regress-461041351.js create mode 100644 deps/v8/test/mjsunit/regress/regress-461203133.js create mode 100644 deps/v8/test/mjsunit/regress/regress-461464257.js create mode 100644 deps/v8/test/mjsunit/regress/regress-461531861.js create mode 100644 deps/v8/test/mjsunit/regress/regress-461969023.js create mode 100644 deps/v8/test/mjsunit/regress/regress-462477283.js create mode 100644 deps/v8/test/mjsunit/regress/regress-462758899.js create mode 100644 deps/v8/test/mjsunit/regress/regress-463124098.js create mode 100644 deps/v8/test/mjsunit/regress/regress-463405539.js create mode 100644 deps/v8/test/mjsunit/regress/regress-463593768.js create mode 100644 deps/v8/test/mjsunit/regress/regress-463634335.js create mode 100644 deps/v8/test/mjsunit/regress/regress-464210575.js create mode 100644 deps/v8/test/mjsunit/regress/regress-464678348.js create mode 100644 deps/v8/test/mjsunit/regress/regress-464961493.js create mode 100644 deps/v8/test/mjsunit/regress/regress-467247247.js create mode 100644 deps/v8/test/mjsunit/regress/regress-470137261.js create mode 100644 deps/v8/test/mjsunit/regress/regress-474179451.js create mode 100644 deps/v8/test/mjsunit/regress/regress-474401153.js create mode 100644 deps/v8/test/mjsunit/regress/regress-474417795.js create mode 100644 deps/v8/test/mjsunit/regress/regress-478681249.js create mode 100644 deps/v8/test/mjsunit/regress/regress-479872236.js create mode 100644 deps/v8/test/mjsunit/regress/regress-482199449.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-446122633.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-446124893.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-449028728.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-450868409.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-451144692.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-454276076.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-455711115.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-455832038.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-456319253.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-457106696.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-461547336.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-462045796.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-463089250.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-463546420.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-464606523.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-465815689.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-470127856.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-471380636.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-473272199.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-474491347.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-475896261.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-476177765.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-476461881.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-477654119.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-simd-458024245.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-simd-467479137.js create mode 100644 deps/v8/test/mjsunit/sandbox/bytecode-verifier-rejects-empty-bytecode.js create mode 100644 deps/v8/test/mjsunit/sandbox/bytecode-verifier-rejects-invalid-bytecode.js create mode 100644 deps/v8/test/mjsunit/sandbox/bytecode-verifier-testing-api.js create mode 100644 deps/v8/test/mjsunit/sandbox/hardware-watchpoints/basic-hardware-watchpoints.js delete mode 100644 deps/v8/test/mjsunit/sandbox/regress-443182220.js delete mode 100644 deps/v8/test/mjsunit/sandbox/regress-447307165.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-458679939.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-461097476.js delete mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-435630464-ccall.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-454734141.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-462217236.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-469759459.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-472139305.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-473478130.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/async-synchronization-workers-terminated.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/condition-async-wait-no-await.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/condition-async-wait-realm-disposed.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/condition-async-wait-timeout.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/condition-async-wait.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/mutex-async-lock-promise-reject.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/mutex-async-lock-promise-resolve.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/mutex-async-lock-realm-disposed.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/mutex-async-lock-workers-timeout.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/mutex-async-lock-workers.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/mutex-async-lock.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/mutex-async-locked-worker-terminated.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/mutex-async-unlocked-worker-terminated.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/regress-crbug-339043696.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/regress-crbug-349639796.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/regress-crbug-350641990.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/regress-crbug-366323424.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/regress-crbug-366643711.js delete mode 100644 deps/v8/test/mjsunit/shared-memory/regress-crbug-371659887.js create mode 100644 deps/v8/test/mjsunit/shared-memory/regress/regress-468231509.js create mode 100644 deps/v8/test/mjsunit/shared-memory/regress/regress-469804007.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-constructor.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-date-add.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-date-from-fields.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-date-until.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-day-of-week.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-day-of-year.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-day.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-days-in-month.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-days-in-week.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-days-in-year.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-fields.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-from.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-in-leap-year.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-merge-fields.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-month-code.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-month-day-from-fields.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-month.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-months-in-year.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-week-of-year.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-year-month-from-fields.js delete mode 100644 deps/v8/test/mjsunit/temporal/calendar-year.js delete mode 100644 deps/v8/test/mjsunit/temporal/date-totemporalinstant.js delete mode 100644 deps/v8/test/mjsunit/temporal/duration-abs.js delete mode 100644 deps/v8/test/mjsunit/temporal/duration-add.js delete mode 100644 deps/v8/test/mjsunit/temporal/duration-constructor.js delete mode 100644 deps/v8/test/mjsunit/temporal/duration-from.js delete mode 100644 deps/v8/test/mjsunit/temporal/duration-negated.js delete mode 100644 deps/v8/test/mjsunit/temporal/duration-to-json-boundary-cases.js delete mode 100644 deps/v8/test/mjsunit/temporal/duration-to-json.js delete mode 100644 deps/v8/test/mjsunit/temporal/duration-valueOf.js delete mode 100644 deps/v8/test/mjsunit/temporal/duration-with.js delete mode 100644 deps/v8/test/mjsunit/temporal/function-exist-no-intl.js delete mode 100644 deps/v8/test/mjsunit/temporal/function-exist.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-add.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-compare.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-constructor.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-equals.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-from-epoch-microseconds.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-from-epoch-milliseconds.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-from-epoch-nanoseconds.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-from-epoch-seconds.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-subtract.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-to-json.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-toJSON.js delete mode 100644 deps/v8/test/mjsunit/temporal/instant-valueOf.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-add.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-compare.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-constructor.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-equals.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-from.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-calendar.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-day.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-dayOfWeek.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-dayOfYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-daysInMonth.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-daysInWeek.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-daysInYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-era.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-eraYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-inLeapYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-iso-fields.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-month.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-monthCode.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-monthsInYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-weekOfYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-get-year.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-add.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-compare.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-constructor.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-equals.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-from.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-calendar.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-day.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-dayOfWeek.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-dayOfYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-daysInMonth.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-daysInWeek.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-daysInYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-era.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-eraYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-hour.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-inLeapYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-iso-fields.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-microsecond.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-millisecond.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-minute.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-month.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-monthCode.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-monthsInYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-nanosecond.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-second.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-weekOfYear.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-get-year.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-subtract.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-to-json.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-to-plain-date.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-to-plain-month-day.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-to-plain-time.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-to-plain-year-month.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-valueOf.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-with-calendar.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-with-plain-date.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-with-plain-time.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-time-with.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-to-json.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-to-plain-date-time.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-to-plain-month-day.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-to-plain-year-month.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-valueOf.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-with-calendar.js delete mode 100644 deps/v8/test/mjsunit/temporal/plain-date-with.js delete mode 100644 deps/v8/test/mjsunit/temporal/temporal-helpers.js delete mode 100644 deps/v8/test/mjsunit/temporal/time-zone-constructor.js create mode 100644 deps/v8/test/mjsunit/turbolev/ThrowSuperNotCalledIfHole-folding-in-outer-try-catch.js create mode 100644 deps/v8/test/mjsunit/turbolev/ThrowSuperNotCalledIfHole-folding-in-try-catch.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/Uint8Clamped-typed-array.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/add-double-property.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/api-call-no-prof.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/api-call-prof.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-buffer-detached.js (85%) create mode 100644 deps/v8/test/mjsunit/turbolev/array-buffer-length-detached-protector-invalid.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-destruct.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-double-load.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-foreach.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-holey-double-load.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-load-hole.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-oob-load.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-prototype-map-array-constructor-protector.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-prototype-map-elements-kinds-dict.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-prototype-map-elements-kinds.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-push-grow.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/array-push-multi-double.js create mode 100644 deps/v8/test/mjsunit/turbolev/array-push-multi-poly.js create mode 100644 deps/v8/test/mjsunit/turbolev/array-push-multi-smi.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-push-pop.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-smi-load.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/array-transitions.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/async-function-inline-1.js create mode 100644 deps/v8/test/mjsunit/turbolev/async-function-inline-2.js create mode 100644 deps/v8/test/mjsunit/turbolev/async-function-inline-3.js create mode 100644 deps/v8/test/mjsunit/turbolev/bigint-checknumber-no-deopt-loop.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/bitwise-smi.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/branch-on-math.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/builtin-continuation-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/call-spread-and-args.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/call-spread.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/catch-and-return.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/catch-multiple.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/catch.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/char-at.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/char-code-at-uint32max-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/check-float64-is-nan.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/check-intptr-is-smi.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/check-value-equals-f64.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/const-tracking-let.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/construct-array-feedback.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/construct-with-spread.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/constructor-extend-null-throw.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/constructor-super-called-twice.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/constructor-super-not-called.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/constructors.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/convert-receiver.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/create-array-lit.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/create-closure.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/create-object-lit.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/create-regexp-lit.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/create-shallow-array-literal.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/create-shallow-literal.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/dataview-getbytelength-not-dataview.js create mode 100644 deps/v8/test/mjsunit/turbolev/dataview-getbytelength-undefined.js create mode 100644 deps/v8/test/mjsunit/turbolev/dataview-getbytelength.js create mode 100644 deps/v8/test/mjsunit/turbolev/dataview-load-not-stale-float64.js create mode 100644 deps/v8/test/mjsunit/turbolev/dataview-load-not-stale-int32.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dataview.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/delete-property-sloppy.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/delete-property-strict.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-arguments-length.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-arguments.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-double-array.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-double-array2.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-duplicated-recursive.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-duplicated.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-heap-number.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-identical-heap-number-fields.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-multi-escape.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-nested-objects.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-regexp.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-rest-length.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-rest.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/dematerialized-simple-object.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/deopt-raw-float-int32.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/eval.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/exception-phis-retagging.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/extend-property-backing-store-1.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/extend-property-backing-store-2.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/fact.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/float-arith.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/float64-compare.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/float64-phi-osr.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/float64-to-bool-branch.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/float64-to-bool.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/for-in-arr.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/for-in-obj.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/for-in-this.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/function-apply-arguments.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/function-apply.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/function-call-generic.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-async-await-loop.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-async.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-if.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-infinite-loop.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-loop-if.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/generator-loop-inline.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-loop-multi-if.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-loop-no-forward-edge.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-loop-untagged-phis.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-loop.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-nested-loops.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-return-finally-loop.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-return-finally.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-return.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-straight-line.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-throw-loop-2-yields.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-throw-loop.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-throw-nested-loop.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-throw.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-yield-star-loop-1.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-yield-star-loop-2.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generator-yield-star.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generic-binop-exception.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/generic-binops-unops.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/get-template-object.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/has-in-prototype-chain-wasm.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/has-in-prototype-chain.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/holey-array-load.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/holey-float64-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/holey-float64-phi-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/holey-float64-phi-to-smi.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/ieee754-unary.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/inlined-function-loop.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/inlined-generator-basic.js create mode 100644 deps/v8/test/mjsunit/turbolev/inlined-generator-loop.js create mode 100644 deps/v8/test/mjsunit/turbolev/inlined-generator-next.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/inner-function.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/instanceof.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/int32-compare.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/javascript-builtin-continuation.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/js-call-lazy-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/js-call-on-receiver.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/js-fun-call.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/lazy-deopt-multi-return.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/literal-nan-hole-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-arr-with-float64-index.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-const-string-key.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/load-constant-holey-array.js create mode 100644 deps/v8/test/mjsunit/turbolev/load-elimination-backing-store-alias.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-field.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-global-inside-typeof.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-global.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-holey-double-arr-for-branch.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-holey-double-arr-for-return.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-named-from-super.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-named-generic.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/load-named-on-num.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/loop-multiple-forward-edges-no-phi.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/loop-multiple-forward-edges.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/loop.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/maglev-assert-types.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/make-array-init-size.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/make-array-no-init-size.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/make-fast-arr.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/make_objects.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/map-migration.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/math-atan2.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/math-pow.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/math-round.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/math-sqrt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/megamorphic-load.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/mutable-heap-number-field.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/nested-loop-osr-throw.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/new-array.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/new-derived.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/new-obj-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/new-obj.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/new_obj_arr_proto.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/new_obj_int_property.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/no-backedge-loop.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/not-initialized-let-in-switch.js (85%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/number-float-truncate.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/number-to-hf64.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/number-to-string.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/osr.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/over-under-application-inline.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/over-under-application-not-inline.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/phi-untagging-conversions-truncation.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/poly-store-transition.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/raw-abs.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-351177452.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-351219206.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-351283984.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-351418008.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/regress-351418019.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-351576252.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-354145409-1.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-354145409-2.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-355016861.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-356194021.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-356436621.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-356649152.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-356720579.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-356901359.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-356913279.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-356913284-1.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-356913284-2.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-358461173-1.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-358461173-2.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-358957666.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-359266991.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-360207713.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-361124378.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-368725681.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-372754523.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-373025979.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-379207983.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-379776583.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-385657142.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/regress-406054652.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/regress-453772795.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-454314508.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-456370968.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-457490096.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-462853804.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-464196074.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-464504276.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-465696601.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-466333912.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-468909596.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-469831362.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-470668818.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-475276561.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-475583927.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-476507590.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-477658238.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-478009695.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-478035107.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-478126029.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-478252842.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-479881588.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/rest-param-length.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/script-context-smi-generator.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/set-get-keyed-generic.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/set-named-generic.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/set-prototype-has.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/shift_left.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/single-input-phi.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/smi-arith.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/stack-overflow.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/static-assert-fail.js create mode 100644 deps/v8/test/mjsunit/turbolev/static-assert-simple.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/store-field.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/store-float-to-smi-field.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/store-global.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/store-jsarray.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/store-uint32-to-smi-field.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/string-cmp.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/string-concat-throw.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/string-concat.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/string-from-charcode.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/string-lt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/string-or-oddball-compare.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/string-slice.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/string-to-boolean.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/switch.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/symbol-eq.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/tagged-equal.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/test-undetectable.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/throw.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/to-boolean.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/to-name.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/to-number-int32-phi.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/to-number.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/to-string.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-all-kinds.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-as-number-large.js (78%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-as-number.js (78%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-branch-if-to-boolean-true.js (78%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-deopt-large.js (76%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-exception-phi.js (84%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-index-into-array-large.js (82%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-index-into-array.js (84%) create mode 100644 deps/v8/test/mjsunit/turbolev/typed-array-length-index-into-typed-array-large.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-index-into-typed-array.js (66%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-iteration-large.js (82%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-iteration.js (84%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-phi.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-rab-gsab.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-store-into-global-large.js (78%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-store-into-global.js (80%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-store-script-context-large.js (79%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-store-script-context.js (82%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-to-boolean.js (78%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-to-number-large.js (77%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-array-length-to-number.js (79%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typed-arrays.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/typeof-self.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/uint32-conv.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/uint8-clamped-arr-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/unary_minus_smi_minus_0.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/unconditional-deopt.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/under-applied-builtin-call.js (100%) create mode 100644 deps/v8/test/mjsunit/turbolev/unreachable-catch-handler.js rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/unreachable-catch.js (100%) rename deps/v8/test/mjsunit/{turboshaft/maglev-frontend => turbolev}/write-const-glob.js (100%) delete mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-351418019.js delete mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/typed-array-length-index-into-typed-array-large.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-456779480.js create mode 100644 deps/v8/test/mjsunit/turboshaft/regress-475299908.js create mode 100644 deps/v8/test/mjsunit/wasm/cont-bind.js create mode 100644 deps/v8/test/mjsunit/wasm/custom-descriptors-imports.js create mode 100644 deps/v8/test/mjsunit/wasm/debug-trace-minimal.js create mode 100644 deps/v8/test/mjsunit/wasm/regress-455605199.js create mode 100644 deps/v8/test/mjsunit/wasm/regress-462100921.js create mode 100644 deps/v8/test/mjsunit/wasm/regress-467205576.js create mode 100644 deps/v8/test/mjsunit/wasm/regress-467863659.js create mode 100644 deps/v8/test/mjsunit/wasm/regress-471363817.js create mode 100644 deps/v8/test/mjsunit/wasm/regress-474141354.js create mode 100644 deps/v8/test/mjsunit/wasm/resume-throw.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/array-new-elem.js create mode 100644 deps/v8/test/mjsunit/wasm/shared-everything/test-acq-rel-instructions.js create mode 100644 deps/v8/test/mjsunit/wasm/simd-dot-i8.js create mode 100644 deps/v8/test/mjsunit/wasm/simd-extract-replace.js create mode 100644 deps/v8/test/mjsunit/wasm/simd-load-replaces.js create mode 100644 deps/v8/test/mjsunit/wasm/simd-s128-orn.js create mode 100644 deps/v8/test/mjsunit/wasm/simd-usaddl.js create mode 100644 deps/v8/test/mjsunit/wasm/simd-usaddw.js create mode 100644 deps/v8/test/mjsunit/wasm/simd-ussubl.js create mode 100644 deps/v8/test/mjsunit/wasm/simd-ussubw.js create mode 100644 deps/v8/test/mjsunit/wasm/stack-switching-params.js rename deps/v8/test/{cctest/test-assembler-arm.cc => unittests/assembler/assembler-arm-unittest.cc} (95%) rename deps/v8/test/{cctest/test-assembler-arm64.cc => unittests/assembler/assembler-arm64-unittest.cc} (94%) rename deps/v8/test/{cctest => unittests/assembler}/assembler-helper-arm.cc (92%) rename deps/v8/test/{cctest => unittests/assembler}/assembler-helper-arm.h (100%) rename deps/v8/test/{cctest/test-assembler-ia32.cc => unittests/assembler/assembler-ia32-unittest.cc} (91%) rename deps/v8/test/{cctest/test-assembler-loong64.cc => unittests/assembler/assembler-loong64-unittest.cc} (95%) rename deps/v8/test/{cctest/test-assembler-mips64.cc => unittests/assembler/assembler-mips64-unittest.cc} (82%) rename deps/v8/test/{cctest/test-assembler-ppc.cc => unittests/assembler/assembler-ppc-unittest.cc} (96%) rename deps/v8/test/{cctest/test-assembler-riscv32.cc => unittests/assembler/assembler-riscv32-unittest.cc} (89%) rename deps/v8/test/{cctest/test-assembler-riscv64.cc => unittests/assembler/assembler-riscv64-unittest.cc} (85%) rename deps/v8/test/{cctest/test-assembler-s390.cc => unittests/assembler/assembler-s390-unittest.cc} (93%) delete mode 100644 deps/v8/test/unittests/assembler/macro-assembler-riscv-unittest.cc rename deps/v8/test/{cctest/test-macro-assembler-riscv32.cc => unittests/assembler/macro-assembler-riscv32-unittest.cc} (90%) rename deps/v8/test/{cctest/test-macro-assembler-riscv64.cc => unittests/assembler/macro-assembler-riscv64-unittest.cc} (91%) rename deps/v8/test/{cctest/test-simple-riscv32.cc => unittests/assembler/simple-riscv32-unittest.cc} (91%) rename deps/v8/test/{cctest/test-simple-riscv64.cc => unittests/assembler/simple-riscv64-unittest.cc} (91%) rename deps/v8/test/{cctest/test-sync-primitives-arm.cc => unittests/assembler/sync-primitives-arm-unittest.cc} (94%) rename deps/v8/test/{cctest => unittests/assembler}/test-helper-riscv32.cc (89%) rename deps/v8/test/{cctest => unittests/assembler}/test-helper-riscv32.h (97%) rename deps/v8/test/{cctest => unittests/assembler}/test-helper-riscv64.cc (89%) rename deps/v8/test/{cctest => unittests/assembler}/test-helper-riscv64.h (95%) rename deps/v8/test/{cctest => unittests/assembler}/test-utils-arm64.cc (93%) rename deps/v8/test/{cctest => unittests/assembler}/test-utils-arm64.h (99%) create mode 100644 deps/v8/test/unittests/builtins/builtins-math-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/turboshaft/call-runtime-unittest.cc create mode 100644 deps/v8/test/unittests/dumpling/dumpling-unittest.cc create mode 100644 deps/v8/test/unittests/heap/page-casting-unittest.cc create mode 100644 deps/v8/test/unittests/maglev/hamt-unittest.cc create mode 100644 deps/v8/test/unittests/maglev/maglev-graph-builder-unittest.cc create mode 100644 deps/v8/test/unittests/sandbox/bytecode-verifier-unittest.cc create mode 100644 deps/v8/test/unittests/sandbox/sandbox-violation-unittest.cc create mode 100644 deps/v8/test/unittests/wasm/compilation-hints-unittest.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/casts.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/chunked_queue.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/chunked_queue_benchmark.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/chunked_queue_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/internal/chunked_queue.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/internal/heterogeneous_lookup_testing.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/linked_hash_map.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/linked_hash_map_benchmark.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/linked_hash_map_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/linked_hash_set.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/linked_hash_set_benchmark.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/container/linked_hash_set_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/debugging/internal/borrowed_fixup_buffer_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/log/internal/container.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/log/internal/container_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/meta/internal/constexpr_testing.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/meta/internal/constexpr_testing_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/meta/internal/requires.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/meta/internal/requires_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/internal/generic_printer.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/internal/generic_printer.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/internal/generic_printer_internal.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/internal/generic_printer_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/string_view.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/string_view_benchmark.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h create mode 100644 deps/v8/third_party/abseil-cpp/patches/0004-string-view-transitive-includes create mode 100644 deps/v8/third_party/abseil-cpp/patches/0005-mutex-deprecations.patch create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/BUILD create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/transpile/proto1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/transpile/proto1_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/transpile/v8/test/mjsunit/mjsunit.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/transpile/v8/test/mjsunit/test1.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/transpile/v8/test/mjsunit/test1_expected.js diff --git a/deps/v8/.clang-format b/deps/v8/.clang-format index d655b2039f8848..370034d67bba3a 100644 --- a/deps/v8/.clang-format +++ b/deps/v8/.clang-format @@ -14,6 +14,11 @@ Macros: - CASE_=case - 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) + # Make clang-format parse conditions in flag implications as expressions, not type definitions. + - DEFINE_IMPLICATION(cond,flag,value)=if(cond) { flag; }; + - DEFINE_WEAK_IMPLICATION(cond,flag,value)=if(cond) { flag; }; + - DEFINE_VALUE_IMPLICATION(cond,flag,value)=if(cond) { flag = value; }; + - DEFINE_WEAK_VALUE_IMPLICATION(cond,flag,value)=if(cond) { flag = value; }; StatementMacros: - DECL_CAST - DECL_VERIFIER diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index 388d39863d83cc..240c287763ca99 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -155,6 +155,7 @@ bazel-out bazel-testlogs bazel-v8 launch.json +MODULE.bazel.lock !/third_party/jinja2 !/third_party/markupsafe !/third_party/zlib diff --git a/deps/v8/.gn b/deps/v8/.gn index e13ae6d5ec82da..6ead7196c515cf 100644 --- a/deps/v8/.gn +++ b/deps/v8/.gn @@ -36,6 +36,9 @@ default_args = { # Use Siso instead of Ninja. use_siso = true + + # V8 should stay in C++20 for now. + use_cxx23 = false } # These are the list of GN files that run exec_script. This whitelist exists diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 96d5b843d2badf..c5ed884e128c21 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -272,6 +272,7 @@ Rong Wang Ross Kirsling Ruben Bridgewater Ryan Dahl +Sahil Shaikh Sakthipriyan Vairamani (thefourtheye) Sander Mathijs van Veen Sandro Santilli @@ -340,6 +341,7 @@ Zhao Jiazhong Zhao Qin Zhaojun Meng Zheng Liu +Zhongqi Wang Zhongping Wang 柳荣一 Yang Xiang diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index d49da552c42612..85f31b7a31f604 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -163,6 +163,13 @@ v8_flag( default = True, ) +v8_flag( + name = "v8_enable_undefined_double", + default = True, +) + +v8_flag(name = "v8_enable_experimental_tq_to_tsa") + # Default setting for v8_enable_maglev selects.config_setting_group( name = "maglev_by_default", @@ -507,12 +514,12 @@ v8_config( "v8_enable_drumbrake_tracing": "V8_ENABLE_DRUMBRAKE_TRACING", "v8_jitless": "V8_JITLESS", "v8_enable_vtunejit": "ENABLE_VTUNE_JIT_INTERFACE", + "v8_enable_undefined_double": "V8_ENABLE_UNDEFINED_DOUBLE", }, defines = [ "GOOGLE3", "V8_ADVANCED_BIGINT_ALGORITHMS", "V8_CONCURRENT_MARKING", - "V8_ENABLE_LEAPTIERING", "V8_ENABLE_SPARKPLUG", "V8_ENABLE_EXTENSIBLE_RO_SNAPSHOT", "V8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA", @@ -523,6 +530,18 @@ v8_config( "V8_ENABLE_CHECKS", ], "//conditions:default": [], + }) + select({ + "@v8//bazel/config:asan_enabled" : [ "V8_USE_ADDRESS_SANITIZER" ], + "//conditions:default": [], + }) + select({ + "@v8//bazel/config:hwasan_enabled" : [ "V8_USE_HWADDRESS_SANITIZER" ], + "//conditions:default": [], + }) + select({ + "@v8//bazel/config:msan_enabled" : [ "V8_USE_MEMORY_SANITIZER" ], + "//conditions:default": [], + }) + select({ + "@v8//bazel/config:ubsan_enabled" : [ "V8_USE_UNDEFINED_BEHAVIOR_SANITIZER" ], + "//conditions:default": [], }) + select( { "@v8//bazel/config:v8_target_ia32": ["V8_TARGET_ARCH_IA32"], @@ -797,6 +816,7 @@ filegroup( "src/base/abort-mode.cc", "src/base/abort-mode.h", "src/base/address-region.h", + "src/base/algorithm.h", "src/base/atomic-utils.h", "src/base/atomicops.h", "src/base/base-export.h", @@ -826,6 +846,7 @@ filegroup( "src/base/file-utils.cc", "src/base/file-utils.h", "src/base/flags.h", + "src/base/float16.h", "src/base/fpu.cc", "src/base/fpu.h", "src/base/functional/bind-internal.h", @@ -843,6 +864,7 @@ filegroup( "src/base/logging.cc", "src/base/logging.h", "src/base/macros.h", + "src/base/memcopy.h", "src/base/memory.h", "src/base/numbers/bignum.cc", "src/base/numbers/bignum.h", @@ -1331,7 +1353,14 @@ filegroup( "src/torque/types.h", "src/torque/utils.cc", "src/torque/utils.h", - ], + ] + select({ + ":is_v8_enable_experimental_tq_to_tsa": [ + "src/torque/ast-visitor.h", + "src/torque/tsa-generator.cc", + "src/torque/tsa-generator.h", + ], + "//conditions:default": [], + }), ) filegroup( @@ -1416,7 +1445,12 @@ filegroup( "src/builtins/builtins-function.cc", "src/builtins/builtins-global.cc", "src/builtins/builtins-internal.cc", + "src/builtins/builtins-iterator.h", + "src/builtins/builtins-iterator-inl.h", "src/builtins/builtins-json.cc", + "src/builtins/builtins-math.cc", + "src/builtins/builtins-math-xsum.h", + "src/builtins/builtins-math-xsum.cc", "src/builtins/builtins-number.cc", "src/builtins/builtins-object.cc", "src/builtins/builtins-promise.h", @@ -1625,6 +1659,7 @@ filegroup( "src/execution/isolate.cc", "src/execution/isolate.h", "src/execution/isolate-data.h", + "src/execution/isolate-data-fields.h", "src/execution/isolate-inl.h", "src/execution/isolate-utils.h", "src/execution/isolate-utils-inl.h", @@ -1701,9 +1736,9 @@ filegroup( "src/heap/base-space.h", "src/heap/base/active-system-pages.cc", "src/heap/base/active-system-pages.h", - "src/heap/memory-chunk-metadata.cc", - "src/heap/memory-chunk-metadata.h", - "src/heap/memory-chunk-metadata-inl.h", + "src/heap/base-page.cc", + "src/heap/base-page.h", + "src/heap/base-page-inl.h", "src/heap/code-range.cc", "src/heap/code-range.h", "src/heap/trusted-range.cc", @@ -1783,9 +1818,9 @@ filegroup( "src/heap/incremental-marking-job.h", "src/heap/index-generator.cc", "src/heap/index-generator.h", - "src/heap/large-page-metadata.cc", - "src/heap/large-page-metadata.h", - "src/heap/large-page-metadata-inl.h", + "src/heap/large-page.cc", + "src/heap/large-page.h", + "src/heap/large-page-inl.h", "src/heap/large-spaces.cc", "src/heap/large-spaces.h", "src/heap/linear-allocation-area.h", @@ -1827,9 +1862,9 @@ filegroup( "src/heap/memory-allocator.h", "src/heap/memory-balancer.cc", "src/heap/memory-balancer.h", - "src/heap/mutable-page-metadata.cc", - "src/heap/mutable-page-metadata.h", - "src/heap/mutable-page-metadata-inl.h", + "src/heap/mutable-page.cc", + "src/heap/mutable-page.h", + "src/heap/mutable-page-inl.h", "src/heap/memory-chunk.cc", "src/heap/memory-chunk.h", "src/heap/memory-chunk-constants.h", @@ -1854,9 +1889,9 @@ filegroup( "src/heap/heap-visitor.cc", "src/heap/heap-visitor.h", "src/heap/heap-visitor-inl.h", - "src/heap/page-metadata.cc", - "src/heap/page-metadata.h", - "src/heap/page-metadata-inl.h", + "src/heap/normal-page.cc", + "src/heap/normal-page.h", + "src/heap/normal-page-inl.h", "src/heap/paged-spaces.cc", "src/heap/paged-spaces.h", "src/heap/paged-spaces-inl.h", @@ -2203,6 +2238,8 @@ filegroup( "src/objects/hole.h", "src/objects/trusted-object.h", "src/objects/trusted-object-inl.h", + "src/objects/trusted-pointer.h", + "src/objects/trusted-pointer-inl.h", "src/objects/option-utils.cc", "src/objects/option-utils.h", "src/objects/ordered-hash-table.cc", @@ -2383,6 +2420,10 @@ filegroup( "src/regexp/regexp.h", "src/regexp/regexp-ast.cc", "src/regexp/regexp-ast.h", + "src/regexp/regexp-ast-printer.cc", + "src/regexp/regexp-ast-printer.h", + "src/regexp/regexp-bytecode-analysis.cc", + "src/regexp/regexp-bytecode-analysis.h", "src/regexp/regexp-bytecode-generator.cc", "src/regexp/regexp-bytecode-generator.h", "src/regexp/regexp-bytecode-generator-inl.h", @@ -2404,6 +2445,8 @@ filegroup( "src/regexp/regexp-error.cc", "src/regexp/regexp-error.h", "src/regexp/regexp-flags.h", + "src/regexp/regexp-graph-printer.cc", + "src/regexp/regexp-graph-printer.h", "src/regexp/regexp-interpreter.cc", "src/regexp/regexp-interpreter.h", "src/regexp/regexp-macro-assembler.cc", @@ -2412,8 +2455,12 @@ filegroup( "src/regexp/regexp-macro-assembler-tracer.cc", "src/regexp/regexp-macro-assembler-tracer.h", "src/regexp/regexp-nodes.h", + "src/regexp/regexp-node-printer.cc", + "src/regexp/regexp-node-printer.h", "src/regexp/regexp-parser.cc", "src/regexp/regexp-parser.h", + "src/regexp/regexp-printer.cc", + "src/regexp/regexp-printer.h", "src/regexp/regexp-result-vector.cc", "src/regexp/regexp-result-vector.h", "src/regexp/regexp-stack.cc", @@ -2463,6 +2510,8 @@ filegroup( "src/runtime/runtime-weak-refs.cc", "src/sandbox/bounded-size.h", "src/sandbox/bounded-size-inl.h", + "src/sandbox/bytecode-verifier.h", + "src/sandbox/bytecode-verifier.cc", "src/sandbox/check.h", "src/sandbox/external-pointer.h", "src/sandbox/external-pointer-inl.h", @@ -2490,6 +2539,8 @@ filegroup( "src/sandbox/code-sandboxing-mode.h", "src/sandbox/compactible-external-entity-table-inl.h", "src/sandbox/compactible-external-entity-table.h", + "src/sandbox/external-strings-cage.cc", + "src/sandbox/external-strings-cage.h", "src/sandbox/isolate.h", "src/sandbox/isolate-inl.h", "src/sandbox/indirect-pointer.h", @@ -2502,6 +2553,8 @@ filegroup( "src/sandbox/hardware-support.h", "src/sandbox/sandbox.cc", "src/sandbox/sandbox.h", + "src/sandbox/sandboxable-thread.cc", + "src/sandbox/sandboxable-thread.h", "src/sandbox/sandbox-malloc.h", "src/sandbox/sandboxed-pointer.h", "src/sandbox/sandboxed-pointer-inl.h", @@ -2558,6 +2611,7 @@ filegroup( "src/snapshot/startup-serializer.h", "src/strings/char-predicates.h", "src/strings/char-predicates-inl.h", + "src/strings/owning-external-string-resource.h", "src/strings/string-builder.cc", "src/strings/string-builder.h", "src/strings/string-builder-inl.h", @@ -2583,6 +2637,7 @@ filegroup( "src/tasks/task-utils.cc", "src/tasks/task-utils.h", "src/torque/runtime-macro-shims.h", + "src/tracing/perfetto-sdk.h", "src/tracing/trace-event.cc", "src/tracing/trace-event.h", "src/tracing/trace-event-no-perfetto.h", @@ -2606,7 +2661,6 @@ filegroup( "src/utils/identity-map.h", "src/utils/locked-queue.h", "src/utils/locked-queue-inl.h", - "src/utils/memcopy.cc", "src/utils/memcopy.h", "src/utils/output-stream.cc", "src/utils/output-stream.h", @@ -2895,6 +2949,7 @@ filegroup( "//conditions:default": [], }) + select({ ":enable_maglev": [ + "src/maglev/hamt.h", "src/maglev/maglev-assembler-inl.h", "src/maglev/maglev-assembler.h", "src/maglev/maglev-basic-block.h", @@ -2918,12 +2973,15 @@ filegroup( "src/maglev/maglev-ir-inl.h", "src/maglev/maglev-ir.h", "src/maglev/maglev-kna-processor.h", + "src/maglev/maglev-node-type.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-range.h", "src/maglev/maglev-range-analysis.h", + "src/maglev/maglev-range-verification.h", "src/maglev/maglev-reducer-inl.h", "src/maglev/maglev-reducer.h", "src/maglev/maglev-regalloc-data.h", @@ -2947,9 +3005,11 @@ filegroup( "src/maglev/maglev-inlining.cc", "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-ir.cc", + "src/maglev/maglev-node-type.cc", "src/maglev/maglev-phi-representation-selector.cc", "src/maglev/maglev-truncation.cc", "src/maglev/maglev-pipeline-statistics.cc", + "src/maglev/maglev-range-verification.cc", "src/maglev/maglev-regalloc.cc", "src/maglev/maglev.cc", ], @@ -3025,12 +3085,13 @@ filegroup( "src/wasm/code-space-access.h", "src/wasm/compilation-environment.h", "src/wasm/compilation-environment-inl.h", + "src/wasm/compilation-hints-generation.cc", + "src/wasm/compilation-hints-generation.h", "src/wasm/constant-expression.cc", "src/wasm/constant-expression.h", "src/wasm/constant-expression-interface.cc", "src/wasm/constant-expression-interface.h", "src/wasm/decoder.h", - "src/wasm/float16.h", "src/wasm/function-body-decoder.cc", "src/wasm/function-body-decoder.h", "src/wasm/function-body-decoder-impl.h", @@ -3096,7 +3157,11 @@ filegroup( "src/wasm/wasm-features.cc", "src/wasm/wasm-features.h", "src/wasm/wasm-import-wrapper-cache.cc", + "src/wasm/wasm-stack-wrapper-cache.cc", + "src/wasm/wasm-wrapper-cache.cc", "src/wasm/wasm-import-wrapper-cache.h", + "src/wasm/wasm-stack-wrapper-cache.h", + "src/wasm/wasm-wrapper-cache.h", "src/wasm/wasm-init-expr.h", "src/wasm/wasm-js.cc", "src/wasm/wasm-js.h", @@ -3128,6 +3193,7 @@ filegroup( "src/wasm/wrappers.cc", "src/wasm/wrappers.h", "src/wasm/wrappers-inl.h", + "src/wasm/wasm-wrapper-cache-inl.h", "third_party/utf8-decoder/generalized-utf8-decoder.h", ], "//conditions:default": [], @@ -3247,8 +3313,8 @@ filegroup( "src/compiler/backend/spill-placer.cc", "src/compiler/backend/spill-placer.h", "src/compiler/backend/unwinding-info-writer.h", - "src/compiler/basic-block-instrumentor.cc", - "src/compiler/basic-block-instrumentor.h", + "src/compiler/basic-block-call-graph-profiler.cc", + "src/compiler/basic-block-call-graph-profiler.h", "src/compiler/branch-elimination.cc", "src/compiler/branch-elimination.h", "src/compiler/bytecode-analysis.cc", @@ -3502,6 +3568,7 @@ filegroup( "src/compiler/turboshaft/late-load-elimination-reducer.h", "src/compiler/turboshaft/layered-hash-map.h", "src/compiler/turboshaft/load-store-simplification-reducer.h", + "src/compiler/turboshaft/load-store-verification-reducer.h", "src/compiler/turboshaft/loop-finder.cc", "src/compiler/turboshaft/loop-finder.h", "src/compiler/turboshaft/loop-peeling-phase.cc", @@ -3514,6 +3581,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-assert-types-reducer.h", "src/compiler/turboshaft/turbolev-early-lowering-reducer-inl.h", "src/compiler/turboshaft/turbolev-frontend-pipeline.cc", "src/compiler/turboshaft/turbolev-frontend-pipeline.h", @@ -3707,6 +3775,7 @@ filegroup( # include them explicitely when Maglev is disabled. ":enable_maglev": [], "//conditions:default": [ + "src/maglev/hamt.h", "src/maglev/maglev-basic-block.h", "src/maglev/maglev-code-gen-state.h", "src/maglev/maglev-code-gen-state-inl.h", @@ -3737,7 +3806,12 @@ filegroup( "src/maglev/maglev-ir.h", "src/maglev/maglev-ir-inl.h", "src/maglev/maglev-kna-processor.h", + "src/maglev/maglev-node-type.cc", + "src/maglev/maglev-node-type.h", + "src/maglev/maglev-range.h", "src/maglev/maglev-range-analysis.h", + "src/maglev/maglev-range-verification.cc", + "src/maglev/maglev-range-verification.h", "src/maglev/maglev-reducer-inl.h", "src/maglev/maglev-reducer.h", "src/maglev/maglev-register-frame-array.h", @@ -3799,6 +3873,7 @@ filegroup( "src/builtins/builtins-string-gen.cc", "src/builtins/builtins-string-gen.h", "src/builtins/builtins-string-tsa.cc", + "src/builtins/builtins-string-tsa-inl.h", "src/builtins/builtins-typed-array-gen.cc", "src/builtins/builtins-typed-array-gen.h", "src/builtins/builtins-utils-gen.h", @@ -4387,6 +4462,8 @@ filegroup( "src/d8/d8-platforms.h", "src/d8/d8-posix.cc", "src/d8/d8-test.cc", + "src/d8/hardware-watchpoints.cc", + "src/d8/hardware-watchpoints.h", ], ) diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 3a51ee81fadd13..15de2179a0e5ce 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -9,7 +9,6 @@ import("//build/config/dcheck_always_on.gni") import("//build/config/host_byteorder.gni") import("//build/config/mips.gni") import("//build/config/riscv.gni") -import("//build/config/rust.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build_overrides/build.gni") import("//third_party/icu/config.gni") @@ -21,6 +20,10 @@ if (is_clang) { import("//build/config/clang/clang.gni") } +if (v8_enable_temporal_support) { + import("//build/config/rust.gni") +} + if (is_ios) { import("//build/config/apple/mobile_config.gni") # For `target_platform`. } @@ -68,6 +71,9 @@ declare_args() { # Sets -DENABLE_DISASSEMBLER. v8_enable_disassembler = "" + # Sets -DV8_ENABLE_REGEXP_DIAGNOSTICS. + v8_enable_regexp_diagnostics = !build_with_chromium + # Sets the number of internal fields on promise objects. v8_promise_internal_field_count = 0 @@ -83,6 +89,9 @@ declare_args() { # Sets -DENABLE_VTUNE_TRACEMARK. v8_enable_vtunetracemark = false + # Sets -DV8_ENABLE_APX_F. + v8_enable_apx_f = false + # Sets -DENABLE_HUGEPAGE v8_enable_hugepage = false @@ -456,8 +465,11 @@ declare_args() { # Use the experimental TSA-based definition for some builtins. v8_enable_experimental_tsa_builtins = false + # Use the experimental TSA backend for Torque. + v8_enable_experimental_tq_to_tsa = false + # Use the encoding of undefined in double values. - v8_enable_undefined_double = false + v8_enable_undefined_double = true v8_dcheck_always_on = dcheck_always_on @@ -481,14 +493,17 @@ declare_args() { # usages. The plugin is not exhaustive but covers most common known pitfalls. use_cppgc_clang_plugin = true - # Deinterleaving load support. - v8_enable_wasm_deinterleaved_mem_ops = false - # 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 + + # add instrumentation for Dumpling differential fuzzing + v8_dumpling = false + + # Enable compilation of riscv32. + v8_riscv_enable_deprecated_riscv32 = false } # Derived defaults. @@ -561,7 +576,6 @@ 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_undefined_double = !v8_enable_undefined_double v8_lower_limits_mode = !v8_lower_limits_mode } @@ -598,16 +612,18 @@ if (v8_enable_external_code_space == "") { v8_enable_pointer_compression && v8_enable_pointer_compression_shared_cage && (v8_current_cpu == "x64" || v8_current_cpu == "arm64" || - v8_current_cpu == "loong64") + v8_current_cpu == "loong64" || v8_current_cpu == "riscv64") } if (v8_enable_sparkplug == "") { v8_enable_sparkplug = !v8_jitless } if (v8_enable_maglev == "") { - v8_enable_maglev = v8_enable_turbofan && - (v8_current_cpu == "arm" || v8_current_cpu == "x64" || - v8_current_cpu == "arm64" || v8_current_cpu == "s390x" || - v8_current_cpu == "ppc64" || v8_current_cpu == "riscv64") + v8_enable_maglev = + v8_enable_turbofan && + (v8_current_cpu == "arm" || v8_current_cpu == "x64" || + v8_current_cpu == "arm64" || v8_current_cpu == "s390x" || + v8_current_cpu == "ppc64" || v8_current_cpu == "riscv64" || + v8_current_cpu == "loong64") } assert(v8_enable_turbofan || !v8_enable_maglev, "Maglev is not available when Turbofan is disabled.") @@ -739,6 +755,10 @@ if (v8_enable_webassembly && v8_current_cpu == "arm64") { v8_enable_wasm_deinterleaved_mem_ops = true } +if (v8_enable_experimental_tq_to_tsa) { + v8_enable_experimental_tsa_builtins = true +} + assert(!v8_disable_write_barriers || v8_enable_single_generation, "Disabling write barriers works only with single generation") @@ -978,6 +998,8 @@ external_v8_defines = [ "V8_DEPRECATION_WARNINGS", "V8_IMMINENT_DEPRECATION_WARNINGS", "V8_USE_PERFETTO", + "V8_USE_PERFETTO_JSON_EXPORT", + "V8_USE_PERFETTO_SDK", "V8_MAP_PACKING", "V8_IS_TSAN", "V8_ENABLE_DIRECT_HANDLE", @@ -990,6 +1012,8 @@ external_v8_defines = [ "V8_TARGET_OS_MACOS", "V8_TARGET_OS_WIN", "V8_TARGET_OS_CHROMEOS", + "V8_TARGET_ARCH_ARM64", + "V8_TARGET_ARCH_PPC64", ] enabled_external_v8_defines = [ @@ -1026,6 +1050,12 @@ if (v8_imminent_deprecation_warnings) { if (v8_use_perfetto) { enabled_external_v8_defines += [ "V8_USE_PERFETTO" ] } +if (v8_use_perfetto_json_export) { + enabled_external_v8_defines += [ "V8_USE_PERFETTO_JSON_EXPORT" ] +} +if (v8_use_perfetto_sdk) { + enabled_external_v8_defines += [ "V8_USE_PERFETTO_SDK" ] +} if (v8_enable_map_packing) { enabled_external_v8_defines += [ "V8_MAP_PACKING" ] } @@ -1066,6 +1096,18 @@ if (target_os == "android") { enabled_external_v8_defines += [ "V8_TARGET_OS_CHROMEOS" ] } +# Some V8_TARGET_ARCH_ defines that affect Api constants (see usages of +# V8_TARGET_ARCH_* in v8-internal.h). +# The target architecture may differ from host one e.g. in mksnapshot or in +# msan builds. +# TODO(ishell): support all target archs and add V8_HAVE_TARGET_ARCH similar +# to V8_TARGET_OS_* and V8_HAVE_TARGET_OS defines. +if (v8_current_cpu == "arm64") { + enabled_external_v8_defines += [ "V8_TARGET_ARCH_ARM64" ] +} else if (v8_current_cpu == "ppc64") { + enabled_external_v8_defines += [ "V8_TARGET_ARCH_PPC64" ] +} + disabled_external_v8_defines = external_v8_defines - enabled_external_v8_defines # Put defines that are used in public headers here; public headers are @@ -1176,8 +1218,7 @@ config("features") { if (v8_enable_pointer_compression) { if (v8_enable_pointer_compression_shared_cage) { defines += [ - # TODO(442942399): Re-enable after bug has been addressed. - # "V8_CONTIGUOUS_COMPRESSED_RO_SPACE", + "V8_CONTIGUOUS_COMPRESSED_RO_SPACE", "V8_CONTIGUOUS_COMPRESSED_RO_SPACE_SIZE_MB=${v8_contiguous_compressed_ro_space_size_mb}", ] } else { @@ -1209,6 +1250,9 @@ config("features") { if (v8_enable_vtunetracemark) { defines += [ "ENABLE_VTUNE_TRACEMARK" ] } + if (v8_enable_apx_f) { + defines += [ "V8_ENABLE_APX_F" ] + } if (v8_enable_hugepage) { defines += [ "ENABLE_HUGEPAGE" ] } @@ -1239,6 +1283,9 @@ config("features") { if (v8_enable_trace_feedback_updates) { defines += [ "V8_TRACE_FEEDBACK_UPDATES" ] } + if (v8_enable_regexp_diagnostics) { + defines += [ "V8_ENABLE_REGEXP_DIAGNOSTICS" ] + } if (v8_enable_test_features) { defines += [ "V8_ENABLE_ALLOCATION_TIMEOUT" ] defines += [ "V8_ENABLE_FORCE_SLOW_PATH" ] @@ -1326,6 +1373,12 @@ config("features") { if (v8_fuzzilli) { defines += [ "V8_FUZZILLI" ] } + if (v8_dumpling) { + defines += [ "V8_DUMPLING" ] + } + if (v8_riscv_enable_deprecated_riscv32) { + defines += [ "V8_RISCV_ENABLE_DEPRECATED_RISCV32" ] + } if (v8_enable_fuzztest) { defines += [ "V8_ENABLE_FUZZTEST" ] } @@ -1429,9 +1482,6 @@ config("features") { if (v8_enable_wasm_simd256_revec) { defines += [ "V8_ENABLE_WASM_SIMD256_REVEC" ] } - if (v8_enable_wasm_deinterleaved_mem_ops) { - defines += [ "V8_ENABLE_WASM_DEINTERLEAVED_MEM_OPS" ] - } if (v8_enable_maglev_graph_printer) { defines += [ "V8_ENABLE_MAGLEV_GRAPH_PRINTER" ] } @@ -1456,10 +1506,12 @@ config("features") { if (v8_enable_experimental_tsa_builtins) { defines += [ "V8_ENABLE_EXPERIMENTAL_TSA_BUILTINS" ] } + if (v8_enable_experimental_tq_to_tsa) { + defines += [ "V8_ENABLE_EXPERIMENTAL_TQ_TO_TSA" ] + } if (v8_enable_undefined_double) { defines += [ "V8_ENABLE_UNDEFINED_DOUBLE" ] } - defines += [ "V8_ENABLE_LEAPTIERING" ] if (v8_enable_partition_alloc) { defines += [ "V8_ENABLE_PARTITION_ALLOC" ] } @@ -1486,24 +1538,16 @@ config("toolchain") { ldflags = [] if (v8_current_cpu == "arm") { - defines += [ "V8_TARGET_ARCH_ARM" ] - if (arm_version >= 7) { - defines += [ "CAN_USE_ARMV7_INSTRUCTIONS" ] - } - if (arm_fpu == "vfpv3-d16") { - defines += [ "CAN_USE_VFP3_INSTRUCTIONS" ] - } else if (arm_fpu == "vfpv3") { - defines += [ - "CAN_USE_VFP3_INSTRUCTIONS", - "CAN_USE_VFP32DREGS", - ] - } else if (arm_fpu == "neon") { - defines += [ - "CAN_USE_VFP3_INSTRUCTIONS", - "CAN_USE_VFP32DREGS", - "CAN_USE_NEON", - ] - } + defines += [ + "V8_TARGET_ARCH_ARM", + + # TODO(arm): Now that we always require v7+ and neon, we can simplify the + # code and then stop defining these. + "CAN_USE_ARMV7_INSTRUCTIONS", + "CAN_USE_VFP3_INSTRUCTIONS", + "CAN_USE_VFP32DREGS", + "CAN_USE_NEON", + ] # TODO(infra): Add support for arm_test_noprobe. @@ -1570,14 +1614,14 @@ config("toolchain") { defines += [ "V8_TARGET_ARCH_S390X" ] if (host_byteorder == "little") { defines += [ "V8_TARGET_ARCH_S390X_LE_SIM" ] - } else if (current_os != "zos") { - cflags += [ "-march=z196" ] + } else if (!v8_target_is_simulator && current_os != "zos") { + cflags += [ "-march=z14" ] } } if (v8_current_cpu == "ppc64") { defines += [ "V8_TARGET_ARCH_PPC64" ] cflags += [ "-ffp-contract=off" ] - if (current_os == "aix") { + if (current_os == "aix" && !is_clang) { cflags += [ # Work around AIX ceil, trunc and round oddities. "-mcpu=power5+", @@ -1586,18 +1630,26 @@ config("toolchain") { # Work around AIX assembler popcntb bug. "-mno-popcntb", ] + } else if (!v8_target_is_simulator) { + cflags += [ "-mcpu=pwr9" ] } } - # Under simulator build, compiler will not provide __riscv_xlen. Define here if (v8_current_cpu == "riscv64" || v8_current_cpu == "riscv32") { if (v8_target_is_simulator) { - defines += [ "_RISCV_TARGET_SIMULATOR" ] + defines += [ "RISCV_TARGET_SIMULATOR" ] } if (riscv_use_rvv || v8_target_is_simulator) { defines += [ "CAN_USE_RVV_INSTRUCTIONS" ] defines += [ "RVV_VLEN=${riscv_rvv_vlen}" ] } + + if (riscv_use_zicfiss) { + defines += [ "V8_ENABLE_RISCV_SHADOW_STACK" ] + } + if (riscv_use_zicond) { + defines += [ "__riscv_zicond" ] + } if (riscv_use_zba) { defines += [ "__riscv_zba" ] } @@ -1607,10 +1659,19 @@ config("toolchain") { if (riscv_use_zbs) { defines += [ "__riscv_zbs" ] } + defines += [ "RISCV_CODE_ALIGNMENT=${riscv_code_alignment}" ] + defines += + [ "RISCV_CONSTANT_POOL_ALIGNMENT=${riscv_constant_pool_alignment}" ] } + if (v8_current_cpu == "riscv64") { defines += [ "V8_TARGET_ARCH_RISCV64" ] - defines += [ "__riscv_xlen=64" ] + + # When building the simulator, the compiler does not provide __riscv_xlen, + # so we explicitly define it here. + if (v8_target_is_simulator) { + defines += [ "__riscv_xlen=64" ] + } if (!is_clang) { cflags += [ "-ffp-contract=off" ] } @@ -1621,7 +1682,12 @@ config("toolchain") { if (v8_current_cpu == "riscv32") { defines += [ "V8_TARGET_ARCH_RISCV32" ] - defines += [ "__riscv_xlen=32" ] + + # When building the simulator, the compiler does not provide __riscv_xlen, + # so we explicitly define it here. + if (v8_target_is_simulator) { + defines += [ "__riscv_xlen=32" ] + } } if (v8_current_cpu == "x86") { @@ -2226,6 +2292,75 @@ if (v8_enable_webassembly) { ] } +if (v8_enable_experimental_tq_to_tsa) { + template("run_torque_to_tsa") { + if (target_name == "") { + suffix = "" + } else { + suffix = "_$target_name" + } + + toolchain = invoker.toolchain + + action("run_torque_to_tsa" + suffix) { + visibility = [ + ":*", + "test/cctest/:*", + "tools/debug_helper/:*", + "tools/gcmole/:*", + ] + + deps = [ ":torque($toolchain)" ] + + if (is_msan) { + configs = [ + "//third_party/instrumented_libs:msan_runtime_libs($host_toolchain)", + ] + deps += [ "//third_party/instrumented_libs:ld-linux($host_toolchain)" ] + } + + script = "tools/run.py" + + sources = torque_files + + destination_folder = "$target_gen_dir/torque-generated$suffix" + + outputs = [] + + foreach(file, torque_files) { + filetq = string_replace(file, ".tq", "-tq") + outputs += [ + "$destination_folder/$filetq-tsa.cc", + "$destination_folder/$filetq-tsa.h", + ] + } + + args = [ + "./" + rebase_path(get_label_info(":torque($toolchain)", + "root_out_dir") + "/torque", + root_build_dir), + "-o", + rebase_path("$destination_folder", root_build_dir), + "-v8-root", + rebase_path(".", root_build_dir), + "-output-tsa", + ] + if (v8_annotate_torque_ir) { + args += [ "-annotate-ir" ] + } + if (defined(invoker.args)) { + args += invoker.args + } + args += torque_files + } + } + + # Default run_torque_to_tsa action + run_torque_to_tsa("") { + toolchain = v8_generator_toolchain + } +} + # Template for running torque # When building with v8_verify_torque_generation_invariance=true we need # to be able to run torque for both 32 and 64 bits in the same build @@ -2390,6 +2525,9 @@ v8_source_set("torque_generated_initializers") { ":v8_maybe_temporal", ":v8_tracing", ] + if (v8_enable_experimental_tq_to_tsa) { + deps += [ ":run_torque_to_tsa" ] + } public_deps = [ ":torque_runtime_support", @@ -2409,6 +2547,12 @@ v8_source_set("torque_generated_initializers") { "$target_gen_dir/torque-generated/$filetq-csa.cc", "$target_gen_dir/torque-generated/$filetq-csa.h", ] + if (v8_enable_experimental_tq_to_tsa) { + sources += [ + "$target_gen_dir/torque-generated/$filetq-tsa.cc", + "$target_gen_dir/torque-generated/$filetq-tsa.h", + ] + } } configs = [ ":internal_config" ] @@ -2437,6 +2581,9 @@ v8_source_set("torque_generated_definitions") { ":v8_maybe_temporal", ":v8_tracing", ] + if (v8_enable_experimental_tq_to_tsa) { + deps += [ ":run_torque_to_tsa" ] + } public_deps = [ ":v8_abseil", @@ -2554,7 +2701,7 @@ template("run_mksnapshot") { "root_out_dir") + "/mksnapshot", root_build_dir), "--turbo_instruction_scheduling", - "--stress-turbo-late-spilling", + "--turbo-always-optimize-spills", # In cross builds, the snapshot may be generated for both the host and # target toolchains. The same host binary is used to generate both, so @@ -3084,6 +3231,7 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-sharedarraybuffer-gen.cc", "src/builtins/builtins-string-gen.cc", "src/builtins/builtins-string-gen.h", + "src/builtins/builtins-string-tsa-inl.h", "src/builtins/builtins-string-tsa.cc", "src/builtins/builtins-typed-array-gen.cc", "src/builtins/builtins-typed-array-gen.h", @@ -3140,6 +3288,9 @@ v8_source_set("v8_initializers") { } else if (v8_current_cpu == "arm64") { sources += [ "src/wasm/interpreter/arm64/interpreter-builtins-arm64.cc" ] + } else if (v8_current_cpu == "riscv64") { + sources += + [ "src/wasm/interpreter/riscv/interpreter-builtins-riscv.cc" ] } } } @@ -3457,6 +3608,9 @@ v8_header_set("v8_internal_headers") { "src/builtins/builtins-descriptors.h", "src/builtins/builtins-effects-analyzer.h", "src/builtins/builtins-inl.h", + "src/builtins/builtins-iterator-inl.h", + "src/builtins/builtins-iterator.h", + "src/builtins/builtins-math-xsum.h", "src/builtins/builtins-promise.h", "src/builtins/builtins-utils-inl.h", "src/builtins/builtins-utils.h", @@ -3555,7 +3709,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/backend/register-allocator.h", "src/compiler/backend/spill-placer.h", "src/compiler/backend/unwinding-info-writer.h", - "src/compiler/basic-block-instrumentor.h", + "src/compiler/basic-block-call-graph-profiler.h", "src/compiler/branch-elimination.h", "src/compiler/bytecode-analysis.h", "src/compiler/bytecode-graph-builder.h", @@ -3699,6 +3853,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/late-load-elimination-reducer.h", "src/compiler/turboshaft/layered-hash-map.h", "src/compiler/turboshaft/load-store-simplification-reducer.h", + "src/compiler/turboshaft/load-store-verification-reducer.h", "src/compiler/turboshaft/loop-finder.h", "src/compiler/turboshaft/loop-peeling-phase.h", "src/compiler/turboshaft/loop-peeling-reducer.h", @@ -3707,6 +3862,7 @@ 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-assert-types-reducer.h", "src/compiler/turboshaft/memory-optimization-reducer.h", "src/compiler/turboshaft/operation-matcher.h", "src/compiler/turboshaft/operations.h", @@ -3804,6 +3960,7 @@ v8_header_set("v8_internal_headers") { "src/execution/frames.h", "src/execution/futex-emulation.h", "src/execution/interrupts-scope.h", + "src/execution/isolate-data-fields.h", "src/execution/isolate-data.h", "src/execution/isolate-inl.h", "src/execution/isolate-utils-inl.h", @@ -3849,6 +4006,8 @@ v8_header_set("v8_internal_headers") { "src/heap/allocation-result.h", "src/heap/allocation-stats.h", "src/heap/array-buffer-sweeper.h", + "src/heap/base-page-inl.h", + "src/heap/base-page.h", "src/heap/base-space.h", "src/heap/code-range.h", "src/heap/code-stats.h", @@ -3899,8 +4058,8 @@ v8_header_set("v8_internal_headers") { "src/heap/incremental-marking-job.h", "src/heap/incremental-marking.h", "src/heap/index-generator.h", - "src/heap/large-page-metadata-inl.h", - "src/heap/large-page-metadata.h", + "src/heap/large-page-inl.h", + "src/heap/large-page.h", "src/heap/large-spaces.h", "src/heap/linear-allocation-area.h", "src/heap/list.h", @@ -3931,8 +4090,6 @@ v8_header_set("v8_internal_headers") { "src/heap/memory-chunk-constants.h", "src/heap/memory-chunk-inl.h", "src/heap/memory-chunk-layout.h", - "src/heap/memory-chunk-metadata-inl.h", - "src/heap/memory-chunk-metadata.h", "src/heap/memory-chunk.h", "src/heap/memory-measurement-inl.h", "src/heap/memory-measurement.h", @@ -3941,14 +4098,15 @@ v8_header_set("v8_internal_headers") { "src/heap/minor-gc-job.h", "src/heap/minor-mark-sweep-inl.h", "src/heap/minor-mark-sweep.h", - "src/heap/mutable-page-metadata-inl.h", - "src/heap/mutable-page-metadata.h", + "src/heap/mutable-page-inl.h", + "src/heap/mutable-page.h", "src/heap/new-spaces-inl.h", "src/heap/new-spaces.h", + "src/heap/normal-page-inl.h", + "src/heap/normal-page.h", "src/heap/object-lock-inl.h", "src/heap/object-lock.h", "src/heap/object-stats.h", - "src/heap/page-metadata.h", "src/heap/paged-spaces-inl.h", "src/heap/paged-spaces.h", "src/heap/parallel-work-item.h", @@ -4250,6 +4408,8 @@ v8_header_set("v8_internal_headers") { "src/objects/transitions.h", "src/objects/trusted-object-inl.h", "src/objects/trusted-object.h", + "src/objects/trusted-pointer-inl.h", + "src/objects/trusted-pointer.h", "src/objects/turbofan-types-inl.h", "src/objects/turbofan-types.h", "src/objects/turboshaft-types-inl.h", @@ -4304,6 +4464,7 @@ v8_header_set("v8_internal_headers") { "src/regexp/experimental/experimental-interpreter.h", "src/regexp/experimental/experimental.h", "src/regexp/regexp-ast.h", + "src/regexp/regexp-bytecode-analysis.h", "src/regexp/regexp-bytecode-generator-inl.h", "src/regexp/regexp-bytecode-generator.h", "src/regexp/regexp-bytecode-iterator-inl.h", @@ -4313,12 +4474,10 @@ v8_header_set("v8_internal_headers") { "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", "src/regexp/regexp-flags.h", "src/regexp/regexp-interpreter.h", "src/regexp/regexp-macro-assembler-arch.h", - "src/regexp/regexp-macro-assembler-tracer.h", "src/regexp/regexp-macro-assembler.h", "src/regexp/regexp-nodes.h", "src/regexp/regexp-parser.h", @@ -4338,6 +4497,7 @@ v8_header_set("v8_internal_headers") { "src/runtime/runtime.h", "src/sandbox/bounded-size-inl.h", "src/sandbox/bounded-size.h", + "src/sandbox/bytecode-verifier.h", "src/sandbox/check.h", "src/sandbox/code-entrypoint-tag.h", "src/sandbox/code-pointer-inl.h", @@ -4357,6 +4517,7 @@ v8_header_set("v8_internal_headers") { "src/sandbox/external-pointer-table-inl.h", "src/sandbox/external-pointer-table.h", "src/sandbox/external-pointer.h", + "src/sandbox/external-strings-cage.h", "src/sandbox/hardware-support.h", "src/sandbox/indirect-pointer-inl.h", "src/sandbox/indirect-pointer-tag.h", @@ -4367,6 +4528,7 @@ v8_header_set("v8_internal_headers") { "src/sandbox/js-dispatch-table.h", "src/sandbox/sandbox-malloc.h", "src/sandbox/sandbox.h", + "src/sandbox/sandboxable-thread.h", "src/sandbox/sandboxed-pointer-inl.h", "src/sandbox/sandboxed-pointer.h", "src/sandbox/tagged-payload.h", @@ -4401,6 +4563,7 @@ v8_header_set("v8_internal_headers") { "src/snapshot/startup-serializer.h", "src/strings/char-predicates-inl.h", "src/strings/char-predicates.h", + "src/strings/owning-external-string-resource.h", "src/strings/string-builder-inl.h", "src/strings/string-builder.h", "src/strings/string-case.h", @@ -4462,6 +4625,17 @@ v8_header_set("v8_internal_headers") { sources += [ "src/snapshot/snapshot-compression.h" ] } + if (v8_enable_regexp_diagnostics) { + sources += [ + "src/regexp/regexp-ast-printer.h", + "src/regexp/regexp-dotprinter.h", + "src/regexp/regexp-graph-printer.h", + "src/regexp/regexp-macro-assembler-tracer.h", + "src/regexp/regexp-node-printer.h", + "src/regexp/regexp-printer.h", + ] + } + if (v8_enable_temporal_support) { sources += [ "src/objects/js-temporal-objects-inl.h", @@ -4476,6 +4650,7 @@ v8_header_set("v8_internal_headers") { "src/tracing/code-data-source.h", "src/tracing/code-trace-context.h", "src/tracing/perfetto-logger.h", + "src/tracing/perfetto-sdk.h", "src/tracing/perfetto-utils.h", ] } @@ -4491,6 +4666,7 @@ v8_header_set("v8_internal_headers") { if (v8_enable_maglev) { sources += [ + "src/maglev/hamt.h", "src/maglev/maglev-assembler-inl.h", "src/maglev/maglev-assembler.h", "src/maglev/maglev-basic-block.h", @@ -4515,10 +4691,14 @@ v8_header_set("v8_internal_headers") { "src/maglev/maglev-ir.h", "src/maglev/maglev-kna-processor.h", "src/maglev/maglev-known-node-aspects.h", + "src/maglev/maglev-node-type.h", "src/maglev/maglev-phi-representation-selector.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-range-analysis.h", + "src/maglev/maglev-range-verification.h", + "src/maglev/maglev-range.h", "src/maglev/maglev-reducer-inl.h", "src/maglev/maglev-reducer.h", "src/maglev/maglev-regalloc-data.h", @@ -4539,6 +4719,8 @@ v8_header_set("v8_internal_headers") { sources += [ "src/maglev/s390/maglev-assembler-s390-inl.h" ] } else if (v8_current_cpu == "ppc64") { sources += [ "src/maglev/ppc/maglev-assembler-ppc-inl.h" ] + } else if (v8_current_cpu == "loong64") { + sources += [ "src/maglev/loong64/maglev-assembler-loong64-inl.h" ] } } @@ -4595,10 +4777,10 @@ v8_header_set("v8_internal_headers") { "src/wasm/code-space-access.h", "src/wasm/compilation-environment-inl.h", "src/wasm/compilation-environment.h", + "src/wasm/compilation-hints-generation.h", "src/wasm/constant-expression-interface.h", "src/wasm/constant-expression.h", "src/wasm/decoder.h", - "src/wasm/float16.h", "src/wasm/function-body-decoder-impl.h", "src/wasm/function-body-decoder.h", "src/wasm/function-compiler.h", @@ -4653,10 +4835,13 @@ v8_header_set("v8_internal_headers") { "src/wasm/wasm-opcodes.h", "src/wasm/wasm-result.h", "src/wasm/wasm-serialization.h", + "src/wasm/wasm-stack-wrapper-cache.h", "src/wasm/wasm-subtyping.h", "src/wasm/wasm-tier.h", "src/wasm/wasm-tracing.h", "src/wasm/wasm-value.h", + "src/wasm/wasm-wrapper-cache-inl.h", + "src/wasm/wasm-wrapper-cache.h", "src/wasm/well-known-imports.h", "src/wasm/wrappers-inl.h", "src/wasm/wrappers.h", @@ -5028,6 +5213,11 @@ v8_header_set("v8_internal_headers") { "src/baseline/riscv/baseline-compiler-riscv-inl.h", ] } + + if (riscv_use_zicfiss) { + sources += [ "src/execution/riscv/shadow-stack-riscv.h" ] + } + if (v8_enable_webassembly) { # Trap handling is enabled on riscv64 Linux and in simulators on # x64 on Linux. @@ -5118,6 +5308,9 @@ v8_header_set("v8_internal_headers") { ":v8_maybe_temporal", "//third_party/simdutf", ] + if (v8_enable_experimental_tq_to_tsa) { + deps += [ ":run_torque_to_tsa" ] + } } v8_compiler_sources = [ @@ -5138,7 +5331,7 @@ v8_compiler_sources = [ "src/compiler/backend/register-allocator-verifier.cc", "src/compiler/backend/register-allocator.cc", "src/compiler/backend/spill-placer.cc", - "src/compiler/basic-block-instrumentor.cc", + "src/compiler/basic-block-call-graph-profiler.cc", "src/compiler/branch-elimination.cc", "src/compiler/bytecode-analysis.cc", "src/compiler/bytecode-graph-builder.cc", @@ -5294,7 +5487,9 @@ if (!v8_enable_maglev) { "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-ir.cc", "src/maglev/maglev-known-node-aspects.cc", + "src/maglev/maglev-node-type.cc", "src/maglev/maglev-phi-representation-selector.cc", + "src/maglev/maglev-range-verification.cc", "src/maglev/maglev-truncation.cc", ] } @@ -5431,6 +5626,9 @@ v8_source_set("v8_compiler_for_mksnapshot_source_set") { ":v8_maybe_icu", ":v8_tracing", ] + if (v8_enable_experimental_tq_to_tsa) { + public_deps += [ ":run_torque_to_tsa" ] + } deps = [ ":v8_base_without_compiler", @@ -5471,6 +5669,9 @@ v8_source_set("v8_compiler") { ":v8_maybe_icu", ":v8_tracing", ] + if (v8_enable_experimental_tq_to_tsa) { + public_deps += [ ":run_torque_to_tsa" ] + } deps = [ ":v8_base_without_compiler", @@ -5555,6 +5756,8 @@ v8_source_set("v8_base_without_compiler") { "src/builtins/builtins-internal.cc", "src/builtins/builtins-intl.cc", "src/builtins/builtins-json.cc", + "src/builtins/builtins-math-xsum.cc", + "src/builtins/builtins-math.cc", "src/builtins/builtins-number.cc", "src/builtins/builtins-object.cc", "src/builtins/builtins-reflect.cc", @@ -5668,6 +5871,7 @@ v8_source_set("v8_base_without_compiler") { "src/handles/traced-handles.cc", "src/heap/allocation-observer.cc", "src/heap/array-buffer-sweeper.cc", + "src/heap/base-page.cc", "src/heap/code-range.cc", "src/heap/code-stats.cc", "src/heap/collection-barrier.cc", @@ -5698,7 +5902,7 @@ v8_source_set("v8_base_without_compiler") { "src/heap/incremental-marking-job.cc", "src/heap/incremental-marking.cc", "src/heap/index-generator.cc", - "src/heap/large-page-metadata.cc", + "src/heap/large-page.cc", "src/heap/large-spaces.cc", "src/heap/local-factory.cc", "src/heap/local-heap.cc", @@ -5710,17 +5914,16 @@ v8_source_set("v8_base_without_compiler") { "src/heap/marking.cc", "src/heap/memory-allocator.cc", "src/heap/memory-balancer.cc", - "src/heap/memory-chunk-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", - "src/heap/mutable-page-metadata.cc", + "src/heap/mutable-page.cc", "src/heap/new-spaces.cc", + "src/heap/normal-page.cc", "src/heap/object-stats.cc", - "src/heap/page-metadata.cc", "src/heap/paged-spaces.cc", "src/heap/pretenuring-handler.cc", "src/heap/read-only-heap.cc", @@ -5890,6 +6093,7 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/experimental/experimental-interpreter.cc", "src/regexp/experimental/experimental.cc", "src/regexp/regexp-ast.cc", + "src/regexp/regexp-bytecode-analysis.cc", "src/regexp/regexp-bytecode-generator.cc", "src/regexp/regexp-bytecode-iterator.cc", "src/regexp/regexp-bytecode-peephole.cc", @@ -5897,10 +6101,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/regexp-code-generator.cc", "src/regexp/regexp-compiler-tonode.cc", "src/regexp/regexp-compiler.cc", - "src/regexp/regexp-dotprinter.cc", "src/regexp/regexp-error.cc", "src/regexp/regexp-interpreter.cc", - "src/regexp/regexp-macro-assembler-tracer.cc", "src/regexp/regexp-macro-assembler.cc", "src/regexp/regexp-parser.cc", "src/regexp/regexp-result-vector.cc", @@ -5939,12 +6141,15 @@ v8_source_set("v8_base_without_compiler") { "src/runtime/runtime-typedarray.cc", "src/runtime/runtime-weak-refs.cc", "src/runtime/runtime.cc", + "src/sandbox/bytecode-verifier.cc", "src/sandbox/code-pointer-table.cc", "src/sandbox/cppheap-pointer-table.cc", "src/sandbox/external-pointer-table.cc", + "src/sandbox/external-strings-cage.cc", "src/sandbox/hardware-support.cc", "src/sandbox/js-dispatch-table.cc", "src/sandbox/sandbox.cc", + "src/sandbox/sandboxable-thread.cc", "src/sandbox/testing.cc", "src/sandbox/trusted-pointer-scope.cc", "src/sandbox/trusted-pointer-table.cc", @@ -5988,7 +6193,6 @@ v8_source_set("v8_base_without_compiler") { "src/utils/detachable-vector.cc", "src/utils/hex-format.cc", "src/utils/identity-map.cc", - "src/utils/memcopy.cc", "src/utils/ostreams.cc", "src/utils/output-stream.cc", "src/utils/sha-256.cc", @@ -6005,6 +6209,17 @@ v8_source_set("v8_base_without_compiler") { sources += [ "src/snapshot/snapshot-compression.cc" ] } + if (v8_enable_regexp_diagnostics) { + sources += [ + "src/regexp/regexp-ast-printer.cc", + "src/regexp/regexp-dotprinter.cc", + "src/regexp/regexp-graph-printer.cc", + "src/regexp/regexp-macro-assembler-tracer.cc", + "src/regexp/regexp-node-printer.cc", + "src/regexp/regexp-printer.cc", + ] + } + if (v8_enable_temporal_support) { sources += [ "src/builtins/builtins-temporal.cc", @@ -6037,8 +6252,10 @@ v8_source_set("v8_base_without_compiler") { "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-ir.cc", "src/maglev/maglev-known-node-aspects.cc", + "src/maglev/maglev-node-type.cc", "src/maglev/maglev-phi-representation-selector.cc", "src/maglev/maglev-pipeline-statistics.cc", + "src/maglev/maglev-range-verification.cc", "src/maglev/maglev-regalloc.cc", "src/maglev/maglev-truncation.cc", "src/maglev/maglev.cc", @@ -6073,6 +6290,11 @@ v8_source_set("v8_base_without_compiler") { "src/maglev/ppc/maglev-assembler-ppc.cc", "src/maglev/ppc/maglev-ir-ppc.cc", ] + } else if (v8_current_cpu == "loong64") { + sources += [ + "src/maglev/loong64/maglev-assembler-loong64.cc", + "src/maglev/loong64/maglev-ir-loong64.cc", + ] } } @@ -6104,6 +6326,7 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/basic-block-calculator.cc", "src/wasm/canonical-types.cc", "src/wasm/code-space-access.cc", + "src/wasm/compilation-hints-generation.cc", "src/wasm/constant-expression-interface.cc", "src/wasm/constant-expression.cc", "src/wasm/function-body-decoder.cc", @@ -6138,8 +6361,10 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/wasm-opcodes.cc", "src/wasm/wasm-result.cc", "src/wasm/wasm-serialization.cc", + "src/wasm/wasm-stack-wrapper-cache.cc", "src/wasm/wasm-subtyping.cc", "src/wasm/wasm-tracing.cc", + "src/wasm/wasm-wrapper-cache.cc", "src/wasm/well-known-imports.cc", ] if (v8_wasm_random_fuzzers) { @@ -6400,6 +6625,9 @@ v8_source_set("v8_base_without_compiler") { if (current_cpu == "x64" && is_linux) { sources += [ "src/trap-handler/handler-outside-simulator.cc" ] } + if (riscv_use_zicfiss) { + sources += [ "src/execution/riscv/shadow-stack-riscv.cc" ] + } } } else if (v8_current_cpu == "riscv32") { sources += [ @@ -6483,6 +6711,9 @@ v8_source_set("v8_base_without_compiler") { ":v8_maybe_icu", "//third_party/simdutf", ] + if (v8_enable_experimental_tq_to_tsa) { + public_deps += [ ":run_torque_to_tsa" ] + } if (v8_fuzzilli) { sources += [ @@ -6493,6 +6724,15 @@ v8_source_set("v8_base_without_compiler") { ] } + if (v8_dumpling) { + sources += [ + "src/dumpling/dumpling-manager.cc", + "src/dumpling/dumpling-manager.h", + "src/dumpling/object-dumping.cc", + "src/dumpling/object-dumping.h", + ] + } + if (v8_enable_i18n_support) { deps += [ ":run_gen-regexp-special-case" ] sources += [ "$target_gen_dir/src/regexp/special-case.cc" ] @@ -6627,6 +6867,14 @@ v8_source_set("torque_base") { "src/torque/utils.h", ] + if (v8_enable_experimental_tq_to_tsa) { + sources += [ + "src/torque/ast-visitor.h", + "src/torque/tsa-generator.cc", + "src/torque/tsa-generator.h", + ] + } + deps = [ ":v8_flags", ":v8_shared_internal_headers", @@ -6694,6 +6942,7 @@ v8_component("v8_libbase") { "src/base/abort-mode.cc", "src/base/abort-mode.h", "src/base/address-region.h", + "src/base/algorithm.h", "src/base/atomic-utils.h", "src/base/atomicops.h", "src/base/base-export.h", @@ -6723,6 +6972,7 @@ v8_component("v8_libbase") { "src/base/file-utils.cc", "src/base/file-utils.h", "src/base/flags.h", + "src/base/float16.h", "src/base/fpu.cc", "src/base/fpu.h", "src/base/free_deleter.h", @@ -6740,6 +6990,7 @@ v8_component("v8_libbase") { "src/base/logging.cc", "src/base/logging.h", "src/base/macros.h", + "src/base/memcopy.h", "src/base/memory.h", "src/base/numbers/bignum-dtoa.cc", "src/base/numbers/bignum-dtoa.h", @@ -7431,6 +7682,7 @@ v8_source_set("cppgc_base") { if (v8_use_perfetto) { sources += [ + "src/tracing/perfetto-sdk.h", "src/tracing/trace-categories.cc", "src/tracing/trace-categories.h", ] @@ -7999,6 +8251,8 @@ v8_executable("d8") { "src/d8/d8-test.cc", "src/d8/d8.cc", "src/d8/d8.h", + "src/d8/hardware-watchpoints.cc", + "src/d8/hardware-watchpoints.h", ] configs = [ @@ -8302,6 +8556,9 @@ if (v8_enable_webassembly) { ":v8_shared_internal_headers", ":v8_tracing", ] + if (v8_enable_experimental_tq_to_tsa) { + deps += [ ":run_torque_to_tsa" ] + } public_deps = [ ":v8_abseil", @@ -8402,6 +8659,9 @@ group("v8_generated_cc_files") { ":run_torque", "src/inspector:v8_generated_cc_files", ] + if (v8_enable_experimental_tq_to_tsa) { + deps += [ ":run_torque_to_tsa" ] + } } # Protobuf targets, used only when building outside of chromium. diff --git a/deps/v8/COMMON_OWNERS b/deps/v8/COMMON_OWNERS index 1a14c2458d6d0d..87e36677744ae4 100644 --- a/deps/v8/COMMON_OWNERS +++ b/deps/v8/COMMON_OWNERS @@ -8,6 +8,7 @@ dinfuehr@chromium.org dlehmann@chromium.org dmercadier@chromium.org ecmziegler@chromium.org +emaxx@google.com evih@chromium.org fgm@chromium.org gdeepti@chromium.org diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 86740bd8ebbf1d..170b52a281c5b1 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -6,6 +6,7 @@ use_relative_paths = True gclient_gn_args_file = 'build/config/gclient_args.gni' gclient_gn_args = [ + 'checkout_src_internal', ] vars = { @@ -58,6 +59,9 @@ vars = { # Used for downloading the Fuchsia SDK without running hooks. 'checkout_fuchsia_no_hooks': False, + # V8 doesn't need src_internal, but some shared GN files use this variable. + 'checkout_src_internal': False, + # reclient CIPD package version 'reclient_version': 're_client_version:0.185.0.db415f21-gomaip', @@ -75,53 +79,41 @@ vars = { 'build_with_chromium': False, # GN CIPD package version. - 'gn_version': 'git_revision:07d3c6f4dc290fae5ca6152ebcb37d6815c411ab', + 'gn_version': 'git_revision:103f8b437f5e791e0aef9d5c372521a5d675fabb', # 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:0915813c4c786240e12d03aa3018c02bab4df14f', + 'siso_version': 'git_revision:dc540b292de5e5cbfc88bbdd15b30b1634979823', # 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:29.20251023.3.1', + 'fuchsia_version': 'version:30.20251218.4.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': 'db8446987dfff3cfc0c100b7d58e6a404ef639eb', + 'partition_alloc_version': '936619c71ecb17c0e2482cf86be3f3f417b2f683', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_build-tools_version # and whatever else without interference from each other. - 'android_sdk_build-tools_version': 'y3EsZLg4bxPmpW0oYsAHylywNyMnIwPS3kh1VbQLAFAC', + 'android_sdk_build-tools_version': '-jLl4Ibk_WmgTsZaP-ueQwZDhBwkWf5BsQ4UNrkzXF0C', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_emulator_version # and whatever else without interference from each other. 'android_sdk_emulator_version': '9lGp8nTUCRRWGMnI_96HcKfzjnxEJKUcfvfwmA3wXNkC', # Three lines of non-changing comments so that - # the commit queue can handle CLs rolling android_sdk_extras_version - # and whatever else without interference from each other. - 'android_sdk_extras_version': 'bY55nDqO6FAm6FkGIj09sh2KW9oqAkCGKjYok5nUvBMC', - # Three lines of non-changing comments so that - # the commit queue can handle CLs rolling android_sdk_patcher_version - # and whatever else without interference from each other. - 'android_sdk_patcher_version': 'I6FNMhrXlpB-E1lOhMlvld7xt9lBVNOO83KIluXDyA0C', - # 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': '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. - 'android_sdk_platforms_version': '_YHemUrK49JrE7Mctdf5DDNOHu1VKBx_PTcWnZ-cbOAC', - # Three lines of non-changing comments so that - # the commit queue can handle CLs rolling android_sdk_sources_version - # and whatever else without interference from each other. - 'android_sdk_sources_version': 'qfTSF99e29-w3eIVPpfcif0Em5etyvxuicTDTntWHQMC', + 'android_sdk_platforms_version': 'gxwLT70eR_ObwZJzKK8UIS-N549yAocNTmc0JHgO7gUC', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_tools-lint_version # and whatever else without interference from each other. @@ -130,9 +122,9 @@ vars = { deps = { 'build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + '81330a6e45719ab8c0d22e5548afbedb5482b068', + Var('chromium_url') + '/chromium/src/build.git' + '@' + '483cecced32ce8b098d65eb08eb77925afa90bec', 'buildtools': - Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '723d636763a2635105e0e912bae25f662b2acaa8', + Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '6a18683f555b4ac8b05ac8395c29c84483ac9588', 'buildtools/linux64': { 'packages': [ { @@ -178,7 +170,7 @@ 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' + '@' + 'd2940bdbb0e28fd002ec31b89f8182bbf63da092', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'dd6138f9bc1aa2c3ba9cbf54452049b9a92c4e13', 'third_party/android_platform': { 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + 'e3919359f2387399042d31401817db4a02d756ec', 'condition': 'checkout_android', @@ -186,33 +178,21 @@ deps = { 'third_party/android_sdk/public': { 'packages': [ { - 'package': 'chromium/third_party/android_sdk/public/build-tools/36.0.0', + 'package': 'chromium/third_party/android_sdk/public/build-tools/36.1.0', 'version': Var('android_sdk_build-tools_version'), }, { 'package': 'chromium/third_party/android_sdk/public/emulator', 'version': Var('android_sdk_emulator_version'), }, - { - 'package': 'chromium/third_party/android_sdk/public/extras', - 'version': Var('android_sdk_extras_version'), - }, - { - 'package': 'chromium/third_party/android_sdk/public/patcher', - 'version': Var('android_sdk_patcher_version'), - }, { 'package': 'chromium/third_party/android_sdk/public/platform-tools', 'version': Var('android_sdk_platform-tools_version'), }, { - 'package': 'chromium/third_party/android_sdk/public/platforms/android-36', + 'package': 'chromium/third_party/android_sdk/public/platforms/android-36.1', 'version': Var('android_sdk_platforms_version'), }, - { - 'package': 'chromium/third_party/android_sdk/public/sources/android-30', - 'version': Var('android_sdk_sources_version'), - }, { 'package': 'chromium/third_party/android_sdk/public/cmdline-tools', 'version': Var('android_sdk_cmdline-tools_version'), @@ -232,7 +212,7 @@ deps = { 'dep_type': 'cipd', }, 'third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + '4daf7b2cead7fb17ec3da4eedb30215e3bd3674a', + 'url': Var('chromium_url') + '/catapult.git' + '@' + 'ef2533747d649df4cba6756528f68751b8523f81', 'condition': 'checkout_android', }, 'third_party/clang-format/script': @@ -246,19 +226,19 @@ deps = { 'condition': 'checkout_android', }, 'third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '8a1ec6a0213ae033f6749f261e1c528488349991', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '284c5ccb591c3de4e9f71be4a4beb5d1916d5383', 'third_party/dragonbox/src': - Var('chromium_url') + '/external/github.com/jk-jeon/dragonbox.git' + '@' + '6c7c925b571d54486b9ffae8d9d18a822801cbda', + Var('chromium_url') + '/external/github.com/jk-jeon/dragonbox.git' + '@' + 'beeeef91cf6fef89a4d4ba5e95d47ca64ccb3a44', 'third_party/fp16/src': Var('chromium_url') + '/external/github.com/Maratyszcza/FP16.git' + '@' + '3d2de1816307bac63c16a297e8c4dc501b4076df', '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' + '@' + '99294ee55f28f8ae5a3552f4c435528e4c1686b6', + 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + '947109b3f1f40fb060e7c91df049ee53fe89d573', 'condition': 'checkout_fuchsia', }, 'third_party/simdutf': - Var('chromium_url') + '/chromium/src/third_party/simdutf' + '@' + 'acd71a451c1bcb808b7c3a77e0242052909e381e', + Var('chromium_url') + '/chromium/src/third_party/simdutf' + '@' + '93b35aec29256f705c97f675fe4623578bd7a395', # 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': { @@ -272,21 +252,21 @@ deps = { 'dep_type': 'cipd', }, 'third_party/google_benchmark_chrome': { - 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + 'fa1929c5500ccfc01852ba50ff9258303e93601e', + 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + 'abeba5d5e6db5bdf85261045e148f1db3fdc40ad', }, 'third_party/google_benchmark_chrome/src': { - 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '761305ec3b33abf30e08d50eb829e19a802581cc', + 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '188e8278990a9069ffc84441cb5a024fd0bede37', }, 'third_party/fuzztest': - Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + 'aa6ba9074b8d66a2e2853a0a0992c25966022e13', + Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + '3c8b741ed69e60949a481e3ff86c7933f65cfc2d', 'third_party/fuzztest/src': - Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + '7940ee9a7ebce6419c6391eef8b289524b16f198', + Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + '54dfec04d5c9ad1f22b08002ab6a5e2d0de77671', 'third_party/googletest/src': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'b2b9072ecbe874f5937054653ef8f2731eb0f010', + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '4fe3307fb2d9f86d19777c7eb0e4809e9694dde7', 'third_party/highway/src': Var('chromium_url') + '/external/github.com/google/highway.git' + '@' + '84379d1c73de9681b54fbe1c035a23c7bd5d272d', 'third_party/icu': - Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'f27805b7d7d8618fa73ce89e9d28e0a8b2216fec', + Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'a86a32e67b8d1384b33f8fa48c83a6079b86f8cd', 'third_party/instrumented_libs': { 'url': Var('chromium_url') + '/chromium/third_party/instrumented_libraries.git' + '@' + '69015643b3f68dbd438c010439c59adc52cac808', 'condition': 'checkout_instrumented_libraries', @@ -302,179 +282,179 @@ deps = { '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' + '@' + 'cdb24138c1591d12b07d5147825ec7dfeb495276', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '7ab65651aed6802d2599dcb7a73b1f82d5179d05', 'third_party/libc++abi/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'a02fa0058d8d52aca049868d229808a3e5dadbad', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '8f11bb1d4438d0239d0dfc1bd9456a9f31629dda', 'third_party/libpfm4': Var('chromium_url') + '/chromium/src/third_party/libpfm4.git' + '@' + '25c29f04c9127e1ca09e6c1181f74850aa7f118b', 'third_party/libpfm4/src': Var('chromium_url') + '/external/git.code.sf.net/p/perfmon2/libpfm4.git' + '@' + '964baf9d35d5f88d8422f96d8a82c672042e7064', 'third_party/libunwind/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '61ba011ba3c4ed238af93ebad476d3ab5a2fb5ab', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + 'ba19d93d6d4f467fba11ff20fe2fc7c056f79345', 'third_party/llvm-libc/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + 'db35841a6fcbeee98e4d7fe6ba3df1a876a18a62', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + 'e81e859cfb7e78e70a58c3bfce859c509f45e1da', 'third_party/llvm-build/Release+Asserts': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/clang-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': 'f6a487ffd0e56ba7a39b063d85d1f8ff7846514f50635785730cffb7368872ce', - 'size_bytes': 55669844, - 'generation': 1759771493989631, + 'object_name': 'Linux_x64/clang-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '1c3c056427ab0db261c54c8fdf7c8404ff55e3de3e550520bcb1e1660ca05aad', + 'size_bytes': 57489092, + 'generation': 1768590901063677, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Linux_x64/clang-tidy-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '4fc7aacf4c25e50a25a941f1186a9e042ae26a2c5c698f359907798fa68106c8', - 'size_bytes': 14053336, - 'generation': 1759771494041411, + 'object_name': 'Linux_x64/clang-tidy-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': 'e3f568bd57c7ab199eb384153eea8cbe3c0e0604b2d8bbb158985647709a9a9c', + 'size_bytes': 14391456, + 'generation': 1768590901188932, 'condition': 'host_os == "linux" and checkout_clang_tidy', }, { - 'object_name': 'Linux_x64/clangd-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '238897cb0b55ffcb7f6b8f6a10055e44e05023642441a800895704ced91d37d1', - 'size_bytes': 14197108, - 'generation': 1759771494144266, + 'object_name': 'Linux_x64/clangd-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '8762f3c6102eae568e3ca7a287e774514846f2bb2feda4cf7dc1c33d9f5f1c8d', + 'size_bytes': 14588900, + 'generation': 1768590901246745, 'condition': 'host_os == "linux" and checkout_clangd', }, { - 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '2c5b0bf210ca982d8ec37cacf3d06d9c45bd6e68b33dcaabce0d108d6c266a36', - 'size_bytes': 2272128, - 'generation': 1759771494296549, + 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '4705feac592251ad0e2e1c41c855a6ecdc728908cbb459d4f68ca57f16bc4c5e', + 'size_bytes': 2321652, + 'generation': 1768590901407256, 'condition': 'host_os == "linux" and checkout_clang_coverage_tools', }, { - 'object_name': 'Linux_x64/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': 'fd644634db56977b072d951f26571ac41c9c298bf5989e99efeb150ee8427364', - 'size_bytes': 5666140, - 'generation': 1759771494159187, + 'object_name': 'Linux_x64/llvmobjdump-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '39d29ab3e708bcb6485181ac03123cfa3bac5b2365d5c441ab0cf5e7b25354b6', + 'size_bytes': 5802908, + 'generation': 1768590901316435, 'condition': '(checkout_linux or checkout_mac or checkout_android) and host_os == "linux"', }, { - 'object_name': 'Mac/clang-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '44811b6ed6868142c088807f6bcc0d08811a7b11d3f2bc2124c45868037e8cc3', - 'size_bytes': 53583464, - 'generation': 1759771495565305, + 'object_name': 'Mac/clang-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '9aff2c8f9d941be0667dc3ad3d4c3591dccd70f7a3b8e80396a623364e752eeb', + 'size_bytes': 54613288, + 'generation': 1768590902935296, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '8a2e16410bede5d52c77a012f182dde2350b05e647f7c1acaf7823ce816b4422', - 'size_bytes': 1005144, - 'generation': 1759771503758969, + 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '4f953afe4edebb54912719b437c78842978b0205792c069aa7529fd369d900be', + 'size_bytes': 1011040, + 'generation': 1768590912304306, 'condition': 'checkout_mac and not host_os == "mac"', }, { - 'object_name': 'Mac/clang-tidy-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '66633fe8846fddeda86b5ee992b945939bfe46567c9c685900c39531d22ce5cf', - 'size_bytes': 14133312, - 'generation': 1759771495642847, + 'object_name': 'Mac/clang-tidy-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '62033f6ff5c1ea0a18ae581edfd1178f50ede19d84675eafb640d752e26b60ae', + 'size_bytes': 14444752, + 'generation': 1768590903234647, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_tidy', }, { - 'object_name': 'Mac/clangd-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '44088b951aa7ddc96c0f32703b076311a7e7b803b3adfe0bfe9725f78c4fab29', - 'size_bytes': 15627392, - 'generation': 1759771495653658, + 'object_name': 'Mac/clangd-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '4a0365772b4eb7fe12fe595355e645f12c72255bf3f869941f2b4e5c5e2b76da', + 'size_bytes': 16398188, + 'generation': 1768590903283692, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clangd', }, { - 'object_name': 'Mac/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '79d62c78d256a508a0f3dbe59aa0fdf0391a9d462bf74e56adc1dee82efa83ac', - 'size_bytes': 2321940, - 'generation': 1759771495825689, + 'object_name': 'Mac/llvm-code-coverage-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '1c307bb206c5fc1e79deec1d12ce4ead53fa41574729deaa6d2b3a67f9540710', + 'size_bytes': 2352620, + 'generation': 1768590903522922, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Mac/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': 'a10d075e19e7b614ffd8c5a65f04fbd45011ec74c735dda89f0b3780ab397329', - 'size_bytes': 5567160, - 'generation': 1759771495741126, + 'object_name': 'Mac/llvmobjdump-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '83767300f93707ba9a40d3d7e14f1149aaf587d5c1e3ae243be8742a008e5052', + 'size_bytes': 5682364, + 'generation': 1768590903341073, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac_arm64/clang-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': 'c97e4f62cdd77edf725ccbf4cd63b589302605bf643c871f83214f39e629b2ea', - 'size_bytes': 44593804, - 'generation': 1759771504972271, + 'object_name': 'Mac_arm64/clang-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '5475c6c38a6199276ff173665a27ab608aadb3118ac34f1a75391ee6dc226798', + 'size_bytes': 45585568, + 'generation': 1768590913838191, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Mac_arm64/clang-tidy-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '3a0eb0fb3a4633c8b4b143e826c5476c41cdd6bd0db8e93a74bbee6520b02b79', - 'size_bytes': 12136348, - 'generation': 1759771505073378, + 'object_name': 'Mac_arm64/clang-tidy-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '9893644917db71d520832ea9e276a98e2051acf53458efc6834973e076c6d36e', + 'size_bytes': 12429560, + 'generation': 1768590913986547, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_tidy', }, { - 'object_name': 'Mac_arm64/clangd-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '2a5dc1f385bacd25b974b8aa15c57008e33bc384521e2d705a940acbb3292356', - 'size_bytes': 12479180, - 'generation': 1759771505148040, + 'object_name': 'Mac_arm64/clangd-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': 'e67cfb9503c442bd29642b3a42b36c283346371b8143c81b895684df0fb09e69', + 'size_bytes': 12817084, + 'generation': 1768590914107805, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clangd', }, { - 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '00bf0f82ca9aff15f32e7f0cf7e7b25d36a5a672a1a9bc345c1b7e140a478f93', - 'size_bytes': 1948520, - 'generation': 1759771505303586, + 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '5f17c695f24eadcc51edc720a5b0b2f2cc36413552038d93ae2bf361667d780a', + 'size_bytes': 1978756, + 'generation': 1768590914351005, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Mac_arm64/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '7aa959752d6beafc74129e4822912021f855584e55a55600044f1d42b889f8b0', - 'size_bytes': 5292960, - 'generation': 1759771505201957, + 'object_name': 'Mac_arm64/llvmobjdump-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '5fd7fc88f00197a710aac7dd00a2b6947d5231c53a472ed38e1af0b9088cefc3', + 'size_bytes': 5418172, + 'generation': 1768590914206466, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Win/clang-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': 'fc756186dea61e700bd0f885b585050d9356bbd7f942dafae25d38eef4671adf', - 'size_bytes': 47657436, - 'generation': 1759771514781908, + 'object_name': 'Win/clang-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': 'de6622ec6d9d22b00316c47b2eb59e6cb7dbcb2d5b59f04f18c94714d0b35066', + 'size_bytes': 48839256, + 'generation': 1768590925760667, 'condition': 'host_os == "win"', }, { - 'object_name': 'Win/clang-tidy-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': 'f7ecd7e8d555e8622e0096ea1aca3ddb3fb4e89e91228c3c87289a4b8ca7919c', - 'size_bytes': 14016476, - 'generation': 1759771514824669, + 'object_name': 'Win/clang-tidy-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': 'bf6f38e7f5d06c8c3eff9ba85df1ddd1006828cc72b638d22a3e7562507a8a51', + 'size_bytes': 14353272, + 'generation': 1768590926006423, 'condition': 'host_os == "win" and checkout_clang_tidy', }, { - 'object_name': 'Win/clang-win-runtime-library-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '0a426702c9e0f92ea27f9611a1665cc5df9a58820360d3fa6a4026b9a0e5120f', - 'size_bytes': 2501292, - 'generation': 1759771523074183, + 'object_name': 'Win/clang-win-runtime-library-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': 'ad0dc3c686f63f40a35bd7a10f90935d08bcd9d1f23549c87cbdeb8cb503250c', + 'size_bytes': 2540656, + 'generation': 1768590935148812, 'condition': 'checkout_win and not host_os == "win"', }, { - 'object_name': 'Win/clangd-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': 'b172d0246511cdeffbc5a4fa44ad402a6b9eacd9d3e2e77d88a9965f80d344d5', - 'size_bytes': 14364312, - 'generation': 1759771514873065, + 'object_name': 'Win/clangd-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': 'bcf731c6ce9050067212fc4164893ce768809d73732459f2c1a0ddb8f124f5f2', + 'size_bytes': 14736740, + 'generation': 1768590926034327, 'condition': 'host_os == "win" and checkout_clangd', }, { - 'object_name': 'Win/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': 'b70528795afd95729971b74939e512c638a8a93fd1ee1c9205a6240f7af28802', - 'size_bytes': 2368144, - 'generation': 1759771515105244, + 'object_name': 'Win/llvm-code-coverage-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': 'bf86ab13e378a70f953d014cc7a37714dbaca0d8002cd638dd4d88df08231910', + 'size_bytes': 2416448, + 'generation': 1768590926285418, 'condition': 'host_os == "win" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-84.tar.xz', - 'sha256sum': '94c068f109e220e028a38f5beced7d6acd67725fc0b1da9fa8ed1b959f12d799', - 'size_bytes': 5673824, - 'generation': 1759771514962844, + 'object_name': 'Win/llvmobjdump-llvmorg-23-init-484-gf646b915-1.tar.xz', + 'sha256sum': '3ee3ece3cf0afa3536c39b15f818e5eab1ac4408cd31ad0ad82414d3a8aa1eca', + 'size_bytes': 5796552, + 'generation': 1768590926109316, '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', + Var('chromium_url') + '/infra/luci/luci-py/client/libs/logdog' + '@' + '62fe96d7fd97a62f21a4665d2e71f69e9eedb04e', 'third_party/markupsafe': Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '4256084ae14175d38a3ff7d739dca83ae49ccec6', 'third_party/ninja': { @@ -492,56 +472,56 @@ deps = { 'condition': 'not build_with_chromium', }, 'third_party/perfetto': - Var('android_url') + '/platform/external/perfetto.git' + '@' + '40b529923598b739b2892a536a7692eedbed5685', + Var('chromium_url') + '/external/github.com/google/perfetto.git' + '@' + '1d9994a93c6ada2fb261dc72984fa07683a6c86e', 'third_party/protobuf': - Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + 'fcb7931541e4fe633b796db3f3e6f54c2dd297a8', + Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + 'ddf513ccaeed6b1316bc2029b10f4436ad297324', 'third_party/re2/src': - Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + '61c4644171ee6b480540bf9e569cba06d9090b4b', + Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + '972a15cedd008d846f1a39b2e88ce48d7f166cbd', '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' + '@' + '12557fcc00d7e94caa5e270d7343b566e48a68ae', + Var('chromium_url') + '/chromium/src/tools/rust' + '@' + 'd2fadac996be252abe5077583a42970163e9f2e7', 'tools/win': - Var('chromium_url') + '/chromium/src/tools/win' + '@' + '24494b071e019a2baea4355d9870ffc5fc0bbafe', + Var('chromium_url') + '/chromium/src/tools/win' + '@' + 'baacfc6d5986b07abe0503216b491e234b94ba79', 'third_party/rust': - Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + '4d93511ebaceb09ebdd83c8876a4a936b75fa04d', + Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + '30eb036e9b2f181dda31bde6f20d2a4983e380b9', 'third_party/rust-toolchain': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz', - 'sha256sum': '2bdaea0b11cb11a8f2f4dcb79b0dbb4bf38e2bd22479ff8014f55b9b6890e135', - 'size_bytes': 142044388, - 'generation': 1758743116775859, + 'object_name': 'Linux_x64/rust-toolchain-d2015e2359d5d0b154c2b192d4039f9b5711fcdc-4-llvmorg-23-init-484-gf646b915.tar.xz', + 'sha256sum': 'd31bf65845992926dc6dedce43348e48fd9140f5339c678974481a1e3b356da1', + 'size_bytes': 267004352, + 'generation': 1769079787385484, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Mac/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz', - 'sha256sum': '351347e1930a900c63b3953cdb10775b73572c6145e389f3820ba920816d46ca', - 'size_bytes': 135891820, - 'generation': 1758743118329536, + 'object_name': 'Mac/rust-toolchain-d2015e2359d5d0b154c2b192d4039f9b5711fcdc-4-llvmorg-23-init-484-gf646b915.tar.xz', + 'sha256sum': '0677ec808549ab845bfdbe4ff6072d41c8b4f2c3321c68a5bf95b2577372fe34', + 'size_bytes': 254470068, + 'generation': 1769079789279846, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac_arm64/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz', - 'sha256sum': '33d6b8cf4fc6617aa98888a46bc1dbef29ae9a9ebd01c3f248ef8c08ec5f198b', - 'size_bytes': 123302332, - 'generation': 1758743119839246, + 'object_name': 'Mac_arm64/rust-toolchain-d2015e2359d5d0b154c2b192d4039f9b5711fcdc-4-llvmorg-23-init-484-gf646b915.tar.xz', + 'sha256sum': '5977efd99f758004492f7e75879db85642c37b3882d610092200e850475b9042', + 'size_bytes': 238094236, + 'generation': 1769079791037848, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Win/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz', - 'sha256sum': '4f6dfa230e5d401bf9aadd804142b412467177b17d50a3f52a8c69c1957aa2db', - 'size_bytes': 199998880, - 'generation': 1758743121322555, + 'object_name': 'Win/rust-toolchain-d2015e2359d5d0b154c2b192d4039f9b5711fcdc-4-llvmorg-23-init-484-gf646b915.tar.xz', + 'sha256sum': '0e4bd819cae4aa322a6f8667e3ff157adfb5eadb9d0daf615d5ff8202c530e6e', + 'size_bytes': 402509464, + 'generation': 1769079792946462, 'condition': 'host_os == "win"', }, ], }, - 'third_party/siso': { + 'third_party/siso/cipd': { 'packages': [ { 'package': 'build/siso/${{platform}}', @@ -552,13 +532,13 @@ deps = { 'condition': 'not build_with_chromium and host_cpu != "s390x" and host_os != "zos" and host_cpu != "ppc64"', }, 'third_party/zlib': - Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '85f05b0835f934e52772efc308baa80cdd491838', + Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '980253c1cc835c893c57b5cfc10c5b942e10bc46', 'tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '97f0845783b3d8ebca7541afb46ec53c3f4bd3ac', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'd651bc848c45c945ecbc0c1a372b0b781e47c991', 'tools/protoc_wrapper': 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' + '@' + '3fb321d9764442ceaf2e17b6e68ab6b6836bc78a', + 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '6d5ac0f7d3f0af5d13b78044fc31c793aa3549f8', 'condition': 'not build_with_chromium', }, 'third_party/zoslib': { @@ -590,6 +570,7 @@ include_rules = [ '+absl/container/flat_hash_set.h', '+absl/container/btree_map.h', '+absl/functional/overload.h', + '+absl/numeric/int128.h', '+absl/status', '+absl/strings/str_format.h', '+absl/synchronization/mutex.h', diff --git a/deps/v8/MODULE.bazel b/deps/v8/MODULE.bazel index 3370e06bc077b9..7d7ba53b579605 100644 --- a/deps/v8/MODULE.bazel +++ b/deps/v8/MODULE.bazel @@ -3,10 +3,10 @@ module( version = "0.0.0", ) -bazel_dep(name = "bazel_skylib", version = "1.7.1") -bazel_dep(name = "rules_cc", version = "0.1.2") +bazel_dep(name = "bazel_skylib", version = "1.8.1") +bazel_dep(name = "rules_cc", version = "0.2.0") bazel_dep(name = "rules_python", version = "1.0.0") -bazel_dep(name = "platforms", version = "0.0.11") +bazel_dep(name = "platforms", version = "1.0.0") bazel_dep(name = "abseil-cpp", version = "20250814.0") bazel_dep(name = "highway", version = "1.2.0") @@ -15,6 +15,178 @@ pip.parse( hub_name = "v8_python_deps", python_version = "3.11", requirements_lock = "//:bazel/requirements.txt", - extra_pip_args = ["--require-hashes"], + extra_pip_args = [ + "--require-hashes", + "--index-url=https://pypi.org/simple", + ], ) use_repo(pip, "v8_python_deps") + +# Define the local LLVM toolchain repository +llvm_toolchain_repository = use_repo_rule("//bazel/toolchain:llvm_repository.bzl", "llvm_toolchain_repository") + +llvm_toolchain_repository( + name = "llvm_toolchain", + path = "third_party/llvm-build/Release+Asserts", + config_file_content = """ +load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", "feature", "flag_group", "flag_set", "tool_path") + +def _impl(ctx): + tool_paths = [ + tool_path(name = "gcc", path = "bin/clang"), + tool_path(name = "ld", path = "bin/lld"), + tool_path(name = "ar", path = "bin/llvm-ar"), + tool_path(name = "cpp", path = "bin/clang++"), + tool_path(name = "gcov", path = "/bin/false"), + tool_path(name = "nm", path = "bin/llvm-nm"), + tool_path(name = "objdump", path = "bin/llvm-objdump"), + tool_path(name = "strip", path = "bin/llvm-strip"), + ] + + features = [ + feature( + name = "default_compile_flags", + enabled = True, + flag_sets = [ + flag_set( + actions = [ + "c-compile", + "c++-compile", + "c++-header-parsing", + "c++-module-compile", + "c++-module-codegen", + "linkstamp-compile", + "assemble", + "preprocess-assemble", + ], + flag_groups = [ + flag_group( + flags = [ + "--sysroot={WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot", + "-nostdinc++", + "-isystem", + "{WORKSPACE_ROOT}/buildtools/third_party/libc++", + "-isystem", + "{WORKSPACE_ROOT}/third_party/libc++/src/include", + "-isystem", + "{WORKSPACE_ROOT}/third_party/libc++abi/src/include", + "-isystem", + "{WORKSPACE_ROOT}/third_party/libc++/src/src", + "-isystem", + "{WORKSPACE_ROOT}/third_party/llvm-libc/src", + "-D_LIBCPP_HARDENING_MODE_DEFAULT=_LIBCPP_HARDENING_MODE_NONE", + "-DLIBC_NAMESPACE=__llvm_libc_cr", + ], + ), + ], + ), + ], + ), + feature( + name = "default_linker_flags", + enabled = True, + flag_sets = [ + flag_set( + actions = [ + "c++-link-executable", + "c++-link-dynamic-library", + "c++-link-nodeps-dynamic-library", + ], + flag_groups = [ + flag_group( + flags = [ + "--sysroot={WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot", + "-fuse-ld=lld", + "-lm", + "-lpthread", + ], + ), + ], + ), + ], + ), + ] + + return cc_common.create_cc_toolchain_config_info( + ctx = ctx, + features = features, + cxx_builtin_include_directories = [ + "{WORKSPACE_ROOT}/buildtools/third_party/libc++", + "{WORKSPACE_ROOT}/third_party/libc++/src/include", + "{WORKSPACE_ROOT}/third_party/libc++abi/src/include", + "{WORKSPACE_ROOT}/third_party/libc++/src/src", + "{WORKSPACE_ROOT}/third_party/llvm-libc/src", + "{WORKSPACE_ROOT}/third_party/llvm-build/Release+Asserts/lib/clang/22/include", + "{WORKSPACE_ROOT}/third_party/llvm-build/Release+Asserts/lib/clang/23/include", + "{WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot/usr/include", + "{WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot/usr/local/include", + ], + toolchain_identifier = "local_clang", + host_system_name = "local", + target_system_name = "local", + target_cpu = "k8", + target_libc = "unknown", + compiler = "clang", + abi_version = "unknown", + abi_libc_version = "unknown", + tool_paths = tool_paths, + ) + +cc_toolchain_config = rule( + implementation = _impl, + attrs = {}, + provides = [CcToolchainConfigInfo], +) +""", + build_file_content = """ +load(":cc_toolchain_config.bzl", "cc_toolchain_config") + +package(default_visibility = ["//visibility:public"]) + +filegroup( + name = "all_files", + srcs = glob(["**/*"]), +) + +filegroup(name = "empty") + +cc_toolchain_config(name = "k8_toolchain_config") + +cc_toolchain( + name = "k8_toolchain", + all_files = ":all_files", + ar_files = ":all_files", + compiler_files = ":all_files", + dwp_files = ":empty", + linker_files = ":all_files", + objcopy_files = ":all_files", + strip_files = ":all_files", + supports_param_files = 0, + toolchain_config = ":k8_toolchain_config", + toolchain_identifier = "local_clang", +) + +toolchain( + name = "cc_toolchain_k8", + exec_compatible_with = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], + target_compatible_with = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], + toolchain = ":k8_toolchain", + toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", +) +""", +) + +register_toolchains("@llvm_toolchain//:cc_toolchain_k8") + +# Define local repository for libc++ from third_party sources +libcxx_repository = use_repo_rule("//bazel/toolchain:libcxx_repository.bzl", "libcxx_repository") + +libcxx_repository( + name = "libcxx", +) diff --git a/deps/v8/WATCHLISTS b/deps/v8/WATCHLISTS index 0e9e78b120c9eb..db847a31279e54 100644 --- a/deps/v8/WATCHLISTS +++ b/deps/v8/WATCHLISTS @@ -60,6 +60,9 @@ 'arm': { 'filepath': '/arm/', }, + 'riscv': { + 'filepath': '/riscv/', + }, 'merges': { 'filepath': '.', }, @@ -111,6 +114,7 @@ 'WATCHLISTS': { 'maglev': [ + 'dmercadier+watch@chromium.org', 'leszeks+watch@chromium.org', 'verwaest+watch@chromium.org', 'victorgomes+watch@chromium.org', @@ -140,6 +144,9 @@ 'v8-ppc-ports@googlegroups.com', 'v8-risc-v-ports@chromium.org', ], + 'riscv': [ + 'v8-risc-v-ports@chromium.org', + ], 'merges': [ # Only enabled on branches created with tools/release/create_release.py 'v8-merges@googlegroups.com', diff --git a/deps/v8/bazel/config/BUILD.bazel b/deps/v8/bazel/config/BUILD.bazel index c81f2782031269..17e379b8e27baa 100644 --- a/deps/v8/bazel/config/BUILD.bazel +++ b/deps/v8/bazel/config/BUILD.bazel @@ -357,3 +357,28 @@ selects.config_setting_group( ":is_fastbuild", ], ) + +# To build with sanitizers in the command line, define the local +# variable SANITIZER. +# Eg: bazel build --copt=-fsanitize=address --linkopt=-fsanitize=address \ +# --define=SANITIZER=asan ... + +config_setting( + name = "asan_enabled", + values = {"define": "SANITIZER=asan"}, +) + +config_setting( + name = "hwasan_enabled", + values = {"define": "SANITIZER=hwasan"}, +) + +config_setting( + name = "msan_enabled", + values = {"define": "SANITIZER=msan"}, +) + +config_setting( + name = "ubsan_enabled", + values = {"define": "SANITIZER=ubsan"}, +) diff --git a/deps/v8/bazel/defs.bzl b/deps/v8/bazel/defs.bzl index a7e1e2af786ce4..9648e4a541f99f 100644 --- a/deps/v8/bazel/defs.bzl +++ b/deps/v8/bazel/defs.bzl @@ -97,7 +97,7 @@ v8_config = rule( def _default_args(): return struct( - deps = [":define_flags"], + deps = [":define_flags", "@libcxx//:libc++"], defines = select({ "@v8//bazel/config:is_windows": [ "UNICODE", @@ -111,6 +111,7 @@ def _default_args(): "@v8//bazel/config:is_posix": [ "-fPIC", "-fno-strict-aliasing", + "-fconstexpr-steps=2000000", "-Werror", "-Wextra", "-Wno-unneeded-internal-declaration", diff --git a/deps/v8/bazel/toolchain/BUILD.bazel b/deps/v8/bazel/toolchain/BUILD.bazel new file mode 100644 index 00000000000000..497f126c4c3af3 --- /dev/null +++ b/deps/v8/bazel/toolchain/BUILD.bazel @@ -0,0 +1,2 @@ +package(default_visibility = ["//visibility:public"]) +exports_files(["llvm_repository.bzl"]) diff --git a/deps/v8/bazel/toolchain/libcxx_repository.bzl b/deps/v8/bazel/toolchain/libcxx_repository.bzl new file mode 100644 index 00000000000000..a7d5f11053dd33 --- /dev/null +++ b/deps/v8/bazel/toolchain/libcxx_repository.bzl @@ -0,0 +1,99 @@ +"""Repository rule for building libc++ from third_party sources.""" + +def _libcxx_repository_impl(ctx): + # Find the workspace root + workspace_root = ctx.path(Label("@//:BUILD.bazel")).dirname + + # Symlink the source directories + ctx.symlink(workspace_root.get_child("third_party").get_child("libc++"), "libc++") + ctx.symlink(workspace_root.get_child("third_party").get_child("libc++abi"), "libc++abi") + ctx.symlink(workspace_root.get_child("third_party").get_child("llvm-libc"), "llvm-libc") + ctx.symlink(workspace_root.get_child("buildtools").get_child("third_party").get_child("libc++"), "buildtools_libc++") + + # Get the external repository path for include flags + # In bzlmod, repo names may have prefixes, so we need to determine the actual path + repo_path = "external/" + ctx.name + + # Create the BUILD file + # NOTE: We don't use 'includes' attribute here because it creates relative paths + # that conflict with the toolchain's absolute paths, breaking #include_next. + # The toolchain provides the libc++ include paths via -isystem flags. + build_content = ''' +package(default_visibility = ["//visibility:public"]) + +LIBCXX_COPTS = [ + "-std=c++23", + "-fPIC", + "-fstrict-aliasing", + "-fexceptions", + "-frtti", + "-D_LIBCPP_BUILDING_LIBRARY", + "-D_LIBCPP_HARDENING_MODE_DEFAULT=_LIBCPP_HARDENING_MODE_NONE", + "-DLIBC_NAMESPACE=__llvm_libc_cr", +] + +cc_library( + name = "libc++abi", + srcs = glob([ + "libc++abi/src/src/*.cpp", + "libc++abi/src/src/*.h", + "libc++abi/src/src/demangle/*.h", + ], exclude = [ + # Exclude files not needed for Linux build + "libc++abi/src/src/cxa_noexception.cpp", + "libc++abi/src/src/stdlib_new_delete.cpp", + ]), + hdrs = glob([ + "libc++abi/src/include/**/*.h", + "libc++/src/include/**/*", + "libc++/src/src/include/*.h", + "libc++abi/src/src/demangle/*.def", + "buildtools_libc++/__config_site", + "buildtools_libc++/__assertion_handler", + "llvm-libc/src/**/*.h", + ]), + copts = LIBCXX_COPTS + [ + "-DLIBCXXABI_SILENT_TERMINATE", + "-iquote", "{REPO_PATH}/libc++abi/src/src", + "-iquote", "{REPO_PATH}/libc++abi/src/src/demangle", + ], + linkstatic = True, +) + +cc_library( + name = "libc++", + srcs = glob([ + "libc++/src/src/*.cpp", + "libc++/src/src/*.h", + "libc++/src/src/filesystem/*.cpp", + "libc++/src/src/filesystem/*.h", + "libc++/src/src/ryu/*.cpp", + "libc++/src/src/include/*.h", + "libc++/src/src/include/ryu/*.h", + ]) + glob(["libc++/src/src/support/**/*.ipp"], allow_empty = True), + hdrs = glob([ + "libc++/src/include/**/*", + "buildtools_libc++/__config_site", + "buildtools_libc++/__assertion_handler", + "llvm-libc/src/**/*.h", + ]), + copts = LIBCXX_COPTS + [ + "-DLIBCXX_BUILDING_LIBCXXABI", + "-iquote", "{REPO_PATH}/libc++/src/src", + "-iquote", "{REPO_PATH}/libc++/src/src/filesystem", + ], + linkopts = [ + "-lpthread", + "-lm", + ], + deps = [":libc++abi"], + linkstatic = True, +) +'''.format(REPO_PATH=repo_path) + ctx.file("BUILD.bazel", build_content) + +libcxx_repository = repository_rule( + implementation = _libcxx_repository_impl, + local = True, + configure = True, +) diff --git a/deps/v8/bazel/toolchain/llvm_repository.bzl b/deps/v8/bazel/toolchain/llvm_repository.bzl new file mode 100644 index 00000000000000..76670a5e69b657 --- /dev/null +++ b/deps/v8/bazel/toolchain/llvm_repository.bzl @@ -0,0 +1,40 @@ +def _llvm_toolchain_impl(ctx): + # Find the workspace root by resolving a label in the main repository + # This assumes the main repo is "@" or the default. + workspace_root = ctx.path(Label("@//:BUILD.bazel")).dirname + + # Construct the path to the LLVM build directory within the workspace + # ctx.attr.path should be relative to the workspace root, + # e.g. "third_party/llvm-build/Release+Asserts" + # We manually split and traverse because get_child handles one component. + llvm_path = workspace_root + for component in ctx.attr.path.split("/"): + llvm_path = llvm_path.get_child(component) + + # Symlink top-level directories and files + items = ["bin", "lib", "include", "share"] + for item in items: + # Check if the item exists before symlinking to avoid errors + src_path = llvm_path.get_child(item) + if src_path.exists: + ctx.symlink(src_path, item) + + # Create the config file + config_content = ctx.attr.config_file_content.replace("{WORKSPACE_ROOT}", str(workspace_root)) + ctx.file("cc_toolchain_config.bzl", config_content) + + # Create the BUILD file + ctx.file("BUILD.bazel", ctx.attr.build_file_content) + +llvm_toolchain_repository = repository_rule( + implementation = _llvm_toolchain_impl, + attrs = { + "path": attr.string(mandatory = True, + doc = "Path to the LLVM install directory relative to workspace root"), + "build_file_content": attr.string(mandatory = True, doc = "Content of the BUILD file"), + "config_file_content": attr.string(mandatory = True, + doc = "Content of the cc_toolchain_config.bzl file"), + }, + local = True, + configure = True, # Indicates this rule depends on system configuration/files +) diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index d198859576a4bd..e29a7c5de3c4cc 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -61,8 +61,7 @@ declare_args() { # 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" + v8_enable_temporal_support = !(defined(build_with_node) && build_with_node) # Use static libraries instead of source_sets. v8_static_library = false @@ -80,6 +79,12 @@ declare_args() { # Implement tracing using Perfetto (https://perfetto.dev). v8_use_perfetto = false + # Use Perfetto JSON Export. + v8_use_perfetto_json_export = "" + + # Use Perfetto SDK headers. + v8_use_perfetto_sdk = false + # Override global symbol level setting for v8. v8_symbol_level = symbol_level @@ -225,7 +230,7 @@ declare_args() { # When `v8_enable_pointer_compression_shared_cage` RO space is placed into a # contiguous area at the front of the cage. In case RO allocations fails this # size needs to be adjusted. - v8_contiguous_compressed_ro_space_size_mb = 8 + v8_contiguous_compressed_ro_space_size_mb = 16 # Change code emission and runtime features to be CET shadow-stack compliant # (incomplete and experimental). @@ -269,12 +274,25 @@ if (v8_enable_backtrace == "") { v8_enable_backtrace = is_debug && !v8_optimized_debug } +if (v8_use_perfetto_sdk) { + # When using perfetto SDK, we also need to enable perfetto support. + v8_use_perfetto = true +} + # Chromium is configured to use the perfetto client library, v8 should also # use perfetto for tracing. -if (build_with_chromium) { +if (build_with_chromium && !use_fuzzing_engine) { v8_use_perfetto = true } +# Enable JSON export by default when using perfetto but not the SDK. +if (v8_use_perfetto_json_export == "") { + v8_use_perfetto_json_export = v8_use_perfetto && !v8_use_perfetto_sdk +} +assert( + !(v8_use_perfetto_sdk && v8_use_perfetto_json_export), + "Perfetto JSON Export is not available when building with the Perfetto SDK.") + # Includes profiles to optimize builtins if # * it is a Chromium build, and # * Chromium builds with optimization. @@ -305,7 +323,8 @@ if (v8_enable_pointer_compression == "") { # Windows, Linux, MacOS and tvOS. is_drumbrake_supported = v8_enable_webassembly && v8_enable_pointer_compression && - (v8_current_cpu == "x64" || v8_current_cpu == "arm64") && + (v8_current_cpu == "x64" || v8_current_cpu == "arm64" || + v8_current_cpu == "riscv64") && (target_os == "win" || target_os == "linux" || target_os == "mac" || target_os == "ios") diff --git a/deps/v8/include/cppgc/allocation.h b/deps/v8/include/cppgc/allocation.h index a7955fd1016e8e..450db00479e87a 100644 --- a/deps/v8/include/cppgc/allocation.h +++ b/deps/v8/include/cppgc/allocation.h @@ -50,18 +50,17 @@ class MakeGarbageCollectedTraitInternal { protected: static inline void MarkObjectAsFullyConstructed(const void* payload) { // See api_constants for an explanation of the constants. - std::atomic* atomic_mutable_bitfield = - reinterpret_cast*>( - const_cast(reinterpret_cast( - reinterpret_cast(payload) - - api_constants::kFullyConstructedBitFieldOffsetFromPayload))); + std::atomic_ref atomic_mutable_bitfield( + *const_cast(reinterpret_cast( + reinterpret_cast(payload) - + api_constants::kFullyConstructedBitFieldOffsetFromPayload))); // It's safe to split use load+store here (instead of a read-modify-write // operation), since it's guaranteed that this 16-bit bitfield is only // modified by a single thread. This is cheaper in terms of code bloat (on // ARM) and performance. - uint16_t value = atomic_mutable_bitfield->load(std::memory_order_relaxed); + uint16_t value = atomic_mutable_bitfield.load(std::memory_order_relaxed); value |= api_constants::kFullyConstructedBitMask; - atomic_mutable_bitfield->store(value, std::memory_order_release); + atomic_mutable_bitfield.store(value, std::memory_order_release); } // Dispatch based on compile-time information. diff --git a/deps/v8/include/cppgc/internal/api-constants.h b/deps/v8/include/cppgc/internal/api-constants.h index f3b0d8571d3b9d..73b955d7053ae1 100644 --- a/deps/v8/include/cppgc/internal/api-constants.h +++ b/deps/v8/include/cppgc/internal/api-constants.h @@ -28,7 +28,7 @@ constexpr size_t kGB = kMB * 1024; static constexpr size_t kFullyConstructedBitFieldOffsetFromPayload = 2 * sizeof(uint16_t); // Mask for in-construction bit. -static constexpr uint16_t kFullyConstructedBitMask = uint16_t{1}; +static constexpr uint16_t kFullyConstructedBitMask = uint16_t{1} << 15; static constexpr size_t kPageSizeBits = 17; static constexpr size_t kPageSize = size_t{1} << kPageSizeBits; diff --git a/deps/v8/include/libplatform/v8-tracing.h b/deps/v8/include/libplatform/v8-tracing.h index 2271729240b9cb..9d05949c38efac 100644 --- a/deps/v8/include/libplatform/v8-tracing.h +++ b/deps/v8/include/libplatform/v8-tracing.h @@ -14,9 +14,11 @@ #include "v8-platform.h" // NOLINT(build/include_directory) namespace perfetto { +#if defined(V8_USE_PERFETTO_JSON_EXPORT) namespace trace_processor { class TraceProcessorStorage; } +#endif // defined(V8_USE_PERFETTO_JSON_EXPORT) class TracingSession; } @@ -231,6 +233,12 @@ class V8_PLATFORM_EXPORT TraceConfig { #define V8_PLATFORM_NON_EXPORTED_BASE(code) code #endif // defined(_MSC_VER) +/** + * V8 Tracing controller default implementation. + * + * Will become obsolete in Perfetto build + * (v8_use_perfetto_json_export = true). + */ class V8_PLATFORM_EXPORT TracingController : public V8_PLATFORM_NON_EXPORTED_BASE(v8::TracingController) { public: @@ -307,10 +315,13 @@ class V8_PLATFORM_EXPORT TracingController std::unique_ptr trace_config_; std::atomic_bool recording_{false}; -#if defined(V8_USE_PERFETTO) - std::ostream* output_stream_ = nullptr; +#if defined(V8_USE_PERFETTO_JSON_EXPORT) std::unique_ptr trace_processor_; +#endif + +#if defined(V8_USE_PERFETTO) + std::ostream* output_stream_ = nullptr; TraceEventListener* listener_for_testing_ = nullptr; std::unique_ptr tracing_session_; #else // !defined(V8_USE_PERFETTO) diff --git a/deps/v8/include/v8-array-buffer.h b/deps/v8/include/v8-array-buffer.h index 3e64ece5debda3..4b55c445376530 100644 --- a/deps/v8/include/v8-array-buffer.h +++ b/deps/v8/include/v8-array-buffer.h @@ -77,6 +77,11 @@ class V8_EXPORT BackingStore : public v8::internal::BackingStoreBase { */ bool IsShared() const; + /** + * Indicates whether the backing store is immutable. + */ + bool IsImmutable() const; + /** * Indicates whether the backing store was created for a resizable ArrayBuffer * or a growable SharedArrayBuffer, and thus may be resized by user JavaScript @@ -328,6 +333,11 @@ class V8_EXPORT ArrayBuffer : public Object { */ bool WasDetached() const; + /** + * Returns true if this ArrayBuffer is immutable. + */ + bool IsImmutable() const; + /** * Detaches this ArrayBuffer and all its views (typed arrays). * Detaching sets the byte length of the buffer and all typed arrays to zero, diff --git a/deps/v8/include/v8-callbacks.h b/deps/v8/include/v8-callbacks.h index 850b7ccbd4f210..e5eba5a203b8bc 100644 --- a/deps/v8/include/v8-callbacks.h +++ b/deps/v8/include/v8-callbacks.h @@ -260,6 +260,15 @@ enum class CrashKeyId { using AddCrashKeyCallback = void (*)(CrashKeyId id, const std::string& value); +// --- CrashKeyString Callbacks --- +using CrashKey = void*; +enum class CrashKeySize { Size32, Size64, Size256, Size1024 }; + +using AllocateCrashKeyStringCallback = + std::function; +using SetCrashKeyStringCallback = + std::function; + // --- Enter/Leave Script Callback --- using BeforeCallEnteredCallback = void (*)(Isolate*); using CallCompletedCallback = void (*)(Isolate*); diff --git a/deps/v8/include/v8-context.h b/deps/v8/include/v8-context.h index 1d52f5bf40652e..21137f628f2def 100644 --- a/deps/v8/include/v8-context.h +++ b/deps/v8/include/v8-context.h @@ -276,6 +276,20 @@ class V8_EXPORT Context : public Data { * Gets the embedder data with the given index, which must have been set by a * previous call to SetEmbedderData with the same index. */ + V8_INLINE Local GetEmbedderDataV2(int index); + + /** + * Sets the embedder data with the given index, growing the data as + * needed. Note that index 0 currently has a special meaning for Chrome's + * debugger. + */ + void SetEmbedderDataV2(int index, Local value); + + /** + * Gets the embedder data with the given index, which must have been set by a + * previous call to SetEmbedderData with the same index. + */ + V8_DEPRECATE_SOON("Use GetEmbedderDataV2 instead") V8_INLINE Local GetEmbedderData(int index); /** @@ -291,6 +305,7 @@ class V8_EXPORT Context : public Data { * needed. Note that index 0 currently has a special meaning for Chrome's * debugger. */ + V8_DEPRECATE_SOON("Use SetEmbedderDataV2 instead") void SetEmbedderData(int index, Local value); /** @@ -304,7 +319,7 @@ class V8_EXPORT Context : public Data { V8_INLINE void* GetAlignedPointerFromEmbedderData(int index, EmbedderDataTypeTag tag); - V8_DEPRECATE_SOON( + V8_DEPRECATED( "Use GetAlignedPointerFromEmbedderData with EmbedderDataTypeTag " "parameter instead.") V8_INLINE void* GetAlignedPointerFromEmbedderData(Isolate* isolate, @@ -313,7 +328,7 @@ class V8_EXPORT Context : public Data { kEmbedderDataTypeTagDefault); } - V8_DEPRECATE_SOON( + V8_DEPRECATED( "Use GetAlignedPointerFromEmbedderData with EmbedderDataTypeTag " "parameter instead.") V8_INLINE void* GetAlignedPointerFromEmbedderData(int index) { @@ -329,7 +344,7 @@ 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( + V8_DEPRECATED( "Use SetAlignedPointerInEmbedderData with EmbedderDataTypeTag parameter " "instead.") void SetAlignedPointerInEmbedderData(int index, void* value) { @@ -453,6 +468,7 @@ class V8_EXPORT Context : public Data { internal::ValueHelper::InternalRepresentationType GetDataFromSnapshotOnce( size_t index); Local SlowGetEmbedderData(int index); + Local SlowGetEmbedderDataV2(int index); void* SlowGetAlignedPointerFromEmbedderData(int index, EmbedderDataTypeTag tag); }; @@ -471,7 +487,7 @@ Local Context::GetEmbedderData(int index) { A value = I::ReadRawField(embedder_data, value_offset); #ifdef V8_COMPRESS_POINTERS // We read the full pointer value and then decompress it in order to avoid - // dealing with potential endiannes issues. + // dealing with potential endianness issues. value = I::DecompressTaggedField(embedder_data, static_cast(value)); #endif @@ -482,6 +498,29 @@ Local Context::GetEmbedderData(int index) { #endif } +V8_INLINE Local Context::GetEmbedderDataV2(int index) { +#ifndef V8_ENABLE_CHECKS + using A = internal::Address; + using I = internal::Internals; + A ctx = internal::ValueHelper::ValueAsAddress(this); + A embedder_data = + I::ReadTaggedPointerField(ctx, I::kNativeContextEmbedderDataOffset); + int value_offset = + I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index); + A value = I::ReadRawField(embedder_data, value_offset); +#ifdef V8_COMPRESS_POINTERS + // We read the full pointer value and then decompress it in order to avoid + // dealing with potential endianness issues. + value = I::DecompressTaggedField(embedder_data, static_cast(value)); +#endif + + auto* isolate = I::GetCurrentIsolate(); + return Local::New(isolate, value); +#else + return SlowGetEmbedderDataV2(index); +#endif +} + void* Context::GetAlignedPointerFromEmbedderData(Isolate* isolate, int index, EmbedderDataTypeTag tag) { #if !defined(V8_ENABLE_CHECKS) diff --git a/deps/v8/include/v8-data.h b/deps/v8/include/v8-data.h index bf40b746adf887..7be431b31921a7 100644 --- a/deps/v8/include/v8-data.h +++ b/deps/v8/include/v8-data.h @@ -77,7 +77,8 @@ class V8_EXPORT Data { class V8_EXPORT FixedArray : public Data { public: int Length() const; - Local Get(Local context, int i) const; + + Local Get(int i) const; V8_INLINE static FixedArray* Cast(Data* data) { #ifdef V8_ENABLE_CHECKS diff --git a/deps/v8/include/v8-debug.h b/deps/v8/include/v8-debug.h index 0aff8b9e675e8a..620467a72695e4 100644 --- a/deps/v8/include/v8-debug.h +++ b/deps/v8/include/v8-debug.h @@ -136,6 +136,11 @@ class V8_EXPORT StackTrace { kDetailed = kOverview | kIsEval | kIsConstructor | kScriptNameOrSourceURL }; + struct ScriptIdAndContext { + int id; + v8::Local context; + }; + /** * Returns the (unique) ID of this stack trace. */ @@ -174,15 +179,30 @@ class V8_EXPORT StackTrace { 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. + * 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); + + /** + * Writes up to the first `frame_data.size()` valid script ids and function + * contexts at the top of the JS stack into the given span. Returns a span + * sized to the number of frames worth of data written. It's similar to the + * CurrentStackTrace method but doesn't allocate a stack trace. Further, it + * skips frames that don't have valid script ids or function contexts. The + * final difference is that the script id written for evals or regexp is that + * of the script that ran eval() or regexp, not the current context. + * + * WARNING: This is an unfinished experimental feature. Semantics and + * implementation may change frequently. + */ + static v8::MemorySpan + CurrentScriptIdsAndContexts(Isolate* isolate, + v8::MemorySpan frame_data); }; } // namespace v8 diff --git a/deps/v8/include/v8-exception.h b/deps/v8/include/v8-exception.h index 5441a0ab6a403c..f240d9a609e92b 100644 --- a/deps/v8/include/v8-exception.h +++ b/deps/v8/include/v8-exception.h @@ -276,15 +276,18 @@ class V8_EXPORT TryCatch { void ResetInternal(); + // Helper methods for internal::Isolate. + bool capture_message() const; + void set_can_continue(bool value); + bool rethrow() const; + void set_rethrow(bool value); + internal::Isolate* i_isolate_; TryCatch* next_; void* exception_; void* message_obj_; internal::Address js_stack_comparable_address_; - bool is_verbose_ : 1; - bool can_continue_ : 1; - bool capture_message_ : 1; - bool rethrow_ : 1; + uint8_t flags_; friend class internal::Isolate; friend class internal::ThreadLocalTop; diff --git a/deps/v8/include/v8-extension.h b/deps/v8/include/v8-extension.h index 0705e2afbb8708..d0056cb286330d 100644 --- a/deps/v8/include/v8-extension.h +++ b/deps/v8/include/v8-extension.h @@ -33,7 +33,6 @@ class V8_EXPORT Extension { } const char* name() const { return name_; } - size_t source_length() const { return source_length_; } const String::ExternalOneByteStringResource* source() const { return source_; } @@ -48,7 +47,6 @@ class V8_EXPORT Extension { private: const char* name_; - size_t source_length_; // expected to initialize before source_ String::ExternalOneByteStringResource* source_; int dep_count_; const char** deps_; diff --git a/deps/v8/include/v8-external.h b/deps/v8/include/v8-external.h index c3feb1daad7e5f..da43c42e350ade 100644 --- a/deps/v8/include/v8-external.h +++ b/deps/v8/include/v8-external.h @@ -28,26 +28,44 @@ constexpr ExternalPointerTypeTag kExternalPointerTypeTagDefault = 0; */ class V8_EXPORT External : public Value { public: - V8_DEPRECATE_SOON("Use the version with the type tag.") + V8_DEPRECATED("Use the version with the type tag.") static Local New(Isolate* isolate, void* value) { return New(isolate, value, kExternalPointerTypeTagDefault); } + /** + * Creates a new External object. + * + * \param isolate The isolate for the external object. + * \param value The C++ pointer value. + * \param tag The type tag of the external pointer. If type tags are not used + * in the embedder, the default value `kExternalPointerTypeTagDefault` can be + * used. + * \return The new External object. + */ static Local New(Isolate* isolate, void* value, ExternalPointerTypeTag tag); - V8_INLINE static External* Cast(Value* value) { + V8_INLINE static External* Cast(Data* value) { #ifdef V8_ENABLE_CHECKS CheckCast(value); #endif return static_cast(value); } - V8_DEPRECATE_SOON("Use the version with the type tag.") + V8_DEPRECATED("Use the version with the type tag.") void* Value() const { return Value(kExternalPointerTypeTagDefault); } + /** + * Returns the value of the external pointer. + * + * \param tag The type tag of the external pointer. If type tags are not used + * in the embedder, the default value `kExternalPointerTypeTagDefault` can be + * used. + * \return The value of the external pointer. + */ void* Value(ExternalPointerTypeTag tag) const; private: - static void CheckCast(v8::Value* obj); + static void CheckCast(v8::Data* obj); }; } // namespace v8 diff --git a/deps/v8/include/v8-function-callback.h b/deps/v8/include/v8-function-callback.h index 0dad94ce22c270..135508ef5b5acc 100644 --- a/deps/v8/include/v8-function-callback.h +++ b/deps/v8/include/v8-function-callback.h @@ -57,6 +57,7 @@ class ReturnValue { V8_INLINE void Set(const Local handle); template V8_INLINE void SetNonEmpty(const Local handle); + // Fast primitive number setters. V8_INLINE void Set(bool value); V8_INLINE void Set(double i); @@ -66,11 +67,13 @@ 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. V8_INLINE void SetNull(); V8_INLINE void SetUndefined(); V8_INLINE void SetFalse(); V8_INLINE void SetEmptyString(); + // Convenience getter for the Isolate. V8_INLINE Isolate* GetIsolate() const; @@ -103,7 +106,7 @@ class ReturnValue { V8_INLINE explicit ReturnValue(internal::Address* slot); // See FunctionCallbackInfo. - static constexpr int kIsolateValueIndex = -2; + static constexpr int kIsolateValueIndex = -1; internal::Address* value_; }; @@ -142,41 +145,75 @@ class FunctionCallbackInfo { friend class internal::CustomArguments; friend class debug::ConsoleCallArguments; friend void internal::PrintFunctionCallbackInfo(void*); + using I = internal::Internals; - // TODO(ishell, http://crbug.com/326505377): in case of non-constructor - // call, don't pass kNewTarget and kUnused. Add IsConstructCall flag to - // kIsolate field. - static constexpr int kUnusedIndex = 0; - static constexpr int kIsolateIndex = 1; - static constexpr int kContextIndex = 2; - static constexpr int kReturnValueIndex = 3; - static constexpr int kTargetIndex = 4; - static constexpr int kNewTargetIndex = 5; - static constexpr int kArgsLength = 6; - - static constexpr int kArgsLengthWithReceiver = kArgsLength + 1; - - // Codegen constants: - static constexpr int kSize = 3 * internal::kApiSystemPointerSize; - static constexpr int kImplicitArgsOffset = 0; - static constexpr int kValuesOffset = - kImplicitArgsOffset + internal::kApiSystemPointerSize; - static constexpr int kLengthOffset = - kValuesOffset + internal::kApiSystemPointerSize; - - static constexpr int kThisValuesIndex = -1; + // Frame block, matches the layout of ApiCallbackExitFrame. + // See ApiCallbackExitFrameConstants. + enum { + // + // Optional frame arguments block (exists only for API_CONSTRUCT_EXIT + // frame). + + // Frame arguments block. + kNewTargetIndex = -1, + + // + // Mandatory part, exists for both API_CALLBACK_EXIT and API_CONSTRUCT_EXIT + // frames. + // + + // Frame arguments block. + kArgcIndex, + + // Regular ExitFrame structure. + kFrameSPIndex, + kFrameTypeIndex, + kFrameConstantPoolIndex, // Optional, see I::kFrameCPSlotCount. + kFrameFPIndex = kFrameConstantPoolIndex + I::kFrameCPSlotCount, + kFramePCIndex, + + // Api arguments block, starts at kFirstArgumentIndex. + kFirstApiArgumentIndex, + kIsolateIndex = kFirstApiArgumentIndex, + kReturnValueIndex, + kContextIndex, + kTargetIndex, + + // JS args block, starts at kFrameFirstImplicitArgsIndex. + kReceiverIndex, + kFirstJSArgumentIndex, + + // Mandatory part includes receiver. + kArgsLength = kReceiverIndex + 1, + // Optional part size (exists only for API_CONSTRUCT_EXIT frame). + kOptionalArgsLength = 1, + + // The length of just Api arguments part. + kApiArgsLength = kReceiverIndex - kFirstApiArgumentIndex, + }; + + static_assert(kArgcIndex == 0); static_assert(ReturnValue::kIsolateValueIndex == kIsolateIndex - kReturnValueIndex); - V8_INLINE FunctionCallbackInfo(internal::Address* implicit_args, - internal::Address* values, int length); + internal::Address* address_of_first_argument() const { + return &values_[kFirstJSArgumentIndex]; + } + + V8_INLINE FunctionCallbackInfo() = default; - // TODO(https://crbug.com/326505377): flatten the v8::FunctionCallbackInfo - // object to avoid indirect loads through values_ and implicit_args_ and - // reduce the number of instructions in the CallApiCallback builtin. - internal::Address* implicit_args_; - internal::Address* values_; - internal::Address length_; + // FunctionCallbackInfo object provides a view of the stack area where the + // data is stored and thus it's not supposed to be copyable/movable. + FunctionCallbackInfo(const FunctionCallbackInfo&) = delete; + FunctionCallbackInfo& operator=(const FunctionCallbackInfo&) = delete; + FunctionCallbackInfo(FunctionCallbackInfo&&) = delete; + FunctionCallbackInfo& operator=(FunctionCallbackInfo&&) = delete; + + // Declare as mutable to let GC modify the contents of the slots even though + // it's not possible to change values via this class. + // Define the array size as 1 to make it clear that we are going to access + // it out-of-bounds from both sides anyway. + mutable internal::Address values_[1]; }; /** @@ -198,72 +235,13 @@ class PropertyCallbackInfo { */ V8_INLINE Local Data() const; - /** - * \return The receiver. In many cases, this is the object on which the - * property access was intercepted. When using - * `Reflect.get`, `Function.prototype.call`, or similar functions, it is the - * object passed in as receiver or thisArg. - * - * \code - * void GetterCallback(Local name, - * const v8::PropertyCallbackInfo& info) { - * auto context = info.GetIsolate()->GetCurrentContext(); - * - * v8::Local a_this = - * info.This() - * ->GetRealNamedProperty(context, v8_str("a")) - * .ToLocalChecked(); - * v8::Local a_holder = - * info.Holder() - * ->GetRealNamedProperty(context, v8_str("a")) - * .ToLocalChecked(); - * - * CHECK(v8_str("r")->Equals(context, a_this).FromJust()); - * CHECK(v8_str("obj")->Equals(context, a_holder).FromJust()); - * - * info.GetReturnValue().Set(name); - * } - * - * v8::Local templ = - * v8::FunctionTemplate::New(isolate); - * templ->InstanceTemplate()->SetHandler( - * v8::NamedPropertyHandlerConfiguration(GetterCallback)); - * LocalContext env; - * env->Global() - * ->Set(env.local(), v8_str("obj"), templ->GetFunction(env.local()) - * .ToLocalChecked() - * ->NewInstance(env.local()) - * .ToLocalChecked()) - * .FromJust(); - * - * CompileRun("obj.a = 'obj'; var r = {a: 'r'}; Reflect.get(obj, 'x', r)"); - * \endcode - */ - V8_INLINE Local This() const; - - /** - * \return The object in the prototype chain of the receiver that has the - * interceptor. Suppose you have `x` and its prototype is `y`, and `y` - * has an interceptor. Then `info.This()` is `x` and `info.Holder()` is `y`. - * The Holder() could be a hidden object (the global object, rather - * than the global proxy). - * - * \note For security reasons, do not pass the object back into the runtime. - */ - 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 " - "v8::Object::GetPrototype() - it'll be deprecated soon too. \n" - "See http://crbug.com/333672197. ") - V8_INLINE Local Holder() const; - /** * \return The object in the prototype chain of the receiver that has the * interceptor. Suppose you have `x` and its prototype is `y`, and `y` * has an interceptor. Then `info.This()` is `x` and `info.Holder()` is `y`. * In case the property is installed on the global object the Holder() * would return the global proxy. + * TODO(http://crbug.com/333672197): rename back to Holder(). */ V8_INLINE Local HolderV2() const; @@ -278,11 +256,18 @@ class PropertyCallbackInfo { V8_INLINE ReturnValue GetReturnValue() const; /** + * For [[Set]], [[DefineOwnProperty]] and [[Delete]] operations (i.e. + * for setter/definer/deleter callbacks) indicates whether TypeError + * should be thrown upon operation failure. The callback should throw + * TypeError only if it's necessary to provide more details than a default + * error thrown by V8 contains in this case. + * * \return True if the intercepted function should throw if an error occurs. - * Usually, `true` corresponds to `'use strict'`. + * Usually, `true` corresponds to `'use strict'` execution mode. * - * \note Always `false` when intercepting `Reflect.set()` - * independent of the language mode. + * \note Always `false` when the operation was initiated by respecive + * `Reflect` call (i.e. `Reflect.set()`, `Reflect.defineProperty()` and + * `Reflect.deleteProperty()`). */ V8_INLINE bool ShouldThrowOnError() const; @@ -293,22 +278,75 @@ class PropertyCallbackInfo { friend class internal::PropertyCallbackArguments; friend class internal::CustomArguments; friend void internal::PrintPropertyCallbackInfo(void*); + using I = internal::Internals; - static constexpr int kPropertyKeyIndex = 0; - static constexpr int kShouldThrowOnErrorIndex = 1; - static constexpr int kHolderIndex = 2; - static constexpr int kIsolateIndex = 3; - static constexpr int kHolderV2Index = 4; - static constexpr int kReturnValueIndex = 5; - static constexpr int kDataIndex = 6; - static constexpr int kThisIndex = 7; - static constexpr int kArgsLength = 8; + // ShouldThrowOnError() can return true only for setter/definer/deleter + // callbacks which match [[Set]]/[[DefineOwnProperty]]/[[Delete]] + // operations. We detect these operations by return value type - they + // all return boolean value, even though setter/deleter callbacks are + // still using v8::PropertyCallbackInfo. + // TODO(https://crbug.com/348660658): cleanup this, once the callbacks are + // migrated to a new return type. + static constexpr bool HasShouldThrowOnError() { + return std::is_same_v || std::is_same_v; + } - static constexpr int kSize = kArgsLength * internal::kApiSystemPointerSize; + // Indicates whether this is a named accessor/interceptor callback call + // or an indexed one. + V8_INLINE bool IsNamed() const; + + // Frame block, matches the layout of ApiAccessorExitFrame. + // See ApiAccessorExitFrameConstants. + enum { + // Frame arguments block. + kPropertyKeyIndex, + + // Regular ExitFrame structure. + kFrameSPIndex, + kFrameTypeIndex, + kFrameConstantPoolIndex, // Optional, see I::kFrameCPSlotCount. + kFrameFPIndex = kFrameConstantPoolIndex + I::kFrameCPSlotCount, + kFramePCIndex, + + // Other arguments block, starts at kFirstArgumentIndex. + kFirstApiArgumentIndex, + kIsolateIndex = kFirstApiArgumentIndex, + kReturnValueIndex, + kCallbackInfoIndex, + kHolderIndex, + + // + // Optional part, used only by setter/definer/deleter callbacks. + // + kFirstOptionalArgument, + kShouldThrowOnErrorIndex = kFirstOptionalArgument, + + // Used as value handle storage when called via CallApiSetter builtin. + kValueIndex, + + kFullArgsLength, + kMandatoryArgsLength = kFirstOptionalArgument, + kOptionalArgsLength = kFullArgsLength - kFirstOptionalArgument, + + // Various lengths of just Api arguments part. + kMandatoryApiArgsLength = kMandatoryArgsLength - kFirstApiArgumentIndex, + kFullApiArgsLength = kFullArgsLength - kFirstApiArgumentIndex, + }; + + // PropertyCallbackInfo object provides a view of the stack area where the + // data is stored and thus it's not supposed to be copyable/movable. + PropertyCallbackInfo(const PropertyCallbackInfo&) = delete; + PropertyCallbackInfo& operator=(const PropertyCallbackInfo&) = delete; + PropertyCallbackInfo(PropertyCallbackInfo&&) = delete; + PropertyCallbackInfo& operator=(PropertyCallbackInfo&&) = delete; PropertyCallbackInfo() = default; - mutable internal::Address args_[kArgsLength]; + // Declare as mutable to let GC modify the contents of the slots even though + // it's not possible to change values via this class. + // Define the array size as 1 to make it clear that we are going to access + // it out-of-bounds anyway. + mutable internal::Address args_[1]; }; using FunctionCallback = void (*)(const FunctionCallbackInfo& info); @@ -377,25 +415,9 @@ void ReturnValue::SetNonEmpty(const BasicTracedReference& handle) { template template 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_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_v; -#endif // V8_IMMINENT_DEPRECATION_WARNINGS - static_assert(is_allowed_void || std::is_base_of_v, "type check"); + static_assert(std::is_base_of_v, "type check"); if (V8_UNLIKELY(handle.IsEmpty())) { SetDefaultValue(); - } else if constexpr (is_allowed_void) { - // Simulate old behaviour for "v8::AccessorSetterCallback" for which - // it was possible to set the return value even for ReturnValue. - Set(handle->BooleanValue(GetIsolate())); } else { SetInternal(handle.ptr()); } @@ -404,29 +426,11 @@ void ReturnValue::Set(const Local handle) { template template 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_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_v; -#endif // V8_IMMINENT_DEPRECATION_WARNINGS - static_assert(is_allowed_void || std::is_base_of_v, "type check"); + static_assert(std::is_base_of_v, "type check"); #ifdef V8_ENABLE_CHECKS internal::VerifyHandleIsNonEmpty(handle.IsEmpty()); #endif // V8_ENABLE_CHECKS - if constexpr (is_allowed_void) { - // Simulate old behaviour for "v8::AccessorSetterCallback" for which - // it was possible to set the return value even for ReturnValue. - Set(handle->BooleanValue(GetIsolate())); - } else { - SetInternal(handle.ptr()); - } + SetInternal(handle.ptr()); } template @@ -611,91 +615,76 @@ void ReturnValue::Set(S* whatever) { static_assert(sizeof(S) < 0, "incompilable to prevent inadvertent misuse"); } -template -FunctionCallbackInfo::FunctionCallbackInfo(internal::Address* implicit_args, - internal::Address* values, - int length) - : implicit_args_(implicit_args), values_(values), length_(length) {} - template Local FunctionCallbackInfo::operator[](int i) const { - // values_ points to the first argument (not the receiver). if (i < 0 || Length() <= i) return Undefined(GetIsolate()); - return Local::FromSlot(values_ + i); + return Local::FromSlot(&values_[kFirstJSArgumentIndex + i]); } template Local FunctionCallbackInfo::This() const { - // values_ points to the first argument (not the receiver). - return Local::FromSlot(values_ + kThisValuesIndex); + return Local::FromSlot(&values_[kReceiverIndex]); } template Local FunctionCallbackInfo::NewTarget() const { - return Local::FromSlot(&implicit_args_[kNewTargetIndex]); + if (IsConstructCall()) { + // Can't use &values_[kNewTargetIndex] because of "array index -1 is + // before the beginning of the array" error. + internal::Address* values = &values_[0]; + return Local::FromSlot(values + kNewTargetIndex); + } + return Undefined(GetIsolate()); } template Local FunctionCallbackInfo::Data() const { - auto target = Local::FromSlot(&implicit_args_[kTargetIndex]); + auto target = Local::FromSlot(&values_[kTargetIndex]); return api_internal::GetFunctionTemplateData(GetIsolate(), target); } template Isolate* FunctionCallbackInfo::GetIsolate() const { - return *reinterpret_cast(&implicit_args_[kIsolateIndex]); + return reinterpret_cast(values_[kIsolateIndex]); } template ReturnValue FunctionCallbackInfo::GetReturnValue() const { - return ReturnValue(&implicit_args_[kReturnValueIndex]); + return ReturnValue(&values_[kReturnValueIndex]); } template bool FunctionCallbackInfo::IsConstructCall() const { - return !NewTarget()->IsUndefined(); + return I::SmiValue(values_[kFrameTypeIndex]) == I::kFrameTypeApiConstructExit; } template int FunctionCallbackInfo::Length() const { - return static_cast(length_); -} - -template -Isolate* PropertyCallbackInfo::GetIsolate() const { - return *reinterpret_cast(&args_[kIsolateIndex]); + return static_cast(values_[kArgcIndex]); } template -Local PropertyCallbackInfo::Data() const { - return Local::FromSlot(&args_[kDataIndex]); +bool PropertyCallbackInfo::IsNamed() const { + return I::SmiValue(args_[kFrameTypeIndex]) == + I::kFrameTypeApiNamedAccessorExit; } template -Local PropertyCallbackInfo::This() const { - return Local::FromSlot(&args_[kThisIndex]); +Isolate* PropertyCallbackInfo::GetIsolate() const { + return *reinterpret_cast(&args_[kIsolateIndex]); } template -Local PropertyCallbackInfo::Holder() const { - return Local::FromSlot(&args_[kHolderIndex]); +Local PropertyCallbackInfo::Data() const { + internal::Address callback_info = args_[kCallbackInfoIndex]; + internal::Address data = + I::ReadTaggedPointerField(callback_info, I::kCallbackInfoDataOffset); + return Local::New(GetIsolate(), data); } -namespace api_internal { -// Returns JSGlobalProxy if holder is JSGlobalObject or unmodified holder -// otherwise. -V8_EXPORT internal::Address ConvertToJSGlobalProxyIfNecessary( - internal::Address holder); -} // namespace api_internal - template Local PropertyCallbackInfo::HolderV2() const { - using I = internal::Internals; - if (!I::HasHeapObjectTag(args_[kHolderV2Index])) { - args_[kHolderV2Index] = - api_internal::ConvertToJSGlobalProxyIfNecessary(args_[kHolderIndex]); - } - return Local::FromSlot(&args_[kHolderV2Index]); + return Local::FromSlot(&args_[kHolderIndex]); } template @@ -705,7 +694,7 @@ ReturnValue PropertyCallbackInfo::GetReturnValue() const { template bool PropertyCallbackInfo::ShouldThrowOnError() const { - using I = internal::Internals; + if constexpr (!HasShouldThrowOnError()) return false; if (args_[kShouldThrowOnErrorIndex] != I::IntegralToSmi(I::kInferShouldThrowMode)) { return args_[kShouldThrowOnErrorIndex] != I::IntegralToSmi(I::kDontThrow); diff --git a/deps/v8/include/v8-function.h b/deps/v8/include/v8-function.h index 9ee77596cd3796..18532519f8b89c 100644 --- a/deps/v8/include/v8-function.h +++ b/deps/v8/include/v8-function.h @@ -31,8 +31,8 @@ class V8_EXPORT Function : public Object { * for a given FunctionCallback. */ static MaybeLocal New( - Local context, FunctionCallback callback, - Local data = Local(), int length = 0, + Local context, FunctionCallback callback, Local data = {}, + int length = 0, ConstructorBehavior behavior = ConstructorBehavior::kAllow, SideEffectType side_effect_type = SideEffectType::kHasSideEffect); diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h index 8d28f22018609a..c45a2013363144 100644 --- a/deps/v8/include/v8-internal.h +++ b/deps/v8/include/v8-internal.h @@ -308,6 +308,13 @@ constexpr size_t kExternalPointerTableReservationSize = 256 * MB; // smaller than the maximum table size even after the C++ compiler multiplies // them by 8 to be used as indexes into a table of 64 bit pointers. constexpr uint32_t kExternalPointerIndexShift = 7; +#elif defined(V8_TARGET_OS_IOS) +// iOS restricts large memory allocations, with 128 MB being the maximum size we +// can configure. If we exceed this, SegmentedTable::Initialize will throw a V8 +// out-of-memory error when running the JetStream benchmark +// (https://browserbench.org/JetStream/). +constexpr size_t kExternalPointerTableReservationSize = 128 * MB; +constexpr uint32_t kExternalPointerIndexShift = 8; #else constexpr size_t kExternalPointerTableReservationSize = 512 * MB; constexpr uint32_t kExternalPointerIndexShift = 6; @@ -425,12 +432,54 @@ 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 // the type check to use even fewer instructions (essentially replace a AND + // SUB with a single AND). // +// Tag ranges can also to a limited degree be used for union types. For +// example, with the type graph as above, it would be possible to specify a +// Union(D, E, F) as the tag range [D, F]. However, this only works as long as +// the (otherwise independent) types that form the union have adjacent tags. +// +// +// There are broadly speaking two options for performing the type check when +// given the expected type range and the actual tag of the entry. +// +// The first option is to simply have the equivalent of +// +// CHECK(expected_tag_range.Contains(actual_tag)) +// +// This is nice and simple, and friendly to both the branch-predictor and the +// user/developer as it produces clear error messages. However, this approach +// may result in quite a bit of code being generated, for example for calling +// RuntimeAbort from generated code or similar. +// +// The second option is to generate code such as +// +// if (!expected_tag_range.Contains(actual_tag)) return nullptr; +// +// With this, we are also guaranteed to crash safely when the returned pointer +// is used, but this may result in significantly less code being generated, for +// example because the compiler can implement this with a single conditional +// select in combination with the zero register (e.g. on Arm). +// +// The choice of which approach to use therefore depends on the use case, the +// performance and code size constraints, and the importance of debuggability. template struct TagRange { static_assert(std::is_enum_v && @@ -438,7 +487,12 @@ struct TagRange { "Tag parameter must be an enum with base type uint16_t"); // Construct the inclusive tag range [first, last]. - constexpr TagRange(Tag first, Tag last) : first(first), last(last) {} + constexpr TagRange(Tag first, Tag last) : first(first), last(last) { +#ifdef V8_ENABLE_CHECKS + // This would typically be a DCHECK, but that's not available here. + if (first > last) __builtin_unreachable(); // Invalid tag range. +#endif + } // Construct a tag range consisting of a single tag. // @@ -466,8 +520,8 @@ struct TagRange { // Need to perform the math with uint32_t. Otherwise, the uint16_ts would // be promoted to (signed) int, allowing the compiler to (wrongly) assume // that an underflow cannot happen as that would be undefined behavior. - return static_cast(tag) - first <= - static_cast(last) - first; + return static_cast(tag) - static_cast(first) <= + static_cast(last) - static_cast(first); } constexpr bool Contains(TagRange tag_range) const { @@ -483,9 +537,9 @@ struct TagRange { return (static_cast(first) << 16) | last; } - // Internally we represent tag ranges as half-open ranges [first, last). - const Tag first; - const Tag last; + // Internally we represent tag ranges as closed ranges [first, last]. + Tag first; + Tag last; }; // @@ -616,6 +670,7 @@ enum ExternalPointerTag : uint16_t { kWasmFuncDataTag, kWasmManagedDataTag, kWasmNativeModuleTag, + kBackingStoreTag, kIcuBreakIteratorTag, kIcuUnicodeStringTag, kIcuListFormatterTag, @@ -901,6 +956,9 @@ class Internals { static const int kExternalTwoByteRepresentationTag = 0x02; static const int kExternalOneByteRepresentationTag = 0x0a; + // AccessorInfo::data and InterceptorInfo::data field. + static const int kCallbackInfoDataOffset = 1 * kApiTaggedSize; + static const uint32_t kNumIsolateDataSlots = 4; static const int kStackGuardSize = 8 * kApiSystemPointerSize; static const int kNumberOfBooleanFlags = 6; @@ -915,15 +973,11 @@ class Internals { 2 * kApiSystemPointerSize + 2 * kApiInt32Size; // ExternalPointerTable and TrustedPointerTable layout guarantees. - static const int kExternalPointerTableBasePointerOffset = 0; + static const int kExternalEntityTableBasePointerOffset = 0; static const int kSegmentedTableSegmentPoolSize = 4; - static const int kExternalPointerTableSize = + static const int kExternalEntityTableSize = 4 * kApiSystemPointerSize + kSegmentedTableSegmentPoolSize * sizeof(uint32_t); - static const int kTrustedPointerTableSize = - 4 * kApiSystemPointerSize + - kSegmentedTableSegmentPoolSize * sizeof(uint32_t); - static const int kTrustedPointerTableBasePointerOffset = 0; // IsolateData layout guarantees. static const int kIsolateCageBaseOffset = 0; @@ -967,39 +1021,57 @@ class Internals { static const int kIsolateExternalPointerTableOffset = kIsolateEmbedderDataOffset + kNumIsolateDataSlots * kApiSystemPointerSize; static const int kIsolateSharedExternalPointerTableAddressOffset = - kIsolateExternalPointerTableOffset + kExternalPointerTableSize; + kIsolateExternalPointerTableOffset + kExternalEntityTableSize; static const int kIsolateCppHeapPointerTableOffset = kIsolateSharedExternalPointerTableAddressOffset + kApiSystemPointerSize; #ifdef V8_ENABLE_SANDBOX static const int kIsolateTrustedCageBaseOffset = - kIsolateCppHeapPointerTableOffset + kExternalPointerTableSize; + kIsolateCppHeapPointerTableOffset + kExternalEntityTableSize; static const int kIsolateTrustedPointerTableOffset = kIsolateTrustedCageBaseOffset + kApiSystemPointerSize; static const int kIsolateSharedTrustedPointerTableAddressOffset = - kIsolateTrustedPointerTableOffset + kTrustedPointerTableSize; + kIsolateTrustedPointerTableOffset + kExternalEntityTableSize; static const int kIsolateTrustedPointerPublishingScopeOffset = kIsolateSharedTrustedPointerTableAddressOffset + kApiSystemPointerSize; static const int kIsolateCodePointerTableBaseAddressOffset = kIsolateTrustedPointerPublishingScopeOffset + kApiSystemPointerSize; - static const int kIsolateApiCallbackThunkArgumentOffset = + static const int kIsolateJSDispatchTableOffset = kIsolateCodePointerTableBaseAddressOffset + kApiSystemPointerSize; #else - static const int kIsolateApiCallbackThunkArgumentOffset = - kIsolateCppHeapPointerTableOffset + kExternalPointerTableSize; + static const int kIsolateJSDispatchTableOffset = + kIsolateCppHeapPointerTableOffset + kExternalEntityTableSize; #endif // V8_ENABLE_SANDBOX #else - static const int kIsolateApiCallbackThunkArgumentOffset = + static const int kIsolateJSDispatchTableOffset = kIsolateEmbedderDataOffset + kNumIsolateDataSlots * kApiSystemPointerSize; #endif // V8_COMPRESS_POINTERS - static const int kJSDispatchTableOffset = - kIsolateApiCallbackThunkArgumentOffset + kApiSystemPointerSize; + static const int kIsolateApiCallbackThunkArgumentOffset = + kIsolateJSDispatchTableOffset + kExternalEntityTableSize; static const int kIsolateRegexpExecVectorArgumentOffset = - kJSDispatchTableOffset + kApiSystemPointerSize; + kIsolateApiCallbackThunkArgumentOffset + kApiSystemPointerSize; static const int kContinuationPreservedEmbedderDataOffset = kIsolateRegexpExecVectorArgumentOffset + kApiSystemPointerSize; static const int kIsolateRootsOffset = kContinuationPreservedEmbedderDataOffset + kApiSystemPointerSize; +#if V8_TARGET_ARCH_PPC64 + static constexpr int kFrameCPSlotCount = 1; +#else + static constexpr int kFrameCPSlotCount = 0; +#endif + +#if V8_TARGET_ARCH_ARM64 + // The padding required to keep SP 16-byte aligned. + static constexpr int kSPAlignmentSlotCount = 1; +#else + static constexpr int kSPAlignmentSlotCount = 0; +#endif + + static const int kFrameTypeApiCallExit = 18; + static const int kFrameTypeApiConstructExit = 19; + static const int kFrameTypeApiNamedAccessorExit = 20; + static const int kFrameTypeApiIndexedAccessorExit = 21; + // Assert scopes static const int kDisallowGarbageCollectionAlign = alignof(uint32_t); static const int kDisallowGarbageCollectionSize = sizeof(uint32_t); @@ -1020,13 +1092,9 @@ class Internals { using Tagged_t = uint32_t; struct StaticReadOnlyRoot { #ifdef V8_ENABLE_WEBASSEMBLY - static constexpr Tagged_t kBuildDependentTheHoleValue = 0x20001; + static constexpr Tagged_t kBuildDependentTheHoleValue = 0x2fffd; #else -#ifdef V8_INTL_SUPPORT - static constexpr Tagged_t kBuildDependentTheHoleValue = 0x6581; -#else - static constexpr Tagged_t kBuildDependentTheHoleValue = 0x58d1; -#endif + static constexpr Tagged_t kBuildDependentTheHoleValue = 0xfffd; #endif #define DEF_ROOT(name, value) static constexpr Tagged_t k##name = value; @@ -1267,7 +1335,7 @@ class Internals { V8_INLINE static Address* GetExternalPointerTableBase(v8::Isolate* isolate) { Address addr = reinterpret_cast
(isolate) + kIsolateExternalPointerTableOffset + - kExternalPointerTableBasePointerOffset; + kExternalEntityTableBasePointerOffset; return *reinterpret_cast(addr); } @@ -1276,7 +1344,7 @@ class Internals { Address addr = reinterpret_cast
(isolate) + kIsolateSharedExternalPointerTableAddressOffset; addr = *reinterpret_cast(addr); - addr += kExternalPointerTableBasePointerOffset; + addr += kExternalEntityTableBasePointerOffset; return *reinterpret_cast(addr); } #endif diff --git a/deps/v8/include/v8-isolate.h b/deps/v8/include/v8-isolate.h index 1efaa547bc0ed3..f929f13a4de8ff 100644 --- a/deps/v8/include/v8-isolate.h +++ b/deps/v8/include/v8-isolate.h @@ -357,18 +357,6 @@ class V8_EXPORT Isolate { */ bool allow_atomics_wait = true; - /** - * The following parameters describe the offsets for addressing type info - * for wrapped API objects and are used by the fast C API - * (for details see v8-fast-api-calls.h). - * - * V8_DEPRECATED was applied in v14.3. - */ - V8_DEPRECATED("This field is unused.") - int embedder_wrapper_type_index = -1; - V8_DEPRECATED("This field is unused.") - int embedder_wrapper_object_index = -1; - /** * Callbacks to invoke in case of fatal or OOM errors. */ @@ -1492,6 +1480,13 @@ class V8_EXPORT Isolate { */ void SetAddCrashKeyCallback(AddCrashKeyCallback); + /** + * Enables the host application to provide a mechanism for allocating a new + * crash key and setting/updating values for them. + */ + void SetCrashKeyStringCallbacks(AllocateCrashKeyStringCallback, + SetCrashKeyStringCallback); + /** * Optional notification that the system is running low on memory. * V8 uses these notifications to attempt to free memory. @@ -1553,6 +1548,19 @@ class V8_EXPORT Isolate { */ void SetIsLoading(bool is_loading); + /** + * Optional notification to tell V8 whether the embedder is currently + * handling user input. If the embedder uses this notification, it should + * call SetIsInputHandling(true) when input handling starts, and + * SetIsInputHandling(false) when it ends. + * Calling SetIsInputHandling(true) while handling input, or calling + * SetIsInputHandling(false) while not handling input, both have no effect. + * V8 uses these notifications to guide heuristics. + * This is an unfinished experimental feature. Semantics and implementation + * may change frequently. + */ + void SetIsInputHandling(bool is_input_handling); + /** * Optional notification to tell V8 whether the embedder is currently frozen. * V8 uses these notifications to guide heuristics. diff --git a/deps/v8/include/v8-metrics.h b/deps/v8/include/v8-metrics.h index 1e8a546b8418bb..b67196c3e1be1c 100644 --- a/deps/v8/include/v8-metrics.h +++ b/deps/v8/include/v8-metrics.h @@ -53,6 +53,7 @@ struct GarbageCollectionFullCycle { std::optional priority = std::nullopt; bool reduce_memory = false; bool is_loading = false; + bool is_input_handling = false; GarbageCollectionPhases total; GarbageCollectionPhases total_cpp; GarbageCollectionPhases main_thread; diff --git a/deps/v8/include/v8-object.h b/deps/v8/include/v8-object.h index 65a144474cb095..d42c22eb33360a 100644 --- a/deps/v8/include/v8-object.h +++ b/deps/v8/include/v8-object.h @@ -163,30 +163,44 @@ enum PropertyAttribute { }; /** - * Accessor[Getter|Setter] are used as callback functions when setting|getting - * a particular data property. See Object::SetNativeDataProperty and + * This callback function is called when getting a particular data property + * (i.e. when performing [[Get]] operation). + * + * The callback returns the result by calling `info.GetReturnValue().Set(..)`. + * + * \param property The name of the property being requested. + * \param info Information about the intercepted request, such as + * isolate, object holding the property, return value. See + * `PropertyCallbackInfo`. + * + * See Object::SetNativeDataProperty and * ObjectTemplate::SetNativeDataProperty methods. */ using AccessorNameGetterCallback = void (*)(Local property, const PropertyCallbackInfo& info); -using AccessorNameSetterCallback = - void (*)(Local property, Local value, - const PropertyCallbackInfo& info); - /** - * Access control specifications. + * This callback function is called when setting a particular data property + * (i.e. when performing [[Set]] operation). * - * Some accessors should be accessible across contexts. These - * accessors have an explicit access control parameter which specifies - * the kind of cross-context access that should be allowed. + * In case of operation failure the callback should + * - call `info.GetReturnValue().Set(false)`, + * - (optionally) upon operation failure and info.ShouldThrowOnError() + * is true (indicating execution in `'use strict'` mode) the callback can + * throw TypeError if the error message needs to include more details than + * a TypeError thrown by V8 in this case. * + * \param property The name of the property being requested. + * \param info Information about the intercepted request, such as + * isolate, object holding the property, return value, or whether running in + * `'use strict'` mode. See `PropertyCallbackInfo`. + * + * See Object::SetNativeDataProperty and + * ObjectTemplate::SetNativeDataProperty methods. */ -enum V8_DEPRECATED( - "This enum is no longer used and will be removed in V8 14.3.") - AccessControl { - DEFAULT V8_ENUM_DEPRECATED("not used") = 0, - }; +using AccessorNameSetterCallback = + void (*)(Local property, Local value, + const PropertyCallbackInfo& info); /** * Property filter bits. They can be or'ed to build a composite filter. @@ -517,23 +531,6 @@ class V8_EXPORT Object : public Value { int index, EmbedderDataTypeTag tag); - V8_DEPRECATE_SOON( - "Use GetAlignedPointerFromInternalField with EmbedderDataTypeTag " - "parameter instead.") - V8_INLINE void* GetAlignedPointerFromInternalField(int index) { - return GetAlignedPointerFromInternalField(index, - kEmbedderDataTypeTagDefault); - } - - V8_DEPRECATE_SOON( - "Use GetAlignedPointerFromInternalField with EmbedderDataTypeTag " - "parameter instead.") - V8_INLINE void* GetAlignedPointerFromInternalField(v8::Isolate* isolate, - int index) { - return GetAlignedPointerFromInternalField(isolate, index, - kEmbedderDataTypeTagDefault); - } - /** Same as above, but works for PersistentBase. */ V8_INLINE static void* GetAlignedPointerFromInternalField( const PersistentBase& object, int index, @@ -542,15 +539,6 @@ class V8_EXPORT Object : public Value { index, tag); } - V8_DEPRECATE_SOON( - "Use GetAlignedPointerFromInternalField with EmbedderDataTypeTag " - "parameter instead.") - V8_INLINE static void* GetAlignedPointerFromInternalField( - const PersistentBase& object, int index) { - return object.template value()->GetAlignedPointerFromInternalField( - index); - } - /** Same as above, but works for TracedReference. */ V8_INLINE static void* GetAlignedPointerFromInternalField( const BasicTracedReference& object, int index, @@ -559,15 +547,6 @@ class V8_EXPORT Object : public Value { index, tag); } - V8_DEPRECATE_SOON( - "Use GetAlignedPointerFromInternalField with EmbedderDataTypeTag " - "parameter instead.") - V8_INLINE static void* GetAlignedPointerFromInternalField( - const BasicTracedReference& object, int index) { - return object.template value()->GetAlignedPointerFromInternalField( - index); - } - /** * Sets a 2-byte-aligned native pointer in an internal field. To retrieve such * a field, GetAlignedPointerFromInternalField must be used, everything else @@ -576,19 +555,6 @@ class V8_EXPORT Object : public Value { void SetAlignedPointerInInternalField(int index, void* value, EmbedderDataTypeTag tag); - V8_DEPRECATE_SOON( - "Use SetAlignedPointerInInternalField with EmbedderDataTypeTag parameter " - "instead.") - void SetAlignedPointerInInternalField(int index, void* value) { - SetAlignedPointerInInternalField(index, value, kEmbedderDataTypeTagDefault); - } - - 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 { @@ -815,29 +781,17 @@ class V8_EXPORT Object : public Value { * * Prefer using version with Isolate parameter if you have an Isolate, * otherwise use the other one. + * + * The type tag has to match the type tag used for storing the value in the + * embedder field. + * If type tags are not used in the embedder, the default value + * `kEmbedderDataTypeTagDefault` can be used. */ void* GetAlignedPointerFromEmbedderDataInCreationContext( v8::Isolate* isolate, int index, EmbedderDataTypeTag tag); void* GetAlignedPointerFromEmbedderDataInCreationContext( int index, EmbedderDataTypeTag tag); - V8_DEPRECATE_SOON( - "Use GetAlignedPointerFromEmbedderDataInCreationContext with " - "EmbedderDataTypeTag parameter instead.") - void* GetAlignedPointerFromEmbedderDataInCreationContext(v8::Isolate* isolate, - int index) { - return GetAlignedPointerFromEmbedderDataInCreationContext( - isolate, index, kEmbedderDataTypeTagDefault); - } - - V8_DEPRECATE_SOON( - "Use GetAlignedPointerFromEmbedderDataInCreationContext with " - "EmbedderDataTypeTag parameter instead.") - void* GetAlignedPointerFromEmbedderDataInCreationContext(int index) { - return GetAlignedPointerFromEmbedderDataInCreationContext( - index, kEmbedderDataTypeTagDefault); - } - /** * Checks whether a callback is set by the * ObjectTemplate::SetCallAsFunctionHandler method. diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 8d87fe973bc945..3484e988d9fec1 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -316,6 +316,29 @@ class JobTask { virtual size_t GetMaxConcurrency(size_t worker_count) const = 0; }; +// Allows a thread to temporarily boost another thread's priority to match its +// own priority. The priority is reset when the object is destroyed, which must +// happens on the boosted thread. +class ScopedBoostablePriority { + public: + ScopedBoostablePriority() = default; + virtual ~ScopedBoostablePriority() = default; + ScopedBoostablePriority(const ScopedBoostablePriority&) = delete; + ScopedBoostablePriority& operator=(const ScopedBoostablePriority& other) = + delete; + + // Boosts the priority of the thread where this ScopedBoostablePriority was + // created. Can be called from any thread, but requires proper external + // synchronization with the constructor, destructor and any other call to + // BoostPriority/Reset(). If called multiple times, only the first call takes + // effect. + virtual bool BoostPriority() = 0; + + // Resets the priority of the thread where this ScopedBoostablePriority was + // created to its original priority. + virtual void Reset() = 0; +}; + /** * A "blocking call" refers to any call that causes the calling thread to wait * off-CPU. It includes but is not limited to calls that wait on synchronous @@ -369,7 +392,7 @@ class ConvertableToTraceFormat { * * Can be implemented by an embedder to record trace events from V8. * - * Will become obsolete in Perfetto SDK build (v8_use_perfetto = true). + * Will become obsolete in Perfetto build (v8_use_perfetto = true). */ class TracingController { public: @@ -446,6 +469,77 @@ class TracingController { virtual void RemoveTraceStateObserver(TraceStateObserver*) {} }; +// Opaque type representing a handle to a shared memory region. +class SharedMemoryHandle { + public: + // For the handle itself, we use the underlying type (e.g. unsigned int) + // instead of e.g. mach_port_t to avoid pulling in large OS header files into + // this header file. Instead, the users of these routines are expected to + // include the respective OS headers in addition to this one. + +#if V8_OS_DARWIN + // A mach_port_t referencing a memory entry object. + using PlatformHandle = unsigned int; +#elif V8_OS_FUCHSIA + // A zx_handle_t to a VMO. + using PlatformHandle = uint32_t; +#elif V8_OS_WIN + // A Windows HANDLE to a file mapping object. + using PlatformHandle = void*; +#else + // A file descriptor. + using PlatformHandle = int; +#endif + + static constexpr SharedMemoryHandle FromPlatformHandle( + PlatformHandle handle) { + return SharedMemoryHandle(handle); + } + + PlatformHandle GetPlatformHandle() const { return handle_; } + + private: + SharedMemoryHandle() = delete; + explicit constexpr SharedMemoryHandle(PlatformHandle handle) + : handle_(handle) {} + + PlatformHandle handle_; +}; + +#define DEFINE_SHARED_MEMORY_HANDLE_WRAPPERS(Wrap, Unwrap) \ + V8_DEPRECATE_SOON("Use SharedMemoryHandle::FromPlatformHandle instead") \ + inline SharedMemoryHandle Wrap(SharedMemoryHandle::PlatformHandle handle) { \ + return SharedMemoryHandle::FromPlatformHandle(handle); \ + } \ + V8_DEPRECATE_SOON("Use SharedMemoryHandle::GetPlatformHandle instead") \ + inline SharedMemoryHandle::PlatformHandle Unwrap( \ + SharedMemoryHandle handle) { \ + return handle.GetPlatformHandle(); \ + } + +#if V8_OS_DARWIN +DEFINE_SHARED_MEMORY_HANDLE_WRAPPERS(SharedMemoryHandleFromMachMemoryEntry, + MachMemoryEntryFromSharedMemoryHandle) +#elif V8_OS_FUCHSIA +DEFINE_SHARED_MEMORY_HANDLE_WRAPPERS(SharedMemoryHandleFromVMO, + VMOFromSharedMemoryHandle) +#elif V8_OS_WIN +DEFINE_SHARED_MEMORY_HANDLE_WRAPPERS(SharedMemoryHandleFromFileMapping, + FileMappingFromSharedMemoryHandle) +#else +DEFINE_SHARED_MEMORY_HANDLE_WRAPPERS(SharedMemoryHandleFromFileDescriptor, + FileDescriptorFromSharedMemoryHandle) +#endif + +#undef DEFINE_SHARED_MEMORY_HANDLE_WRAPPERS + +// TODO(https://crbug.com/463925491): Remove this type alias once Chromium's +// "gin" V8 binding migrates off it. +using PlatformSharedMemoryHandle = std::optional; +V8_DEPRECATE_SOON("Use std::nullopt instead") +static constexpr PlatformSharedMemoryHandle kInvalidSharedMemoryHandle = + std::nullopt; + /** * A V8 memory page allocator. * @@ -703,67 +797,44 @@ class ThreadIsolatedAllocator { virtual int Pkey() const { return -1; } }; -// Opaque type representing a handle to a shared memory region. -using PlatformSharedMemoryHandle = intptr_t; -static constexpr PlatformSharedMemoryHandle kInvalidSharedMemoryHandle = -1; - -// Conversion routines from the platform-dependent shared memory identifiers -// into the opaque PlatformSharedMemoryHandle type. These use the underlying -// types (e.g. unsigned int) instead of the typedef'd ones (e.g. mach_port_t) -// to avoid pulling in large OS header files into this header file. Instead, -// the users of these routines are expected to include the respecitve OS -// headers in addition to this one. -#if V8_OS_DARWIN -// Convert between a shared memory handle and a mach_port_t referencing a memory -// entry object. -inline PlatformSharedMemoryHandle SharedMemoryHandleFromMachMemoryEntry( - unsigned int port) { - return static_cast(port); -} -inline unsigned int MachMemoryEntryFromSharedMemoryHandle( - PlatformSharedMemoryHandle handle) { - return static_cast(handle); -} -#elif V8_OS_FUCHSIA -// Convert between a shared memory handle and a zx_handle_t to a VMO. -inline PlatformSharedMemoryHandle SharedMemoryHandleFromVMO(uint32_t handle) { - return static_cast(handle); -} -inline uint32_t VMOFromSharedMemoryHandle(PlatformSharedMemoryHandle handle) { - return static_cast(handle); -} -#elif V8_OS_WIN -// Convert between a shared memory handle and a Windows HANDLE to a file mapping -// object. -inline PlatformSharedMemoryHandle SharedMemoryHandleFromFileMapping( - void* handle) { - return reinterpret_cast(handle); -} -inline void* FileMappingFromSharedMemoryHandle( - PlatformSharedMemoryHandle handle) { - return reinterpret_cast(handle); +/** + * Possible permissions for memory pages. + */ +enum class PagePermissions { + kNoAccess = 0, + kRead = 1, + kWrite = 2, + kExecute = 4, + kReadWrite = kRead | kWrite, + kReadExecute = kRead | kExecute, + kWriteExecute = kWrite | kExecute, + kReadWriteExecute = kRead | kWrite | kExecute, +}; + +inline constexpr PagePermissions operator|(PagePermissions lhs, + PagePermissions rhs) { + return static_cast(static_cast(lhs) | + static_cast(rhs)); } -#else -// Convert between a shared memory handle and a file descriptor. -inline PlatformSharedMemoryHandle SharedMemoryHandleFromFileDescriptor(int fd) { - return static_cast(fd); + +inline constexpr PagePermissions operator&(PagePermissions lhs, + PagePermissions rhs) { + return static_cast(static_cast(lhs) & + static_cast(rhs)); } -inline int FileDescriptorFromSharedMemoryHandle( - PlatformSharedMemoryHandle handle) { - return static_cast(handle); + +inline PagePermissions& operator|=(PagePermissions& lhs, PagePermissions rhs) { + lhs = lhs | rhs; + return lhs; } -#endif /** - * Possible permissions for memory pages. + * Helper routine to determine whether one set of page permissions (the lhs) is + * a subset of another one (the rhs). */ -enum class PagePermissions { - kNoAccess, - kRead, - kReadWrite, - kReadWriteExecute, - kReadExecute, -}; +inline constexpr bool IsSubset(PagePermissions lhs, PagePermissions rhs) { + return (lhs & rhs) == lhs; +} /** * Class to manage a virtual memory address space. @@ -970,7 +1041,16 @@ class VirtualAddressSpace { */ virtual V8_WARN_UNUSED_RESULT Address AllocateSharedPages(Address hint, size_t size, PagePermissions permissions, - PlatformSharedMemoryHandle handle, uint64_t offset) = 0; + SharedMemoryHandle handle, uint64_t offset) = 0; + + // TODO(https://crbug.com/463925491): Remove me once API users change from + // PlatformSharedMemoryHandle to SharedMemoryHandle. + V8_DEPRECATE_SOON("Use AllocateSharedPages() with SharedMemoryHandle") + V8_WARN_UNUSED_RESULT Address AllocateSharedPages( + Address hint, size_t size, PagePermissions permissions, + std::optional handle, uint64_t offset) { + return AllocateSharedPages(hint, size, permissions, *handle, offset); + } /** * Frees previously allocated shared pages. @@ -1048,7 +1128,7 @@ class VirtualAddressSpace { Address hint, size_t size, size_t alignment, PagePermissions max_page_permissions, std::optional key = std::nullopt, - PlatformSharedMemoryHandle handle = kInvalidSharedMemoryHandle) = 0; + std::optional handle = std::nullopt) = 0; // // TODO(v8) maybe refactor the methods below before stabilizing the API. For @@ -1101,6 +1181,22 @@ class VirtualAddressSpace { virtual V8_WARN_UNUSED_RESULT bool DecommitPages(Address address, size_t size) = 0; + /** + * Sets a name for the address space. + * + * This is mostly useful for debugging tools. If supported by the system, the + * name will for example show up in /proc/$pid/maps next to the virtual + * address reservation: + * + * 2ae700000000-2ae700010000 r--p 00000000 00:00 0 [anon:foo-bar] + * + * \param name The name of the address space. The name must only contain + * alphanumeric characters or dashes. + * + * \returns true on success, false otherwise. + */ + virtual bool SetName(const std::string& name) { return false; } + private: const size_t page_size_; const size_t allocation_granularity_; @@ -1343,6 +1439,14 @@ class Platform { return CreateJobImpl(priority, std::move(job_task), location); } + /** + * Instantiates a ScopedBoostablePriority to boost a thread's priority. + */ + virtual std::unique_ptr + CreateBoostablePriorityScope() { + return nullptr; + } + /** * Instantiates a ScopedBlockingCall to annotate a scope that may/will block. */ diff --git a/deps/v8/include/v8-primitive.h b/deps/v8/include/v8-primitive.h index 87215cf6ece31d..457a8838461faa 100644 --- a/deps/v8/include/v8-primitive.h +++ b/deps/v8/include/v8-primitive.h @@ -199,7 +199,7 @@ class V8_EXPORT String : public Name { * the end of the buffer. If null termination is requested, the output buffer * will always be null terminated even if not all characters fit. In that * case, the capacity must be at least one. The required size of the output - * buffer can be determined using Utf8Length(). + * buffer can be determined using Utf8LengthV2(). * * \param buffer The buffer into which the string will be written. * \param capacity The number of bytes available in the output buffer. diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 61f427ea47c691..7e2d0933e92e68 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -48,6 +48,21 @@ template class V8_EXPORT std::vector; namespace v8 { +/** + * Identifies which component initiated CPU profiling for proper attribution. + */ +enum class CpuProfileSource : uint8_t { + /** Default value when no explicit source is specified. */ + kUnspecified = 0, + /** Profiling initiated via the DevTools Inspector protocol. */ + kInspector = 1, + /** Profiling initiated by the embedder (e.g., Blink) via self-profiling API. + */ + kSelfProfiling = 2, + /** Profiling initiated internally by V8 (e.g., tracing CPU profiler). */ + kInternal = 3, +}; + struct V8_EXPORT CpuProfileDeoptInfo { /** A pointer to a static string owned by v8. */ const char* deopt_reason; @@ -378,11 +393,13 @@ class V8_EXPORT CpuProfilingOptions { * the profiler's sampling interval. * \param filter_context If specified, profiles will only contain frames * using this context. Other frames will be elided. + * \param profile_source Identifies the source of this CPU profile. */ CpuProfilingOptions( CpuProfilingMode mode = kLeafNodeLineNumbers, unsigned max_samples = kNoSampleLimit, int sampling_interval_us = 0, - MaybeLocal filter_context = MaybeLocal()); + MaybeLocal filter_context = MaybeLocal(), + CpuProfileSource profile_source = CpuProfileSource::kUnspecified); CpuProfilingOptions(CpuProfilingOptions&&) = default; CpuProfilingOptions& operator=(CpuProfilingOptions&&) = default; @@ -390,6 +407,7 @@ class V8_EXPORT CpuProfilingOptions { CpuProfilingMode mode() const { return mode_; } unsigned max_samples() const { return max_samples_; } int sampling_interval_us() const { return sampling_interval_us_; } + CpuProfileSource profile_source() const { return profile_source_; } private: friend class internal::CpuProfile; @@ -401,6 +419,7 @@ class V8_EXPORT CpuProfilingOptions { unsigned max_samples_; int sampling_interval_us_; Global filter_context_; + CpuProfileSource profile_source_; }; /** @@ -1113,7 +1132,7 @@ class V8_EXPORT HeapProfiler { /** * The resolver used by the snapshot generator to get names for V8 objects. */ - V8_DEPRECATE_SOON("Use context_name_resolver callback instead.") + V8_DEPRECATED("Use context_name_resolver callback instead.") ObjectNameResolver* global_object_name_resolver = nullptr; /** * The resolver used by the snapshot generator to get names for v8::Context @@ -1151,7 +1170,7 @@ class V8_EXPORT HeapProfiler { * * \returns the snapshot. */ - V8_DEPRECATE_SOON("Use overload with ContextNameResolver* resolver instead.") + V8_DEPRECATED("Use overload with ContextNameResolver* resolver instead.") const HeapSnapshot* TakeHeapSnapshot( ActivityControl* control, ObjectNameResolver* global_object_name_resolver, bool hide_internals = true, bool capture_numeric_value = false); diff --git a/deps/v8/include/v8-promise.h b/deps/v8/include/v8-promise.h index 8c127c8122a2ec..36412c774d1b51 100644 --- a/deps/v8/include/v8-promise.h +++ b/deps/v8/include/v8-promise.h @@ -19,7 +19,7 @@ class Context; #endif /** - * An instance of the built-in Promise constructor (ES6 draft). + * An instance of the built-in Promise constructor. */ class V8_EXPORT Promise : public Object { public: @@ -65,10 +65,21 @@ class V8_EXPORT Promise : public Object { }; /** - * Register a resolution/rejection handler with a promise. - * The handler is given the respective resolution/rejection value as - * an argument. If the promise is already resolved/rejected, the handler is - * invoked at the end of turn. + * Register a resolution/rejection handler with a promise. The handler is + * given the respective resolution/rejection value as an argument. If the + * promise is already resolved/rejected, the handler is invoked at the end of + * turn. + * + * This performs the PerformPromiseThen abstract operation with a fresh native + * promise as result, rather than the similar Promise.prototype.then + * operation. In particular, it does not do species lookup on the Promise + * constructor, and is therefore guaranteed to return a Promise. + * + * https://tc39.es/ecma262/#sec-performpromisethen + * + * This is consistent with Promise reactions in WebIDL: + * + * https://webidl.spec.whatwg.org/#dfn-perform-steps-once-promise-is-settled */ V8_WARN_UNUSED_RESULT MaybeLocal Catch(Local context, Local handler); diff --git a/deps/v8/include/v8-sandbox.h b/deps/v8/include/v8-sandbox.h index 06d01761798582..1fc79ed5409e91 100644 --- a/deps/v8/include/v8-sandbox.h +++ b/deps/v8/include/v8-sandbox.h @@ -62,41 +62,7 @@ enum class CppHeapPointerTag : uint16_t { kLastTag = 0x7fff, }; -// Convenience struct to represent tag ranges. This is used for type checks -// against supertypes, which cover a range of types (their subtypes). -// Both the lower- and the upper bound are inclusive. In other words, this -// struct represents the range [lower_bound, upper_bound]. -// TODO(saelo): reuse internal::TagRange here. -struct CppHeapPointerTagRange { - constexpr CppHeapPointerTagRange(CppHeapPointerTag lower, - CppHeapPointerTag upper) - : lower_bound(lower), upper_bound(upper) {} - CppHeapPointerTag lower_bound; - CppHeapPointerTag upper_bound; - - // Check whether the tag of the given CppHeapPointerTable entry is within - // this range. This method encodes implementation details of the - // CppHeapPointerTable, which is necessary as it is used by - // ReadCppHeapPointerField below. - // Returns true if the check is successful and the tag of the given entry is - // within this range, false otherwise. - bool CheckTagOf(uint64_t entry) { - // Note: the cast to uint32_t is important here. Otherwise, the uint16_t's - // would be promoted to int in the range check below, which would result in - // undefined behavior (signed integer undeflow) if the actual value is less - // than the lower bound. Then, the compiler would take advantage of the - // undefined behavior and turn the range check into a simple - // `actual_tag <= last_tag` comparison, which is incorrect. - uint32_t actual_tag = static_cast(entry); - // The actual_tag is shifted to the left by one and contains the marking - // bit in the LSB. To ignore that during the type check, simply add one to - // the (shifted) range. - constexpr int kTagShift = internal::kCppHeapPointerTagShift; - uint32_t first_tag = static_cast(lower_bound) << kTagShift; - uint32_t last_tag = (static_cast(upper_bound) << kTagShift) + 1; - return actual_tag >= first_tag && actual_tag <= last_tag; - } -}; +using CppHeapPointerTagRange = internal::TagRange; constexpr CppHeapPointerTagRange kAnyCppHeapPointer( CppHeapPointerTag::kFirstTag, CppHeapPointerTag::kLastTag); @@ -115,16 +81,6 @@ 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 { @@ -133,7 +89,7 @@ namespace internal { V8_INLINE static Address* GetCppHeapPointerTableBase(v8::Isolate* isolate) { Address addr = reinterpret_cast
(isolate) + Internals::kIsolateCppHeapPointerTableOffset + - Internals::kExternalPointerTableBasePointerOffset; + Internals::kExternalEntityTableBasePointerOffset; return *reinterpret_cast(addr); } #endif // V8_COMPRESS_POINTERS @@ -142,9 +98,12 @@ template V8_INLINE static T* ReadCppHeapPointerField(v8::Isolate* isolate, Address heap_object_ptr, int offset, CppHeapPointerTagRange tag_range) { + // This is a specialized version of the the CppHeapPointerTable accessors + // which (1) allows the code to be inlined into the callers for performance + // and (2) is optimized for code size as there are a huge number of callers + // from auto-generated bindings code. + #ifdef V8_COMPRESS_POINTERS - // See src/sandbox/cppheap-pointer-table-inl.h. Logic duplicated here so - // it can be inlined and doesn't require an additional call. const CppHeapPointerHandle handle = Internals::ReadRawField(heap_object_ptr, offset); const uint32_t index = handle >> kExternalPointerIndexShift; @@ -153,9 +112,21 @@ V8_INLINE static T* ReadCppHeapPointerField(v8::Isolate* isolate, reinterpret_cast*>(&table[index]); Address entry = std::atomic_load_explicit(ptr, std::memory_order_relaxed); - Address pointer = entry; - if (V8_LIKELY(tag_range.CheckTagOf(entry))) { - pointer = entry >> kCppHeapPointerPayloadShift; + // Note: the cast to uint32_t is important here. Otherwise, the uint16_t's + // would be promoted to int in the range check below, which would result in + // undefined behavior (signed integer underflow) if the actual value is less + // than the lower bound. Then, the compiler would take advantage of the + // undefined behavior and turn the range check into a simple + // `actual_tag <= last_tag` comparison, which is incorrect. + uint32_t actual_tag = static_cast(entry); + // The actual_tag is shifted to the left by one and contains the marking + // bit in the LSB. To ignore that during the type check, simply add one to + // the (shifted) range. + constexpr int kTagShift = internal::kCppHeapPointerTagShift; + uint32_t first_tag = static_cast(tag_range.first) << kTagShift; + uint32_t last_tag = (static_cast(tag_range.last) << kTagShift) + 1; + if (V8_LIKELY(actual_tag >= first_tag && actual_tag <= last_tag)) { + entry = entry >> kCppHeapPointerPayloadShift; } else { // If the type check failed, we simply return nullptr here. That way: // 1. The null handle always results in nullptr being returned here, which @@ -174,15 +145,25 @@ V8_INLINE static T* ReadCppHeapPointerField(v8::Isolate* isolate, // between returning nullptr or the original entry, since it will // simply compile to a `csel x0, x8, xzr, lo` instead of a // `csel x0, x10, x8, lo` instruction. - pointer = 0; + // 3. The machine code sequence ends up being pretty short, which is + // important here as this code will be inlined into a lot of functions. + entry = 0; } - return reinterpret_cast(pointer); + return reinterpret_cast(entry); #else // !V8_COMPRESS_POINTERS return reinterpret_cast( Internals::ReadRawField
(heap_object_ptr, offset)); #endif // !V8_COMPRESS_POINTERS } +// TODO(saelo): temporary workaround needed to introduce range-based type +// checks for the external pointer table. See comment above +// ExternalPointerCanBeEmpty(ExternalPointerTagRange) function for details. +V8_INLINE static constexpr bool ExternalPointerCanBeEmpty( + CppHeapPointerTagRange tag_range) { + return true; +} + } // namespace internal } // namespace v8 diff --git a/deps/v8/include/v8-script.h b/deps/v8/include/v8-script.h index debe89b50847ea..c3a2274d43334e 100644 --- a/deps/v8/include/v8-script.h +++ b/deps/v8/include/v8-script.h @@ -64,7 +64,13 @@ class V8_EXPORT UnboundScript : public Data { */ Local