From b4cd81bafe0bb2b5f39c4dbf5471a5193637a524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Tue, 17 Sep 2024 12:09:47 +0200 Subject: [PATCH 01/13] deps: update V8 to 12.9.202.18 --- deps/v8/.editorconfig | 6 +- deps/v8/.gitignore | 4 +- deps/v8/AUTHORS | 5 +- deps/v8/BUILD.bazel | 80 +- deps/v8/BUILD.gn | 116 +- deps/v8/DEPS | 209 +- deps/v8/bazel/defs.bzl | 2 +- deps/v8/build_overrides/build.gni | 9 - deps/v8/gni/v8.gni | 25 +- deps/v8/include/cppgc/garbage-collected.h | 8 + .../cppgc/internal/compiler-specific.h | 10 +- deps/v8/include/v8-callbacks.h | 2 +- deps/v8/include/v8-fast-api-calls.h | 27 - deps/v8/include/v8-function-callback.h | 2 +- deps/v8/include/v8-function.h | 4 + deps/v8/include/v8-handle-base.h | 4 +- deps/v8/include/v8-internal.h | 23 +- deps/v8/include/v8-isolate.h | 6 + deps/v8/include/v8-local-handle.h | 22 +- deps/v8/include/v8-object.h | 10 +- deps/v8/include/v8-platform.h | 20 - deps/v8/include/v8-primitive.h | 24 + deps/v8/include/v8-profiler.h | 6 + deps/v8/include/v8-script.h | 2 +- deps/v8/include/v8-template.h | 13 + deps/v8/include/v8-util.h | 2 +- deps/v8/include/v8-value.h | 5 +- deps/v8/include/v8-version.h | 6 +- deps/v8/include/v8config.h | 16 +- deps/v8/infra/mb/mb_config.pyl | 135 +- deps/v8/infra/testing/builders.pyl | 16 + deps/v8/src/api/api-arguments-inl.h | 41 +- deps/v8/src/api/api-inl.h | 85 +- deps/v8/src/api/api-natives.cc | 5 +- deps/v8/src/api/api.cc | 313 +- deps/v8/src/api/api.h | 70 +- deps/v8/src/asmjs/asm-js.cc | 5 +- deps/v8/src/asmjs/asm-parser.cc | 4 +- deps/v8/src/asmjs/asm-scanner.cc | 46 +- .../ast/ast-function-literal-id-reindexer.cc | 7 + .../ast/ast-function-literal-id-reindexer.h | 1 + deps/v8/src/ast/ast-traversal-visitor.h | 12 + deps/v8/src/ast/ast.cc | 13 + deps/v8/src/ast/ast.h | 200 +- deps/v8/src/ast/prettyprinter.cc | 17 + deps/v8/src/ast/scopes.cc | 157 +- deps/v8/src/ast/scopes.h | 38 +- deps/v8/src/base/intrusive-set.h | 1 - deps/v8/src/base/macros.h | 37 +- deps/v8/src/base/optional.h | 29 - deps/v8/src/base/platform/mutex.h | 5 +- deps/v8/src/base/platform/platform-fuchsia.cc | 7 +- deps/v8/src/base/platform/platform-linux.cc | 8 +- deps/v8/src/base/platform/platform-linux.h | 4 +- deps/v8/src/base/platform/platform-posix.cc | 6 +- deps/v8/src/base/platform/platform-win32.cc | 25 +- deps/v8/src/base/platform/platform.h | 9 +- .../template-meta-programming/functional.h | 5 + deps/v8/src/base/template-utils.h | 54 + deps/v8/src/base/virtual-address-space.cc | 6 +- .../src/baseline/baseline-batch-compiler.cc | 4 +- .../v8/src/baseline/baseline-batch-compiler.h | 4 +- deps/v8/src/baseline/baseline-compiler.cc | 3 +- .../src/baseline/bytecode-offset-iterator.h | 4 +- deps/v8/src/builtins/DEPS | 9 +- deps/v8/src/builtins/accessors.cc | 16 +- deps/v8/src/builtins/arm/builtins-arm.cc | 97 +- deps/v8/src/builtins/arm64/builtins-arm64.cc | 81 +- deps/v8/src/builtins/array-from-async.tq | 43 +- deps/v8/src/builtins/base.tq | 10 +- .../builtins-abstract-module-source.cc | 40 + deps/v8/src/builtins/builtins-api.cc | 4 +- deps/v8/src/builtins/builtins-array-gen.cc | 18 +- deps/v8/src/builtins/builtins-array-gen.h | 8 +- deps/v8/src/builtins/builtins-array.cc | 2 +- .../builtins-async-disposable-stack.cc | 20 - deps/v8/src/builtins/builtins-async-gen.cc | 16 +- .../builtins/builtins-async-iterator-gen.cc | 35 +- .../builtins-atomics-synchronization.cc | 2 +- deps/v8/src/builtins/builtins-call-gen.cc | 28 +- deps/v8/src/builtins/builtins-call-gen.h | 12 +- .../src/builtins/builtins-collections-gen.cc | 9 +- deps/v8/src/builtins/builtins-console.cc | 11 +- .../src/builtins/builtins-constructor-gen.cc | 50 +- deps/v8/src/builtins/builtins-definitions.h | 182 +- deps/v8/src/builtins/builtins-descriptors.h | 14 +- deps/v8/src/builtins/builtins-function.cc | 11 +- .../v8/src/builtins/builtins-generator-gen.cc | 6 +- deps/v8/src/builtins/builtins-handler-gen.cc | 5 +- deps/v8/src/builtins/builtins-internal-gen.cc | 44 +- deps/v8/src/builtins/builtins-internal.cc | 6 + deps/v8/src/builtins/builtins-intl-gen.cc | 7 +- deps/v8/src/builtins/builtins-intl.cc | 2 +- deps/v8/src/builtins/builtins-iterator-gen.cc | 8 +- deps/v8/src/builtins/builtins-iterator-gen.h | 10 +- deps/v8/src/builtins/builtins-lazy-gen.cc | 2 +- .../builtins/builtins-microtask-queue-gen.cc | 2 +- deps/v8/src/builtins/builtins-number-gen.cc | 122 +- deps/v8/src/builtins/builtins-object-gen.cc | 90 +- deps/v8/src/builtins/builtins-proxy-gen.cc | 8 +- deps/v8/src/builtins/builtins-regexp-gen.cc | 140 +- deps/v8/src/builtins/builtins-regexp-gen.h | 5 +- .../src/builtins/builtins-shadow-realm-gen.cc | 9 +- deps/v8/src/builtins/builtins-shadow-realm.cc | 26 +- .../builtins/builtins-sharedarraybuffer.cc | 4 +- deps/v8/src/builtins/builtins-string-gen.cc | 52 +- deps/v8/src/builtins/builtins-string-gen.h | 2 +- deps/v8/src/builtins/builtins-string-tsa.cc | 210 +- deps/v8/src/builtins/builtins-string.cc | 4 +- .../src/builtins/builtins-typed-array-gen.cc | 5 +- deps/v8/src/builtins/builtins-utils-gen.h | 4 +- deps/v8/src/builtins/builtins-wasm-gen.cc | 14 +- deps/v8/src/builtins/builtins.cc | 23 +- deps/v8/src/builtins/builtins.h | 37 +- deps/v8/src/builtins/collections.tq | 8 +- .../src/builtins/growable-fixed-array-gen.cc | 10 +- deps/v8/src/builtins/ia32/builtins-ia32.cc | 75 +- deps/v8/src/builtins/js-to-js.tq | 18 +- deps/v8/src/builtins/js-to-wasm.tq | 66 +- .../src/builtins/loong64/builtins-loong64.cc | 1159 +- .../v8/src/builtins/mips64/builtins-mips64.cc | 71 +- deps/v8/src/builtins/ppc/builtins-ppc.cc | 92 +- .../builtins/promise-abstract-operations.tq | 36 +- deps/v8/src/builtins/promise-all.tq | 42 +- deps/v8/src/builtins/promise-any.tq | 12 +- deps/v8/src/builtins/promise-finally.tq | 36 +- deps/v8/src/builtins/regexp-match.tq | 23 +- deps/v8/src/builtins/regexp.tq | 7 + deps/v8/src/builtins/riscv/builtins-riscv.cc | 107 +- deps/v8/src/builtins/s390/builtins-s390.cc | 100 +- .../src/builtins/setup-builtins-internal.cc | 110 +- deps/v8/src/builtins/suppressed-error.tq | 14 +- deps/v8/src/builtins/typed-array-from.tq | 6 +- deps/v8/src/builtins/wasm-to-js.tq | 6 +- deps/v8/src/builtins/wasm.tq | 57 +- deps/v8/src/builtins/x64/builtins-x64.cc | 95 +- deps/v8/src/codegen/DEPS | 5 +- deps/v8/src/codegen/arm/assembler-arm.cc | 14 +- .../v8/src/codegen/arm/macro-assembler-arm.cc | 33 +- deps/v8/src/codegen/arm/macro-assembler-arm.h | 18 +- deps/v8/src/codegen/arm64/assembler-arm64.cc | 3 + deps/v8/src/codegen/arm64/assembler-arm64.h | 4 +- .../codegen/arm64/macro-assembler-arm64.cc | 44 +- .../src/codegen/arm64/macro-assembler-arm64.h | 19 +- deps/v8/src/codegen/background-merge-task.h | 4 +- deps/v8/src/codegen/code-stub-assembler.cc | 1010 +- deps/v8/src/codegen/code-stub-assembler.h | 202 +- deps/v8/src/codegen/compilation-cache.cc | 29 +- deps/v8/src/codegen/compilation-cache.h | 14 +- deps/v8/src/codegen/compiler.cc | 654 +- deps/v8/src/codegen/compiler.h | 17 +- deps/v8/src/codegen/cpu-features.h | 1 + .../src/codegen/external-reference-table.cc | 75 +- .../v8/src/codegen/external-reference-table.h | 32 +- deps/v8/src/codegen/external-reference.cc | 44 +- deps/v8/src/codegen/external-reference.h | 32 + deps/v8/src/codegen/heap-object-list.h | 56 +- .../src/codegen/interface-descriptors-inl.h | 2 +- deps/v8/src/codegen/interface-descriptors.h | 13 +- .../loong64/macro-assembler-loong64.cc | 28 +- .../codegen/loong64/macro-assembler-loong64.h | 11 +- .../codegen/mips64/macro-assembler-mips64.h | 6 +- .../v8/src/codegen/ppc/macro-assembler-ppc.cc | 39 +- deps/v8/src/codegen/ppc/macro-assembler-ppc.h | 15 +- deps/v8/src/codegen/riscv/assembler-riscv.cc | 79 +- deps/v8/src/codegen/riscv/assembler-riscv.h | 2 + .../src/codegen/riscv/constant-riscv-zicond.h | 17 + .../codegen/riscv/extension-riscv-zicond.cc | 24 + .../codegen/riscv/extension-riscv-zicond.h | 24 + .../codegen/riscv/macro-assembler-riscv.cc | 182 +- .../src/codegen/riscv/macro-assembler-riscv.h | 13 +- .../src/codegen/s390/macro-assembler-s390.cc | 33 +- .../src/codegen/s390/macro-assembler-s390.h | 17 +- .../macro-assembler-shared-ia32-x64.h | 44 +- deps/v8/src/codegen/signature.h | 14 +- deps/v8/src/codegen/tnode.h | 10 + .../turboshaft-builtins-assembler-inl.h | 412 +- deps/v8/src/codegen/x64/assembler-x64.cc | 9 +- .../v8/src/codegen/x64/macro-assembler-x64.cc | 148 +- deps/v8/src/codegen/x64/macro-assembler-x64.h | 18 +- deps/v8/src/common/assert-scope.h | 9 +- deps/v8/src/common/code-memory-access.cc | 13 +- deps/v8/src/common/code-memory-access.h | 15 +- deps/v8/src/common/globals.h | 49 +- deps/v8/src/common/message-template.h | 7 +- deps/v8/src/common/segmented-table-inl.h | 158 + deps/v8/src/common/segmented-table.h | 201 + .../lazy-compile-dispatcher.cc | 7 +- deps/v8/src/compiler/access-builder.cc | 67 +- deps/v8/src/compiler/access-builder.h | 11 + deps/v8/src/compiler/access-info.cc | 13 +- deps/v8/src/compiler/access-info.h | 6 +- deps/v8/src/compiler/allocation-builder.h | 7 +- .../backend/arm/code-generator-arm.cc | 2 +- .../backend/arm/instruction-selector-arm.cc | 92 +- .../backend/arm64/code-generator-arm64.cc | 127 +- .../backend/arm64/instruction-codes-arm64.h | 23 + .../arm64/instruction-scheduler-arm64.cc | 23 + .../arm64/instruction-selector-arm64.cc | 224 +- .../v8/src/compiler/backend/code-generator.cc | 15 +- deps/v8/src/compiler/backend/code-generator.h | 8 +- .../backend/ia32/code-generator-ia32.cc | 2 +- .../backend/ia32/instruction-selector-ia32.cc | 113 +- .../compiler/backend/instruction-scheduler.cc | 5 +- .../compiler/backend/instruction-scheduler.h | 5 +- .../backend/instruction-selector-adapter.h | 55 +- .../backend/instruction-selector-impl.h | 5 +- .../compiler/backend/instruction-selector.cc | 220 +- .../compiler/backend/instruction-selector.h | 45 +- deps/v8/src/compiler/backend/instruction.cc | 3 +- deps/v8/src/compiler/backend/instruction.h | 5 +- .../backend/loong64/code-generator-loong64.cc | 6 +- .../loong64/instruction-selector-loong64.cc | 54 +- .../backend/mips64/code-generator-mips64.cc | 2 +- .../mips64/instruction-selector-mips64.cc | 51 +- .../backend/ppc/code-generator-ppc.cc | 2 +- .../backend/ppc/instruction-selector-ppc.cc | 407 +- .../backend/register-allocator-verifier.cc | 17 +- .../backend/register-allocator-verifier.h | 4 +- .../compiler/backend/register-allocator.cc | 5 +- .../backend/riscv/code-generator-riscv.cc | 1 + .../riscv/instruction-selector-riscv.h | 68 +- .../backend/s390/code-generator-s390.cc | 2 +- .../backend/s390/instruction-selector-s390.cc | 350 +- .../backend/x64/code-generator-x64.cc | 344 +- .../backend/x64/instruction-codes-x64.h | 46 +- .../backend/x64/instruction-scheduler-x64.cc | 12 + .../backend/x64/instruction-selector-x64.cc | 419 +- .../src/compiler/basic-block-instrumentor.cc | 2 +- deps/v8/src/compiler/bytecode-analysis.cc | 312 +- deps/v8/src/compiler/bytecode-analysis.h | 35 +- .../v8/src/compiler/bytecode-graph-builder.cc | 21 +- deps/v8/src/compiler/code-assembler.cc | 5 +- deps/v8/src/compiler/code-assembler.h | 10 +- .../src/compiler/common-operator-reducer.cc | 3 +- deps/v8/src/compiler/common-operator.cc | 16 +- deps/v8/src/compiler/common-operator.h | 11 +- .../src/compiler/compilation-dependencies.cc | 7 +- deps/v8/src/compiler/fast-api-calls.cc | 48 +- deps/v8/src/compiler/frame-states.cc | 4 +- deps/v8/src/compiler/graph-assembler.cc | 26 +- deps/v8/src/compiler/graph-assembler.h | 8 +- deps/v8/src/compiler/graph-visualizer.cc | 7 +- deps/v8/src/compiler/graph-visualizer.h | 6 +- deps/v8/src/compiler/heap-refs.cc | 96 +- deps/v8/src/compiler/heap-refs.h | 35 +- deps/v8/src/compiler/js-call-reducer.cc | 100 +- deps/v8/src/compiler/js-call-reducer.h | 4 +- deps/v8/src/compiler/js-create-lowering.cc | 42 +- deps/v8/src/compiler/js-create-lowering.h | 14 +- deps/v8/src/compiler/js-graph.cc | 8 + deps/v8/src/compiler/js-graph.h | 5 + deps/v8/src/compiler/js-heap-broker.cc | 13 +- deps/v8/src/compiler/js-heap-broker.h | 7 +- deps/v8/src/compiler/js-inlining.cc | 8 +- .../js-native-context-specialization.cc | 101 +- .../js-native-context-specialization.h | 11 +- deps/v8/src/compiler/js-typed-lowering.cc | 4 +- deps/v8/src/compiler/late-escape-analysis.cc | 6 +- deps/v8/src/compiler/linkage.cc | 98 +- deps/v8/src/compiler/linkage.h | 17 +- deps/v8/src/compiler/load-elimination.cc | 4 +- .../src/compiler/machine-operator-reducer.cc | 23 +- .../src/compiler/machine-operator-reducer.h | 6 +- deps/v8/src/compiler/machine-operator.cc | 37 +- deps/v8/src/compiler/machine-operator.h | 42 +- deps/v8/src/compiler/node-properties.cc | 6 +- deps/v8/src/compiler/opcodes.h | 42 +- .../src/compiler/pair-load-store-reducer.cc | 4 +- deps/v8/src/compiler/pipeline-data-inl.h | 4 +- deps/v8/src/compiler/pipeline.cc | 25 +- .../src/compiler/property-access-builder.cc | 7 +- .../v8/src/compiler/property-access-builder.h | 5 +- deps/v8/src/compiler/raw-machine-assembler.cc | 8 +- deps/v8/src/compiler/raw-machine-assembler.h | 5 +- deps/v8/src/compiler/scheduler.cc | 9 +- deps/v8/src/compiler/scheduler.h | 4 +- .../compiler/simplified-lowering-verifier.cc | 1 + .../compiler/simplified-lowering-verifier.h | 8 +- deps/v8/src/compiler/simplified-lowering.cc | 10 +- .../compiler/simplified-operator-reducer.cc | 4 +- .../src/compiler/string-builder-optimizer.cc | 46 +- .../src/compiler/string-builder-optimizer.h | 6 +- .../src/compiler/turboshaft/access-builder.h | 5 + deps/v8/src/compiler/turboshaft/assembler.h | 595 +- .../turboshaft/assert-types-reducer.h | 16 +- .../turboshaft/branch-elimination-reducer.h | 9 +- .../compiler/turboshaft/build-graph-phase.cc | 4 +- .../compiler/turboshaft/build-graph-phase.h | 8 +- .../turboshaft/builtin-call-descriptors.h | 22 + .../src/compiler/turboshaft/copying-phase.h | 3 +- .../dead-code-elimination-reducer.h | 3 +- .../debug-feature-lowering-reducer.h | 3 + .../turboshaft/define-assembler-macros.inc | 27 +- .../fast-api-call-lowering-reducer.h | 17 +- .../src/compiler/turboshaft/graph-builder.cc | 56 +- .../src/compiler/turboshaft/graph-builder.h | 6 +- .../compiler/turboshaft/graph-visualizer.h | 3 +- deps/v8/src/compiler/turboshaft/index.h | 18 +- .../turboshaft/instruction-selection-phase.cc | 8 +- .../turboshaft/instruction-selection-phase.h | 8 +- .../turboshaft/int64-lowering-reducer.h | 2 +- .../late-load-elimination-reducer.h | 4 +- .../compiler/turboshaft/layered-hash-map.h | 8 +- .../turboshaft/loop-unrolling-reducer.cc | 12 +- .../turboshaft/loop-unrolling-reducer.h | 4 +- .../turboshaft/machine-lowering-reducer-inl.h | 325 +- .../turboshaft/machine-optimization-reducer.h | 292 +- .../maglev-early-lowering-reducer-inl.h | 117 +- .../turboshaft/maglev-graph-building-phase.cc | 971 +- .../turboshaft/maglev-graph-building-phase.h | 4 +- .../turboshaft/memory-optimization-reducer.cc | 14 +- .../turboshaft/memory-optimization-reducer.h | 14 +- .../compiler/turboshaft/operation-matcher.h | 54 +- deps/v8/src/compiler/turboshaft/operations.cc | 66 +- deps/v8/src/compiler/turboshaft/operations.h | 310 +- deps/v8/src/compiler/turboshaft/opmasks.h | 26 +- deps/v8/src/compiler/turboshaft/phase.h | 42 +- deps/v8/src/compiler/turboshaft/pipelines.cc | 5 + deps/v8/src/compiler/turboshaft/pipelines.h | 8 +- .../compiler/turboshaft/recreate-schedule.cc | 33 +- .../src/compiler/turboshaft/representations.h | 1 + .../turboshaft/runtime-call-descriptors.h | 41 +- .../turboshaft/snapshot-table-opindex.h | 6 +- .../turboshaft/stack-check-lowering-reducer.h | 52 +- .../store-store-elimination-reducer-inl.h | 6 +- deps/v8/src/compiler/turboshaft/string-view.h | 100 + .../turboshaft/type-inference-analysis.h | 9 +- .../turboshaft/type-inference-reducer.h | 11 +- .../v8/src/compiler/turboshaft/type-parser.cc | 6 +- deps/v8/src/compiler/turboshaft/type-parser.h | 40 +- deps/v8/src/compiler/turboshaft/typer.h | 14 +- deps/v8/src/compiler/turboshaft/types.cc | 5 +- deps/v8/src/compiler/turboshaft/types.h | 13 +- .../turboshaft/undef-assembler-macros.inc | 4 + .../compiler/turboshaft/variable-reducer.h | 9 +- .../wasm-load-elimination-reducer.h | 4 +- .../turboshaft/wasm-lowering-reducer.h | 4 +- .../compiler/turboshaft/wasm-revec-reducer.cc | 11 +- .../compiler/turboshaft/wasm-revec-reducer.h | 1 + .../src/compiler/turboshaft/zone-with-name.h | 17 + deps/v8/src/compiler/typed-optimization.cc | 7 +- deps/v8/src/compiler/typer.cc | 4 + deps/v8/src/compiler/types.cc | 3 + deps/v8/src/compiler/use-info.h | 8 +- deps/v8/src/compiler/verifier.cc | 1 + deps/v8/src/compiler/wasm-call-descriptors.cc | 35 +- deps/v8/src/compiler/wasm-call-descriptors.h | 15 +- .../src/compiler/wasm-compiler-definitions.cc | 4 +- deps/v8/src/compiler/wasm-compiler.cc | 441 +- deps/v8/src/compiler/wasm-compiler.h | 10 +- .../src/compiler/wasm-gc-operator-reducer.cc | 6 +- deps/v8/src/compiler/wasm-graph-assembler.cc | 14 +- deps/v8/src/d8/d8-test.cc | 12 +- deps/v8/src/d8/d8.cc | 1 + deps/v8/src/d8/d8.h | 5 +- deps/v8/src/debug/debug-coverage.cc | 2 +- deps/v8/src/debug/debug-evaluate.cc | 17 +- deps/v8/src/debug/debug-frames.cc | 15 + deps/v8/src/debug/debug-frames.h | 3 + deps/v8/src/debug/debug-interface.cc | 42 +- deps/v8/src/debug/debug-scopes.cc | 6 +- .../src/debug/debug-stack-trace-iterator.cc | 22 +- deps/v8/src/debug/debug-wasm-objects.cc | 120 +- deps/v8/src/debug/debug-wasm-objects.h | 8 + deps/v8/src/debug/debug.cc | 80 +- deps/v8/src/debug/debug.h | 13 +- deps/v8/src/debug/liveedit-diff.cc | 30 +- deps/v8/src/debug/liveedit.cc | 23 +- .../wasm/gdb-server/wasm-module-debug.cc | 4 + .../v8/src/deoptimizer/arm/deoptimizer-arm.cc | 4 +- .../deoptimizer/arm64/deoptimizer-arm64.cc | 4 +- deps/v8/src/deoptimizer/deoptimizer.cc | 126 +- deps/v8/src/deoptimizer/deoptimizer.h | 21 +- deps/v8/src/deoptimizer/frame-description.h | 2 +- .../deoptimizer/frame-translation-builder.cc | 4 +- .../deoptimizer/frame-translation-builder.h | 4 +- .../src/deoptimizer/ia32/deoptimizer-ia32.cc | 4 +- .../loong64/deoptimizer-loong64.cc | 4 +- .../deoptimizer/mips64/deoptimizer-mips64.cc | 4 +- .../v8/src/deoptimizer/ppc/deoptimizer-ppc.cc | 4 +- .../deoptimizer/riscv/deoptimizer-riscv.cc | 4 +- .../src/deoptimizer/s390/deoptimizer-s390.cc | 4 +- deps/v8/src/deoptimizer/translated-state.cc | 39 +- deps/v8/src/deoptimizer/translated-state.h | 7 +- .../v8/src/deoptimizer/x64/deoptimizer-x64.cc | 4 +- deps/v8/src/diagnostics/code-tracer.h | 7 +- deps/v8/src/diagnostics/disassembler.cc | 6 +- deps/v8/src/diagnostics/etw-jit-win.cc | 8 + deps/v8/src/diagnostics/gdb-jit.cc | 3 +- deps/v8/src/diagnostics/objects-debug.cc | 316 +- deps/v8/src/diagnostics/objects-printer.cc | 153 +- deps/v8/src/diagnostics/riscv/disasm-riscv.cc | 6 + deps/v8/src/execution/execution.cc | 2 +- deps/v8/src/execution/frame-constants.h | 58 +- deps/v8/src/execution/frames-inl.h | 23 +- deps/v8/src/execution/frames.cc | 459 +- deps/v8/src/execution/frames.h | 110 +- deps/v8/src/execution/futex-emulation.cc | 12 +- deps/v8/src/execution/isolate-data.h | 90 +- deps/v8/src/execution/isolate.cc | 302 +- deps/v8/src/execution/isolate.h | 82 +- deps/v8/src/execution/local-isolate.h | 6 +- .../execution/loong64/simulator-loong64.cc | 10 +- deps/v8/src/execution/messages.cc | 85 +- deps/v8/src/execution/messages.h | 4 + deps/v8/src/execution/microtask-queue.cc | 4 +- .../v8/src/execution/riscv/simulator-riscv.cc | 26 +- deps/v8/src/execution/riscv/simulator-riscv.h | 2 +- deps/v8/src/execution/tiering-manager.cc | 45 +- deps/v8/src/execution/tiering-manager.h | 4 +- deps/v8/src/flags/flag-definitions.h | 170 +- deps/v8/src/flags/flags-impl.h | 10 +- deps/v8/src/flags/flags.cc | 3 +- deps/v8/src/flags/flags.h | 7 +- deps/v8/src/handles/handles.h | 3 +- deps/v8/src/heap/code-range.cc | 2 +- deps/v8/src/heap/concurrent-marking.cc | 9 +- .../v8/src/heap/conservative-stack-visitor.cc | 41 +- deps/v8/src/heap/conservative-stack-visitor.h | 15 +- deps/v8/src/heap/cppgc/pointer-policies.cc | 7 + deps/v8/src/heap/cppgc/stats-collector.cc | 2 +- deps/v8/src/heap/cppgc/visitor.cc | 7 +- deps/v8/src/heap/evacuation-allocator-inl.h | 1 + deps/v8/src/heap/evacuation-allocator.cc | 13 +- deps/v8/src/heap/evacuation-verifier-inl.h | 2 +- deps/v8/src/heap/factory-base.cc | 83 +- deps/v8/src/heap/factory-base.h | 9 +- deps/v8/src/heap/factory.cc | 360 +- deps/v8/src/heap/factory.h | 56 +- deps/v8/src/heap/gc-tracer.cc | 28 +- deps/v8/src/heap/gc-tracer.h | 6 +- deps/v8/src/heap/heap-verifier.cc | 2 +- deps/v8/src/heap/heap-write-barrier-inl.h | 24 + deps/v8/src/heap/heap-write-barrier.cc | 13 + deps/v8/src/heap/heap-write-barrier.h | 7 + deps/v8/src/heap/heap.cc | 32 +- deps/v8/src/heap/heap.h | 14 +- deps/v8/src/heap/incremental-marking.cc | 8 +- deps/v8/src/heap/index-generator.cc | 2 +- deps/v8/src/heap/main-allocator.cc | 19 + deps/v8/src/heap/mark-compact-inl.h | 2 +- deps/v8/src/heap/mark-compact.cc | 235 +- deps/v8/src/heap/marking-visitor-inl.h | 23 +- deps/v8/src/heap/memory-chunk.cc | 18 +- deps/v8/src/heap/memory-measurement.cc | 8 +- deps/v8/src/heap/memory-measurement.h | 1 - deps/v8/src/heap/memory-reducer.cc | 5 +- deps/v8/src/heap/minor-mark-sweep.cc | 9 +- deps/v8/src/heap/new-spaces.cc | 2 +- deps/v8/src/heap/object-stats.cc | 5 +- deps/v8/src/heap/object-stats.h | 2 +- deps/v8/src/heap/objects-visiting.h | 9 +- deps/v8/src/heap/paged-spaces.cc | 10 +- deps/v8/src/heap/paged-spaces.h | 5 +- deps/v8/src/heap/read-only-heap.cc | 10 + deps/v8/src/heap/read-only-heap.h | 5 + deps/v8/src/heap/read-only-promotion.cc | 5 +- deps/v8/src/heap/scavenger-inl.h | 35 +- deps/v8/src/heap/scavenger.cc | 16 +- deps/v8/src/heap/scavenger.h | 1 - deps/v8/src/heap/setup-heap-internal.cc | 83 +- .../young-generation-marking-visitor-inl.h | 2 +- deps/v8/src/ic/accessor-assembler.cc | 64 +- deps/v8/src/ic/accessor-assembler.h | 37 +- deps/v8/src/ic/binary-op-assembler.cc | 31 +- deps/v8/src/ic/call-optimization.cc | 7 +- deps/v8/src/ic/call-optimization.h | 4 +- deps/v8/src/ic/ic.cc | 318 +- deps/v8/src/ic/ic.h | 8 +- deps/v8/src/ic/keyed-store-generic.cc | 8 +- deps/v8/src/ic/unary-op-assembler.cc | 75 +- deps/v8/src/init/bootstrapper.cc | 463 +- deps/v8/src/init/heap-symbols.h | 3 +- deps/v8/src/init/isolate-group.cc | 2 + deps/v8/src/init/isolate-group.h | 6 + deps/v8/src/init/v8.cc | 7 +- deps/v8/src/inspector/DEPS | 1 - deps/v8/src/inspector/custom-preview.cc | 3 +- deps/v8/src/inspector/value-mirror.cc | 2 +- .../src/interpreter/bytecode-array-builder.cc | 4 +- .../src/interpreter/bytecode-array-builder.h | 6 +- deps/v8/src/interpreter/bytecode-generator.cc | 419 +- deps/v8/src/interpreter/bytecode-generator.h | 10 +- deps/v8/src/interpreter/bytecode-register.h | 5 +- .../src/interpreter/interpreter-assembler.cc | 4 +- .../src/interpreter/interpreter-generator.cc | 71 +- deps/v8/src/interpreter/interpreter.cc | 7 +- deps/v8/src/json/json-parser.cc | 30 +- deps/v8/src/json/json-parser.h | 24 +- deps/v8/src/json/json-stringifier.cc | 16 +- deps/v8/src/logging/counters-definitions.h | 18 +- deps/v8/src/logging/counters.cc | 7 + deps/v8/src/logging/counters.h | 14 +- deps/v8/src/logging/log-file.cc | 3 +- deps/v8/src/logging/log-file.h | 4 +- deps/v8/src/logging/log.cc | 10 +- deps/v8/src/logging/runtime-call-stats.h | 4 +- .../src/maglev/arm/maglev-assembler-arm-inl.h | 336 +- .../v8/src/maglev/arm/maglev-assembler-arm.cc | 34 +- deps/v8/src/maglev/arm/maglev-ir-arm.cc | 81 +- .../maglev/arm64/maglev-assembler-arm64-inl.h | 385 +- .../maglev/arm64/maglev-assembler-arm64.cc | 112 +- deps/v8/src/maglev/arm64/maglev-ir-arm64.cc | 52 +- deps/v8/src/maglev/maglev-assembler-inl.h | 77 +- deps/v8/src/maglev/maglev-assembler.cc | 152 +- deps/v8/src/maglev/maglev-assembler.h | 158 +- deps/v8/src/maglev/maglev-basic-block.h | 9 +- deps/v8/src/maglev/maglev-code-generator.cc | 26 +- deps/v8/src/maglev/maglev-compilation-info.cc | 11 +- deps/v8/src/maglev/maglev-compilation-info.h | 6 +- deps/v8/src/maglev/maglev-compiler.cc | 17 +- deps/v8/src/maglev/maglev-graph-builder.cc | 1441 +- deps/v8/src/maglev/maglev-graph-builder.h | 296 +- deps/v8/src/maglev/maglev-graph-printer.cc | 10 +- deps/v8/src/maglev/maglev-graph-printer.h | 8 +- deps/v8/src/maglev/maglev-graph-processor.h | 163 +- deps/v8/src/maglev/maglev-graph-verifier.h | 5 +- deps/v8/src/maglev/maglev-graph.h | 36 +- .../maglev/maglev-interpreter-frame-state.cc | 221 +- .../maglev/maglev-interpreter-frame-state.h | 87 +- deps/v8/src/maglev/maglev-ir-inl.h | 5 +- deps/v8/src/maglev/maglev-ir.cc | 553 +- deps/v8/src/maglev/maglev-ir.h | 448 +- .../maglev-phi-representation-selector.cc | 9 +- .../maglev-phi-representation-selector.h | 11 +- ...maglev-post-hoc-optimizations-processors.h | 176 +- .../maglev-pre-regalloc-codegen-processors.h | 22 +- deps/v8/src/maglev/maglev-regalloc.cc | 5 + .../maglev/s390/maglev-assembler-s390-inl.h | 319 +- .../src/maglev/s390/maglev-assembler-s390.cc | 45 +- deps/v8/src/maglev/s390/maglev-ir-s390.cc | 44 +- .../src/maglev/x64/maglev-assembler-x64-inl.h | 248 +- .../v8/src/maglev/x64/maglev-assembler-x64.cc | 52 +- deps/v8/src/maglev/x64/maglev-ir-x64.cc | 8 +- deps/v8/src/numbers/conversions.cc | 234 +- deps/v8/src/numbers/conversions.h | 56 +- deps/v8/src/numbers/integer-literal.h | 7 +- deps/v8/src/objects/backing-store.cc | 13 +- deps/v8/src/objects/backing-store.h | 14 +- deps/v8/src/objects/bytecode-array-inl.h | 5 - deps/v8/src/objects/bytecode-array.h | 8 - deps/v8/src/objects/bytecode-array.tq | 5 +- deps/v8/src/objects/call-site-info-inl.h | 6 +- deps/v8/src/objects/call-site-info.cc | 39 +- deps/v8/src/objects/call-site-info.h | 17 +- deps/v8/src/objects/call-site-info.tq | 4 +- deps/v8/src/objects/code-inl.h | 2 +- .../src/objects/compilation-cache-table-inl.h | 46 +- .../v8/src/objects/compilation-cache-table.cc | 25 +- deps/v8/src/objects/compilation-cache-table.h | 4 +- deps/v8/src/objects/contexts.cc | 10 +- deps/v8/src/objects/contexts.h | 4 + deps/v8/src/objects/debug-objects.tq | 11 +- deps/v8/src/objects/deoptimization-data-inl.h | 9 + deps/v8/src/objects/deoptimization-data.cc | 4 + deps/v8/src/objects/deoptimization-data.h | 9 + deps/v8/src/objects/descriptor-array-inl.h | 1 + deps/v8/src/objects/dictionary-inl.h | 11 +- deps/v8/src/objects/dictionary.h | 13 +- deps/v8/src/objects/elements.cc | 52 +- deps/v8/src/objects/elements.h | 4 +- deps/v8/src/objects/feedback-cell-inl.h | 20 +- deps/v8/src/objects/feedback-cell.h | 15 +- deps/v8/src/objects/feedback-cell.tq | 2 +- deps/v8/src/objects/feedback-vector-inl.h | 49 +- deps/v8/src/objects/feedback-vector.cc | 71 +- deps/v8/src/objects/feedback-vector.h | 83 +- deps/v8/src/objects/fixed-array-inl.h | 37 +- deps/v8/src/objects/fixed-array.h | 23 +- deps/v8/src/objects/heap-object.h | 41 +- deps/v8/src/objects/instance-type-checker.h | 14 +- deps/v8/src/objects/instance-type-inl.h | 173 +- deps/v8/src/objects/instruction-stream-inl.h | 10 +- deps/v8/src/objects/intl-objects.cc | 38 +- deps/v8/src/objects/intl-objects.h | 28 +- .../src/objects/js-atomics-synchronization.cc | 4 +- .../src/objects/js-atomics-synchronization.h | 2 +- deps/v8/src/objects/js-break-iterator.cc | 2 +- deps/v8/src/objects/js-date-time-format.cc | 66 +- deps/v8/src/objects/js-disposable-stack.cc | 80 +- deps/v8/src/objects/js-duration-format.cc | 2 +- deps/v8/src/objects/js-function-inl.h | 27 +- deps/v8/src/objects/js-function.cc | 73 +- deps/v8/src/objects/js-function.h | 33 +- deps/v8/src/objects/js-function.tq | 7 +- deps/v8/src/objects/js-list-format.cc | 2 +- deps/v8/src/objects/js-locale.cc | 2 +- deps/v8/src/objects/js-number-format.cc | 13 +- deps/v8/src/objects/js-objects-inl.h | 16 +- deps/v8/src/objects/js-objects.cc | 157 +- deps/v8/src/objects/js-objects.h | 49 +- deps/v8/src/objects/js-regexp-inl.h | 159 +- deps/v8/src/objects/js-regexp.cc | 177 +- deps/v8/src/objects/js-regexp.h | 299 +- deps/v8/src/objects/js-regexp.tq | 35 +- .../v8/src/objects/js-relative-time-format.cc | 13 +- deps/v8/src/objects/js-segment-iterator.cc | 4 +- deps/v8/src/objects/js-segmenter.cc | 2 +- deps/v8/src/objects/js-struct.cc | 2 +- deps/v8/src/objects/js-temporal-objects.cc | 108 +- deps/v8/src/objects/js-temporal-objects.h | 6 +- deps/v8/src/objects/keys.cc | 32 +- deps/v8/src/objects/keys.h | 12 +- deps/v8/src/objects/literal-objects-inl.h | 17 +- deps/v8/src/objects/literal-objects.cc | 14 +- deps/v8/src/objects/literal-objects.h | 27 +- deps/v8/src/objects/literal-objects.tq | 3 +- deps/v8/src/objects/lookup.cc | 22 +- deps/v8/src/objects/lookup.h | 12 +- deps/v8/src/objects/map-inl.h | 8 +- deps/v8/src/objects/map-updater.cc | 68 +- deps/v8/src/objects/map-updater.h | 10 +- deps/v8/src/objects/map.cc | 76 +- deps/v8/src/objects/map.h | 29 +- deps/v8/src/objects/object-list-macros.h | 50 +- deps/v8/src/objects/object-macros.h | 40 +- .../objects/objects-body-descriptors-inl.h | 183 +- .../v8/src/objects/objects-body-descriptors.h | 5 + deps/v8/src/objects/objects-definitions.h | 82 +- deps/v8/src/objects/objects-inl.h | 45 +- deps/v8/src/objects/objects.cc | 98 +- deps/v8/src/objects/objects.h | 10 +- deps/v8/src/objects/ordered-hash-table.cc | 11 +- deps/v8/src/objects/ordered-hash-table.h | 11 +- deps/v8/src/objects/regexp-match-info.cc | 10 +- deps/v8/src/objects/scope-info.cc | 82 +- deps/v8/src/objects/scope-info.h | 23 +- deps/v8/src/objects/scope-info.tq | 8 +- deps/v8/src/objects/script-inl.h | 29 +- deps/v8/src/objects/script.h | 14 +- deps/v8/src/objects/script.tq | 2 +- .../v8/src/objects/shared-function-info-inl.h | 383 +- deps/v8/src/objects/shared-function-info.cc | 209 +- deps/v8/src/objects/shared-function-info.h | 143 +- deps/v8/src/objects/shared-function-info.tq | 55 +- deps/v8/src/objects/smi.h | 12 +- deps/v8/src/objects/source-text-module.cc | 16 +- deps/v8/src/objects/string-inl.h | 14 +- deps/v8/src/objects/string.cc | 80 +- deps/v8/src/objects/string.h | 14 +- .../src/objects/swiss-name-dictionary-inl.h | 10 +- deps/v8/src/objects/swiss-name-dictionary.h | 10 +- deps/v8/src/objects/tagged-field.h | 31 +- deps/v8/src/objects/templates.cc | 24 +- deps/v8/src/objects/templates.h | 8 +- deps/v8/src/objects/templates.tq | 12 + deps/v8/src/objects/transitions-inl.h | 122 +- deps/v8/src/objects/transitions.cc | 130 +- deps/v8/src/objects/transitions.h | 147 +- deps/v8/src/objects/trusted-object-inl.h | 6 +- deps/v8/src/objects/trusted-object.h | 4 +- deps/v8/src/objects/trusted-object.tq | 2 +- deps/v8/src/objects/value-serializer.cc | 51 +- deps/v8/src/objects/value-serializer.h | 2 + deps/v8/src/objects/visitors.h | 2 +- deps/v8/src/parsing/func-name-inferrer.h | 5 +- deps/v8/src/parsing/parse-info.cc | 5 +- deps/v8/src/parsing/parse-info.h | 12 +- deps/v8/src/parsing/parser-base.h | 283 +- deps/v8/src/parsing/parser.cc | 338 +- deps/v8/src/parsing/parser.h | 59 +- deps/v8/src/parsing/parsing.cc | 17 +- deps/v8/src/parsing/parsing.h | 6 +- deps/v8/src/parsing/preparser-logger.h | 10 +- deps/v8/src/parsing/preparser.cc | 9 +- deps/v8/src/parsing/preparser.h | 73 +- deps/v8/src/parsing/rewriter.cc | 33 +- deps/v8/src/parsing/rewriter.h | 14 +- .../src/parsing/scanner-character-streams.cc | 6 +- deps/v8/src/parsing/scanner.cc | 35 +- deps/v8/src/parsing/scanner.h | 32 +- deps/v8/src/profiler/allocation-tracker.cc | 2 +- deps/v8/src/profiler/heap-profiler.cc | 37 +- deps/v8/src/profiler/heap-profiler.h | 2 + .../src/profiler/heap-snapshot-generator.cc | 30 +- .../v8/src/profiler/heap-snapshot-generator.h | 12 +- .../v8/src/profiler/sampling-heap-profiler.cc | 2 +- .../experimental/experimental-interpreter.cc | 17 +- .../experimental/experimental-interpreter.h | 4 +- .../src/regexp/experimental/experimental.cc | 133 +- .../v8/src/regexp/experimental/experimental.h | 23 +- deps/v8/src/regexp/regexp-ast.h | 11 +- .../src/regexp/regexp-bytecode-generator.cc | 4 +- .../v8/src/regexp/regexp-bytecode-peephole.cc | 5 +- deps/v8/src/regexp/regexp-bytecode-peephole.h | 4 +- deps/v8/src/regexp/regexp-compiler.cc | 12 +- deps/v8/src/regexp/regexp-error.h | 1 - deps/v8/src/regexp/regexp-flags.h | 13 +- deps/v8/src/regexp/regexp-interpreter.cc | 48 +- deps/v8/src/regexp/regexp-interpreter.h | 11 +- deps/v8/src/regexp/regexp-macro-assembler.cc | 23 +- deps/v8/src/regexp/regexp-macro-assembler.h | 9 +- deps/v8/src/regexp/regexp-parser.cc | 2 +- deps/v8/src/regexp/regexp.cc | 370 +- deps/v8/src/regexp/regexp.h | 21 +- deps/v8/src/roots/roots.h | 86 +- deps/v8/src/roots/static-roots.h | 1417 +- deps/v8/src/runtime/runtime-array.cc | 2 +- deps/v8/src/runtime/runtime-atomics.cc | 3 +- deps/v8/src/runtime/runtime-bigint.cc | 4 +- deps/v8/src/runtime/runtime-classes.cc | 2 +- deps/v8/src/runtime/runtime-compiler.cc | 28 +- deps/v8/src/runtime/runtime-debug.cc | 14 +- deps/v8/src/runtime/runtime-internal.cc | 4 +- deps/v8/src/runtime/runtime-literals.cc | 3 +- deps/v8/src/runtime/runtime-module.cc | 17 +- deps/v8/src/runtime/runtime-object.cc | 12 +- deps/v8/src/runtime/runtime-promise.cc | 23 +- deps/v8/src/runtime/runtime-regexp.cc | 165 +- deps/v8/src/runtime/runtime-scopes.cc | 30 +- deps/v8/src/runtime/runtime-shadow-realm.cc | 5 +- deps/v8/src/runtime/runtime-test-wasm.cc | 183 +- deps/v8/src/runtime/runtime-test.cc | 154 +- deps/v8/src/runtime/runtime-wasm.cc | 153 +- deps/v8/src/runtime/runtime.cc | 9 + deps/v8/src/runtime/runtime.h | 87 +- deps/v8/src/sandbox/check.h | 2 +- deps/v8/src/sandbox/code-pointer-table-inl.h | 4 + deps/v8/src/sandbox/code-pointer-table.cc | 8 - deps/v8/src/sandbox/code-pointer-table.h | 9 +- .../src/sandbox/external-entity-table-inl.h | 193 +- deps/v8/src/sandbox/external-entity-table.h | 160 +- deps/v8/src/sandbox/indirect-pointer-inl.h | 15 +- deps/v8/src/sandbox/indirect-pointer-tag.h | 61 +- deps/v8/src/sandbox/indirect-pointer.h | 6 +- deps/v8/src/sandbox/isolate-inl.h | 26 +- deps/v8/src/sandbox/js-dispatch-table-inl.h | 25 +- deps/v8/src/sandbox/js-dispatch-table.cc | 19 +- deps/v8/src/sandbox/js-dispatch-table.h | 51 +- .../src/sandbox/trusted-pointer-table-inl.h | 10 + deps/v8/src/sandbox/trusted-pointer-table.h | 12 + deps/v8/src/snapshot/code-serializer.cc | 27 +- deps/v8/src/snapshot/deserializer.cc | 10 - .../src/snapshot/embedded/embedded-empty.cc | 10 + .../platform-embedded-file-writer-base.h | 14 + .../platform-embedded-file-writer-generic.cc | 6 +- .../platform-embedded-file-writer-win.cc | 6 +- deps/v8/src/snapshot/serializer.cc | 25 + deps/v8/src/snapshot/serializer.h | 2 + deps/v8/src/snapshot/snapshot.cc | 8 +- deps/v8/src/snapshot/startup-serializer.cc | 2 +- deps/v8/src/snapshot/static-roots-gen.cc | 2 + deps/v8/src/temporal/temporal-parser.cc | 43 +- deps/v8/src/temporal/temporal-parser.h | 13 +- deps/v8/src/torque/ast.h | 83 +- deps/v8/src/torque/cc-generator.cc | 16 +- deps/v8/src/torque/cc-generator.h | 12 +- deps/v8/src/torque/cfg.cc | 22 +- deps/v8/src/torque/cfg.h | 36 +- .../torque/class-debug-reader-generator.cc | 21 +- deps/v8/src/torque/constants.h | 2 +- deps/v8/src/torque/csa-generator.cc | 20 +- deps/v8/src/torque/csa-generator.h | 22 +- deps/v8/src/torque/declarable.cc | 23 +- deps/v8/src/torque/declarable.h | 51 +- deps/v8/src/torque/declaration-visitor.cc | 26 +- deps/v8/src/torque/declaration-visitor.h | 15 +- deps/v8/src/torque/declarations.cc | 42 +- deps/v8/src/torque/declarations.h | 32 +- deps/v8/src/torque/earley-parser.cc | 18 +- deps/v8/src/torque/earley-parser.h | 51 +- deps/v8/src/torque/global-context.cc | 3 +- deps/v8/src/torque/global-context.h | 4 +- deps/v8/src/torque/implementation-visitor.cc | 130 +- deps/v8/src/torque/implementation-visitor.h | 72 +- deps/v8/src/torque/instance-type-generator.cc | 12 +- deps/v8/src/torque/instructions.cc | 31 +- deps/v8/src/torque/instructions.h | 45 +- deps/v8/src/torque/ls/json-parser.cc | 26 +- deps/v8/src/torque/ls/json-parser.h | 15 +- deps/v8/src/torque/parameter-difference.h | 19 +- deps/v8/src/torque/server-data.cc | 18 +- deps/v8/src/torque/server-data.h | 12 +- deps/v8/src/torque/torque-compiler.cc | 14 +- deps/v8/src/torque/torque-compiler.h | 12 +- deps/v8/src/torque/torque-parser.cc | 357 +- deps/v8/src/torque/type-inference.cc | 16 +- deps/v8/src/torque/type-inference.h | 16 +- deps/v8/src/torque/type-oracle.cc | 16 +- deps/v8/src/torque/type-oracle.h | 23 +- deps/v8/src/torque/type-visitor.cc | 22 +- deps/v8/src/torque/type-visitor.h | 12 +- deps/v8/src/torque/types.cc | 78 +- deps/v8/src/torque/types.h | 72 +- deps/v8/src/torque/utils.cc | 22 +- deps/v8/src/torque/utils.h | 18 +- deps/v8/src/trap-handler/handler-inside.cc | 11 + deps/v8/src/trap-handler/handler-outside.cc | 6 +- deps/v8/src/utils/hex-format.cc | 3 +- .../baseline/arm/liftoff-assembler-arm-inl.h | 150 +- .../arm64/liftoff-assembler-arm64-inl.h | 354 +- .../ia32/liftoff-assembler-ia32-inl.h | 178 +- .../v8/src/wasm/baseline/liftoff-assembler.cc | 6 +- deps/v8/src/wasm/baseline/liftoff-assembler.h | 51 + deps/v8/src/wasm/baseline/liftoff-compiler.cc | 280 +- .../loong64/liftoff-assembler-loong64-inl.h | 146 + .../mips64/liftoff-assembler-mips64-inl.h | 146 + .../baseline/ppc/liftoff-assembler-ppc-inl.h | 96 +- .../riscv/liftoff-assembler-riscv-inl.h | 138 + .../riscv/liftoff-assembler-riscv32-inl.h | 5 + .../riscv/liftoff-assembler-riscv64-inl.h | 5 + .../s390/liftoff-assembler-s390-inl.h | 102 +- .../baseline/x64/liftoff-assembler-x64-inl.h | 405 +- deps/v8/src/wasm/c-api.cc | 31 +- deps/v8/src/wasm/canonical-types.cc | 4 +- deps/v8/src/wasm/compilation-environment.h | 3 +- deps/v8/src/wasm/function-body-decoder-impl.h | 36 +- deps/v8/src/wasm/function-compiler.cc | 55 +- deps/v8/src/wasm/function-compiler.h | 8 +- .../wasm/fuzzing/random-module-generation.cc | 74 +- deps/v8/src/wasm/interpreter/OWNERS | 3 + .../arm64/interpreter-builtins-arm64.cc | 1816 +++ .../wasm/interpreter/instruction-handlers.h | 1256 ++ .../wasm/interpreter/wasm-interpreter-inl.h | 713 + .../wasm-interpreter-objects-inl.h | 52 + .../interpreter/wasm-interpreter-objects.cc | 97 + .../interpreter/wasm-interpreter-objects.h | 86 + .../wasm-interpreter-runtime-inl.h | 165 + .../interpreter/wasm-interpreter-runtime.cc | 3065 +++++ .../interpreter/wasm-interpreter-runtime.h | 461 + .../wasm/interpreter/wasm-interpreter-simd.cc | 361 + .../src/wasm/interpreter/wasm-interpreter.cc | 11408 ++++++++++++++++ .../src/wasm/interpreter/wasm-interpreter.h | 2068 +++ .../x64/interpreter-builtins-x64.cc | 2997 ++++ deps/v8/src/wasm/memory-tracing.cc | 10 +- deps/v8/src/wasm/memory-tracing.h | 12 +- deps/v8/src/wasm/module-compiler.cc | 341 +- deps/v8/src/wasm/module-compiler.h | 36 +- deps/v8/src/wasm/module-instantiate.cc | 288 +- deps/v8/src/wasm/module-instantiate.h | 13 +- deps/v8/src/wasm/names-provider.cc | 13 +- deps/v8/src/wasm/names-provider.h | 2 +- deps/v8/src/wasm/simd-shuffle.cc | 126 + deps/v8/src/wasm/simd-shuffle.h | 36 + deps/v8/src/wasm/streaming-decoder.cc | 12 +- deps/v8/src/wasm/streaming-decoder.h | 9 +- .../v8/src/wasm/turboshaft-graph-interface.cc | 401 +- deps/v8/src/wasm/turboshaft-graph-interface.h | 8 +- deps/v8/src/wasm/value-type.cc | 50 +- deps/v8/src/wasm/value-type.h | 11 +- deps/v8/src/wasm/wasm-code-manager.cc | 103 +- deps/v8/src/wasm/wasm-code-manager.h | 31 +- deps/v8/src/wasm/wasm-debug.cc | 16 +- deps/v8/src/wasm/wasm-engine.cc | 227 +- deps/v8/src/wasm/wasm-engine.h | 20 +- deps/v8/src/wasm/wasm-external-refs.cc | 294 + deps/v8/src/wasm/wasm-external-refs.h | 56 + deps/v8/src/wasm/wasm-features.cc | 40 +- deps/v8/src/wasm/wasm-js.cc | 310 +- deps/v8/src/wasm/wasm-js.h | 2 + deps/v8/src/wasm/wasm-module-builder.h | 4 +- deps/v8/src/wasm/wasm-module.cc | 55 +- deps/v8/src/wasm/wasm-module.h | 21 +- deps/v8/src/wasm/wasm-objects-inl.h | 48 +- deps/v8/src/wasm/wasm-objects.cc | 578 +- deps/v8/src/wasm/wasm-objects.h | 194 +- deps/v8/src/wasm/wasm-objects.tq | 82 +- deps/v8/src/wasm/wasm-opcodes-inl.h | 2 +- deps/v8/src/wasm/wasm-opcodes.h | 32 +- deps/v8/src/wasm/wasm-serialization.cc | 9 +- deps/v8/src/wasm/wasm-tier.h | 7 + deps/v8/src/wasm/wrappers.cc | 107 +- deps/v8/src/zone/accounting-allocator.cc | 6 +- deps/v8/src/zone/accounting-allocator.h | 3 - deps/v8/src/zone/zone-compact-set.h | 9 + deps/v8/test/cctest/cctest.cc | 1 - deps/v8/test/cctest/cctest.h | 13 +- deps/v8/test/cctest/cctest.status | 25 + .../v8/test/cctest/compiler/function-tester.h | 6 +- .../cctest/compiler/test-code-generator.cc | 19 +- .../test-concurrent-shared-function-info.cc | 2 +- .../cctest/compiler/test-run-native-calls.cc | 8 +- .../cctest/compiler/test-run-variables.cc | 6 +- deps/v8/test/cctest/heap/test-compaction.cc | 20 +- deps/v8/test/cctest/heap/test-heap.cc | 70 +- .../cctest/heap/test-memory-measurement.cc | 7 +- .../test/cctest/heap/test-weak-references.cc | 5 + deps/v8/test/cctest/test-api-incumbent.cc | 5 +- deps/v8/test/cctest/test-api.cc | 189 +- deps/v8/test/cctest/test-assembler-mips64.cc | 4 +- deps/v8/test/cctest/test-assembler-riscv64.cc | 51 + .../test/cctest/test-code-stub-assembler.cc | 115 +- deps/v8/test/cctest/test-debug.cc | 317 +- .../test/cctest/test-field-type-tracking.cc | 19 +- .../test/cctest/test-func-name-inference.cc | 12 +- deps/v8/test/cctest/test-heap-profiler.cc | 18 +- .../cctest/test-inobject-slack-tracking.cc | 10 +- deps/v8/test/cctest/test-js-weak-refs.cc | 30 +- .../cctest/test-macro-assembler-loong64.cc | 22 +- .../cctest/test-macro-assembler-riscv32.cc | 20 +- .../cctest/test-macro-assembler-riscv64.cc | 37 +- deps/v8/test/cctest/test-orderedhashtable.cc | 86 +- deps/v8/test/cctest/test-regexp.cc | 17 +- deps/v8/test/cctest/test-serialize.cc | 58 +- deps/v8/test/cctest/test-shared-strings.cc | 20 +- deps/v8/test/cctest/test-strings.cc | 7 +- .../cctest/test-swiss-name-dictionary-csa.cc | 12 +- .../cctest/test-swiss-name-dictionary-infra.h | 23 +- .../test-swiss-name-dictionary-shared-tests.h | 3 +- .../test/cctest/test-swiss-name-dictionary.cc | 12 +- deps/v8/test/cctest/torque/test-torque.cc | 2 + deps/v8/test/cctest/wasm/test-gc.cc | 5 + deps/v8/test/cctest/wasm/test-run-wasm-f16.cc | 339 +- .../v8/test/cctest/wasm/test-run-wasm-simd.cc | 33 + .../cctest/wasm/test-run-wasm-wrappers.cc | 9 +- .../test/cctest/wasm/test-wasm-breakpoints.cc | 4 +- deps/v8/test/cctest/wasm/test-wasm-stack.cc | 2 +- .../cctest/wasm/test-wasm-trap-position.cc | 2 +- deps/v8/test/cctest/wasm/wasm-run-utils.cc | 35 +- deps/v8/test/cctest/wasm/wasm-run-utils.h | 23 + deps/v8/test/cctest/wasm/wasm-simd-utils.cc | 88 + deps/v8/test/cctest/wasm/wasm-simd-utils.h | 7 + deps/v8/test/common/wasm/wasm-macro-gen.h | 2 + .../debug/compiler/regress-354005322.js | 38 + deps/v8/test/fuzzer/inspector-fuzzer.cc | 5 +- deps/v8/test/fuzzer/regexp.cc | 2 +- deps/v8/test/fuzzer/wasm-deopt.cc | 22 +- deps/v8/test/fuzzer/wasm-fuzzer-common.cc | 17 +- .../wasm-jspi-async-stack-expected.txt | 422 +- .../debugger/wasm-jspi-async-stack.js | 23 +- deps/v8/test/inspector/inspector-test.cc | 3 +- deps/v8/test/inspector/isolate-data.cc | 6 +- deps/v8/test/inspector/isolate-data.h | 6 +- deps/v8/test/message/message.status | 23 +- deps/v8/test/message/wasm-trace-deopt-32.out | 2 +- deps/v8/test/message/wasm-trace-deopt-64.out | 2 +- .../mjsunit/baseline/flush-baseline-code.js | 78 +- .../baseline/flush-only-baseline-code.js | 76 +- .../mjsunit/comparison-throws-feedback.js | 36 + deps/v8/test/mjsunit/compiler/dataview-get.js | 34 + deps/v8/test/mjsunit/compiler/dataview-set.js | 34 +- .../mjsunit/compiler/fast-api-annotations.js | 1 + .../fast-api-calls-64-bit-integer-values.js | 1 + .../mjsunit/compiler/fast-api-calls-8args.js | 1 + .../compiler/fast-api-calls-pointer.js | 1 + .../mjsunit/compiler/fast-api-calls-string.js | 1 + .../mjsunit/compiler/fast-api-calls-throw.js | 1 + .../mjsunit/compiler/fast-api-calls-wasm.js | 1 + .../test/mjsunit/compiler/fast-api-calls.js | 1 + .../compiler/fast-api-clamp-annotations.js | 1 + .../compiler/fast-api-interface-types.js | 1 + .../compiler/fast-api-sequences-x64.js | 1 + .../mjsunit/compiler/fast-api-sequences.js | 1 + .../mjsunit/compiler/regress-359729268.js | 21 + .../harmony/await-using-count-ticks.js | 37 + .../mjsunit/harmony/modules-import-16.mjs | 6 +- .../harmony/shadowrealm-skip-2-throw.mjs | 6 +- .../shadowrealm-skip-3-throw-object.mjs | 6 +- .../shadowrealm-skip-4-throw-string.mjs | 6 + .../harmony/shadowrealm-type-error-copy.js | 102 + ...dowrealm-type-error-prepare-stack-trace.js | 181 + .../test/mjsunit/harmony/suppressed-error.js | 24 +- .../v8/test/mjsunit/maglev/api-setter-poly.js | 32 + deps/v8/test/mjsunit/maglev/api-setter.js | 29 + .../mjsunit/maglev/context-object-tracking.js | 58 + .../mjsunit/maglev/equals-number-boolean.js | 52 + .../mjsunit/maglev/escape-loop-inline-call.js | 25 + .../extend-properties-backing-store-1.js | 1 - .../extend-properties-backing-store-2.js | 1 - .../test/mjsunit/maglev/regress-343069823.js | 10 +- .../test/mjsunit/maglev/regress-353877558.js | 18 + .../test/mjsunit/maglev/regress-353928356.js | 17 + .../test/mjsunit/maglev/regress-354324160.js | 25 + .../test/mjsunit/maglev/regress-354758514.js | 25 + .../test/mjsunit/maglev/regress-354800079.js | 63 + .../test/mjsunit/maglev/regress-355493915.js | 17 + .../test/mjsunit/maglev/regress-356491694.js | 15 + .../test/mjsunit/maglev/regress-356901453.js | 15 + .../test/mjsunit/maglev/regress-356913463.js | 40 + .../test/mjsunit/maglev/regress-356965810.js | 16 + .../test/mjsunit/maglev/regress-357496257.js | 21 + .../test/mjsunit/maglev/regress-358071281.js | 17 + .../test/mjsunit/maglev/regress-358399787.js | 21 + .../test/mjsunit/maglev/regress-358998538.js | 27 + .../maglev/regress/regress-355484345.js | 25 + .../maglev/regress/regress-356913290.js | 24 + .../maglev/regress/regress-356913462.js | 22 + .../maglev/regress/regress-356917015.js | 27 + .../maglev/strict-equals-number-boolean.js | 45 + deps/v8/test/mjsunit/maglev/string-compare.js | 2 +- deps/v8/test/mjsunit/mjsunit.status | 267 +- .../test/mjsunit/object-assign-regressions.js | 50 +- ...ress-331358160.js => regress-352402518.js} | 8 +- deps/v8/test/mjsunit/regress-352414652.js | 13 + deps/v8/test/mjsunit/regress-352673356.js | 7 + deps/v8/test/mjsunit/regress-352739458.js | 13 + deps/v8/test/mjsunit/regress-353561476.js | 40 + deps/v8/test/mjsunit/regress-354310130.js | 10 + .../test/mjsunit/regress-4530868594868224.js | 22 + .../mjsunit/regress-class-initializer-eval.js | 12 + .../test/mjsunit/regress/regress-335548148.js | 2 +- .../mjsunit/regress/regress-352690885-1.js | 15 + .../mjsunit/regress/regress-352690885-2.js | 11 + .../mjsunit/regress/regress-352690885-3.js | 11 + .../mjsunit/regress/regress-352690885-4.js | 22 + .../mjsunit/regress/regress-352690885-5.js | 62 + .../mjsunit/regress/regress-352690885-6.js | 86 + .../test/mjsunit/regress/regress-355683663.js | 31 + .../test/mjsunit/regress/regress-357651585.js | 26 + .../test/mjsunit/regress/regress-359618508.js | 28 + .../regress/wasm/regress-336358915-a.js | 18 - .../mjsunit/regress/wasm/regress-336358915.js | 2 +- .../mjsunit/regress/wasm/regress-349402547.js | 30 + .../mjsunit/regress/wasm/regress-353913485.js | 96 + .../regress/wasm/regress-354324155-2.js | 61 + .../mjsunit/regress/wasm/regress-354324155.js | 57 + .../mjsunit/regress/wasm/regress-355493919.js | 13 + .../mjsunit/regress/wasm/regress-357977718.js | 29 + .../mjsunit/regress/wasm/regress-359949835.js | 25 + .../mjsunit/regress/wasm/regress-360044696.js | 64 + .../mjsunit/regress/wasm/regress-v8-14471.js | 6 +- deps/v8/test/mjsunit/strictequals-feedback.js | 258 + .../test/mjsunit/test-scopeinfo-reuse-eval.js | 15 + .../maglev-frontend/check-float64-is-nan.js | 24 + ...terialized-identical-heap-number-fields.js | 25 + .../maglev-frontend/dematerialized-regexp.js | 39 + .../extend-property-backing-store-1.js | 39 + .../extend-property-backing-store-2.js | 49 + .../generator-async-await-loop.js | 23 + .../maglev-frontend/generator-async.js | 12 + .../maglev-frontend/generator-if.js | 39 + .../generator-infinite-loop.js | 31 + .../maglev-frontend/generator-loop-if.js | 28 + .../generator-loop-multi-if.js | 37 + .../generator-loop-no-forward-edge.js | 20 + .../generator-loop-untagged-phis.js | 41 + .../maglev-frontend/generator-loop.js | 30 + .../maglev-frontend/generator-nested-loops.js | 50 + .../generator-return-finally-loop.js | 40 + .../generator-return-finally.js | 34 + .../maglev-frontend/generator-return.js | 22 + .../generator-straight-line.js | 25 + .../generator-throw-loop-2-yields.js | 82 + .../maglev-frontend/generator-throw-loop.js | 34 + .../generator-throw-nested-loop.js | 42 + .../maglev-frontend/generator-throw.js | 27 + .../generator-yield-star-loop-1.js | 32 + .../generator-yield-star-loop-2.js | 36 + .../maglev-frontend/generator-yield-star.js | 27 + .../maglev-frontend/get-template-object.js | 25 + .../holey-float64-phi-to-smi.js | 58 + .../maglev-frontend/literal-nan-hole-deopt.js | 25 + .../maglev-frontend/regress-354145409-1.js | 53 + .../maglev-frontend/regress-354145409-2.js | 53 + .../maglev-frontend/regress-355016861.js | 37 + .../maglev-frontend/regress-356194021.js | 18 + .../maglev-frontend/regress-356436621.js | 26 + .../maglev-frontend/regress-356649152.js | 19 + .../maglev-frontend/regress-356720579.js | 28 + .../maglev-frontend/regress-356901359.js | 22 + .../maglev-frontend/regress-356913279.js | 10 + .../maglev-frontend/regress-356913284-1.js | 35 + .../maglev-frontend/regress-356913284-2.js | 38 + .../turboshaft-instruction-selection.js | 44 - .../test/mjsunit/turboshaft/type-inference.js | 118 - .../mjsunit/turboshaft/typed-optimizations.js | 2 +- deps/v8/test/mjsunit/value-helper.js | 368 + .../mjsunit/wasm/deopt/deopt-call-indirect.js | 4 +- .../wasm/deopt/deopt-dynamic-tierup.js | 2 +- .../wasm/deopt/deopt-feedback-states.js | 16 +- .../deopt/deopt-inlined-param-stack-slots.js | 4 +- .../wasm/deopt/deopt-inlined-stacktrace.js | 6 +- .../test/mjsunit/wasm/deopt/deopt-inlined.js | 8 +- .../mjsunit/wasm/deopt/deopt-int64-values.js | 10 +- .../wasm/deopt/deopt-large-i31ref-constant.js | 4 +- .../deopt-many-params-many-locals-s128.js | 6 +- .../wasm/deopt/deopt-many-params-tagged.js | 12 +- .../mjsunit/wasm/deopt/deopt-many-params.js | 4 +- .../mjsunit/wasm/deopt/deopt-many-results.js | 130 + .../mjsunit/wasm/deopt/deopt-memory-access.js | 2 +- .../test/mjsunit/wasm/deopt/deopt-minimal.js | 6 +- .../deopt-multi-instance-different-callee.js | 8 +- .../deopt/deopt-multi-instance-inlined.js | 18 +- .../wasm/deopt/deopt-multi-instance.js | 18 +- .../test/mjsunit/wasm/deopt/deopt-multiple.js | 8 +- deps/v8/test/mjsunit/wasm/deopt/deopt-nan.js | 24 +- .../wasm/deopt/deopt-non-inlineable-target.js | 12 +- .../wasm/deopt/deopt-non-inlined-target.js | 6 +- .../wasm/deopt/deopt-signal-handler.js | 2 +- .../deopt/deopt-tail-call-parent-frame.js | 2 +- .../wasm/deopt/deopt-untagged-parameters.js | 1 + .../mjsunit/wasm/deopt/deopt-value-types.js | 12 +- ...i-calls-with-wellknown-imports-conflict.js | 1 + ...api-calls-with-wellknown-imports-floats.js | 1 + ...st-api-calls-with-wellknown-imports-i64.js | 1 + .../mjsunit/wasm/gc-js-interop-helpers.js | 8 +- deps/v8/test/mjsunit/wasm/gc-js-interop.js | 15 +- deps/v8/test/mjsunit/wasm/memory64.js | 41 + deps/v8/test/mjsunit/wasm/module-prototype.js | 27 + deps/v8/test/mjsunit/wasm/module-source.js | 37 + .../test/mjsunit/wasm/runtime-gc-objects.js | 26 + .../mjsunit/wasm/simd-wasm-interpreter.js | 57 + .../mjsunit/wasm/stack-switching-export.js | 264 +- .../wasm/stack-switching-generic-wrapper.js | 5 +- .../mjsunit/wasm/stack-switching-new-api.js | 562 - deps/v8/test/mjsunit/wasm/stack-switching.js | 468 +- .../wasm/turboshaft/reduction-shuffle.js | 426 + .../wasm/wasm-interpreter-memory-grow.js | 47 + deps/v8/test/mjsunit/wasm/wasm-interpreter.js | 1890 +++ .../test/mjsunit/wasm/wasm-module-builder.js | 16 +- deps/v8/test/test262/BUILD.gn | 1 + .../test262/harness-abstractmodulesource.js | 5 + .../decorators/private-auto-accessor.js | 106 + .../local-tests/test/staging/features.txt | 9 +- deps/v8/test/test262/test262.status | 156 +- deps/v8/test/test262/testcfg.py | 9 +- deps/v8/test/unittests/BUILD.gn | 1 + .../unittests/api/deserialize-unittest.cc | 24 +- .../assembler/disasm-riscv-unittest.cc | 10 + .../assembler/macro-assembler-x64-unittest.cc | 12 +- deps/v8/test/unittests/base/cpu-unittest.cc | 1 - .../base/doubly-threaded-list-unittest.cc | 1 - .../unittests/codegen/code-pages-unittest.cc | 14 +- ...aft-instruction-selector-arm64-unittest.cc | 472 +- ...turboshaft-instruction-selector-unittest.h | 43 + .../unittests/compiler/compiler-unittest.cc | 264 +- .../test/unittests/compiler/function-tester.h | 6 +- .../compiler/run-jscalls-unittest.cc | 4 +- .../turboshaft/snapshot-table-unittest.cc | 1 - .../compiler/turboshaft/wasm-simd-unittest.cc | 186 + ...shaft-instruction-selector-x64-unittest.cc | 9 +- .../execution/microtask-queue-unittest.cc | 4 +- .../execution/pointer-auth-arm64-unittest.cc | 12 +- .../unittests/heap/base/bytes-unittest.cc | 30 +- .../conservative-stack-visitor-unittest.cc | 39 +- .../embedder-roots-handler-unittest.cc | 1 + .../unified-heap-snapshot-unittest.cc | 36 + .../heap/cppgc-js/unified-heap-unittest.cc | 3 + .../heap/cppgc/gc-invoker-unittest.cc | 10 +- .../heap/cppgc/heap-growing-unittest.cc | 14 +- .../heap/cppgc/metric-recorder-unittest.cc | 2 +- .../unittests/heap/direct-handles-unittest.cc | 2 +- .../test/unittests/heap/gc-tracer-unittest.cc | 5 +- .../unittests/heap/global-handles-unittest.cc | 2 + deps/v8/test/unittests/heap/heap-unittest.cc | 10 +- .../heap/index-generator-unittest.cc | 6 +- .../unittests/heap/local-factory-unittest.cc | 27 +- .../unittests/heap/local-handles-unittest.cc | 4 +- .../unittests/heap/local-heap-unittest.cc | 8 +- .../heap/persistent-handles-unittest.cc | 6 +- .../unittests/heap/shared-heap-unittest.cc | 20 +- .../heap/strong-root-allocator-unittest.cc | 4 +- .../bytecode_expectations/AsyncModules.golden | 174 +- .../CallLookupSlot.golden | 2 +- .../bytecode_expectations/Eval.golden | 2 +- .../bytecode_expectations/ForAwaitOf.golden | 68 +- .../bytecode_expectations/ForOfLoop.golden | 36 +- .../bytecode_expectations/LookupSlot.golden | 10 +- .../PrivateAccessorAccess.golden | 8 +- .../PrivateMethodAccess.golden | 4 +- .../StandardForLoop.golden | 40 +- .../StaticPrivateMethodAccess.golden | 30 +- .../constant-array-builder-unittest.cc | 2 +- .../interpreter/interpreter-unittest.cc | 12 +- ...mics-synchronization-primitive-unittest.cc | 14 +- .../unittests/maglev/node-type-unittest.cc | 2 +- .../test/unittests/numbers/bigint-unittest.cc | 4 +- .../unittests/numbers/conversions-unittest.cc | 255 +- .../concurrent-feedback-vector-unittest.cc | 2 +- .../objects/concurrent-js-array-unittest.cc | 4 +- .../objects/concurrent-prototype-unittest.cc | 6 +- .../concurrent-transition-array-unittest.cc | 8 +- .../objects/elements-kind-unittest.cc | 6 +- .../objects/feedback-vector-unittest.cc | 36 +- .../unittests/objects/hashcode-unittest.cc | 8 +- .../test/unittests/objects/object-unittest.cc | 56 +- .../objects/value-serializer-unittest.cc | 18 +- .../objects/wasm-backing-store-unittest.cc | 10 +- .../unittests/objects/weakmaps-unittest.cc | 4 + .../unittests/objects/weaksets-unittest.cc | 2 + .../test/unittests/parser/parsing-unittest.cc | 492 +- .../unittests/parser/preparser-unittest.cc | 6 +- .../v8/test/unittests/regexp/regexp-fuzzer.cc | 4 +- .../test/unittests/regexp/regexp-unittest.cc | 93 +- .../regress/regress-crbug-1056054-unittest.cc | 2 +- .../unittests/strings/unicode-unittest.cc | 1 + .../temporal/temporal-parser-unittest.cc | 26 +- deps/v8/test/unittests/test-helpers.cc | 5 +- .../torque/earley-parser-unittest.cc | 5 +- .../test/unittests/torque/torque-unittest.cc | 8 +- .../unittests/torque/torque-utils-unittest.cc | 10 +- deps/v8/test/unittests/unittests.status | 6 + .../wasm/memory-protection-unittest.cc | 6 +- .../unittests/wasm/simd-shuffle-unittest.cc | 75 + deps/v8/third_party/abseil-cpp/BUILD.gn | 15 + .../abseil-cpp/CMake/AbseilDll.cmake | 5 +- .../abseil-cpp/CMake/AbseilHelpers.cmake | 23 +- .../CMake/install_test_project/test.sh | 9 +- deps/v8/third_party/abseil-cpp/MODULE.bazel | 4 +- .../v8/third_party/abseil-cpp/README.chromium | 2 +- deps/v8/third_party/abseil-cpp/WORKSPACE | 32 +- deps/v8/third_party/abseil-cpp/absl.gni | 2 + .../abseil-cpp/absl/algorithm/algorithm.h | 4 +- .../absl/algorithm/algorithm_test.cc | 16 +- .../abseil-cpp/absl/algorithm/container.h | 119 +- .../absl/algorithm/container_test.cc | 211 +- .../abseil-cpp/absl/base/BUILD.bazel | 41 + .../third_party/abseil-cpp/absl/base/BUILD.gn | 26 + .../abseil-cpp/absl/base/CMakeLists.txt | 39 + .../abseil-cpp/absl/base/attributes.h | 10 +- .../third_party/abseil-cpp/absl/base/config.h | 2 +- .../abseil-cpp/absl/base/internal/sysinfo.cc | 14 + .../absl/base/internal/thread_identity.h | 6 +- .../abseil-cpp/absl/base/internal/tracing.cc | 39 + .../abseil-cpp/absl/base/internal/tracing.h | 81 + .../absl/base/internal/tracing_strong_test.cc | 117 + .../absl/base/internal/tracing_weak_test.cc | 34 + .../abseil-cpp/absl/container/BUILD.bazel | 1 + .../abseil-cpp/absl/container/BUILD.gn | 1 + .../abseil-cpp/absl/container/CMakeLists.txt | 1 + .../abseil-cpp/absl/container/flat_hash_map.h | 18 +- .../abseil-cpp/absl/container/flat_hash_set.h | 18 +- .../container/internal/container_memory.h | 1 + .../absl/container/internal/raw_hash_set.h | 87 +- .../container/internal/raw_hash_set_test.cc | 67 + .../abseil-cpp/absl/container/node_hash_map.h | 18 +- .../abseil-cpp/absl/container/node_hash_set.h | 18 +- .../debugging/internal/stack_consumption.h | 2 +- .../abseil-cpp/absl/debugging/leak_check.cc | 2 +- .../abseil-cpp/absl/flags/BUILD.bazel | 5 +- .../abseil-cpp/absl/log/BUILD.bazel | 2 + .../abseil-cpp/absl/log/internal/BUILD.bazel | 2 + .../abseil-cpp/absl/random/BUILD.bazel | 1 + .../abseil-cpp/absl/strings/BUILD.bazel | 1 - .../abseil-cpp/absl/strings/BUILD.gn | 1 - .../abseil-cpp/absl/strings/CMakeLists.txt | 1 - .../abseil-cpp/absl/strings/ascii.cc | 37 +- .../abseil-cpp/absl/strings/ascii.h | 34 +- .../absl/strings/ascii_benchmark.cc | 28 + .../abseil-cpp/absl/strings/ascii_test.cc | 4 + .../abseil-cpp/absl/strings/cord.h | 7 +- .../abseil-cpp/absl/strings/cord_test.cc | 26 +- .../absl/strings/internal/cord_internal.h | 48 +- .../absl/strings/internal/cord_rep_btree.h | 4 +- .../strings/internal/has_absl_stringify.h | 54 - .../absl/synchronization/BUILD.bazel | 7 + .../abseil-cpp/absl/synchronization/BUILD.gn | 97 +- .../absl/synchronization/CMakeLists.txt | 7 + .../absl/synchronization/blocking_counter.cc | 26 +- .../absl/synchronization/blocking_counter.h | 6 + .../synchronization/blocking_counter_test.cc | 66 + .../internal/create_thread_identity.cc | 6 +- .../absl/synchronization/notification.cc | 12 +- .../absl/synchronization/notification.h | 12 +- .../absl/synchronization/notification_test.cc | 93 + .../abseil-cpp/symbols_arm64_dbg.def | 55 +- .../abseil-cpp/symbols_arm64_rel.def | 26 +- .../abseil-cpp/symbols_x64_dbg.def | 55 +- .../abseil-cpp/symbols_x64_rel.def | 26 +- .../abseil-cpp/symbols_x64_rel_asan.def | 48 +- .../abseil-cpp/symbols_x86_dbg.def | 55 +- .../abseil-cpp/symbols_x86_rel.def | 26 +- .../fp16/src/include/fp16/bitcasts.h | 10 +- .../crdtp/json_platform_v8.cc | 3 +- deps/v8/third_party/zlib/chromeconf.h | 3 - deps/v8/third_party/zlib/crc32_simd.c | 2 +- .../third_party/zlib/google/zip_unittest.cc | 5 +- .../tools/builtins-pgo/download_profiles.py | 417 +- .../builtins-pgo/download_profiles_test.py | 167 +- .../debug_helper/debug-helper-internal.h | 1 + .../debug_helper/get-object-properties.cc | 13 +- deps/v8/tools/gdbinit | 2 +- deps/v8/tools/grokdump.py | 223 +- deps/v8/tools/lldb_commands.py | 2 +- deps/v8/tools/release/common_includes.py | 10 +- deps/v8/tools/testrunner/local/variants.py | 2 +- deps/v8/tools/v8windbg/src/js-stack.h | 1 - .../wasm/mjsunit-module-disassembler-impl.h | 2 +- deps/v8/tools/wasm/module-inspector.cc | 3 +- 1270 files changed, 69516 insertions(+), 18938 deletions(-) delete mode 100644 deps/v8/src/base/optional.h create mode 100644 deps/v8/src/builtins/builtins-abstract-module-source.cc create mode 100644 deps/v8/src/codegen/riscv/constant-riscv-zicond.h create mode 100644 deps/v8/src/codegen/riscv/extension-riscv-zicond.cc create mode 100644 deps/v8/src/codegen/riscv/extension-riscv-zicond.h create mode 100644 deps/v8/src/common/segmented-table-inl.h create mode 100644 deps/v8/src/common/segmented-table.h create mode 100644 deps/v8/src/compiler/turboshaft/string-view.h create mode 100644 deps/v8/src/wasm/interpreter/OWNERS create mode 100644 deps/v8/src/wasm/interpreter/arm64/interpreter-builtins-arm64.cc create mode 100644 deps/v8/src/wasm/interpreter/instruction-handlers.h create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter-inl.h create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter-objects-inl.h create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter-objects.cc create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter-objects.h create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter-runtime-inl.h create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter-runtime.cc create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter-runtime.h create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter-simd.cc create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter.cc create mode 100644 deps/v8/src/wasm/interpreter/wasm-interpreter.h create mode 100644 deps/v8/src/wasm/interpreter/x64/interpreter-builtins-x64.cc create mode 100644 deps/v8/test/debugger/debug/compiler/regress-354005322.js create mode 100644 deps/v8/test/mjsunit/comparison-throws-feedback.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-359729268.js create mode 100644 deps/v8/test/mjsunit/harmony/await-using-count-ticks.js create mode 100644 deps/v8/test/mjsunit/harmony/shadowrealm-skip-4-throw-string.mjs create mode 100644 deps/v8/test/mjsunit/harmony/shadowrealm-type-error-copy.js create mode 100644 deps/v8/test/mjsunit/harmony/shadowrealm-type-error-prepare-stack-trace.js create mode 100644 deps/v8/test/mjsunit/maglev/api-setter-poly.js create mode 100644 deps/v8/test/mjsunit/maglev/api-setter.js create mode 100644 deps/v8/test/mjsunit/maglev/context-object-tracking.js create mode 100644 deps/v8/test/mjsunit/maglev/equals-number-boolean.js create mode 100644 deps/v8/test/mjsunit/maglev/escape-loop-inline-call.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-353877558.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-353928356.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-354324160.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-354758514.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-354800079.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-355493915.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-356491694.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-356901453.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-356913463.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-356965810.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-357496257.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-358071281.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-358399787.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-358998538.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-355484345.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-356913290.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-356913462.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-356917015.js create mode 100644 deps/v8/test/mjsunit/maglev/strict-equals-number-boolean.js rename deps/v8/test/mjsunit/{regress/wasm/regress-331358160.js => regress-352402518.js} (53%) create mode 100644 deps/v8/test/mjsunit/regress-352414652.js create mode 100644 deps/v8/test/mjsunit/regress-352673356.js create mode 100644 deps/v8/test/mjsunit/regress-352739458.js create mode 100644 deps/v8/test/mjsunit/regress-353561476.js create mode 100644 deps/v8/test/mjsunit/regress-354310130.js create mode 100644 deps/v8/test/mjsunit/regress-4530868594868224.js create mode 100644 deps/v8/test/mjsunit/regress-class-initializer-eval.js create mode 100644 deps/v8/test/mjsunit/regress/regress-352690885-1.js create mode 100644 deps/v8/test/mjsunit/regress/regress-352690885-2.js create mode 100644 deps/v8/test/mjsunit/regress/regress-352690885-3.js create mode 100644 deps/v8/test/mjsunit/regress/regress-352690885-4.js create mode 100644 deps/v8/test/mjsunit/regress/regress-352690885-5.js create mode 100644 deps/v8/test/mjsunit/regress/regress-352690885-6.js create mode 100644 deps/v8/test/mjsunit/regress/regress-355683663.js create mode 100644 deps/v8/test/mjsunit/regress/regress-357651585.js create mode 100644 deps/v8/test/mjsunit/regress/regress-359618508.js delete mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-336358915-a.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-349402547.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-353913485.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-354324155-2.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-354324155.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-355493919.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-357977718.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-359949835.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-360044696.js create mode 100644 deps/v8/test/mjsunit/strictequals-feedback.js create mode 100644 deps/v8/test/mjsunit/test-scopeinfo-reuse-eval.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/check-float64-is-nan.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/dematerialized-identical-heap-number-fields.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/dematerialized-regexp.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/extend-property-backing-store-1.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/extend-property-backing-store-2.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-async-await-loop.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-async.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-if.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-infinite-loop.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-loop-if.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-loop-multi-if.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-loop-no-forward-edge.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-loop-untagged-phis.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-loop.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-nested-loops.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-return-finally-loop.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-return-finally.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-return.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-straight-line.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-throw-loop-2-yields.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-throw-loop.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-throw-nested-loop.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-throw.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-yield-star-loop-1.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-yield-star-loop-2.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/generator-yield-star.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/get-template-object.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/holey-float64-phi-to-smi.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/literal-nan-hole-deopt.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-354145409-1.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-354145409-2.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-355016861.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-356194021.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-356436621.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-356649152.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-356720579.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-356901359.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-356913279.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-356913284-1.js create mode 100644 deps/v8/test/mjsunit/turboshaft/maglev-frontend/regress-356913284-2.js delete mode 100644 deps/v8/test/mjsunit/turboshaft/turboshaft-instruction-selection.js delete mode 100644 deps/v8/test/mjsunit/turboshaft/type-inference.js create mode 100644 deps/v8/test/mjsunit/value-helper.js create mode 100644 deps/v8/test/mjsunit/wasm/deopt/deopt-many-results.js create mode 100644 deps/v8/test/mjsunit/wasm/module-prototype.js create mode 100644 deps/v8/test/mjsunit/wasm/module-source.js create mode 100644 deps/v8/test/mjsunit/wasm/runtime-gc-objects.js create mode 100644 deps/v8/test/mjsunit/wasm/simd-wasm-interpreter.js delete mode 100644 deps/v8/test/mjsunit/wasm/stack-switching-new-api.js create mode 100644 deps/v8/test/mjsunit/wasm/turboshaft/reduction-shuffle.js create mode 100644 deps/v8/test/mjsunit/wasm/wasm-interpreter-memory-grow.js create mode 100644 deps/v8/test/mjsunit/wasm/wasm-interpreter.js create mode 100644 deps/v8/test/test262/harness-abstractmodulesource.js create mode 100644 deps/v8/test/test262/local-tests/test/staging/decorators/private-auto-accessor.js create mode 100644 deps/v8/test/unittests/compiler/turboshaft/wasm-simd-unittest.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/tracing.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/tracing.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/tracing_strong_test.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/tracing_weak_test.cc delete mode 100644 deps/v8/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h diff --git a/deps/v8/.editorconfig b/deps/v8/.editorconfig index 9d08a1a828a3bd..0a4c9a6c2f0f6d 100644 --- a/deps/v8/.editorconfig +++ b/deps/v8/.editorconfig @@ -1,9 +1,9 @@ -root = true +# editorconfig.org [*] charset = utf-8 -indent_style = space -indent_size = 2 end_of_line = lf +indent_size = 2 +indent_style = space insert_final_newline = true trim_trailing_whitespace = true diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index e805b2aabfeacc..62b74b99cae7dc 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -88,8 +88,8 @@ !/third_party/test262-harness !/third_party/v8 !/third_party/wasm-api -/tools/builtins-pgo/profiles/*.profile -/tools/builtins-pgo/profiles/profiles_version +/tools/builtins-pgo/profiles/* +!/tools/builtins-pgo/profiles/.* /tools/clang /tools/gcmole/bootstrap /tools/gcmole/gcmole-tools diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index e53a6577c54950..38c0f069211911 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -143,11 +143,11 @@ Henrique Ferreiro Helmut Januschka Hirofumi Mako Hisham Muhammad -Ho Cheung Honggyu Kim Huáng Jùnliàng HyeockJin Kim Iain Ireland +Ilya Gavrilin Ingvar Stepanyan Ioseb Dzmanashvili Isiah Meadows @@ -170,6 +170,7 @@ Joel Stanley Johan Bergström Johan Levin John Paul Adrian Glaubitz +Jojo R Jonathan Liu Juan Arboleda Julien Brianceau @@ -205,6 +206,7 @@ Matt Hanselman Matthew Sporleder Maxim Mazurok Maxim Mossienko +Md Hasibul Hasan Meir Shpilraien Michael Lutz Michael Mclaughlin @@ -312,6 +314,7 @@ Yuxiang Cao Zac Hansen Zeynep Cankara Zhao Jiazhong +Zhaojun Meng Zheng Liu Zhongping Wang 柳荣一 diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index 0718b28b052946..f2b2f4da0f8164 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -43,7 +43,6 @@ load(":bazel/v8-non-pointer-compression.bzl", "v8_binary_non_pointer_compression # v8_enable_concurrent_marking # v8_enable_conservative_stack_scanning # v8_enable_direct_handle -# v8_enable_direct_local # v8_enable_local_off_stack_check # v8_enable_ignition_dispatch_counting # v8_enable_builtins_optimization @@ -208,6 +207,49 @@ v8_flag( default = True, ) +v8_flag( + name = "v8_enable_drumbrake", + default = False, +) + +v8_flag( + name = "v8_enable_drumbrake_tracing", + default = False, +) + +selects.config_setting_group( + name = "enable_drumbrake_x64", + match_all = [ + ":is_v8_enable_drumbrake", + "@v8//bazel/config:v8_target_x64", + ], +) + +selects.config_setting_group( + name = "enable_drumbrake_arm64", + match_all = [ + ":is_v8_enable_drumbrake", + "@v8//bazel/config:v8_target_arm64", + ], +) + +selects.config_setting_group( + name = "is_drumbrake_trap_handling_platform", + match_any = [ + "@v8//bazel/config:is_linux", + "@v8//bazel/config:is_macos", + "@v8//bazel/config:is_windows", + ], +) + +selects.config_setting_group( + name = "v8_drumbrake_bounds_checks", + match_all = [ + ":enable_drumbrake_x64", + ":is_drumbrake_trap_handling_platform", + ], +) + v8_flag( name = "v8_jitless", default = False, @@ -411,6 +453,8 @@ v8_config( "v8_enable_verify_heap": "VERIFY_HEAP", "v8_enable_verify_predictable": "VERIFY_PREDICTABLE", "v8_enable_webassembly": "V8_ENABLE_WEBASSEMBLY", + "v8_enable_drumbrake": "V8_ENABLE_DRUMBRAKE", + "v8_enable_drumbrake_tracing": "V8_ENABLE_DRUMBRAKE_TRACING", "v8_jitless": "V8_JITLESS", "v8_enable_vtunejit": "ENABLE_VTUNE_JIT_INTERFACE", }, @@ -518,7 +562,13 @@ v8_config( "V8_ENABLE_DOUBLE_CONST_STORE_CHECK", ], "//conditions:default": [], + }) + select({ + "v8_drumbrake_bounds_checks": [ + "V8_DRUMBRAKE_BOUNDS_CHECKS" + ], + "//conditions:default": [], }), + deps = [":default"], ) @@ -757,7 +807,6 @@ filegroup( "src/base/numbers/strtod.h", "src/base/once.cc", "src/base/once.h", - "src/base/optional.h", "src/base/overflowing-math.h", "src/base/page-allocator.cc", "src/base/page-allocator.h", @@ -1268,6 +1317,7 @@ filegroup( "src/builtins/builtins.cc", "src/builtins/builtins-inl.h", "src/builtins/builtins.h", + "src/builtins/builtins-abstract-module-source.cc", "src/builtins/builtins-api.cc", "src/builtins/builtins-array.cc", "src/builtins/builtins-arraybuffer.cc", @@ -1402,6 +1452,8 @@ filegroup( "src/common/ptr-compr.cc", "src/common/ptr-compr.h", "src/common/ptr-compr-inl.h", + "src/common/segmented-table.h", + "src/common/segmented-table-inl.h", "src/common/simd128.h", "src/compiler-dispatcher/lazy-compile-dispatcher.cc", "src/compiler-dispatcher/lazy-compile-dispatcher.h", @@ -2916,6 +2968,21 @@ filegroup( "src/wasm/wrappers.cc", ], "//conditions:default": [], + }) + select({ + ":is_v8_enable_drumbrake": [ + "src/wasm/interpreter/instruction-handlers.h", + "src/wasm/interpreter/wasm-interpreter.cc", + "src/wasm/interpreter/wasm-interpreter.h", + "src/wasm/interpreter/wasm-interpreter-inl.h", + "src/wasm/interpreter/wasm-interpreter-objects.cc", + "src/wasm/interpreter/wasm-interpreter-objects-inl.h", + "src/wasm/interpreter/wasm-interpreter-objects.h", + "src/wasm/interpreter/wasm-interpreter-runtime.cc", + "src/wasm/interpreter/wasm-interpreter-runtime-inl.h", + "src/wasm/interpreter/wasm-interpreter-runtime.h", + "src/wasm/interpreter/wasm-interpreter-simd.cc", + ], + "//conditions:default": [], }), ) @@ -3307,6 +3374,7 @@ filegroup( "src/compiler/turboshaft/store-store-elimination-phase.cc", "src/compiler/turboshaft/store-store-elimination-phase.h", "src/compiler/turboshaft/store-store-elimination-reducer-inl.h", + "src/compiler/turboshaft/string-view.h", "src/compiler/turboshaft/structural-optimization-reducer.h", "src/compiler/turboshaft/tracing.h", "src/compiler/turboshaft/type-assertions-phase.cc", @@ -3579,6 +3647,14 @@ filegroup( "src/builtins/builtins-wasm-gen.h", ], "//conditions:default": [], + }) + select({ + ":enable_drumbrake_x64": [ + "src/wasm/interpreter/x64/interpreter-builtins-x64.cc" + ], + ":enable_drumbrake_arm64": [ + "src/wasm/interpreter/arm64/interpreter-builtins-arm64.cc" + ], + "//conditions:default": [], }), ) diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 92e8541951384f..19e0d2b584790e 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -11,6 +11,7 @@ import("//build/config/mips.gni") import("//build/config/riscv.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build_overrides/build.gni") +import("//third_party/icu/config.gni") import("gni/snapshot_toolchain.gni") import("gni/v8.gni") @@ -141,11 +142,6 @@ declare_args() { # Enable code-generation-time checking of types in the CodeStubAssembler. v8_enable_verify_csa = false - # Enable pointer compression (sets -dV8_COMPRESS_POINTERS). - v8_enable_pointer_compression = "" - v8_enable_pointer_compression_shared_cage = "" - v8_enable_31bit_smis_on_64bit_arch = false - # Sets -dOBJECT_PRINT. v8_enable_object_print = "" @@ -339,6 +335,9 @@ declare_args() { # Sets -DV8_ENABLE_SANDBOX. v8_enable_sandbox = "" + # Explicitly disable leaptiering (on builds where it would otherwise be enabled). + v8_disable_leaptiering = "" + # Enable the memory corruption API. Useful for testing the sandbox. # The memory corruption API is only exposed to JavaScript if sandbox testing # mode is enabled at runtime, for example via --sandbox-fuzzing. @@ -391,6 +390,19 @@ declare_args() { # This is only used by nodejs. v8_scriptormodule_legacy_lifetime = false + # WebAssembly interpreter (DrumBrake) build flag. + v8_enable_drumbrake = false + + # Enable Wasm interpreter tracing. + v8_enable_drumbrake_tracing = false + + # On non-Desktop platforms, enable explicit bounds checks in the Wasm + # interpreter, where the bounds checking is done in the instruction handler, + # not using an unhandled exception filter (which also doesn't work with Win-ASAN). + v8_drumbrake_bounds_checks = + (is_win && (is_asan || is_ubsan || is_msan || is_tsan)) || + !(is_win || is_linux || is_mac) || v8_current_cpu != "x64" + # Enables pointer compression for 8GB heaps. # Sets -DV8_COMPRESS_POINTERS_8GB. v8_enable_pointer_compression_8gb = "" @@ -429,6 +441,9 @@ declare_args() { # ReadOnlySpace. v8_enable_extensible_ro_snapshot = true + # Enable Turboshaft CSA pipeline. + v8_enable_turboshaft_csa = false + # Use sticky mark-bits for separating object generations. v8_enable_sticky_mark_bits = false @@ -477,9 +492,11 @@ if (v8_enable_debug_code == "") { if (v8_enable_snapshot_native_code_counters == "") { v8_enable_snapshot_native_code_counters = v8_enable_debugging_features } -if (v8_enable_pointer_compression == "") { - v8_enable_pointer_compression = - v8_current_cpu == "arm64" || v8_current_cpu == "x64" + +if (v8_enable_drumbrake && v8_enable_webassembly) { + assert( + is_drumbrake_supported, + "DrumBrake is only available on x64, arm64 on Windows, Linux and MacOS.") } # Toggle pointer compression for correctness fuzzing when building the @@ -586,6 +603,10 @@ if (v8_enable_sandbox == "") { v8_enable_external_code_space && target_os != "fuchsia" } +if (v8_disable_leaptiering == "") { + v8_disable_leaptiering = false +} + if (v8_enable_static_roots == "") { # Static roots are only valid for builds with pointer compression and a # shared read-only heap. @@ -886,7 +907,7 @@ external_v8_defines = [ "V8_MAP_PACKING", "V8_IS_TSAN", "V8_ENABLE_CONSERVATIVE_STACK_SCANNING", - "V8_ENABLE_DIRECT_LOCAL", + "V8_ENABLE_DIRECT_HANDLE", "V8_MINORMS_STRING_SHORTCUTTING", "V8_HAVE_TARGET_OS", "V8_TARGET_OS_ANDROID", @@ -940,8 +961,8 @@ if (is_tsan) { if (v8_enable_conservative_stack_scanning) { enabled_external_v8_defines += [ "V8_ENABLE_CONSERVATIVE_STACK_SCANNING" ] } -if (v8_enable_direct_local) { - enabled_external_v8_defines += [ "V8_ENABLE_DIRECT_LOCAL" ] +if (v8_enable_direct_handle) { + enabled_external_v8_defines += [ "V8_ENABLE_DIRECT_HANDLE" ] } if (v8_shortcut_strings_in_minor_ms) { enabled_external_v8_defines += [ "V8_MINORMS_STRING_SHORTCUTTING" ] @@ -1258,6 +1279,15 @@ config("features") { if (v8_advanced_bigint_algorithms) { defines += [ "V8_ADVANCED_BIGINT_ALGORITHMS" ] } + if (v8_enable_drumbrake) { + defines += [ "V8_ENABLE_DRUMBRAKE" ] + if (v8_enable_drumbrake_tracing) { + defines += [ "V8_ENABLE_DRUMBRAKE_TRACING" ] + } + if (v8_drumbrake_bounds_checks) { + defines += [ "V8_DRUMBRAKE_BOUNDS_CHECKS" ] + } + } if (v8_enable_memory_corruption_api) { defines += [ "V8_ENABLE_MEMORY_CORRUPTION_API" ] } @@ -1291,9 +1321,6 @@ config("features") { if (v8_enable_builtin_jump_table_switch) { defines += [ "V8_ENABLE_BUILTIN_JUMP_TABLE_SWITCH" ] } - if (v8_enable_direct_handle) { - defines += [ "V8_ENABLE_DIRECT_HANDLE" ] - } if (v8_enable_extensible_ro_snapshot) { defines += [ "V8_ENABLE_EXTENSIBLE_RO_SNAPSHOT" ] } @@ -1306,6 +1333,9 @@ config("features") { if (v8_enable_experimental_tsa_builtins) { defines += [ "V8_ENABLE_EXPERIMENTAL_TSA_BUILTINS" ] } + if (v8_disable_leaptiering) { + defines += [ "V8_DISABLE_LEAPTIERING" ] + } } config("toolchain") { @@ -1445,6 +1475,9 @@ config("toolchain") { if (!is_clang) { cflags += [ "-ffp-contract=off" ] } + if (riscv_use_sv39) { + defines += [ "RISCV_USE_SV39" ] + } } if (v8_current_cpu == "riscv32") { @@ -2420,6 +2453,15 @@ template("run_mksnapshot") { sources = [] + if (icu_use_data_file) { + deps += [ "//third_party/icu:copy_icudata" ] + if (host_byteorder == "big") { + sources += [ "$root_out_dir/icudtb.dat" ] + } else { + sources += [ "$root_out_dir/icudtl.dat" ] + } + } + outputs = [] data = [] @@ -2479,6 +2521,10 @@ template("run_mksnapshot") { } } + if (v8_enable_turboshaft_csa) { + args += [ "--turboshaft-csa" ] + } + # This is needed to distinguish between generating code for the simulator # and cross-compiling. The latter may need to run code on the host with the # simulator but cannot use simulator-specific instructions. @@ -2720,7 +2766,6 @@ action("v8_dump_build_config") { "debugging_features=$v8_enable_debugging_features", "dict_property_const_tracking=$v8_dict_property_const_tracking", "direct_handle=$v8_enable_direct_handle", - "direct_local=$v8_enable_direct_local", "disassembler=$v8_enable_disassembler", "full_debug=$is_full_debug", "gdbjit=$v8_enable_gdbjit", @@ -2728,6 +2773,7 @@ action("v8_dump_build_config") { "has_maglev=$v8_enable_maglev", "has_turbofan=$v8_enable_turbofan", "has_webassembly=$v8_enable_webassembly", + "has_wasm_interpreter=$v8_enable_drumbrake", "i18n=$v8_enable_i18n_support", "is_android=$is_android", "is_ios=$is_ios", @@ -2777,7 +2823,6 @@ generated_file("v8_generate_features_json") { v8_enable_conservative_stack_scanning = v8_enable_conservative_stack_scanning v8_enable_direct_handle = v8_enable_direct_handle - v8_enable_direct_local = v8_enable_direct_local v8_enable_extensible_ro_snapshot = v8_enable_extensible_ro_snapshot v8_enable_gdbjit = v8_enable_gdbjit v8_enable_hugepage = v8_enable_hugepage @@ -2960,6 +3005,15 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-wasm-gen.cc", "src/builtins/builtins-wasm-gen.h", ] + + if (v8_enable_drumbrake) { + if (v8_current_cpu == "x64") { + sources += [ "src/wasm/interpreter/x64/interpreter-builtins-x64.cc" ] + } else if (v8_current_cpu == "arm64") { + sources += + [ "src/wasm/interpreter/arm64/interpreter-builtins-arm64.cc" ] + } + } } if (v8_current_cpu == "x86") { @@ -3324,6 +3378,8 @@ v8_header_set("v8_internal_headers") { "src/common/operation.h", "src/common/ptr-compr-inl.h", "src/common/ptr-compr.h", + "src/common/segmented-table-inl.h", + "src/common/segmented-table.h", "src/common/simd128.h", "src/compiler-dispatcher/lazy-compile-dispatcher.h", "src/compiler-dispatcher/optimizing-compile-dispatcher.h", @@ -3521,6 +3577,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/stack-check-lowering-reducer.h", "src/compiler/turboshaft/store-store-elimination-phase.h", "src/compiler/turboshaft/store-store-elimination-reducer-inl.h", + "src/compiler/turboshaft/string-view.h", "src/compiler/turboshaft/structural-optimization-reducer.h", "src/compiler/turboshaft/tracing.h", "src/compiler/turboshaft/type-assertions-phase.h", @@ -4395,6 +4452,18 @@ v8_header_set("v8_internal_headers") { "src/wasm/wasm-value.h", "src/wasm/well-known-imports.h", ] + + if (v8_enable_drumbrake) { + sources += [ + "src/wasm/interpreter/instruction-handlers.h", + "src/wasm/interpreter/wasm-interpreter-inl.h", + "src/wasm/interpreter/wasm-interpreter-objects-inl.h", + "src/wasm/interpreter/wasm-interpreter-objects.h", + "src/wasm/interpreter/wasm-interpreter-runtime-inl.h", + "src/wasm/interpreter/wasm-interpreter-runtime.h", + "src/wasm/interpreter/wasm-interpreter.h", + ] + } } if (v8_enable_wasm_simd256_revec) { @@ -4739,6 +4808,7 @@ v8_header_set("v8_internal_headers") { "src/codegen/riscv/constant-riscv-f.h", "src/codegen/riscv/constant-riscv-m.h", "src/codegen/riscv/constant-riscv-v.h", + "src/codegen/riscv/constant-riscv-zicond.h", "src/codegen/riscv/constant-riscv-zicsr.h", "src/codegen/riscv/constant-riscv-zifencei.h", "src/codegen/riscv/constants-riscv.h", @@ -4750,6 +4820,7 @@ v8_header_set("v8_internal_headers") { "src/codegen/riscv/extension-riscv-inl.h", "src/codegen/riscv/extension-riscv-m.h", "src/codegen/riscv/extension-riscv-v.h", + "src/codegen/riscv/extension-riscv-zicond.h", "src/codegen/riscv/extension-riscv-zicsr.h", "src/codegen/riscv/extension-riscv-zifencei.h", "src/codegen/riscv/interface-descriptors-riscv-inl.h", @@ -5284,6 +5355,7 @@ v8_source_set("v8_base_without_compiler") { "src/baseline/baseline.cc", "src/baseline/bytecode-offset-iterator.cc", "src/builtins/accessors.cc", + "src/builtins/builtins-abstract-module-source.cc", "src/builtins/builtins-api.cc", "src/builtins/builtins-array.cc", "src/builtins/builtins-arraybuffer.cc", @@ -5861,6 +5933,15 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/fuzzing/random-module-generation.cc", ] } + + if (v8_enable_drumbrake) { + sources += [ + "src/wasm/interpreter/wasm-interpreter-objects.cc", + "src/wasm/interpreter/wasm-interpreter-runtime.cc", + "src/wasm/interpreter/wasm-interpreter-simd.cc", + "src/wasm/interpreter/wasm-interpreter.cc", + ] + } } if (v8_enable_third_party_heap) { @@ -6101,6 +6182,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-f.cc", "src/codegen/riscv/extension-riscv-m.cc", "src/codegen/riscv/extension-riscv-v.cc", + "src/codegen/riscv/extension-riscv-zicond.cc", "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", "src/codegen/riscv/macro-assembler-riscv.cc", @@ -6140,6 +6222,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-f.cc", "src/codegen/riscv/extension-riscv-m.cc", "src/codegen/riscv/extension-riscv-v.cc", + "src/codegen/riscv/extension-riscv-zicond.cc", "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", "src/codegen/riscv/macro-assembler-riscv.cc", @@ -6462,7 +6545,6 @@ v8_component("v8_libbase") { "src/base/numbers/strtod.h", "src/base/once.cc", "src/base/once.h", - "src/base/optional.h", "src/base/overflowing-math.h", "src/base/page-allocator.cc", "src/base/page-allocator.h", diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 6b06081f88e887..4208189f466a67 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -39,6 +39,9 @@ vars = { # Fetch clang-tidy into the same bin/ directory as our clang binary. 'checkout_clang_tidy': False, + # Fetch clangd into the same bin/ directory as our clang binary. + 'checkout_clangd': False, + # Fetch and build V8 builtins with PGO profiles 'checkout_v8_builtins_pgo_profiles': False, @@ -57,7 +60,7 @@ vars = { 'checkout_fuchsia_no_hooks': False, # reclient CIPD package version - 'reclient_version': 're_client_version:0.150.1.d9707319-gomaip', + 'reclient_version': 're_client_version:0.157.0.d2566cec-gomaip', # Fetch configuration files required for the 'use_remoteexec' gn arg 'download_remoteexec_cfg': False, @@ -73,22 +76,22 @@ vars = { 'build_with_chromium': False, # GN CIPD package version. - 'gn_version': 'git_revision:b2afae122eeb6ce09c52d63f67dc53fc517dbdc8', + 'gn_version': 'git_revision:54f5b539df8c4e460b18c62a11132d77b5601136', # ninja CIPD package version - # https://chrome-infra-packages.appspot.com/p/infra/3pp/build_support/ninja-1_11_1/ - 'ninja_version': 'version:2@1.11.1.chromium.2', + # https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja + 'ninja_version': 'version:2@1.12.1.chromium.4', # siso CIPD package version - 'siso_version': 'git_revision:50a6db5dae3978d2d2e8dce29f6df024dde48d1b', + 'siso_version': 'git_revision:87262779ecc3482c8c60b070404b225107212d0d', # luci-go CIPD package version. - 'luci_go': 'git_revision:771ea9a614a104c71655f699ef82219a2a474817', + 'luci_go': 'git_revision:ad7b787aa0ee53a81bc88fb4f7fee7a3ff1e8c29', # 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:22.20240717.4.1', + 'fuchsia_version': 'version:23.20240815.4.1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_build-tools_version @@ -121,14 +124,14 @@ vars = { # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_tools-lint_version # and whatever else without interference from each other. - 'android_sdk_cmdline-tools_version': 'mU9jm4LkManzjSzRquV1UIA7fHBZ2pK7NtbCXxoVnVUC', + 'android_sdk_cmdline-tools_version': 'fv6JzkTqfxfIbmsRC8u1b2y0EQO7yQDMDzY3-g0NVu4C', } deps = { 'build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + '7a8285c06acd753e6228263f48e5595e20ca1577', + Var('chromium_url') + '/chromium/src/build.git' + '@' + '7a468ed1849454cffabf4a64110c24e6f1da2c51', 'buildtools': - Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '3ef44a2b92d5dd1faa5189a06f3a5febe6db2d58', + Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '60a590902cf146c282f15242401bd8543256e2a2', 'buildtools/linux64': { 'packages': [ { @@ -174,7 +177,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' + '@' + 'b01075d87cf48f69a468d75a0eb7c372902965c7', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'bcb42e339dbac06f2f9902046b1fbf62562e0cd3', 'third_party/android_platform': { 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + '6337c445f9963ec3914e7e0c5787941d07b46509', 'condition': 'checkout_android', @@ -221,22 +224,22 @@ deps = { 'packages': [ { 'package': 'chromium/third_party/android_toolchain/android_toolchain', - 'version': 'h9HeidXTeHQ-oskldbqCZx26-7VrVvXpLfqOI87uy4QC', + 'version': 'Idl-vYnWGnM8K3XJhM3h6zjYVDXlnljVz3FE00V9IM8C', }, ], 'condition': 'checkout_android', 'dep_type': 'cipd', }, 'third_party/boringssl': { - 'url': Var('chromium_url') + '/chromium/src/third_party/boringssl.git' + '@' + '35f4fcbdeae229a56fd50320dc03ae6de407aca4', + 'url': Var('chromium_url') + '/chromium/src/third_party/boringssl.git' + '@' + '4d98a91cde88f349b96f4018c00053b6699ffd88', 'condition': "checkout_centipede_deps", }, 'third_party/boringssl/src': { - 'url': Var('boringssl_url') + '/boringssl.git' + '@' + 'f01108e4761e1d4189cb134322c3cb01dc71ef87', + 'url': Var('boringssl_url') + '/boringssl.git' + '@' + '11f334121fd0d13830fefdf08041183da2d30ef3', 'condition': "checkout_centipede_deps", }, 'third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + '16999365265c9850d7b5c46e53ddd52aca56f8dc', + 'url': Var('chromium_url') + '/catapult.git' + '@' + '799e21b232f23f6c1391abfd44fe8ab1dd95bd9b', 'condition': 'checkout_android', }, 'third_party/clang-format/script': @@ -250,7 +253,7 @@ deps = { 'condition': 'checkout_android', }, 'third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + 'cdcdd6efeec145eb246eeac20c78f2c55c9d393e', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '0bc7c4832e4f2d453e4826c9a2e1197e11bd6ec7', 'third_party/fp16/src': Var('chromium_url') + '/external/github.com/Maratyszcza/FP16.git' + '@' + '0a92994d729ff76a58f692d3028ca1b64b145d91', 'third_party/fuchsia-gn-sdk': { @@ -280,7 +283,7 @@ deps = { 'third_party/fuzztest/src': Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + '32eb84a95951fa3a0148fb3e6a1a02f830ded136', 'third_party/googletest/src': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'cee1ba1f24fb12b9ae8f31e70dca3f73dbb12cc2', + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'ff233bdd4cac0a0bf6e5cd45bda3406814cb2796', 'third_party/highway/src': Var('chromium_url') + '/external/github.com/google/highway.git' + '@' + '8295336dd70f1201d42c22ab5b0861de38cf8fbf', 'third_party/icu': @@ -300,125 +303,153 @@ 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' + '@' + '6bb75caa139ee1e686d2205910454cf6ea212e58', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + 'f801c947082a3e0a4b48780303526b73905f6ecd', 'third_party/libc++abi/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'a3c7d3e2f3e1e724b4651891b1a71257cbd88acc', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'eb6567388e89d9730c76dee71d68ac82e4a1abf6', 'third_party/libunwind/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + 'd09db732ff68f40fd3581306c650b17ea1955b4e', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '116c20dae60d84a77005697cf29f72783f81b0f9', 'third_party/llvm-build/Release+Asserts': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/clang-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': '2c48fb44f408328f59482a1dafb2143bb8b6b04be23f407600117e6f6d4fa437', - 'size_bytes': 51489572, - 'generation': 1721105679311662, + 'object_name': 'Linux_x64/clang-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': '32ac9d9864a6bd99242f1a97778b3a074ac1151ce3eca369903f2ef5337c787a', + 'size_bytes': 52250752, + 'generation': 1723267014378582, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Linux_x64/clang-tidy-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': '3570497c3c507be0f8f4c0aa149a57fc600ed49252da42676996ea651df05e60', - 'size_bytes': 13081104, - 'generation': 1721105679453016, + 'object_name': 'Linux_x64/clang-tidy-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': '5fd3fb73ceef73593fa09f8228283aec9f7798b648bf450e87f071a097be213b', + 'size_bytes': 13217676, + 'generation': 1723267014627839, 'condition': 'host_os == "linux" and checkout_clang_tidy', }, { - 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': 'dd6f1c05d5fe244b4524af86e6aa20de2d730f7d7e01fe4002b5aa72347b7658', - 'size_bytes': 2357488, - 'generation': 1721105679795112, + 'object_name': 'Linux_x64/clangd-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': '6e1fe97f8b7131591233d8a2df1ff289ffb878c3fc6834c978a86273f7c00b6b', + 'size_bytes': 26125984, + 'generation': 1723267014767012, + 'condition': 'host_os == "linux" and checkout_clangd', + }, + { + 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'ef317481472926d3e2a82e2d2a02cde78685002b4c9923df476108906022d792', + 'size_bytes': 2374748, + 'generation': 1723267015213805, 'condition': 'host_os == "linux" and checkout_clang_coverage_tools', }, { - 'object_name': 'Linux_x64/llvmobjdump-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': 'a93d8b39ac573376a2db77b04f014d8751375de8c70ee16ca4713e5da467c5ec', - 'size_bytes': 5387304, - 'generation': 1721105679641287, + 'object_name': 'Linux_x64/llvmobjdump-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': '02be68f7c7c7bf679e1abff2745306b8385275017c89b2b13f638a941785f8c5', + 'size_bytes': 5386480, + 'generation': 1723267014930087, 'condition': '(checkout_linux or checkout_mac or checkout_android and host_os != "mac")', }, { - 'object_name': 'Mac/clang-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': '04956a3db535f4cf1ab0a6e40383cbb5db7d6ee09721e31a706d230af206eaa0', - 'size_bytes': 46446976, - 'generation': 1721105680965575, + 'object_name': 'Mac/clang-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': '5df8a609a7d2511343fbc20af1de3ed1682c3703fc074f21af1bf8bc2f58e491', + 'size_bytes': 47200408, + 'generation': 1723267016534642, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': 'c684d46962bd39f785a143c2b28a0400c6e6d41a610a04ad6982f7513b930a35', - 'size_bytes': 865444, - 'generation': 1721105687851327, + 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'ffc72ff3fca85f31340c164aab480bd2babfaa6219ff12e93b81f0056309da55', + 'size_bytes': 869616, + 'generation': 1723267034708598, 'condition': 'checkout_mac and not host_os == "mac"', }, { - 'object_name': 'Mac/clang-tidy-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': '1bcfd396959c5f0e835e33f7bd15f29b2a1b1b27c619480dab767d034da48098', - 'size_bytes': 12650532, - 'generation': 1721105681146275, + 'object_name': 'Mac/clang-tidy-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'd02b9a39491d2ff3a291778de87b2a72f5885d01a8093518cb5612b97353ac2a', + 'size_bytes': 12805336, + 'generation': 1723267016822831, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_tidy', }, { - 'object_name': 'Mac/llvm-code-coverage-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': 'dbaf0d0bc4d19be0a9bd033b94033a2e9f826f8ed4ec3e9e6fa732ca3b4f1b6f', - 'size_bytes': 2234200, - 'generation': 1721105681470376, + 'object_name': 'Mac/clangd-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'ce09141be75350f0f932fcda14d8b906d2869674d79ef5a10a3e60a9a8d3ccee', + 'size_bytes': 26372428, + 'generation': 1723267016957114, + 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clangd', + }, + { + 'object_name': 'Mac/llvm-code-coverage-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'c0ac62ff01f1ce6e5d30134cb0f83fd8eabf858dfb33d07209a6b40d8f1ae789', + 'size_bytes': 2248664, + 'generation': 1723267017743181, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Mac_arm64/clang-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': '3d8d0a32604b9c8f9add4865d4e2b4950607d2a201bcd1c3de9e67e2998f1a84', - 'size_bytes': 42076344, - 'generation': 1721105689042846, + 'object_name': 'Mac_arm64/clang-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'f4a384ecdaa051ba4786c9e6c46f9101a751b1a5c5ad4bf0d217c4ba71e0ff30', + 'size_bytes': 42737720, + 'generation': 1723267036349494, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Mac_arm64/clang-tidy-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': '12524e94777f1d78489f58bcd966a341c8a61dca56175c7d6e8835240b2dcade', - 'size_bytes': 11612984, - 'generation': 1721105689155910, + 'object_name': 'Mac_arm64/clang-tidy-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': '2769378fd2891af945f8d29b5eaf05b4ab0450b2d086539df1c78c684e64be14', + 'size_bytes': 11740656, + 'generation': 1723267036269250, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_tidy', }, { - 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': '85db7e11d059902cd2c3d04e1d0380524d0ef4bf6ec3c93f0afdfd663d8b2a64', - 'size_bytes': 2005884, - 'generation': 1721105689448152, + 'object_name': 'Mac_arm64/clangd-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'a35dfb99903a487e06d685712e461125978c76ba8eaa99e9f5742e63d3e67444', + 'size_bytes': 23470088, + 'generation': 1723267036383208, + 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clangd', + }, + { + 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': '574a0d7c560aae964d8bdcd85f0145077b1324e79eee4a3dd1636ab7aefc59e5', + 'size_bytes': 2010540, + 'generation': 1723267036758678, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/clang-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': '34ba04b75548fdce4b3d2ba9dc8320a11afb0cad8622d537c1cf37f1c5587bab', - 'size_bytes': 41800448, - 'generation': 1721105697679553, + 'object_name': 'Win/clang-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'e255af29c29a741cf39c3000b612466ff805a99766d26ac86ec2afcb4ca0c922', + 'size_bytes': 44019080, + 'generation': 1723267056892790, 'condition': 'host_os == "win"', }, { - 'object_name': 'Win/clang-tidy-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': '41fe89c54964a6a8efb66c398dbf763e8a4aca6a675c6f4d15a94c5236ba1ab7', - 'size_bytes': 12869556, - 'generation': 1721105697770165, + 'object_name': 'Win/clang-tidy-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'a86aa579fc90a053b94874a8c79daeb7f3bbd77107fb460c6d0a7959cefb7e61', + 'size_bytes': 13055812, + 'generation': 1723267057185720, 'condition': 'host_os == "win" and checkout_clang_tidy', }, { - 'object_name': 'Win/clang-win-runtime-library-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': 'ce7886ecbfb129660a14cc11c4eacd6a2ef6488b36a88a7afb71a8cd22277da0', - 'size_bytes': 2842872, - 'generation': 1721105704724295, + 'object_name': 'Win/clang-win-runtime-library-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': '6d89f358769ef50d008194e0ab9e8d4d80b8d6ffc0095ed44aef925d900aa743', + 'size_bytes': 2873772, + 'generation': 1723267074433695, 'condition': 'checkout_win and not host_os == "win"', }, { - 'object_name': 'Win/llvm-code-coverage-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': 'e5778f9a2fa59936676579b01b3b576d8c545b72e5261c47a36751d4f1f6b61a', - 'size_bytes': 2357104, - 'generation': 1721105698068261, + 'object_name': 'Win/clangd-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'e2b69a726f794005a333ae66a0ef5c0258872a19bc4506eff23f23fdee75ba5c', + 'size_bytes': 25053884, + 'generation': 1723267057351794, + 'condition': 'host_os == "win" and checkout_clangd', + }, + { + 'object_name': 'Win/llvm-code-coverage-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': 'e68e7c7ecbc7b2fc4f7ec3e97565a7f12bab1d195d22bc76959f3a88b1462ac1', + 'size_bytes': 2376020, + 'generation': 1723267057803475, 'condition': 'host_os == "win" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/llvmobjdump-llvmorg-19-init-14561-gecea8371-3.tar.xz', - 'sha256sum': 'ad7d9162e1632b5c64188f95362318f0d31e09002be0615df847f2c23cddef4c', - 'size_bytes': 5362484, - 'generation': 1721105697937832, + 'object_name': 'Win/llvmobjdump-llvmorg-20-init-1009-g7088a5ed-10.tar.xz', + 'sha256sum': '801714415847b8efea7252b1072b8647f92ba0e946480b3db9b156900e42ab55', + 'size_bytes': 5392812, + 'generation': 1723267057506056, 'condition': 'checkout_linux or checkout_mac or checkout_android and host_os == "win"', }, ], @@ -430,7 +461,7 @@ deps = { 'third_party/ninja': { 'packages': [ { - 'package': 'infra/3pp/build_support/ninja-1_11_1/${{platform}}', + 'package': 'infra/3pp/tools/ninja/${{platform}}', 'version': Var('ninja_version'), } ], @@ -439,7 +470,7 @@ deps = { }, 'third_party/perfetto': Var('android_url') + '/platform/external/perfetto.git' + '@' + '6fc824d618d2f06b5d9cd8655ba0419b6b3b366e', - 'third_party/protobuf_chrome': + 'third_party/protobuf': Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + 'da2fe725b80ac0ba646fbf77d0ce5b4ac236f823', 'third_party/re2/src': Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + '6dcd83d60f7944926bfd308cc13979fc53dd69ca', @@ -458,9 +489,9 @@ deps = { 'condition': 'not build_with_chromium and host_cpu != "s390" and host_os != "zos" and host_cpu != "ppc"', }, 'third_party/zlib': - Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + 'c2469fdd73f192383d2d94288da0ff5b9a3869f5', + Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + 'd3aea2341cdeaf7e717bc257a59aa7a9407d318a', 'tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '4dc76da47b1145e53e508a23c1bf2204cf5ee7ee', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '63b7be17f8981d716ea9a0d65bb04654d79548a8', 'tools/luci-go': { 'packages': [ { @@ -478,7 +509,7 @@ deps = { 'tools/protoc_wrapper': Var('chromium_url') + '/chromium/src/tools/protoc_wrapper.git' + '@' + 'dbcbea90c20ae1ece442d8ef64e61c7b10e2b013', 'third_party/abseil-cpp': { - 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '9d1552f25c3d9e9114b7d7aed55790570a99bc4d', + 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + 'ed3733b91e472a1e7a641c1f0c1e6c0ea698e958', 'condition': 'not build_with_chromium', }, 'third_party/zoslib': { diff --git a/deps/v8/bazel/defs.bzl b/deps/v8/bazel/defs.bzl index 520a311595e488..6a3c868b002142 100644 --- a/deps/v8/bazel/defs.bzl +++ b/deps/v8/bazel/defs.bzl @@ -549,7 +549,6 @@ def build_config_content(cpu, icu): ("debugging_features", "false"), ("dict_property_const_tracking", "false"), ("direct_handle", "false"), - ("direct_local", "false"), ("disassembler", "false"), ("full_debug", "false"), ("gdbjit", "false"), @@ -557,6 +556,7 @@ def build_config_content(cpu, icu): ("has_maglev", "true"), ("has_turbofan", "true"), ("has_webassembly", "false"), + ("has_wasm_interpreter", "false"), ("i18n", icu), ("is_android", "false"), ("is_ios", "false"), diff --git a/deps/v8/build_overrides/build.gni b/deps/v8/build_overrides/build.gni index 0a1fc3c46d23a6..29acce40046bdf 100644 --- a/deps/v8/build_overrides/build.gni +++ b/deps/v8/build_overrides/build.gni @@ -17,15 +17,6 @@ build_with_node = false # chromium build. perfetto_build_with_embedder = true -# TODO(https://crbug.com/337736622): Perfetto and FuzzTest need to know the -# path to protobuf targets. V8 stores them in a different location than Chrome -# until M129. Thereafter, it can move to //third_party/protobuf and these -# variables can be removed. -protobuf_target_prefix = "//third_party/protobuf_chrome/" -perfetto_protobuf_target_prefix = protobuf_target_prefix -perfetto_protobuf_gni = "//third_party/protobuf_chrome/proto_library.gni" -perfetto_protobuf_src_dir = "//third_party/protobuf_chrome/src" - # We use Perfetto's Trace Processor to convert traces to the legacy JSON # format. enable_perfetto_trace_processor = true diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index 9ee57a49806c1b..b606c1b85b06a4 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -118,12 +118,9 @@ declare_args() { # Scan the call stack conservatively during garbage collection. v8_enable_conservative_stack_scanning = false - # Use direct pointers in internal (direct) handles. + # Use direct pointers in handles (v8::internal::Handle and v8::Local). v8_enable_direct_handle = "" - # Use direct pointers in local handles. - v8_enable_direct_local = "" - # Check for off-stack allocated local handles. v8_enable_local_off_stack_check = false @@ -166,6 +163,11 @@ declare_args() { # Location of zlib. v8_zlib_path = "//third_party/zlib" + # Enable pointer compression (sets -dV8_COMPRESS_POINTERS). + v8_enable_pointer_compression = "" + v8_enable_pointer_compression_shared_cage = "" + v8_enable_31bit_smis_on_64bit_arch = false + # Change code emission and runtime features to be CET shadow-stack compliant # (incomplete and experimental). v8_enable_cet_shadow_stack = false @@ -209,6 +211,18 @@ if (v8_enable_webassembly == "") { assert(!(v8_enable_webassembly && v8_enable_lite_mode), "Webassembly is not available in lite mode.") +if (v8_enable_pointer_compression == "") { + v8_enable_pointer_compression = + v8_current_cpu == "arm64" || v8_current_cpu == "x64" +} + +# The Wasm interpreter is currently supported only on arm64 and x64, on +# Windows, Linux and MacOS. +is_drumbrake_supported = + v8_enable_webassembly && v8_enable_pointer_compression && + (v8_current_cpu == "x64" || v8_current_cpu == "arm64") && + (target_os == "win" || target_os == "linux" || target_os == "mac") + # Turbofan is enabled by default, except in lite mode. if (v8_enable_turbofan == "") { v8_enable_turbofan = !v8_enable_lite_mode @@ -221,9 +235,6 @@ assert(v8_enable_turbofan || !v8_enable_webassembly, if (v8_enable_direct_handle == "") { v8_enable_direct_handle = v8_enable_conservative_stack_scanning } -if (v8_enable_direct_local == "") { - v8_enable_direct_local = v8_enable_conservative_stack_scanning -} # Points to // in v8 stand-alone or to //v8/ in chromium. We need absolute # paths for all configs in templates as they are shared in different diff --git a/deps/v8/include/cppgc/garbage-collected.h b/deps/v8/include/cppgc/garbage-collected.h index 6737c8be49aca4..dfd758a35cfd95 100644 --- a/deps/v8/include/cppgc/garbage-collected.h +++ b/deps/v8/include/cppgc/garbage-collected.h @@ -94,6 +94,14 @@ class GarbageCollectedMixin { public: using IsGarbageCollectedMixinTypeMarker = void; + // Must use MakeGarbageCollected. + void* operator new(size_t) = delete; + void* operator new[](size_t) = delete; + // The garbage collector is taking care of reclaiming the object. + // Not override the non-array varaint of `delete` to not conflict with the + // operator in GarbageCollected above. + void operator delete[](void*) = delete; + /** * This Trace method must be overriden by objects inheriting from * GarbageCollectedMixin. diff --git a/deps/v8/include/cppgc/internal/compiler-specific.h b/deps/v8/include/cppgc/internal/compiler-specific.h index 595b6398cb720a..175156ca6cbc89 100644 --- a/deps/v8/include/cppgc/internal/compiler-specific.h +++ b/deps/v8/include/cppgc/internal/compiler-specific.h @@ -5,6 +5,8 @@ #ifndef INCLUDE_CPPGC_INTERNAL_COMPILER_SPECIFIC_H_ #define INCLUDE_CPPGC_INTERNAL_COMPILER_SPECIFIC_H_ +#include "v8config.h" // NOLINT(build/include_directory) + namespace cppgc { #if defined(__has_attribute) @@ -21,7 +23,13 @@ namespace cppgc { // [[no_unique_address]] comes in C++20 but supported in clang with -std >= // c++11. -#if CPPGC_HAS_CPP_ATTRIBUTE(no_unique_address) +#if defined(V8_CC_MSVC) && CPPGC_HAS_CPP_ATTRIBUTE(msvc::no_unique_address) +// Unfortunately MSVC ignores [[no_unique_address]] (see +// https://devblogs.microsoft.com/cppblog/msvc-cpp20-and-the-std-cpp20-switch/#msvc-extensions-and-abi), +// and clang-cl matches it for ABI compatibility reasons. We need to prefer +// [[msvc::no_unique_address]] when available if we actually want any effect. +#define CPPGC_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]] +#elif CPPGC_HAS_CPP_ATTRIBUTE(no_unique_address) #define CPPGC_NO_UNIQUE_ADDRESS [[no_unique_address]] #else #define CPPGC_NO_UNIQUE_ADDRESS diff --git a/deps/v8/include/v8-callbacks.h b/deps/v8/include/v8-callbacks.h index 6096301258719e..7a8f8abeb402d9 100644 --- a/deps/v8/include/v8-callbacks.h +++ b/deps/v8/include/v8-callbacks.h @@ -359,7 +359,7 @@ enum class ModuleImportPhase { * The import_attributes are import attributes for this request in the form: * [key1, value1, key2, value2, ...] where the keys and values are of type * v8::String. Note, unlike the FixedArray passed to ResolveModuleCallback and - * returned from ModuleRequest::GetImportAssertions(), this array does not + * returned from ModuleRequest::GetImportAttributes(), this array does not * contain the source Locations of the attributes. * * The embedder must compile, instantiate, evaluate the Module, and diff --git a/deps/v8/include/v8-fast-api-calls.h b/deps/v8/include/v8-fast-api-calls.h index 1cd99cb880f023..18466688cf90cb 100644 --- a/deps/v8/include/v8-fast-api-calls.h +++ b/deps/v8/include/v8-fast-api-calls.h @@ -589,37 +589,10 @@ struct FastApiCallbackOptions { v8::Isolate* isolate = nullptr; - /** - * If the callback wants to signal an error condition or to perform an - * allocation, it must set options.fallback to true and do an early return - * from the fast method. Then V8 checks the value of options.fallback and if - * it's true, falls back to executing the SlowCallback, which is capable of - * reporting the error (either by throwing a JS exception or logging to the - * console) or doing the allocation. It's the embedder's responsibility to - * ensure that the fast callback is idempotent up to the point where error and - * fallback conditions are checked, because otherwise executing the slow - * callback might produce visible side-effects twice. - */ - V8_DEPRECATED( - "It is not necessary to use the `fallback` flag anymore, as it is " - "possible now to trigger GC, throw exceptions, and call back into " - "JavaScript even in API functions called with a fast API call.") - bool fallback = false; - /** * The `data` passed to the FunctionTemplate constructor, or `undefined`. */ v8::Local data; - - /** - * When called from WebAssembly, a view of the calling module's memory. - */ - V8_DEPRECATED( - "The wasm memory should either be provided as a field of the receiver, " - "the data object of the FunctionTemplate, or as a normal parameter of " - "the API function. Since regular API calls don't have this magic " - "`wasm_memory parameter, one of the options above should be possible.") - FastApiTypedArray* const wasm_memory = nullptr; }; namespace internal { diff --git a/deps/v8/include/v8-function-callback.h b/deps/v8/include/v8-function-callback.h index 7208c19ebf62c6..9ff4c59588df8a 100644 --- a/deps/v8/include/v8-function-callback.h +++ b/deps/v8/include/v8-function-callback.h @@ -325,7 +325,7 @@ class PropertyCallbackInfo { static constexpr int kSize = kArgsLength * internal::kApiSystemPointerSize; - explicit PropertyCallbackInfo() = default; + PropertyCallbackInfo() = default; mutable internal::Address args_[kArgsLength]; }; diff --git a/deps/v8/include/v8-function.h b/deps/v8/include/v8-function.h index 50f730f3929fe5..d28d4b50087c13 100644 --- a/deps/v8/include/v8-function.h +++ b/deps/v8/include/v8-function.h @@ -52,6 +52,10 @@ class V8_EXPORT Function : public Object { Local context, int argc, Local argv[], SideEffectType side_effect_type = SideEffectType::kHasSideEffect) const; + V8_WARN_UNUSED_RESULT MaybeLocal Call(v8::Isolate* isolate, + Local context, + Local recv, int argc, + Local argv[]); V8_WARN_UNUSED_RESULT MaybeLocal Call(Local context, Local recv, int argc, Local argv[]); diff --git a/deps/v8/include/v8-handle-base.h b/deps/v8/include/v8-handle-base.h index c2e1947a5dbd61..3075441e997910 100644 --- a/deps/v8/include/v8-handle-base.h +++ b/deps/v8/include/v8-handle-base.h @@ -90,7 +90,7 @@ class IndirectHandleBase { internal::Address* location_ = nullptr; }; -#ifdef V8_ENABLE_DIRECT_LOCAL +#ifdef V8_ENABLE_DIRECT_HANDLE /** * A base class for abstract handles containing direct pointers. @@ -130,7 +130,7 @@ class DirectHandleBase { internal::Address ptr_ = internal::ValueHelper::kEmpty; }; -#endif // V8_ENABLE_DIRECT_LOCAL +#endif // V8_ENABLE_DIRECT_HANDLE } // namespace v8::api_internal diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h index 8c385aa10a915b..e53c20253b2aff 100644 --- a/deps/v8/include/v8-internal.h +++ b/deps/v8/include/v8-internal.h @@ -946,12 +946,8 @@ class Internals { kIsolateCppHeapPointerTableOffset + kExternalPointerTableSize; static const int kIsolateTrustedPointerTableOffset = kIsolateTrustedCageBaseOffset + kApiSystemPointerSize; - static const int kIsolateExternalBufferTableOffset = - kIsolateTrustedPointerTableOffset + kTrustedPointerTableSize; - static const int kIsolateSharedExternalBufferTableAddressOffset = - kIsolateExternalBufferTableOffset + kExternalBufferTableSize; static const int kIsolateApiCallbackThunkArgumentOffset = - kIsolateSharedExternalBufferTableAddressOffset + kApiSystemPointerSize; + kIsolateTrustedPointerTableOffset + kTrustedPointerTableSize; #else static const int kIsolateApiCallbackThunkArgumentOffset = kIsolateCppHeapPointerTableOffset + kExternalPointerTableSize; @@ -978,7 +974,7 @@ class Internals { V(TrueValue, 0xc9) \ V(FalseValue, 0xad) \ V(EmptyString, 0xa1) \ - V(TheHoleValue, 0x741) + V(TheHoleValue, 0x791) using Tagged_t = uint32_t; struct StaticReadOnlyRoot { @@ -986,8 +982,9 @@ class Internals { EXPORTED_STATIC_ROOTS_PTR_LIST(DEF_ROOT) #undef DEF_ROOT - static constexpr Tagged_t kFirstStringMap = 0xe5; - static constexpr Tagged_t kLastStringMap = 0x47d; + // Use 0 for kStringMapLowerBound since string maps are the first maps. + static constexpr Tagged_t kStringMapLowerBound = 0; + static constexpr Tagged_t kStringMapUpperBound = 0x47d; #define PLUSONE(...) +1 static constexpr size_t kNumberOfExportedStaticRoots = @@ -1556,12 +1553,12 @@ constexpr WrappedIterator operator+( // whether direct local support is enabled. class ValueHelper final { public: -#ifdef V8_ENABLE_DIRECT_LOCAL +#ifdef V8_ENABLE_DIRECT_HANDLE static constexpr Address kTaggedNullAddress = 1; static constexpr Address kEmpty = kTaggedNullAddress; #else static constexpr Address kEmpty = kNullAddress; -#endif // V8_ENABLE_DIRECT_LOCAL +#endif // V8_ENABLE_DIRECT_HANDLE template V8_INLINE static bool IsEmpty(T* value) { @@ -1577,7 +1574,7 @@ class ValueHelper final { return handle.template value(); } -#ifdef V8_ENABLE_DIRECT_LOCAL +#ifdef V8_ENABLE_DIRECT_HANDLE template V8_INLINE static Address ValueAsAddress(const T* value) { @@ -1592,7 +1589,7 @@ class ValueHelper final { return *reinterpret_cast(slot); } -#else // !V8_ENABLE_DIRECT_LOCAL +#else // !V8_ENABLE_DIRECT_HANDLE template V8_INLINE static Address ValueAsAddress(const T* value) { @@ -1604,7 +1601,7 @@ class ValueHelper final { return reinterpret_cast(slot); } -#endif // V8_ENABLE_DIRECT_LOCAL +#endif // V8_ENABLE_DIRECT_HANDLE }; /** diff --git a/deps/v8/include/v8-isolate.h b/deps/v8/include/v8-isolate.h index bef9ebbd5568b7..08fcfc40f1f46e 100644 --- a/deps/v8/include/v8-isolate.h +++ b/deps/v8/include/v8-isolate.h @@ -937,6 +937,12 @@ class V8_EXPORT Isolate { */ Local GetIncumbentContext(); + /** + * Returns the host defined options set for currently running script or + * module, if available. + */ + MaybeLocal GetCurrentHostDefinedOptions(); + /** * Schedules a v8::Exception::Error with the given message. * See ThrowException for more details. Templatized to provide compile-time diff --git a/deps/v8/include/v8-local-handle.h b/deps/v8/include/v8-local-handle.h index 98feeeba76d47a..ef110a083dc3d6 100644 --- a/deps/v8/include/v8-local-handle.h +++ b/deps/v8/include/v8-local-handle.h @@ -150,11 +150,11 @@ class V8_EXPORT V8_NODISCARD HandleScope { /** * A base class for local handles. - * Its implementation depends on whether direct local support is enabled. + * Its implementation depends on whether direct handle support is enabled. * When it is, a local handle contains a direct pointer to the referenced * object, otherwise it contains an indirect pointer. */ -#ifdef V8_ENABLE_DIRECT_LOCAL +#ifdef V8_ENABLE_DIRECT_HANDLE template class LocalBase : public api_internal::DirectHandleBase { @@ -183,7 +183,7 @@ class LocalBase : public api_internal::DirectHandleBase { } }; -#else // !V8_ENABLE_DIRECT_LOCAL +#else // !V8_ENABLE_DIRECT_HANDLE template class LocalBase : public api_internal::IndirectHandleBase { @@ -215,7 +215,7 @@ class LocalBase : public api_internal::IndirectHandleBase { } }; -#endif // V8_ENABLE_DIRECT_LOCAL +#endif // V8_ENABLE_DIRECT_HANDLE /** * An object reference managed by the v8 garbage collector. @@ -400,13 +400,13 @@ class V8_TRIVIAL_ABI Local : public LocalBase, return Local(LocalBase::FromSlot(slot)); } -#ifdef V8_ENABLE_DIRECT_LOCAL +#ifdef V8_ENABLE_DIRECT_HANDLE friend class TypecheckWitness; V8_INLINE static Local FromAddress(internal::Address ptr) { return Local(LocalBase(ptr)); } -#endif // V8_ENABLE_DIRECT_LOCAL +#endif // V8_ENABLE_DIRECT_HANDLE V8_INLINE static Local New(Isolate* isolate, internal::Address value) { return Local(LocalBase::New(isolate, value)); @@ -444,7 +444,7 @@ class V8_TRIVIAL_ABI LocalUnchecked : public Local { : Local(other, Local::do_not_check) {} }; -#ifdef V8_ENABLE_DIRECT_LOCAL +#ifdef V8_ENABLE_DIRECT_HANDLE // Off-stack allocated direct locals must be registered as strong roots. // For off-stack indirect locals, this is not necessary. @@ -471,7 +471,7 @@ class StrongRootAllocator> : public StrongRootAllocatorBase { return deallocate_impl(reinterpret_cast(p), n); } }; -#endif // V8_ENABLE_DIRECT_LOCAL +#endif // V8_ENABLE_DIRECT_HANDLE } // namespace internal template @@ -479,7 +479,7 @@ class LocalVector { private: using element_type = internal::LocalUnchecked; -#ifdef V8_ENABLE_DIRECT_LOCAL +#ifdef V8_ENABLE_DIRECT_HANDLE using allocator_type = internal::StrongRootAllocator; static allocator_type make_allocator(Isolate* isolate) noexcept { @@ -491,7 +491,7 @@ class LocalVector { static allocator_type make_allocator(Isolate* isolate) noexcept { return allocator_type(); } -#endif // V8_ENABLE_DIRECT_LOCAL +#endif // V8_ENABLE_DIRECT_HANDLE using vector_type = std::vector; @@ -715,7 +715,7 @@ class V8_EXPORT V8_NODISCARD EscapableHandleScope V8_INLINE ~EscapableHandleScope() = default; template V8_INLINE Local Escape(Local value) { -#ifdef V8_ENABLE_DIRECT_LOCAL +#ifdef V8_ENABLE_DIRECT_HANDLE return value; #else if (value.IsEmpty()) return value; diff --git a/deps/v8/include/v8-object.h b/deps/v8/include/v8-object.h index d03b33acd7c83e..71a6c2c9c14911 100644 --- a/deps/v8/include/v8-object.h +++ b/deps/v8/include/v8-object.h @@ -690,14 +690,17 @@ class V8_EXPORT Object : public Value { int GetIdentityHash(); /** - * Clone this object with a fast but shallow copy. Values will point - * to the same values as the original object. + * Clone this object with a fast but shallow copy. Values will point to the + * same values as the original object. + * + * Prefer using version with Isolate parameter. */ - // TODO(dcarney): take an isolate and optionally bail out? + Local Clone(v8::Isolate* isolate); Local Clone(); /** * Returns the context in which the object was created. + * * Prefer using version with Isolate parameter. */ MaybeLocal GetCreationContext(v8::Isolate* isolate); @@ -705,6 +708,7 @@ class V8_EXPORT Object : public Value { /** * Shortcut for GetCreationContext(...).ToLocalChecked(). + * * Prefer using version with Isolate parameter. **/ Local GetCreationContextChecked(v8::Isolate* isolate); diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 56bfd7274826c0..5110f432077dce 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -1027,18 +1027,6 @@ class VirtualAddressSpace { const PagePermissions max_page_permissions_; }; -/** - * V8 Allocator used for allocating zone backings. - */ -class ZoneBackingAllocator { - public: - using MallocFn = void* (*)(size_t); - using FreeFn = void (*)(void*); - - virtual MallocFn GetMallocFn() const { return ::malloc; } - virtual FreeFn GetFreeFn() const { return ::free; } -}; - /** * Observer used by V8 to notify the embedder about entering/leaving sections * with high throughput of malloc/free operations. @@ -1075,14 +1063,6 @@ class Platform { return nullptr; } - /** - * Allows the embedder to specify a custom allocator used for zones. - */ - virtual ZoneBackingAllocator* GetZoneBackingAllocator() { - static ZoneBackingAllocator default_allocator; - return &default_allocator; - } - /** * Enables the embedder to respond in cases where V8 can't allocate large * blocks of memory. V8 retries the failed allocation once after calling this diff --git a/deps/v8/include/v8-primitive.h b/deps/v8/include/v8-primitive.h index 1adb9cbcb22515..426bb379099e26 100644 --- a/deps/v8/include/v8-primitive.h +++ b/deps/v8/include/v8-primitive.h @@ -388,6 +388,8 @@ class V8_EXPORT String : public Name { * regardless of the encoding, otherwise return NULL. The encoding of the * string is returned in encoding_out. */ + V8_INLINE ExternalStringResourceBase* GetExternalStringResourceBase( + v8::Isolate* isolate, Encoding* encoding_out) const; V8_INLINE ExternalStringResourceBase* GetExternalStringResourceBase( Encoding* encoding_out) const; @@ -878,6 +880,28 @@ String::ExternalStringResource* String::GetExternalStringResource() const { return result; } +String::ExternalStringResourceBase* String::GetExternalStringResourceBase( + v8::Isolate* isolate, String::Encoding* encoding_out) const { + using A = internal::Address; + using I = internal::Internals; + A obj = internal::ValueHelper::ValueAsAddress(this); + int type = I::GetInstanceType(obj) & I::kStringRepresentationAndEncodingMask; + *encoding_out = static_cast(type & I::kStringEncodingMask); + ExternalStringResourceBase* resource; + if (type == I::kExternalOneByteRepresentationTag || + type == I::kExternalTwoByteRepresentationTag) { + A value = I::ReadExternalPointerField( + isolate, obj, I::kStringResourceOffset); + resource = reinterpret_cast(value); + } else { + resource = GetExternalStringResourceBaseSlow(encoding_out); + } +#ifdef V8_ENABLE_CHECKS + VerifyExternalStringResourceBase(resource, *encoding_out); +#endif + return resource; +} + String::ExternalStringResourceBase* String::GetExternalStringResourceBase( String::Encoding* encoding_out) const { using A = internal::Address; diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 3451da26ba2d6b..d6741aec760827 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -1109,6 +1109,12 @@ class V8_EXPORT HeapProfiler { ObjectNameResolver* global_object_name_resolver = nullptr, bool hide_internals = true, bool capture_numeric_value = false); + /** + * Obtains list of Detached JS Wrapper Objects. This functon calls garbage + * collection, then iterates over traced handles in the isolate + */ + std::vector> GetDetachedJSWrapperObjects(); + /** * Starts tracking of heap objects population statistics. After calling * this method, all heap objects relocations done by the garbage collector diff --git a/deps/v8/include/v8-script.h b/deps/v8/include/v8-script.h index f4c7412c5bf6e5..c30d42502769c1 100644 --- a/deps/v8/include/v8-script.h +++ b/deps/v8/include/v8-script.h @@ -210,7 +210,7 @@ class V8_EXPORT Module : public Data { using ResolveModuleCallback = MaybeLocal (*)( Local context, Local specifier, - Local import_assertions, Local referrer); + Local import_attributes, Local referrer); /** * Instantiates the module and its dependencies. diff --git a/deps/v8/include/v8-template.h b/deps/v8/include/v8-template.h index ba5ff7bff5ada9..7b47c3b6282d24 100644 --- a/deps/v8/include/v8-template.h +++ b/deps/v8/include/v8-template.h @@ -9,6 +9,7 @@ #include #include "v8-data.h" // NOLINT(build/include_directory) +#include "v8-exception.h" // NOLINT(build/include_directory) #include "v8-function-callback.h" // NOLINT(build/include_directory) #include "v8-local-handle.h" // NOLINT(build/include_directory) #include "v8-memory-span.h" // NOLINT(build/include_directory) @@ -657,6 +658,18 @@ class V8_EXPORT FunctionTemplate : public Template { */ void SetClassName(Local name); + /** + * Set the interface name of the FunctionTemplate. This is provided as + * contextual information in an ExceptionPropagationMessage to the embedder. + */ + void SetInterfaceName(Local name); + + /** + * Provides information on the type of FunctionTemplate for embedder + * exception handling. + */ + void SetExceptionContext(ExceptionContext context); + /** * When set to true, no access check will be performed on the receiver of a * function call. Currently defaults to true, but this is subject to change. diff --git a/deps/v8/include/v8-util.h b/deps/v8/include/v8-util.h index b7d53f14f75fe4..05ade0a3dd5b44 100644 --- a/deps/v8/include/v8-util.h +++ b/deps/v8/include/v8-util.h @@ -182,7 +182,7 @@ class PersistentValueMapBase { */ Local Get(const K& key) { V* p = FromVal(Traits::Get(&impl_, key)); -#ifdef V8_ENABLE_DIRECT_LOCAL +#ifdef V8_ENABLE_DIRECT_HANDLE if (p == nullptr) return Local(); #endif return Local::New(isolate_, p); diff --git a/deps/v8/include/v8-value.h b/deps/v8/include/v8-value.h index ac04525d86d759..656b5719eff748 100644 --- a/deps/v8/include/v8-value.h +++ b/deps/v8/include/v8-value.h @@ -635,8 +635,9 @@ bool Value::QuickIsString() const { A obj = internal::ValueHelper::ValueAsAddress(this); if (!I::HasHeapObjectTag(obj)) return false; #if V8_STATIC_ROOTS_BOOL && !V8_MAP_PACKING - return I::CheckInstanceMapRange(obj, I::StaticReadOnlyRoot::kFirstStringMap, - I::StaticReadOnlyRoot::kLastStringMap); + return I::CheckInstanceMapRange(obj, + I::StaticReadOnlyRoot::kStringMapLowerBound, + I::StaticReadOnlyRoot::kStringMapUpperBound); #else return (I::GetInstanceType(obj) < I::kFirstNonstringType); #endif // V8_STATIC_ROOTS_BOOL diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index ac33d3075e472c..2f396c1c7a6d10 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -9,9 +9,9 @@ // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. #define V8_MAJOR_VERSION 12 -#define V8_MINOR_VERSION 8 -#define V8_BUILD_NUMBER 374 -#define V8_PATCH_LEVEL 33 +#define V8_MINOR_VERSION 9 +#define V8_BUILD_NUMBER 202 +#define V8_PATCH_LEVEL 18 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index 86b41a5b3cf7d3..1b6a37b2dd4154 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -392,8 +392,14 @@ path. Add it with -I to the command line # define V8_HAS_ATTRIBUTE_WEAK (__has_attribute(weak)) # define V8_HAS_CPP_ATTRIBUTE_NODISCARD (V8_HAS_CPP_ATTRIBUTE(nodiscard)) +#if defined(V8_CC_MSVC) +# define V8_HAS_CPP_ATTRIBUTE_NO_UNIQUE_ADDRESS \ + (V8_HAS_CPP_ATTRIBUTE(msvc::no_unique_address) || \ + V8_HAS_CPP_ATTRIBUTE(no_unique_address)) +#else # define V8_HAS_CPP_ATTRIBUTE_NO_UNIQUE_ADDRESS \ (V8_HAS_CPP_ATTRIBUTE(no_unique_address)) +#endif # define V8_HAS_BUILTIN_ADD_OVERFLOW (__has_builtin(__builtin_add_overflow)) # define V8_HAS_BUILTIN_ASSUME (__has_builtin(__builtin_assume)) @@ -671,7 +677,7 @@ path. Add it with -I to the command line // V8_NODISCARD Foo() { ... }; // [[nodiscard]] comes in C++17 but supported in clang with -std >= c++11. #if V8_HAS_CPP_ATTRIBUTE_NODISCARD -#define V8_NODISCARD +#define V8_NODISCARD [[nodiscard]] #else #define V8_NODISCARD /* NOT SUPPORTED */ #endif @@ -692,7 +698,15 @@ path. Add it with -I to the command line // [[no_unique_address]] comes in C++20 but supported in clang with // -std >= c++11. #if V8_HAS_CPP_ATTRIBUTE_NO_UNIQUE_ADDRESS +#if defined(V8_CC_MSVC) && V8_HAS_CPP_ATTRIBUTE(msvc::no_unique_address) +// Unfortunately MSVC ignores [[no_unique_address]] (see +// https://devblogs.microsoft.com/cppblog/msvc-cpp20-and-the-std-cpp20-switch/#msvc-extensions-and-abi), +// and clang-cl matches it for ABI compatibility reasons. We need to prefer +// [[msvc::no_unique_address]] when available if we actually want any effect. +#define V8_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]] +#else #define V8_NO_UNIQUE_ADDRESS [[no_unique_address]] +#endif #else #define V8_NO_UNIQUE_ADDRESS /* NOT SUPPORTED */ #endif diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index 838e65812faa3a..ce26b4df0a1c91 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -70,6 +70,7 @@ 'V8 Linux64 - builder (reclient compare)': 'release_x64_reclient', 'V8 Linux64 - official - builder': 'official_x64_on_release_branch', 'V8 Linux64 - debug builder': 'debug_x64', + 'V8 Linux64 - no leaptiering - debug builder': 'debug_x64_no_leaptiering', 'V8 Linux64 - no shared cage - debug builder': 'debug_x64_no_shared_cage', 'V8 Linux64 - external code space - debug - builder': 'debug_x64_external_code_space', 'V8 Linux64 - custom snapshot - debug builder': 'debug_x64_custom', @@ -154,43 +155,43 @@ 'V8 Centipede Linux64 ASAN - release builder': 'release_x64_asan_centipede', 'V8 Clusterfuzz Win64 ASAN - release builder': - 'release_x64_asan_no_lsan_verify_heap', + 'release_x64_asan_no_lsan_verify_heap_turboshaft_csa', # Note this is called a debug builder, but it uses a release build # configuration with dchecks (which enables DEBUG in V8), since win-asan # debug is not supported. 'V8 Clusterfuzz Win64 ASAN - debug builder': - 'release_x64_asan_no_lsan_verify_heap_dchecks', + 'release_x64_asan_no_lsan_verify_heap_dchecks_turboshaft_csa', 'V8 Clusterfuzz Mac64 ASAN - release builder': - 'release_x64_asan_no_lsan_verify_heap', + 'release_x64_asan_no_lsan_verify_heap_turboshaft_csa', 'V8 Clusterfuzz Mac64 ASAN - debug builder': - 'debug_x64_asan_no_lsan_static', + 'debug_x64_asan_no_lsan_static_turboshaft_csa', 'V8 Clusterfuzz Linux64 - release builder': - 'release_x64_correctness_fuzzer', - 'V8 Clusterfuzz Linux64 - debug builder': 'debug_x64', + 'release_x64_correctness_fuzzer_turboshaft_csa', + 'V8 Clusterfuzz Linux64 - debug builder': 'debug_x64_turboshaft_csa', 'V8 Clusterfuzz Linux64 ASAN no inline - release builder': - 'release_x64_asan_symbolized_verify_heap', + 'release_x64_asan_symbolized_verify_heap_turboshaft_csa', 'V8 Clusterfuzz Linux ASAN no inline - release builder': - 'release_x86_asan_symbolized_verify_heap', - 'V8 Clusterfuzz Linux64 ASAN - debug builder': 'debug_x64_asan', - 'V8 Clusterfuzz Linux ASAN - debug builder': 'debug_x86_asan', + 'release_x86_asan_symbolized_verify_heap_turboshaft_csa', + 'V8 Clusterfuzz Linux64 ASAN - debug builder': 'debug_x64_asan_turboshaft_csa', + 'V8 Clusterfuzz Linux ASAN - debug builder': 'debug_x86_asan_turboshaft_csa', 'V8 Clusterfuzz Linux64 ASAN arm64 - debug builder': - 'debug_simulate_arm64_asan', - 'V8 Clusterfuzz Linux - debug builder': 'debug_x86', + 'debug_simulate_arm64_asan_turboshaft_csa', + 'V8 Clusterfuzz Linux - debug builder': 'debug_x86_turboshaft_csa', 'V8 Clusterfuzz Linux ASAN arm - debug builder': - 'debug_simulate_arm_asan', + 'debug_simulate_arm_asan_turboshaft_csa', 'V8 Clusterfuzz Linux64 CFI - release builder': - 'release_x64_cfi_clusterfuzz', + 'release_x64_cfi_clusterfuzz_turboshaft_csa', 'V8 Clusterfuzz Linux MSAN no origins': - 'release_simulate_arm64_msan_no_origins', + 'release_simulate_arm64_msan_no_origins_turboshaft_csa', 'V8 Clusterfuzz Linux MSAN chained origins': - 'release_simulate_arm64_msan', - 'V8 Clusterfuzz Linux64 TSAN - release builder': 'release_x64_tsan', + 'release_simulate_arm64_msan_turboshaft_csa', + 'V8 Clusterfuzz Linux64 TSAN - release builder': 'release_x64_tsan_turboshaft_csa', 'V8 Clusterfuzz Linux64 UBSan - release builder': - 'release_x64_ubsan_recover', + 'release_x64_ubsan_recover_turboshaft_csa', 'V8 Clusterfuzz Linux64 sandbox testing - release builder': - 'release_x64_sandbox_testing', + 'release_x64_sandbox_testing_turboshaft_csa', 'V8 Clusterfuzz Linux64 ASAN sandbox testing - release builder': - 'release_x64_asan_sandbox_testing', + 'release_x64_asan_sandbox_testing_turboshaft_csa', }, 'client.v8.perf' : { # Arm @@ -273,6 +274,7 @@ 'v8_linux64_asan_centipede_compile_rel': 'release_x64_asan_centipede', 'v8_linux64_cppgc_non_default_compile_dbg': 'debug_x64_non_default_cppgc', 'v8_linux64_compile_dbg': 'debug_x64_trybot', + 'v8_linux64_no_leaptiering_compile_dbg': 'debug_x64_no_leaptiering', 'v8_linux64_no_shared_cage_compile_dbg': 'debug_x64_no_shared_cage', 'v8_linux64_coverage_dbg': 'debug_x64_coverage', 'v8_linux64_coverage_rel': 'release_x64_coverage', @@ -305,8 +307,8 @@ 'v8_linux64_arm64_no_wasm_compile_dbg': 'debug_arm64_webassembly_disabled', 'v8_linux64_verify_csa_compile_rel': 'release_x64_verify_csa', 'v8_linux64_asan_compile_rel': 'release_x64_asan_minimal_symbols', - 'v8_linux64_sandbox_testing_compile_rel': 'release_x64_sandbox_testing', - 'v8_linux64_asan_sandbox_testing_compile_rel': 'release_x64_asan_sandbox_testing', + 'v8_linux64_sandbox_testing_compile_rel': 'release_x64_sandbox_testing_turboshaft_csa', + 'v8_linux64_asan_sandbox_testing_compile_rel': 'release_x64_asan_sandbox_testing_turboshaft_csa', 'v8_linux64_cfi_compile_rel': 'release_x64_cfi', 'v8_linux64_fuzzilli_compile_rel': 'release_x64_fuzzilli', 'v8_linux64_loong64_compile_rel': 'release_simulate_loong64', @@ -454,14 +456,15 @@ # Debug configs for simulators. 'debug_simulate_arm': [ 'debug_bot', 'simulate_arm'], - 'debug_simulate_arm_asan': [ - 'debug_bot', 'simulate_arm', 'asan'], + 'debug_simulate_arm_asan_turboshaft_csa': [ + 'debug_bot', 'simulate_arm', 'asan', 'v8_enable_turboshaft_csa'], 'debug_simulate_arm_lite': [ 'debug_bot', 'simulate_arm', 'v8_enable_lite_mode'], 'debug_simulate_arm64': [ 'debug_bot', 'simulate_arm64'], - 'debug_simulate_arm64_asan': [ - 'debug_bot', 'simulate_arm64', 'asan', 'lsan'], + 'debug_simulate_arm64_asan_turboshaft_csa': [ + 'debug_bot', 'simulate_arm64', 'asan', 'lsan', + 'v8_enable_turboshaft_csa'], # Release configs for simulators. 'release_simulate_arm_gcmole': [ @@ -487,10 +490,11 @@ 'release_bot', 'simulate_arm64', 'msan'], 'release_simulate_arm64_msan_minimal_symbols': [ 'release_bot', 'simulate_arm64', 'msan', 'minimal_symbols'], - 'release_simulate_arm64_msan': [ - 'release_bot', 'simulate_arm64', 'msan'], - 'release_simulate_arm64_msan_no_origins': [ - 'release_bot', 'simulate_arm64', 'msan_no_origins'], + 'release_simulate_arm64_msan_no_origins_turboshaft_csa': [ + 'release_bot', 'simulate_arm64', 'msan_no_origins', + 'v8_enable_turboshaft_csa'], + 'release_simulate_arm64_msan_turboshaft_csa': [ + 'release_bot', 'simulate_arm64', 'msan', 'v8_enable_turboshaft_csa'], 'release_simulate_loong64': [ 'release_bot', 'simulate_loong64'], 'release_simulate_mips64el': [ @@ -582,25 +586,25 @@ 'release_bot', 'x64', 'asan', 'lsan', 'minimal_symbols'], 'release_x64_asan_no_lsan': [ 'release_bot', 'x64', 'asan'], - 'release_x64_asan_no_lsan_verify_heap': [ - 'release_bot', 'x64', 'asan', 'v8_verify_heap'], - 'release_x64_asan_no_lsan_verify_heap': [ - 'release_bot', 'x64', 'asan', 'v8_verify_heap'], - 'release_x64_asan_no_lsan_verify_heap_dchecks': [ + 'release_x64_asan_no_lsan_verify_heap_turboshaft_csa': [ + 'release_bot', 'x64', 'asan', 'v8_verify_heap', + 'v8_enable_turboshaft_csa'], + 'release_x64_asan_no_lsan_verify_heap_dchecks_turboshaft_csa': [ 'release_bot', 'x64', 'asan', 'dcheck_always_on', - 'v8_enable_slow_dchecks', 'v8_verify_heap'], - 'release_x64_sandbox_testing': [ - 'release_bot', 'x64', 'symbolized', 'v8_enable_memory_corruption_api'], - 'release_x64_asan_sandbox_testing': [ + 'v8_enable_slow_dchecks', 'v8_verify_heap', 'v8_enable_turboshaft_csa'], + 'release_x64_sandbox_testing_turboshaft_csa': [ + 'release_bot', 'x64', 'symbolized', 'v8_enable_memory_corruption_api', + 'v8_enable_turboshaft_csa'], + 'release_x64_asan_sandbox_testing_turboshaft_csa': [ 'release_bot', 'x64', 'asan', 'symbolized', - 'v8_enable_memory_corruption_api'], - 'release_x64_asan_symbolized_verify_heap': [ + 'v8_enable_memory_corruption_api', 'v8_enable_turboshaft_csa'], + 'release_x64_asan_symbolized_verify_heap_turboshaft_csa': [ 'release_bot', 'x64', 'asan', 'lsan', 'symbolized', - 'v8_verify_heap'], + 'v8_verify_heap', 'v8_enable_turboshaft_csa'], 'release_x64_cfi': [ 'release_bot', 'x64', 'cfi'], - 'release_x64_cfi_clusterfuzz': [ - 'release_bot', 'x64', 'cfi_clusterfuzz'], + 'release_x64_cfi_clusterfuzz_turboshaft_csa': [ + 'release_bot', 'x64', 'cfi_clusterfuzz', 'v8_enable_turboshaft_csa'], 'release_x64_coverage': [ 'release_bot', 'x64', 'clang_coverage'], 'release_x64_fuzzilli': [ @@ -610,8 +614,9 @@ 'release_bot', 'x64', 'gcmole'], 'release_x64_msvc': [ 'release_bot_no_reclient', 'x64', 'minimal_symbols', 'msvc'], - 'release_x64_correctness_fuzzer' : [ - 'release_bot', 'x64', 'v8_correctness_fuzzer'], + 'release_x64_correctness_fuzzer_turboshaft_csa' : [ + 'release_bot', 'x64', 'v8_correctness_fuzzer', + 'v8_enable_turboshaft_csa'], 'release_x64_disable_runtime_call_stats': [ 'release_bot', 'x64', 'v8_disable_runtime_call_stats'], 'release_x64_fuchsia': [ @@ -647,12 +652,14 @@ 'release_bot', 'x64', 'tsan', 'disable_concurrent_marking'], 'release_x64_tsan_minimal_symbols': [ 'release_bot', 'x64', 'tsan', 'minimal_symbols'], + 'release_x64_tsan_turboshaft_csa': [ + 'release_bot', 'x64', 'tsan', 'v8_enable_turboshaft_csa'], 'release_x64_ubsan': [ 'release_bot', 'x64', 'ubsan'], 'release_x64_ubsan_minimal_symbols': [ 'release_bot', 'x64', 'ubsan', 'minimal_symbols'], - 'release_x64_ubsan_recover': [ - 'release_bot', 'x64', 'ubsan_recover'], + 'release_x64_ubsan_recover_turboshaft_csa': [ + 'release_bot', 'x64', 'ubsan_recover', 'v8_enable_turboshaft_csa'], 'release_x64_shared_verify_heap': [ 'release_bot', 'x64', 'shared', 'v8_verify_heap'], 'release_x64_verify_builtins': [ @@ -678,13 +685,13 @@ # Debug configs for x64. 'debug_x64': [ 'debug_bot', 'x64'], - 'debug_x64_asan': [ - 'debug_bot', 'x64', 'asan', 'lsan'], + 'debug_x64_asan_turboshaft_csa': [ + 'debug_bot', 'x64', 'asan', 'lsan', 'v8_enable_turboshaft_csa'], 'debug_x64_asan_centipede': [ 'debug_bot', 'x64', 'asan', 'use_centipede'], - 'debug_x64_asan_no_lsan_static': [ - 'debug', 'static', 'reclient', 'v8_enable_slow_dchecks', 'v8_optimized_debug', - 'x64', 'asan'], + 'debug_x64_asan_no_lsan_static_turboshaft_csa': [ + 'debug', 'static', 'reclient', 'v8_enable_slow_dchecks', + 'v8_optimized_debug', 'x64', 'asan', 'v8_enable_turboshaft_csa'], 'debug_x64_conservative_stack_scanning': [ 'debug_bot', 'x64', 'conservative_stack_scanning'], 'debug_x64_coverage': [ @@ -701,6 +708,8 @@ 'debug_bot_no_reclient', 'x64', 'gcc', 'lld', 'no_custom_libcxx'], 'debug_x64_header_includes': [ 'debug_bot', 'x64', 'v8_check_header_includes'], + 'debug_x64_no_leaptiering': [ + 'debug_bot', 'x64', 'v8_disable_leaptiering'], 'debug_x64_no_shared_cage': [ 'debug_bot', 'x64', 'v8_disable_pointer_compression_shared_cage'], 'debug_x64_minimal_symbols': [ @@ -717,6 +726,8 @@ 'debug_bot', 'x64', 'v8_enable_sticky_mark_bits'], 'debug_x64_trybot': [ 'debug_trybot', 'x64'], + 'debug_x64_turboshaft_csa': [ + 'debug_bot', 'x64', 'v8_enable_turboshaft_csa'], 'debug_x64_dict_tracking_trybot': [ 'debug_trybot', 'x64', 'v8_enable_dict_property_const_tracking'], 'debug_x64_trybot_custom': [ @@ -730,8 +741,8 @@ # Debug configs for x86. 'debug_x86': [ 'debug_bot', 'x86'], - 'debug_x86_asan': [ - 'debug_bot', 'x86', 'asan', 'lsan'], + 'debug_x86_asan_turboshaft_csa': [ + 'debug_bot', 'x86', 'asan', 'lsan', 'v8_enable_turboshaft_csa'], 'debug_x86_minimal_symbols': [ 'debug_bot', 'x86', 'minimal_symbols'], 'debug_x86_msvc': [ @@ -740,15 +751,17 @@ 'debug_bot', 'x86', 'v8_no_i18n'], 'debug_x86_trybot': [ 'debug_trybot', 'x86'], + 'debug_x86_turboshaft_csa': [ + 'debug_bot', 'x86', 'v8_enable_turboshaft_csa'], 'debug_x86_vtunejit': [ 'debug_bot', 'x86', 'v8_enable_vtunejit'], 'full_debug_x86': [ 'debug', 'x86', 'reclient', 'v8_enable_slow_dchecks', 'v8_full_debug'], # Release configs for x86. - 'release_x86_asan_symbolized_verify_heap': [ + 'release_x86_asan_symbolized_verify_heap_turboshaft_csa': [ 'release_bot', 'x86', 'asan', 'lsan', 'symbolized', - 'v8_verify_heap'], + 'v8_verify_heap', 'v8_enable_turboshaft_csa'], 'release_x86_gcmole': [ 'release_bot', 'x86', 'gcmole'], 'release_x86_gcmole_trybot': [ @@ -1068,6 +1081,10 @@ 'gn_args': 'v8_control_flow_integrity=true', }, + 'v8_disable_leaptiering': { + 'gn_args': 'v8_disable_leaptiering=true', + }, + 'v8_disable_runtime_call_stats': { 'gn_args': 'v8_enable_runtime_call_stats=false', }, @@ -1132,6 +1149,10 @@ 'gn_args': 'v8_enable_test_features=true', }, + 'v8_enable_turboshaft_csa': { + 'gn_args': 'v8_enable_turboshaft_csa=true', + }, + 'v8_enable_verify_predictable': { 'gn_args': 'v8_enable_verify_predictable=true', }, diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl index 194928d35984e0..1afe45582fefbb 100644 --- a/deps/v8/infra/testing/builders.pyl +++ b/deps/v8/infra/testing/builders.pyl @@ -621,6 +621,14 @@ {'name': 'v8testing', 'shards': 3}, ], }, + 'v8_linux64_no_leaptiering_dbg': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 3}, + ], + }, 'v8_linux64_no_shared_cage_dbg': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -1694,6 +1702,14 @@ {'name': 'v8testing'}, ], }, + 'V8 Linux64 - no leaptiering - debug': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 2}, + ], + }, 'V8 Linux64 - no shared cage - debug': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', diff --git a/deps/v8/src/api/api-arguments-inl.h b/deps/v8/src/api/api-arguments-inl.h index 3ebc8a185f1237..651c13dcf2caf5 100644 --- a/deps/v8/src/api/api-arguments-inl.h +++ b/deps/v8/src/api/api-arguments-inl.h @@ -166,7 +166,7 @@ Handle PropertyCallbackArguments::CallNamedQuery( slot_at(kReturnValueIndex).store(Smi::FromInt(v8::None)); NamedPropertyQueryCallback f = ToCData( - interceptor->query()); + isolate, interceptor->query()); PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Integer, interceptor, ExceptionContext::kNamedQuery); v8::Intercepted intercepted = f(v8::Utils::ToLocal(name), callback_info); @@ -183,7 +183,7 @@ Handle PropertyCallbackArguments::CallNamedGetter( slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).undefined_value()); NamedPropertyGetterCallback f = ToCData( - interceptor->getter()); + isolate, interceptor->getter()); PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Value, interceptor, ExceptionContext::kNamedGetter); v8::Intercepted intercepted = f(v8::Utils::ToLocal(name), callback_info); @@ -201,7 +201,7 @@ Handle PropertyCallbackArguments::CallNamedDescriptor( NamedPropertyDescriptorCallback f = ToCData( - interceptor->descriptor()); + isolate, interceptor->descriptor()); PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Value, interceptor, ExceptionContext::kNamedDescriptor); v8::Intercepted intercepted = f(v8::Utils::ToLocal(name), callback_info); @@ -219,7 +219,7 @@ v8::Intercepted PropertyCallbackArguments::CallNamedSetter( slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).true_value()); NamedPropertySetterCallback f = ToCData( - interceptor->setter()); + isolate, interceptor->setter()); Handle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, void, has_side_effects, ExceptionContext::kNamedSetter); @@ -236,9 +236,9 @@ v8::Intercepted PropertyCallbackArguments::CallNamedDefiner( RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedDefinerCallback); slot_at(kPropertyKeyIndex).store(*name); slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).true_value()); - NamedPropertyDefinerCallback f = - ToCData(interceptor->definer()); + NamedPropertyDefinerCallback f = ToCData( + isolate, interceptor->definer()); Handle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, void, has_side_effects, ExceptionContext::kNamedDefiner); @@ -254,9 +254,9 @@ v8::Intercepted PropertyCallbackArguments::CallNamedDeleter( RCS_SCOPE(isolate, RuntimeCallCounterId::kNamedDeleterCallback); slot_at(kPropertyKeyIndex).store(*name); slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).true_value()); - NamedPropertyDeleterCallback f = - ToCData(interceptor->deleter()); + NamedPropertyDeleterCallback f = ToCData( + isolate, interceptor->deleter()); Handle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Boolean, has_side_effects, ExceptionContext::kNamedDeleter); @@ -285,7 +285,8 @@ Handle PropertyCallbackArguments::CallIndexedQuery( slot_at(kReturnValueIndex).store(Smi::FromInt(v8::None)); IndexedPropertyQueryCallbackV2 f = ToCData(interceptor->query()); + kApiIndexedPropertyQueryCallbackTag>(isolate, + interceptor->query()); PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Integer, interceptor, ExceptionContext::kIndexedQuery); v8::Intercepted intercepted = f(index, callback_info); @@ -303,7 +304,8 @@ Handle PropertyCallbackArguments::CallIndexedGetter( slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).undefined_value()); IndexedPropertyGetterCallbackV2 f = ToCData(interceptor->getter()); + kApiIndexedPropertyGetterCallbackTag>(isolate, + interceptor->getter()); PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Value, interceptor, ExceptionContext::kIndexedGetter); v8::Intercepted intercepted = f(index, callback_info); @@ -322,7 +324,7 @@ Handle PropertyCallbackArguments::CallIndexedDescriptor( IndexedPropertyDescriptorCallbackV2 f = ToCData( - interceptor->descriptor()); + isolate, interceptor->descriptor()); PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Value, interceptor, ExceptionContext::kIndexedDescriptor); v8::Intercepted intercepted = f(index, callback_info); @@ -341,7 +343,8 @@ v8::Intercepted PropertyCallbackArguments::CallIndexedSetter( slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).true_value()); IndexedPropertySetterCallbackV2 f = ToCData(interceptor->setter()); + kApiIndexedPropertySetterCallbackTag>(isolate, + interceptor->setter()); Handle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, void, has_side_effects, ExceptionContext::kIndexedSetter); @@ -361,7 +364,8 @@ v8::Intercepted PropertyCallbackArguments::CallIndexedDefiner( slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).true_value()); IndexedPropertyDefinerCallbackV2 f = ToCData(interceptor->definer()); + kApiIndexedPropertyDefinerCallbackTag>(isolate, + interceptor->definer()); Handle has_side_effects; PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, void, has_side_effects, ExceptionContext::kIndexedDefiner); @@ -379,7 +383,8 @@ v8::Intercepted PropertyCallbackArguments::CallIndexedDeleter( slot_at(kReturnValueIndex).store(ReadOnlyRoots(isolate).true_value()); IndexedPropertyDeleterCallbackV2 f = ToCData(interceptor->deleter()); + kApiIndexedPropertyDeleterCallbackTag>(isolate, + interceptor->deleter()); PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Boolean, interceptor, ExceptionContext::kIndexedDeleter); v8::Intercepted intercepted = f(index, callback_info); @@ -401,7 +406,7 @@ Handle PropertyCallbackArguments::CallPropertyEnumerator( IndexedPropertyEnumeratorCallback f = v8::ToCData( - interceptor->enumerator()); + isolate, interceptor->enumerator()); PREPARE_CALLBACK_INFO_INTERCEPTOR(isolate, f, v8::Array, interceptor, ExceptionContext::kNamedEnumerator); f(callback_info); @@ -470,7 +475,7 @@ bool PropertyCallbackArguments::CallAccessorSetter( // v8::AccessorNameSetterCallback or AccessorNameBooleanSetterCallback // the result is guaranteed to be v8::Boolean value indicating success or // failure. - Handle result = GetReturnValue(isolate); + DirectHandle result = GetReturnValue(isolate); return IsTrue(*result, isolate); } diff --git a/deps/v8/src/api/api-inl.h b/deps/v8/src/api/api-inl.h index c7be6489469700..32e3e476826de3 100644 --- a/deps/v8/src/api/api-inl.h +++ b/deps/v8/src/api/api-inl.h @@ -18,18 +18,21 @@ namespace v8 { template -inline T ToCData(v8::internal::Tagged obj) { +inline T ToCData(i::Isolate* isolate, + v8::internal::Tagged obj) { static_assert(sizeof(T) == sizeof(v8::internal::Address)); if (obj == v8::internal::Smi::zero()) return nullptr; return reinterpret_cast( - v8::internal::Cast(obj)->foreign_address()); + v8::internal::Cast(obj)->foreign_address( + isolate)); } template inline v8::internal::Address ToCData( - v8::internal::Tagged obj) { + i::Isolate* isolate, v8::internal::Tagged obj) { if (obj == v8::internal::Smi::zero()) return v8::internal::kNullAddress; - return v8::internal::Cast(obj)->foreign_address(); + return v8::internal::Cast(obj)->foreign_address( + isolate); } template @@ -51,66 +54,51 @@ inline v8::internal::Handle> FromCData( } template -inline Local Utils::Convert(v8::internal::Handle obj) { - DCHECK(obj.is_null() || (IsSmi(*obj) || !IsTheHole(*obj))); -#ifdef V8_ENABLE_DIRECT_LOCAL +inline Local Utils::Convert(v8::internal::DirectHandle obj) { + DCHECK(obj.is_null() || IsSmi(*obj) || !IsTheHole(*obj)); +#ifdef V8_ENABLE_DIRECT_HANDLE if (obj.is_null()) return Local(); -#endif - return Local::FromSlot(obj.location()); -} - -template -inline Local Utils::Convert(v8::internal::DirectHandle obj, - v8::internal::Isolate* isolate) { -#if defined(V8_ENABLE_DIRECT_LOCAL) - DCHECK(obj.is_null() || (IsSmi(*obj) || !IsTheHole(*obj))); return Local::FromAddress(obj.address()); -#elif defined(V8_ENABLE_DIRECT_HANDLE) - if (obj.is_null()) return Local(); - return Convert(v8::internal::Handle(*obj, isolate)); #else - return Convert(obj); + return Local::FromSlot(obj.location()); #endif } // Implementations of ToLocal -#define MAKE_TO_LOCAL(Name, From, To) \ - Local Utils::Name(v8::internal::Handle obj) { \ - return Convert(obj); \ - } \ - \ - Local Utils::Name( \ - v8::internal::DirectHandle obj, \ - i::Isolate* isolate) { \ - return Convert(obj, isolate); \ +#define MAKE_TO_LOCAL(Name) \ + template