From 118d225a0b13ff46b73f5e32ddbc9054be053c38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Mon, 6 Oct 2025 15:40:55 +0200 Subject: [PATCH 01/11] deps: update V8 to 14.2.231.4 --- deps/v8/.ycm_extra_conf.py | 9 +- deps/v8/AUTHORS | 2 + deps/v8/BUILD.bazel | 26 +- deps/v8/BUILD.gn | 189 +- deps/v8/DEPS | 260 +- deps/v8/MODULE.bazel | 2 +- deps/v8/PRESUBMIT.py | 54 +- deps/v8/bazel/defs.bzl | 4 +- deps/v8/gni/v8.gni | 6 + deps/v8/include/js_protocol.pdl | 8 + deps/v8/include/v8-callbacks.h | 7 +- deps/v8/include/v8-context.h | 63 +- deps/v8/include/v8-data.h | 5 + deps/v8/include/v8-inspector.h | 10 + deps/v8/include/v8-internal.h | 72 +- deps/v8/include/v8-isolate.h | 5 - deps/v8/include/v8-message.h | 8 - deps/v8/include/v8-object.h | 146 +- deps/v8/include/v8-profiler.h | 45 +- deps/v8/include/v8-script.h | 17 + deps/v8/include/v8-template.h | 2 +- deps/v8/include/v8-version.h | 6 +- deps/v8/include/v8config.h | 9 - deps/v8/infra/mb/mb_config.pyl | 139 +- deps/v8/infra/testing/PRESUBMIT.py | 4 +- deps/v8/infra/testing/builders.pyl | 272 +- deps/v8/src/api/api-natives.cc | 6 +- deps/v8/src/api/api.cc | 170 +- deps/v8/src/asmjs/asm-parser.cc | 3 +- .../ast/ast-function-literal-id-reindexer.cc | 11 +- deps/v8/src/ast/prettyprinter.cc | 5 +- deps/v8/src/base/address-region.h | 24 +- deps/v8/src/base/atomic-utils.h | 19 + deps/v8/src/base/atomicops.h | 20 + deps/v8/src/base/bit-field.h | 27 +- deps/v8/src/base/bounded-page-allocator.cc | 7 + deps/v8/src/base/bounded-page-allocator.h | 8 + deps/v8/src/base/cpu.cc | 16 + deps/v8/src/base/cpu.h | 3 + deps/v8/src/base/macros.h | 42 +- deps/v8/src/base/numbers/double.h | 4 +- deps/v8/src/base/platform/mutex.cc | 6 +- deps/v8/src/base/platform/platform-posix.cc | 14 +- deps/v8/src/base/region-allocator.cc | 7 +- deps/v8/src/base/region-allocator.h | 4 +- .../src/base/template-meta-programming/list.h | 54 +- deps/v8/src/baseline/baseline-compiler.cc | 19 +- .../riscv/baseline-assembler-riscv-inl.h | 8 +- deps/v8/src/bigint/vector-arithmetic.cc | 17 +- deps/v8/src/builtins/arm/builtins-arm.cc | 238 +- deps/v8/src/builtins/arm64/builtins-arm64.cc | 263 +- deps/v8/src/builtins/array-map.tq | 8 +- deps/v8/src/builtins/base.tq | 33 +- deps/v8/src/builtins/builtins-array-gen.cc | 74 +- deps/v8/src/builtins/builtins-array.cc | 24 +- deps/v8/src/builtins/builtins-arraybuffer.cc | 3 +- deps/v8/src/builtins/builtins-call-gen.cc | 5 +- .../src/builtins/builtins-collections-gen.cc | 207 +- .../src/builtins/builtins-collections-gen.h | 48 +- deps/v8/src/builtins/builtins-dataview.cc | 8 +- deps/v8/src/builtins/builtins-definitions.h | 6 +- deps/v8/src/builtins/builtins-inl.h | 2 - deps/v8/src/builtins/builtins-internal-gen.cc | 5 - deps/v8/src/builtins/builtins-number-tsa.cc | 18 +- deps/v8/src/builtins/builtins-temporal.cc | 4 +- deps/v8/src/builtins/builtins-typed-array.cc | 13 +- deps/v8/src/builtins/builtins-wasm-gen.cc | 42 + deps/v8/src/builtins/builtins.cc | 19 +- deps/v8/src/builtins/cast.tq | 2 +- deps/v8/src/builtins/collections.tq | 10 +- deps/v8/src/builtins/convert.tq | 4 +- deps/v8/src/builtins/finalization-registry.tq | 8 +- deps/v8/src/builtins/ia32/builtins-ia32.cc | 263 +- deps/v8/src/builtins/js-to-wasm.tq | 2 +- .../src/builtins/loong64/builtins-loong64.cc | 245 +- .../v8/src/builtins/mips64/builtins-mips64.cc | 154 +- deps/v8/src/builtins/object-groupby.tq | 2 +- deps/v8/src/builtins/ppc/builtins-ppc.cc | 239 +- deps/v8/src/builtins/riscv/builtins-riscv.cc | 919 +-- deps/v8/src/builtins/s390/builtins-s390.cc | 239 +- deps/v8/src/builtins/torque-internal.tq | 12 +- .../builtins/typed-array-createtypedarray.tq | 30 +- deps/v8/src/builtins/weak-ref.tq | 10 +- deps/v8/src/builtins/x64/builtins-x64.cc | 267 +- deps/v8/src/codegen/arm/assembler-arm.cc | 37 +- deps/v8/src/codegen/arm/assembler-arm.h | 7 +- .../v8/src/codegen/arm/macro-assembler-arm.cc | 73 + deps/v8/src/codegen/arm/macro-assembler-arm.h | 26 +- .../src/codegen/arm64/constant-pool-arm64.cc | 261 + .../src/codegen/arm64/constant-pool-arm64.h | 204 + .../codegen/arm64/macro-assembler-arm64.cc | 142 +- .../src/codegen/arm64/macro-assembler-arm64.h | 17 + deps/v8/src/codegen/assembler.cc | 1 + deps/v8/src/codegen/bailout-reason.h | 1 + deps/v8/src/codegen/code-stub-assembler.cc | 274 +- deps/v8/src/codegen/code-stub-assembler.h | 42 +- deps/v8/src/codegen/compilation-cache.cc | 4 +- deps/v8/src/codegen/constant-pool-entry.h | 82 + deps/v8/src/codegen/constant-pool.cc | 724 -- deps/v8/src/codegen/constant-pool.h | 352 +- deps/v8/src/codegen/cpu-features.h | 8 + deps/v8/src/codegen/external-reference.cc | 50 +- deps/v8/src/codegen/external-reference.h | 18 +- .../src/codegen/ia32/macro-assembler-ia32.cc | 63 + .../src/codegen/ia32/macro-assembler-ia32.h | 10 +- .../src/codegen/interface-descriptors-inl.h | 6 + deps/v8/src/codegen/interface-descriptors.h | 61 +- .../loong64/macro-assembler-loong64.cc | 32 + .../codegen/loong64/macro-assembler-loong64.h | 9 + .../codegen/mips64/macro-assembler-mips64.cc | 32 + .../codegen/mips64/macro-assembler-mips64.h | 8 + .../src/codegen/optimized-compilation-info.cc | 18 +- deps/v8/src/codegen/ppc/constant-pool-ppc.cc | 211 + deps/v8/src/codegen/ppc/constant-pool-ppc.h | 95 + .../v8/src/codegen/ppc/macro-assembler-ppc.cc | 81 + deps/v8/src/codegen/ppc/macro-assembler-ppc.h | 19 +- deps/v8/src/codegen/reloc-info-inl.h | 16 + deps/v8/src/codegen/reloc-info.cc | 19 +- deps/v8/src/codegen/reloc-info.h | 16 +- .../src/codegen/riscv/assembler-riscv-inl.h | 6 +- deps/v8/src/codegen/riscv/assembler-riscv.cc | 333 +- deps/v8/src/codegen/riscv/assembler-riscv.h | 239 +- .../src/codegen/riscv/base-assembler-riscv.h | 30 +- .../src/codegen/riscv/base-constants-riscv.cc | 11 + .../src/codegen/riscv/base-constants-riscv.h | 27 +- deps/v8/src/codegen/riscv/base-riscv-i.cc | 6 +- deps/v8/src/codegen/riscv/base-riscv-i.h | 4 + .../src/codegen/riscv/constant-pool-riscv.cc | 309 + .../src/codegen/riscv/constant-pool-riscv.h | 184 + .../src/codegen/riscv/constant-riscv-zimop.h | 32 + deps/v8/src/codegen/riscv/constants-riscv.h | 1 + .../v8/src/codegen/riscv/extension-riscv-v.cc | 24 - deps/v8/src/codegen/riscv/extension-riscv-v.h | 11 - .../codegen/riscv/extension-riscv-zimop.cc | 41 + .../src/codegen/riscv/extension-riscv-zimop.h | 41 + .../codegen/riscv/macro-assembler-riscv.cc | 786 ++- .../src/codegen/riscv/macro-assembler-riscv.h | 118 +- deps/v8/src/codegen/riscv/register-riscv.h | 2 +- deps/v8/src/codegen/riscv/reglist-riscv.h | 2 + .../src/codegen/s390/macro-assembler-s390.cc | 77 + .../src/codegen/s390/macro-assembler-s390.h | 16 +- .../macro-assembler-shared-ia32-x64.h | 117 +- .../turboshaft-builtins-assembler-inl.h | 41 +- deps/v8/src/codegen/x64/assembler-x64.cc | 11 + deps/v8/src/codegen/x64/assembler-x64.h | 1 + .../v8/src/codegen/x64/macro-assembler-x64.cc | 129 +- deps/v8/src/codegen/x64/macro-assembler-x64.h | 17 + deps/v8/src/common/globals.h | 88 +- deps/v8/src/common/message-template.h | 4 +- deps/v8/src/common/operation.h | 43 +- deps/v8/src/common/segmented-table.h | 8 +- deps/v8/src/common/simd128.h | 106 +- deps/v8/src/compiler/access-builder.cc | 4 +- .../backend/arm/code-generator-arm.cc | 93 +- .../backend/arm/instruction-selector-arm.cc | 39 +- .../backend/arm64/code-generator-arm64.cc | 208 +- .../backend/arm64/instruction-codes-arm64.h | 1 + .../arm64/instruction-scheduler-arm64.cc | 1 + .../arm64/instruction-selector-arm64.cc | 194 +- deps/v8/src/compiler/backend/frame-elider.cc | 8 +- .../backend/ia32/code-generator-ia32.cc | 65 +- .../backend/ia32/instruction-selector-ia32.cc | 19 +- .../src/compiler/backend/instruction-codes.h | 4 +- .../compiler/backend/instruction-scheduler.cc | 6 +- .../compiler/backend/instruction-selector.cc | 15 +- .../backend/loong64/code-generator-loong64.cc | 118 +- .../loong64/instruction-selector-loong64.cc | 29 +- .../backend/mips64/code-generator-mips64.cc | 9 +- .../backend/ppc/code-generator-ppc.cc | 82 +- .../backend/ppc/instruction-selector-ppc.cc | 18 +- .../backend/riscv/code-generator-riscv.cc | 766 ++- .../backend/riscv/instruction-codes-riscv.h | 6 + .../riscv/instruction-scheduler-riscv.cc | 7 + .../riscv/instruction-selector-riscv.h | 104 +- .../riscv/instruction-selector-riscv32.cc | 29 +- .../riscv/instruction-selector-riscv64.cc | 336 +- .../backend/s390/code-generator-s390.cc | 191 +- .../backend/s390/instruction-selector-s390.cc | 19 +- .../backend/x64/code-generator-x64.cc | 207 +- .../backend/x64/instruction-selector-x64.cc | 38 +- .../v8/src/compiler/bytecode-graph-builder.cc | 21 +- deps/v8/src/compiler/c-linkage.cc | 5 +- deps/v8/src/compiler/heap-refs.cc | 109 +- deps/v8/src/compiler/heap-refs.h | 6 + deps/v8/src/compiler/js-call-reducer.cc | 62 +- deps/v8/src/compiler/js-call-reducer.h | 9 + deps/v8/src/compiler/js-generic-lowering.cc | 18 + deps/v8/src/compiler/js-heap-broker.cc | 11 +- deps/v8/src/compiler/js-inlining-heuristic.cc | 8 +- deps/v8/src/compiler/js-inlining.cc | 8 +- .../js-native-context-specialization.cc | 23 +- deps/v8/src/compiler/js-operator.cc | 44 +- deps/v8/src/compiler/js-operator.h | 30 +- deps/v8/src/compiler/js-typed-lowering.cc | 12 +- deps/v8/src/compiler/linkage.cc | 29 +- deps/v8/src/compiler/linkage.h | 18 +- deps/v8/src/compiler/machine-graph.cc | 3 +- deps/v8/src/compiler/machine-operator.cc | 9 + deps/v8/src/compiler/memory-lowering.cc | 42 +- deps/v8/src/compiler/node-properties.cc | 5 + deps/v8/src/compiler/opcodes.h | 2 + deps/v8/src/compiler/operation-typer.cc | 12 +- deps/v8/src/compiler/operator-properties.cc | 4 + deps/v8/src/compiler/pipeline.cc | 13 +- deps/v8/src/compiler/processed-feedback.h | 10 +- deps/v8/src/compiler/refs-map.cc | 5 +- deps/v8/src/compiler/refs-map.h | 2 +- deps/v8/src/compiler/representation-change.cc | 4 +- deps/v8/src/compiler/simplified-lowering.cc | 4 +- .../compiler/simplified-operator-reducer.cc | 40 +- deps/v8/src/compiler/simplified-operator.h | 3 +- deps/v8/src/compiler/turbofan-typer.cc | 6 +- deps/v8/src/compiler/turboshaft/assembler.h | 475 +- .../turboshaft/builtin-call-descriptors.h | 887 ++- .../debug-feature-lowering-reducer.h | 72 +- .../src/compiler/turboshaft/graph-builder.cc | 28 +- .../turboshaft/growable-stacks-reducer.h | 3 +- deps/v8/src/compiler/turboshaft/index.h | 3 + .../turboshaft/js-generic-lowering-reducer.h | 27 +- .../late-load-elimination-reducer.cc | 14 - .../late-load-elimination-reducer.h | 66 +- deps/v8/src/compiler/turboshaft/loop-finder.h | 6 + .../turboshaft/machine-lowering-reducer-inl.h | 132 +- .../turboshaft/machine-optimization-reducer.h | 6 +- .../turboshaft/memory-optimization-reducer.h | 74 +- deps/v8/src/compiler/turboshaft/operations.cc | 25 +- deps/v8/src/compiler/turboshaft/operations.h | 81 +- deps/v8/src/compiler/turboshaft/opmasks.h | 8 + deps/v8/src/compiler/turboshaft/phase.h | 20 + deps/v8/src/compiler/turboshaft/pipelines.cc | 1 + deps/v8/src/compiler/turboshaft/pipelines.h | 3 +- .../simplified-optimization-reducer.h | 272 + .../turboshaft/stack-check-lowering-reducer.h | 13 +- .../string-escape-analysis-reducer.cc | 27 +- .../string-escape-analysis-reducer.h | 35 +- .../turboshaft/turbolev-graph-builder.cc | 336 +- .../turboshaft/type-inference-analysis.h | 4 +- .../turboshaft/wasm-gc-optimize-phase.cc | 5 +- .../wasm-gc-typed-optimization-reducer.cc | 5 +- .../wasm-gc-typed-optimization-reducer.h | 17 +- .../turboshaft/wasm-in-js-inlining-phase.cc | 11 +- .../wasm-in-js-inlining-reducer-inl.h | 114 +- .../turboshaft/wasm-lowering-phase.cc | 1 + .../turboshaft/wasm-lowering-reducer.h | 135 +- ...wasm-type-cast-rtt-optimization-helpers.cc | 59 + .../wasm-type-cast-rtt-optimization-helpers.h | 114 + deps/v8/src/compiler/typed-optimization.cc | 3 +- deps/v8/src/compiler/verifier.cc | 19 +- .../src/compiler/wasm-compiler-definitions.h | 13 +- deps/v8/src/compiler/wasm-compiler.cc | 5 +- deps/v8/src/compiler/write-barrier-kind.h | 5 + deps/v8/src/d8/d8-test.cc | 3 +- deps/v8/src/d8/d8.cc | 68 +- deps/v8/src/d8/d8.h | 8 +- deps/v8/src/debug/debug-evaluate.cc | 20 +- deps/v8/src/debug/debug-interface.h | 1 + deps/v8/src/debug/debug-wasm-objects.cc | 10 +- deps/v8/src/debug/debug.cc | 14 +- deps/v8/src/deoptimizer/deoptimize-reason.h | 3 +- deps/v8/src/deoptimizer/deoptimizer.cc | 6 +- deps/v8/src/deoptimizer/translated-state.cc | 22 +- .../v8/src/deoptimizer/x64/deoptimizer-x64.cc | 4 +- deps/v8/src/diagnostics/disassembler.cc | 20 +- deps/v8/src/diagnostics/objects-debug.cc | 6 +- deps/v8/src/diagnostics/objects-printer.cc | 45 +- deps/v8/src/diagnostics/riscv/disasm-riscv.cc | 55 +- deps/v8/src/execution/arm/simulator-arm.cc | 3 +- deps/v8/src/execution/frames-inl.h | 3 + deps/v8/src/execution/frames.cc | 64 +- deps/v8/src/execution/frames.h | 13 + deps/v8/src/execution/isolate-data.h | 60 +- deps/v8/src/execution/isolate.cc | 197 +- deps/v8/src/execution/isolate.h | 19 +- deps/v8/src/execution/ppc/simulator-ppc.cc | 3 +- .../v8/src/execution/riscv/simulator-riscv.cc | 80 +- deps/v8/src/execution/riscv/simulator-riscv.h | 60 +- deps/v8/src/execution/s390/simulator-s390.cc | 3 +- deps/v8/src/flags/flag-definitions.h | 100 +- deps/v8/src/flags/flags.cc | 11 + deps/v8/src/flags/save-flags.cc | 30 + deps/v8/src/flags/save-flags.h | 28 + deps/v8/src/heap/base/basic-slot-set.h | 12 +- deps/v8/src/heap/code-range.cc | 184 +- deps/v8/src/heap/code-range.h | 40 + deps/v8/src/heap/concurrent-marking.cc | 10 +- deps/v8/src/heap/ephemeron-remembered-set.h | 15 +- deps/v8/src/heap/factory-base.cc | 7 +- deps/v8/src/heap/factory-base.h | 2 - deps/v8/src/heap/factory.cc | 125 +- deps/v8/src/heap/factory.h | 27 +- deps/v8/src/heap/free-list.cc | 6 +- deps/v8/src/heap/gc-tracer.cc | 13 +- deps/v8/src/heap/gc-tracer.h | 2 +- deps/v8/src/heap/heap-allocator.cc | 3 +- deps/v8/src/heap/heap-inl.h | 26 +- deps/v8/src/heap/heap-layout-inl.h | 9 + deps/v8/src/heap/heap-layout.cc | 9 +- deps/v8/src/heap/heap-layout.h | 17 +- deps/v8/src/heap/heap-verifier.cc | 34 +- deps/v8/src/heap/heap-verifier.h | 3 +- deps/v8/src/heap/heap-visitor-inl.h | 2 +- deps/v8/src/heap/heap-visitor.cc | 49 +- deps/v8/src/heap/heap-visitor.h | 4 +- deps/v8/src/heap/heap-write-barrier-inl.h | 82 +- deps/v8/src/heap/heap-write-barrier.cc | 75 +- deps/v8/src/heap/heap-write-barrier.h | 13 +- deps/v8/src/heap/heap.cc | 496 +- deps/v8/src/heap/heap.h | 114 +- deps/v8/src/heap/incremental-marking-job.cc | 4 +- deps/v8/src/heap/incremental-marking.cc | 6 +- deps/v8/src/heap/large-page-metadata-inl.h | 5 +- deps/v8/src/heap/large-page-metadata.h | 3 +- deps/v8/src/heap/linear-allocation-area.h | 34 +- deps/v8/src/heap/mark-compact-inl.h | 24 +- deps/v8/src/heap/mark-compact.cc | 280 +- deps/v8/src/heap/mark-compact.h | 14 +- deps/v8/src/heap/marking-barrier-inl.h | 11 +- deps/v8/src/heap/marking-barrier.h | 2 +- deps/v8/src/heap/marking-inl.h | 26 +- deps/v8/src/heap/marking-state-inl.h | 9 +- deps/v8/src/heap/marking-visitor-inl.h | 136 +- deps/v8/src/heap/marking.cc | 5 +- deps/v8/src/heap/marking.h | 7 +- deps/v8/src/heap/memory-allocator.cc | 95 +- deps/v8/src/heap/memory-allocator.h | 14 +- deps/v8/src/heap/memory-chunk-metadata-inl.h | 36 +- deps/v8/src/heap/memory-chunk-metadata.cc | 4 +- deps/v8/src/heap/memory-chunk-metadata.h | 17 +- deps/v8/src/heap/memory-chunk.cc | 12 - deps/v8/src/heap/memory-chunk.h | 2 - deps/v8/src/heap/memory-pool.cc | 149 +- deps/v8/src/heap/memory-pool.h | 64 +- deps/v8/src/heap/memory-reducer.cc | 2 +- deps/v8/src/heap/minor-mark-sweep.cc | 2 +- deps/v8/src/heap/mutable-page-metadata-inl.h | 10 - deps/v8/src/heap/mutable-page-metadata.h | 2 - deps/v8/src/heap/new-spaces.cc | 7 +- deps/v8/src/heap/object-lock-inl.h | 22 +- deps/v8/src/heap/object-lock.h | 9 +- deps/v8/src/heap/object-stats.cc | 5 +- deps/v8/src/heap/pretenuring-handler.cc | 3 +- deps/v8/src/heap/read-only-heap.cc | 12 +- deps/v8/src/heap/read-only-heap.h | 4 - deps/v8/src/heap/read-only-promotion.cc | 2 - deps/v8/src/heap/read-only-spaces.cc | 10 +- deps/v8/src/heap/read-only-spaces.h | 1 + deps/v8/src/heap/reference-summarizer.cc | 2 +- deps/v8/src/heap/scavenger-inl.h | 594 -- deps/v8/src/heap/scavenger.cc | 1061 ++- deps/v8/src/heap/scavenger.h | 80 +- deps/v8/src/heap/setup-heap-internal.cc | 139 +- deps/v8/src/heap/sweeper.cc | 6 +- deps/v8/src/heap/trusted-range.cc | 6 + deps/v8/src/heap/weak-object-worklists.h | 20 +- .../young-generation-marking-visitor-inl.h | 4 +- .../heap/young-generation-marking-visitor.h | 2 +- deps/v8/src/heap/zapping.cc | 2 +- deps/v8/src/ic/accessor-assembler.cc | 4 +- deps/v8/src/ic/ic.cc | 4 +- deps/v8/src/ic/keyed-store-generic.cc | 12 +- deps/v8/src/init/heap-symbols.h | 2 + deps/v8/src/init/isolate-group.cc | 53 +- deps/v8/src/init/isolate-group.h | 7 + deps/v8/src/inspector/v8-console-message.cc | 2 +- .../src/inspector/v8-debugger-agent-impl.cc | 6 + .../inspector/v8-heap-profiler-agent-impl.cc | 46 +- .../inspector/v8-heap-profiler-agent-impl.h | 2 +- .../src/interpreter/bytecode-array-builder.cc | 4 +- .../src/interpreter/bytecode-array-builder.h | 2 +- deps/v8/src/interpreter/bytecode-generator.cc | 67 +- deps/v8/src/interpreter/bytecode-generator.h | 9 +- .../interpreter/bytecode-register-optimizer.h | 5 +- deps/v8/src/interpreter/bytecodes.h | 2 +- .../src/interpreter/interpreter-generator.cc | 20 +- .../prototype-assignment-sequence-builder.cc | 7 +- .../prototype-assignment-sequence-builder.h | 5 +- deps/v8/src/json/json-parser.cc | 4 +- deps/v8/src/json/json-stringifier.cc | 2 +- deps/v8/src/logging/counters.h | 31 - deps/v8/src/logging/log.cc | 10 +- deps/v8/src/logging/runtime-call-stats.cc | 2 - .../src/maglev/arm/maglev-assembler-arm-inl.h | 4 +- .../v8/src/maglev/arm/maglev-assembler-arm.cc | 18 +- deps/v8/src/maglev/arm/maglev-ir-arm.cc | 9 +- .../maglev/arm64/maglev-assembler-arm64-inl.h | 4 +- .../maglev/arm64/maglev-assembler-arm64.cc | 18 +- deps/v8/src/maglev/arm64/maglev-ir-arm64.cc | 24 +- deps/v8/src/maglev/maglev-assembler-inl.h | 22 +- deps/v8/src/maglev/maglev-assembler.cc | 14 +- deps/v8/src/maglev/maglev-assembler.h | 22 +- deps/v8/src/maglev/maglev-basic-block.h | 6 + deps/v8/src/maglev/maglev-code-generator.cc | 99 +- .../src/maglev/maglev-deopt-frame-visitor.h | 28 +- deps/v8/src/maglev/maglev-graph-builder.cc | 3370 +++++----- deps/v8/src/maglev/maglev-graph-builder.h | 202 +- deps/v8/src/maglev/maglev-graph-optimizer.cc | 1301 ++-- deps/v8/src/maglev/maglev-graph-optimizer.h | 29 +- deps/v8/src/maglev/maglev-graph-printer.cc | 8 +- deps/v8/src/maglev/maglev-graph-processor.h | 63 +- deps/v8/src/maglev/maglev-graph.h | 27 + deps/v8/src/maglev/maglev-inlining.cc | 129 +- deps/v8/src/maglev/maglev-inlining.h | 9 +- .../maglev/maglev-interpreter-frame-state.cc | 384 +- .../maglev/maglev-interpreter-frame-state.h | 766 +-- deps/v8/src/maglev/maglev-ir-inl.h | 27 +- deps/v8/src/maglev/maglev-ir.cc | 340 +- deps/v8/src/maglev/maglev-ir.h | 1380 ++-- deps/v8/src/maglev/maglev-kna-processor.h | 257 + .../src/maglev/maglev-known-node-aspects.cc | 432 ++ .../v8/src/maglev/maglev-known-node-aspects.h | 842 +++ .../maglev-phi-representation-selector.cc | 81 +- .../maglev-phi-representation-selector.h | 3 +- ...maglev-post-hoc-optimizations-processors.h | 132 +- deps/v8/src/maglev/maglev-reducer-inl.h | 334 +- deps/v8/src/maglev/maglev-reducer.h | 174 +- deps/v8/src/maglev/maglev-regalloc.cc | 28 +- deps/v8/src/maglev/maglev-truncation.h | 80 +- .../maglev-assembler-ppc-inl.h} | 6 +- .../maglev-assembler-ppc.cc} | 19 +- .../maglev-ir-ppc.cc} | 19 +- .../maglev/riscv/maglev-assembler-riscv-inl.h | 10 +- .../maglev/riscv/maglev-assembler-riscv.cc | 18 +- deps/v8/src/maglev/riscv/maglev-ir-riscv.cc | 14 +- .../src/maglev/s390/maglev-assembler-s390.cc | 19 +- deps/v8/src/maglev/s390/maglev-ir-s390.cc | 15 +- .../src/maglev/x64/maglev-assembler-x64-inl.h | 27 +- .../v8/src/maglev/x64/maglev-assembler-x64.cc | 10 +- deps/v8/src/maglev/x64/maglev-ir-x64.cc | 9 +- deps/v8/src/objects/abstract-code.cc | 20 + deps/v8/src/objects/abstract-code.h | 3 + deps/v8/src/objects/code-inl.h | 26 +- deps/v8/src/objects/code-kind.cc | 11 +- deps/v8/src/objects/code-kind.h | 6 +- deps/v8/src/objects/code.h | 1 + deps/v8/src/objects/contexts.h | 2 - deps/v8/src/objects/dictionary-inl.h | 12 +- deps/v8/src/objects/elements.cc | 70 +- deps/v8/src/objects/embedder-data-slot-inl.h | 14 +- deps/v8/src/objects/fixed-array-inl.h | 8 +- deps/v8/src/objects/fixed-array.h | 4 +- deps/v8/src/objects/fixed-array.tq | 2 +- deps/v8/src/objects/heap-number.h | 4 + deps/v8/src/objects/heap-object.h | 2 +- deps/v8/src/objects/js-array.tq | 13 +- .../src/objects/js-atomics-synchronization.cc | 33 +- deps/v8/src/objects/js-date-time-format.cc | 22 + deps/v8/src/objects/js-function-inl.h | 28 +- deps/v8/src/objects/js-function.h | 3 + deps/v8/src/objects/js-number-format.cc | 10 + deps/v8/src/objects/js-objects-inl.h | 105 +- deps/v8/src/objects/js-objects.cc | 48 +- deps/v8/src/objects/js-objects.h | 7 +- deps/v8/src/objects/js-objects.tq | 1 + deps/v8/src/objects/js-temporal-objects.cc | 328 +- deps/v8/src/objects/js-temporal-zoneinfo64.cc | 84 + deps/v8/src/objects/js-temporal-zoneinfo64.h | 47 + deps/v8/src/objects/js-weak-refs-inl.h | 138 +- deps/v8/src/objects/js-weak-refs.h | 73 +- deps/v8/src/objects/js-weak-refs.tq | 5 +- deps/v8/src/objects/keys.cc | 30 - deps/v8/src/objects/keys.h | 1 - deps/v8/src/objects/map.cc | 2 - deps/v8/src/objects/map.h | 1 - deps/v8/src/objects/module.cc | 36 +- deps/v8/src/objects/module.h | 14 +- deps/v8/src/objects/name.h | 2 + deps/v8/src/objects/number-string-cache-inl.h | 7 +- deps/v8/src/objects/object-list-macros.h | 1 - .../objects/objects-body-descriptors-inl.h | 29 +- deps/v8/src/objects/objects-inl.h | 6 +- deps/v8/src/objects/objects.cc | 15 +- deps/v8/src/objects/script.cc | 10 +- .../v8/src/objects/shared-function-info-inl.h | 13 +- deps/v8/src/objects/shared-function-info.h | 3 +- deps/v8/src/objects/slots-inl.h | 41 +- deps/v8/src/objects/slots.h | 21 +- deps/v8/src/objects/source-text-module.cc | 65 +- deps/v8/src/objects/source-text-module.h | 3 +- .../v8/src/objects/string-forwarding-table.cc | 4 +- deps/v8/src/objects/string-inl.h | 13 +- deps/v8/src/objects/string-table.cc | 10 +- deps/v8/src/objects/string.h | 13 + .../src/objects/swiss-name-dictionary-inl.h | 20 +- deps/v8/src/objects/turboshaft-types.tq | 77 +- deps/v8/src/profiler/heap-profiler.cc | 20 +- .../src/profiler/heap-snapshot-generator.cc | 182 +- .../v8/src/profiler/heap-snapshot-generator.h | 38 +- .../regexp/arm/regexp-macro-assembler-arm.cc | 9 +- .../regexp/arm/regexp-macro-assembler-arm.h | 4 +- .../arm64/regexp-macro-assembler-arm64.cc | 176 +- .../arm64/regexp-macro-assembler-arm64.h | 10 +- .../experimental/experimental-compiler.cc | 8 +- .../ia32/regexp-macro-assembler-ia32.cc | 9 +- .../regexp/ia32/regexp-macro-assembler-ia32.h | 4 +- .../loong64/regexp-macro-assembler-loong64.cc | 9 +- .../loong64/regexp-macro-assembler-loong64.h | 4 +- .../mips64/regexp-macro-assembler-mips64.cc | 11 +- .../mips64/regexp-macro-assembler-mips64.h | 5 +- .../regexp/ppc/regexp-macro-assembler-ppc.cc | 9 +- .../regexp/ppc/regexp-macro-assembler-ppc.h | 4 +- .../src/regexp/regexp-bytecode-generator.cc | 60 +- .../v8/src/regexp/regexp-bytecode-generator.h | 25 +- .../v8/src/regexp/regexp-bytecode-peephole.cc | 177 +- deps/v8/src/regexp/regexp-bytecodes-inl.h | 27 +- deps/v8/src/regexp/regexp-bytecodes.h | 140 +- deps/v8/src/regexp/regexp-code-generator.cc | 534 +- deps/v8/src/regexp/regexp-code-generator.h | 5 + deps/v8/src/regexp/regexp-compiler.cc | 4 +- deps/v8/src/regexp/regexp-interpreter.cc | 56 +- .../src/regexp/regexp-macro-assembler-arch.h | 13 + .../regexp/regexp-macro-assembler-tracer.cc | 110 +- .../regexp/regexp-macro-assembler-tracer.h | 26 +- deps/v8/src/regexp/regexp-macro-assembler.cc | 93 +- deps/v8/src/regexp/regexp-macro-assembler.h | 36 +- deps/v8/src/regexp/regexp.cc | 5 +- .../riscv/regexp-macro-assembler-riscv.cc | 785 ++- .../riscv/regexp-macro-assembler-riscv.h | 8 +- .../s390/regexp-macro-assembler-s390.cc | 9 +- .../regexp/s390/regexp-macro-assembler-s390.h | 4 +- .../regexp/x64/regexp-macro-assembler-x64.cc | 255 +- .../regexp/x64/regexp-macro-assembler-x64.h | 11 +- deps/v8/src/roots/static-roots-intl-nowasm.h | 602 +- deps/v8/src/roots/static-roots-intl-wasm.h | 604 +- .../v8/src/roots/static-roots-nointl-nowasm.h | 602 +- deps/v8/src/roots/static-roots-nointl-wasm.h | 604 +- deps/v8/src/runtime/runtime-debug.cc | 8 +- deps/v8/src/runtime/runtime-internal.cc | 14 +- deps/v8/src/runtime/runtime-literals.cc | 185 +- deps/v8/src/runtime/runtime-regexp.cc | 2 +- deps/v8/src/runtime/runtime-test-wasm.cc | 146 +- deps/v8/src/runtime/runtime-test.cc | 123 +- deps/v8/src/runtime/runtime-typedarray.cc | 12 +- deps/v8/src/runtime/runtime-wasm.cc | 149 +- deps/v8/src/runtime/runtime.cc | 4 +- deps/v8/src/runtime/runtime.h | 147 +- deps/v8/src/sandbox/code-entrypoint-tag.h | 18 +- deps/v8/src/sandbox/indirect-pointer-inl.h | 2 +- deps/v8/src/sandbox/js-dispatch-table-inl.h | 39 +- deps/v8/src/sandbox/js-dispatch-table.cc | 8 +- deps/v8/src/sandbox/js-dispatch-table.h | 19 +- deps/v8/src/sandbox/sandbox.h | 18 +- deps/v8/src/sandbox/testing.cc | 15 +- .../src/sandbox/trusted-pointer-table-inl.h | 2 +- deps/v8/src/snapshot/read-only-serializer.cc | 11 +- deps/v8/src/snapshot/serializer.cc | 9 +- deps/v8/src/strings/string-stream.cc | 2 + deps/v8/src/torque/implementation-visitor.cc | 8 +- deps/v8/src/torque/torque-parser.cc | 3 +- deps/v8/src/tracing/perfetto-logger.cc | 2 + deps/v8/src/tracing/trace-categories.h | 32 +- deps/v8/src/utils/boxed-float.h | 4 +- deps/v8/src/utils/memcopy.h | 111 +- .../baseline/arm/liftoff-assembler-arm-inl.h | 10 +- .../arm64/liftoff-assembler-arm64-inl.h | 10 +- .../ia32/liftoff-assembler-ia32-inl.h | 11 +- deps/v8/src/wasm/baseline/liftoff-compiler.cc | 25 +- .../loong64/liftoff-assembler-loong64-inl.h | 10 +- .../mips64/liftoff-assembler-mips64-inl.h | 10 +- .../baseline/ppc/liftoff-assembler-ppc-inl.h | 12 +- .../riscv/liftoff-assembler-riscv-inl.h | 757 ++- .../riscv/liftoff-assembler-riscv32-inl.h | 116 +- .../riscv/liftoff-assembler-riscv64-inl.h | 293 +- .../s390/liftoff-assembler-s390-inl.h | 10 +- .../baseline/x64/liftoff-assembler-x64-inl.h | 11 +- deps/v8/src/wasm/c-api.cc | 2 +- deps/v8/src/wasm/canonical-types.cc | 22 +- deps/v8/src/wasm/canonical-types.h | 15 +- .../src/wasm/constant-expression-interface.cc | 9 +- deps/v8/src/wasm/function-body-decoder-impl.h | 38 +- deps/v8/src/wasm/function-compiler.cc | 12 +- deps/v8/src/wasm/function-compiler.h | 6 +- deps/v8/src/wasm/interpreter/OWNERS | 9 +- .../arm64/interpreter-builtins-arm64.cc | 2 + .../wasm-interpreter-objects-inl.h | 2 +- .../interpreter/wasm-interpreter-objects.cc | 4 +- .../interpreter/wasm-interpreter-runtime.cc | 95 +- .../src/wasm/interpreter/wasm-interpreter.cc | 198 +- .../x64/interpreter-builtins-x64.cc | 2 + deps/v8/src/wasm/jump-table-assembler.cc | 107 +- deps/v8/src/wasm/jump-table-assembler.h | 2 +- deps/v8/src/wasm/memory-tracing.h | 45 - deps/v8/src/wasm/module-compiler.cc | 32 +- deps/v8/src/wasm/module-decoder-impl.h | 668 +- deps/v8/src/wasm/module-decoder.cc | 1 + deps/v8/src/wasm/module-instantiate.cc | 496 +- deps/v8/src/wasm/module-instantiate.h | 6 +- deps/v8/src/wasm/simd-shuffle.h | 12 + deps/v8/src/wasm/stacks.h | 5 + deps/v8/src/wasm/struct-types.h | 5 +- .../v8/src/wasm/turboshaft-graph-interface.cc | 35 +- deps/v8/src/wasm/value-type.h | 1 + deps/v8/src/wasm/wasm-builtin-list.h | 6 +- deps/v8/src/wasm/wasm-constants.h | 2 + deps/v8/src/wasm/wasm-debug.cc | 6 +- deps/v8/src/wasm/wasm-disassembler.cc | 6 +- deps/v8/src/wasm/wasm-engine.cc | 19 +- deps/v8/src/wasm/wasm-external-refs.cc | 59 +- deps/v8/src/wasm/wasm-external-refs.h | 7 +- deps/v8/src/wasm/wasm-feature-flags.h | 22 +- deps/v8/src/wasm/wasm-features.cc | 17 +- deps/v8/src/wasm/wasm-features.h | 4 +- deps/v8/src/wasm/wasm-js.cc | 75 +- deps/v8/src/wasm/wasm-js.h | 4 - deps/v8/src/wasm/wasm-module.cc | 11 +- deps/v8/src/wasm/wasm-module.h | 23 + deps/v8/src/wasm/wasm-objects-inl.h | 23 - deps/v8/src/wasm/wasm-objects.cc | 107 +- deps/v8/src/wasm/wasm-objects.h | 83 +- deps/v8/src/wasm/wasm-objects.tq | 9 +- deps/v8/src/wasm/wasm-subtyping.cc | 20 +- deps/v8/src/wasm/wasm-tracing.cc | 133 + deps/v8/src/wasm/wasm-tracing.h | 114 + deps/v8/src/wasm/wrappers-inl.h | 196 +- deps/v8/src/wasm/wrappers.h | 36 +- deps/v8/test/BUILD.gn | 18 +- deps/v8/test/benchmarks/cpp/bindings.cc | 7 +- deps/v8/test/cctest/BUILD.gn | 1 - deps/v8/test/cctest/cctest.h | 4 +- deps/v8/test/cctest/cctest.status | 56 +- .../test/cctest/compiler/function-tester.cc | 6 +- .../v8/test/cctest/compiler/function-tester.h | 8 +- .../cctest/compiler/test-code-generator.cc | 7 +- .../test/cctest/compiler/test-run-machops.cc | 2 +- .../cctest/compiler/test-run-native-calls.cc | 2 +- deps/v8/test/cctest/heap/heap-utils.cc | 10 +- .../cctest/heap/test-array-buffer-tracker.cc | 3 +- deps/v8/test/cctest/heap/test-heap.cc | 79 +- deps/v8/test/cctest/heap/test-mark-compact.cc | 2 +- deps/v8/test/cctest/heap/test-spaces.cc | 4 +- deps/v8/test/cctest/test-api-array-buffer.cc | 3 +- deps/v8/test/cctest/test-api-interceptors.cc | 5 +- deps/v8/test/cctest/test-api-typed-array.cc | 6 +- deps/v8/test/cctest/test-api.cc | 141 +- deps/v8/test/cctest/test-assembler-riscv32.cc | 360 +- deps/v8/test/cctest/test-assembler-riscv64.cc | 482 +- .../test/cctest/test-code-stub-assembler.cc | 3 +- deps/v8/test/cctest/test-cpu-profiler.cc | 19 +- deps/v8/test/cctest/test-descriptor-array.cc | 8 +- deps/v8/test/cctest/test-heap-profiler.cc | 358 +- deps/v8/test/cctest/test-helper-riscv32.cc | 3 + deps/v8/test/cctest/test-helper-riscv32.h | 24 +- deps/v8/test/cctest/test-helper-riscv64.cc | 3 + deps/v8/test/cctest/test-helper-riscv64.h | 24 +- deps/v8/test/cctest/test-js-weak-refs.cc | 90 +- deps/v8/test/cctest/test-serialize.cc | 33 +- deps/v8/test/cctest/test-shared-strings.cc | 10 +- deps/v8/test/cctest/wasm/test-gc.cc | 21 + deps/v8/test/cctest/wasm/test-run-wasm-64.cc | 2 +- deps/v8/test/common/DEPS | 1 + deps/v8/test/common/code-assembler-tester.h | 18 +- .../{fuzzer => common}/wasm/fuzzer-common.cc | 602 +- .../{fuzzer => common}/wasm/fuzzer-common.h | 17 + deps/v8/test/common/wasm/wasm-run-utils.cc | 2 +- deps/v8/test/common/wasm/wasm-run-utils.h | 2 + .../test/debugger/debug/debug-liveedit-1.js | 2 +- .../test/debugger/debug/debug-liveedit-2.js | 2 +- .../test/debugger/debug/debug-liveedit-3.js | 2 +- .../test/debugger/debug/debug-liveedit-4.js | 2 +- .../debug-liveedit-arrow-function-at-start.js | 2 +- .../debug/debug-liveedit-check-stack.js | 2 +- .../debug/debug-liveedit-compile-error.js | 2 +- .../debugger/debug/debug-liveedit-eval.js | 2 +- .../debugger/debug/debug-liveedit-inline.js | 2 +- .../debugger/debug/debug-liveedit-literals.js | 2 +- .../debug/debug-liveedit-newsource.js | 2 +- .../debug-liveedit-patch-positions-replace.js | 2 +- .../debug/debug-liveedit-recursion.js | 2 +- .../debug/es6/debug-liveedit-new-target-1.js | 2 +- .../debug/es6/debug-liveedit-new-target-2.js | 2 +- .../debug/es6/debug-liveedit-new-target-3.js | 2 +- deps/v8/test/filecheck/filecheck.status | 4 + .../js-wasm-wrapper-inlining-lazy-deopt.js | 69 + deps/v8/test/fuzzer/DEPS | 1 - deps/v8/test/fuzzer/wasm/async.cc | 2 +- deps/v8/test/fuzzer/wasm/code.cc | 2 +- deps/v8/test/fuzzer/wasm/compile-all.cc | 2 +- deps/v8/test/fuzzer/wasm/compile-revec.cc | 2 +- deps/v8/test/fuzzer/wasm/compile-simd.cc | 2 +- deps/v8/test/fuzzer/wasm/compile-wasmgc.cc | 2 +- deps/v8/test/fuzzer/wasm/compile.cc | 2 +- deps/v8/test/fuzzer/wasm/deopt.cc | 2 +- deps/v8/test/fuzzer/wasm/init-expr.cc | 2 +- .../wasm/interpreter/fast-interpreter.cc | 2 +- deps/v8/test/fuzzer/wasm/module.cc | 2 +- deps/v8/test/fuzzer/wasm/streaming.cc | 2 +- .../cpu-profiler/console-profile-wasm.js | 2 +- .../inspector/debugger/es6-module-liveedit.js | 2 + .../inspector/debugger/pause-on-oom-wide.js | 2 +- .../debugger/set-breakpoint-after-liveedit.js | 2 + .../set-script-source-active-function.js | 2 + ...et-script-source-debug-evaluate-closure.js | 2 + .../debugger/set-script-source-es-module.js | 2 + .../debugger/set-script-source-exception.js | 2 + .../debugger/set-script-source-repl-mode.js | 2 + ...e-top-frame-with-additional-activations.js | 2 + .../debugger/set-script-source-top-frame.js | 2 + .../debugger/set-script-source-unchanged.js | 2 + .../inspector/debugger/set-script-source.js | 2 + ...ling-heap-profiler-call-stack-expected.txt | 10 + .../sampling-heap-profiler-call-stack.js | 65 + deps/v8/test/inspector/inspector-test.cc | 14 + deps/v8/test/inspector/isolate-data.cc | 9 +- deps/v8/test/inspector/isolate-data.h | 2 +- .../regress/regress-crbug-1195927.js | 2 + .../regress/regress-crbug-1328453.js | 2 + ...al-properties-prototype-chain-expected.txt | 2 +- .../internal-properties-prototype-chain.js | 12 +- .../intl/number-format/comma-compat-off.js | 22 + .../intl/number-format/comma-compat-on.js | 22 + .../intl/number-format/italian-compat-off.js | 15 + .../intl/number-format/italian-compat-on.js | 15 + .../js-wasm-wrapper-inlining-turbolev-64.js | 43 + .../js-wasm-wrapper-inlining-turbolev-64.out | 6 + .../js-wasm-wrapper-inlining-turbolev.js | 310 + .../js-wasm-wrapper-inlining-turbolev.out | 65 + deps/v8/test/message/message.status | 24 +- .../v8/test/message/wasm-inlining-into-js.out | 2 +- .../message/wasm-trace-globals-liftoff.out | 20 +- deps/v8/test/message/wasm-trace-globals.out | 20 +- .../message/wasm-trace-memory-liftoff.out | 30 +- deps/v8/test/message/wasm-trace-memory.out | 30 +- .../message/wasm-trace-memory64-liftoff.out | 56 +- deps/v8/test/message/wasm-trace-memory64.out | 56 +- deps/v8/test/mjsunit/baseline/cross-realm.js | 6 +- .../v8/test/mjsunit/baseline/test-baseline.js | 2 +- .../mjsunit/compiler/inlining-exponential.js | 3 + .../test/mjsunit/compiler/regress-9945-2.js | 13 +- deps/v8/test/mjsunit/es6/array-from.js | 2 +- deps/v8/test/mjsunit/function-prototype.js | 10 + .../ignition/optimize-proto-assign-seq.js | 350 - .../test/mjsunit/maglev/regress-434414109.js | 18 + .../test/mjsunit/maglev/regress-436305802.js | 18 + .../test/mjsunit/maglev/regress-441549153.js | 32 + .../test/mjsunit/maglev/regress-443300701.js | 20 + .../test/mjsunit/maglev/regress-443362704.js | 24 + .../test/mjsunit/maglev/regress-445048824.js | 30 + .../test/mjsunit/maglev/regress-445206945.js | 19 + .../test/mjsunit/maglev/regress-447658917.js | 55 + .../maglev/regress/regress-446096116.js | 13 + .../store-oddball-to-double-elements.js | 2 +- .../maglev/truncate-int32-many-uses.js | 25 + deps/v8/test/mjsunit/maglev/truncate-int32.js | 24 + deps/v8/test/mjsunit/mjsunit.status | 155 +- deps/v8/test/mjsunit/object-freeze.js | 6 +- .../test/mjsunit/object-prevent-extensions.js | 4 +- deps/v8/test/mjsunit/object-seal.js | 6 +- .../opt-proto-seq/test_arrow_function.js | 47 + .../test_assign_key_multiple_times.js | 40 + .../opt-proto-seq/test_class_fast_path.js | 48 + .../test_different_left_most_var.js | 46 + .../test_eval_return_last_set_property.js | 39 + .../test_feedback_vector_side_effect.js | 50 + .../opt-proto-seq/test_function_fast_path.js | 45 + .../opt-proto-seq/test_has_prototype_keys.js | 47 + .../mjsunit/opt-proto-seq/test_has_setters.js | 51 + .../test_not_proto_assign_seq.js | 43 + .../opt-proto-seq/test_null_prototype.js | 46 + .../test_poison_default_proto.js | 44 + .../test_proto_of_prototype_assigned.js | 41 + .../test_prototype_proto_keys.js | 54 + .../opt-proto-seq/test_prototype_read_only.js | 48 + .../opt-proto-seq/test_variable_proxy.js | 48 + .../opt-proto-seq/test_variable_proxy_eval.js | 45 + deps/v8/test/mjsunit/regexp-444637793.js | 18 + deps/v8/test/mjsunit/regexp-peephole.js | 19 + .../mjsunit/regress/asm/regress-444637791.js | 65 + .../test/mjsunit/regress/regress-333926321.js | 6 - .../test/mjsunit/regress/regress-417326263.js | 2 +- .../test/mjsunit/regress/regress-439522866.js | 43 + .../test/mjsunit/regress/regress-441360078.js | 12 + .../test/mjsunit/regress/regress-442923337.js | 18 + .../test/mjsunit/regress/regress-443906710.js | 25 + .../test/mjsunit/regress/regress-446078846.js | 24 + .../test/mjsunit/regress/regress-446395421.js | 16 + .../test/mjsunit/regress/regress-447254174.js | 30 + .../regress/regress-crbug-442161248.js | 14 + .../regress/regress-crbug-444254187.js | 21 + .../regress-thin-string-keyed-access.js | 21 + .../mjsunit/regress/wasm/regress-331383939.js | 17 - .../mjsunit/regress/wasm/regress-336358915.js | 1 - .../mjsunit/regress/wasm/regress-342522151.js | 1 - .../regress/wasm/regress-348473836-global.js | 6 - .../regress/wasm/regress-348473836-memory.js | 6 - .../regress/wasm/regress-348473836-table.js | 6 - .../regress/wasm/regress-348473836-tag.js | 6 - .../wasm/regress-348473836-webassembly.js | 6 - .../mjsunit/regress/wasm/regress-381458039.js | 2 +- .../mjsunit/regress/wasm/regress-438770394.js | 31 + .../mjsunit/regress/wasm/regress-441131191.js | 22 - .../mjsunit/regress/wasm/regress-441816628.js | 21 + .../mjsunit/regress/wasm/regress-443377612.js | 23 + .../mjsunit/regress/wasm/regress-444049512.js | 31 + .../mjsunit/regress/wasm/regress-444067407.js | 15 + .../test/mjsunit/sandbox/regress-385775375.js | 2 +- .../test/mjsunit/sandbox/regress-435630461.js | 33 + .../test/mjsunit/sandbox/regress-442981541.js | 61 + .../test/mjsunit/sandbox/regress-443182220.js | 47 + .../test/mjsunit/sandbox/regress-443772809.js | 53 + .../regress/regress-435630464-ccall.js | 31 + .../regress/regress-435630464-centry.js | 31 + .../sandbox/regress/regress-445102886.js | 19 + .../sandbox/regress/regress-445209324.js | 40 + .../sandbox/regress/regress-446113730.js | 223 + .../turbolev/alloc-inlining-into-checkmaps.js | 40 + .../mjsunit/turbolev/regress-429421804.js | 34 + .../mjsunit/turbolev/regress-437697684.js | 36 + .../mjsunit/turbolev/regress-443254910.js | 49 + .../mjsunit/turbolev/regress-443476912-1.js | 27 + .../mjsunit/turbolev/regress-443476912-2.js | 27 + .../mjsunit/turbolev/regress-443476912-3.js | 28 + .../mjsunit/turbolev/regress-444067398.js | 32 + .../mjsunit/turbolev/regress-444883987.js | 48 + .../mjsunit/turbolev/regress-444936494.js | 21 + .../mjsunit/turbolev/regress-445208694.js | 25 + .../mjsunit/turbolev/regress-446429188.js | 31 + .../mjsunit/turbolev/regress-446606878.js | 21 + .../string-escape-analysis-new-cons-string.js | 46 + deps/v8/test/mjsunit/undefined-double.js | 20 +- .../compilation-hints/compilation-priority.js | 23 +- .../mjsunit/wasm/custom-descriptors-bottom.js | 47 + .../wasm/custom-descriptors-inlining.js | 50 +- .../wasm/custom-descriptors-interop.js | 191 + .../wasm/custom-descriptors-proxies.js | 120 +- .../wasm/custom-descriptors-validity.js | 2 +- .../mjsunit/wasm/generate-random-module.js | 2 +- .../v8/test/mjsunit/wasm/half-dup-shuffles.js | 85 + deps/v8/test/mjsunit/wasm/jspi-conditional.js | 19 - deps/v8/test/mjsunit/wasm/jspi-init-safe.js | 22 - deps/v8/test/mjsunit/wasm/jspi.js | 1 - .../test/mjsunit/wasm/origin-trial-flags.js | 27 - .../mjsunit/wasm/prototype-setup-builder.js | 182 + .../mjsunit/wasm/redundant-shuffle-lanes.js | 269 +- deps/v8/test/mjsunit/wasm/stack-switching.js | 154 +- deps/v8/test/mjsunit/wasm/wasm-interpreter.js | 28 + .../test/mjsunit/wasm/wasm-module-builder.js | 1 + .../wasm/wrapper-inlining-lazy-deopt.js | 10 +- .../mjsunit/{harmony => }/weakrefs/basics.js | 0 .../weakrefs/cleanup-from-different-realm.js | 0 .../weakrefs/cleanup-is-not-a-microtask.js | 0 .../weakrefs/cleanup-on-detached-realm.js | 0 .../cleanup-proxy-from-different-realm.js | 0 .../mjsunit/{harmony => }/weakrefs/cleanup.js | 2 +- .../weakrefs/clearkeptobjects-on-quit.js | 0 .../finalizationregistry-and-weakref.js | 0 ...nregistry-independent-lifetime-multiple.js | 0 ...nalizationregistry-independent-lifetime.js | 0 ...nalizationregistry-keeps-holdings-alive.js | 0 ...ry-scheduled-for-cleanup-multiple-times.js | 0 .../minor-gc-cleanup-from-different-realm.js | 39 + .../minor-gc-cleanup-is-not-a-microtask.js | 56 + .../minor-gc-cleanup-on-detached-realm.js | 69 + ...r-gc-cleanup-proxy-from-different-realm.js | 42 + .../test/mjsunit/weakrefs/minor-gc-cleanup.js | 59 + ...-gc-dirty-finalization-registry-two-gcs.js | 33 + ...nor-gc-finalizationregistry-and-weakref.js | 52 + ...nregistry-independent-lifetime-multiple.js | 54 + ...nalizationregistry-independent-lifetime.js | 43 + ...nalizationregistry-keeps-holdings-alive.js | 51 + ...ry-scheduled-for-cleanup-multiple-times.js | 82 + ...r-gc-multiple-dirty-finalization-groups.js | 45 + ...c-reclaims-unreachable-weak-cell-target.js | 32 + ...-gc-reclaims-unreachable-weakref-target.js | 26 + .../minor-gc-reentrant-gc-from-cleanup.js | 30 + ...ress-finalizationregistry-dirty-enqueue.js | 35 + .../mjsunit/weakrefs/minor-gc-two-weakrefs.js | 37 + .../weakrefs/minor-gc-undefined-holdings.js | 42 + .../minor-gc-unregister-after-cleanup.js | 49 + .../minor-gc-unregister-before-cleanup.js | 45 + .../minor-gc-unregister-called-twice.js | 50 + .../minor-gc-unregister-inside-cleanup.js | 45 + .../minor-gc-unregister-inside-cleanup2.js | 53 + .../minor-gc-unregister-inside-cleanup3.js | 51 + .../weakrefs/minor-gc-unregister-many.js | 54 + ...register-when-cleanup-already-scheduled.js | 45 + .../weakrefs/minor-gc-weak-cell-basics.js | 47 + .../weakrefs/minor-gc-weak-unregistertoken.js | 33 + .../minor-gc-weakref-creation-keeps-alive.js | 33 + .../minor-gc-weakref-deref-keeps-alive.js | 52 + .../multiple-dirty-finalization-groups.js | 0 .../weakrefs/reentrant-gc-from-cleanup.js | 0 ...ress-finalizationregistry-dirty-enqueue.js | 0 .../weakrefs/symbol-as-weakref-target-gc.js | 0 .../weakrefs/symbol-as-weakref-target.js | 0 .../symbol-in-finalizationregistry.js | 0 .../{harmony => }/weakrefs/two-weakrefs.js | 0 .../weakrefs/undefined-holdings.js | 0 .../weakrefs/unregister-after-cleanup.js | 0 .../weakrefs/unregister-before-cleanup.js | 0 .../weakrefs/unregister-called-twice.js | 0 .../weakrefs/unregister-inside-cleanup.js | 0 .../weakrefs/unregister-inside-cleanup2.js | 0 .../weakrefs/unregister-inside-cleanup3.js | 0 .../{harmony => }/weakrefs/unregister-many.js | 0 ...register-when-cleanup-already-scheduled.js | 0 .../weakrefs/weak-cell-basics.js | 0 .../weakrefs/weak-unregistertoken.js | 0 .../weakrefs/weakref-creation-keeps-alive.js | 0 .../weakrefs/weakref-deref-keeps-alive.js | 0 deps/v8/test/test262/test262.status | 21 + deps/v8/test/unittests/BUILD.gn | 11 +- .../test/unittests/api/api-wasm-unittest.cc | 49 - .../unittests/api/gc-callbacks-unittest.cc | 91 + .../unittests/api/interceptor-unittest.cc | 3 +- .../api/resource-constraints-unittest.cc | 5 +- .../assembler/disasm-riscv-unittest.cc | 15 +- .../unittests/base/address-region-unittest.cc | 35 +- .../unittests/base/atomic-utils-unittest.cc | 21 + .../base/region-allocator-unittest.cc | 22 + ...aft-instruction-selector-arm64-unittest.cc | 226 + .../backend/instruction-selector-unittest.h | 2 +- ...turboshaft-instruction-selector-unittest.h | 2 +- .../unittests/compiler/function-tester.cc | 1 + .../test/unittests/compiler/function-tester.h | 8 +- .../compiler/linkage-tail-call-unittest.cc | 12 +- .../compiler/run-tail-calls-unittest.cc | 2 +- .../diagnostics/etw-control-unittest.cc | 20 +- .../execution/microtask-queue-unittest.cc | 56 + .../v8/test/unittests/gen_fuzztest_configs.py | 6 +- .../unittests/heap/code-range-unittest.cc | 114 + .../conservative-stack-visitor-unittest.cc | 1 + .../unified-heap-snapshot-unittest.cc | 4 - .../heap/heap-controller-unittest.cc | 3 +- deps/v8/test/unittests/heap/heap-unittest.cc | 37 +- deps/v8/test/unittests/heap/heap-utils.cc | 10 +- .../unittests/heap/shared-heap-unittest.cc | 10 +- .../v8/test/unittests/heap/spaces-unittest.cc | 3 +- .../unittests/heap/write-barrier-unittest.cc | 8 - .../bytecode-array-builder-unittest.cc | 2 +- .../bytecode-expectations-parser.cc | 161 + .../bytecode-expectations-parser.h | 46 + .../bytecode-expectations-printer.cc | 32 +- .../bytecode-expectations-printer.h | 35 +- .../bytecode-generator-unittest.cc | 3365 +--------- .../ElideRedundantHoleChecks.golden | 2 +- .../ForOfOptimization.golden | 83 + .../PropertyStores.golden | 1558 ++--- .../SetPrototypePropertiesOptimization.golden | 214 + .../generate-bytecode-expectations.cc | 365 +- .../v8/test/unittests/logging/log-unittest.cc | 6 +- .../unittests/objects/modules-unittest.cc | 348 + .../objects/property-details-unittest.cc} | 32 +- .../objects/value-serializer-unittest.cc | 100 +- .../parser/scanner-streams-unittest.cc | 4 +- deps/v8/test/unittests/test-utils.cc | 19 - deps/v8/test/unittests/test-utils.h | 14 +- deps/v8/test/unittests/testcfg.py | 16 +- deps/v8/test/unittests/unittests.status | 16 +- ...32-cross-compiler-determinism-fuzztest.cc} | 119 +- .../unittests/wasm/module-decoder-unittest.cc | 341 + .../wasm/module-generation-fuzztest.cc | 2 +- ...imd-cross-compiler-determinism-fuzztest.cc | 216 + ...mbler-unittest-custom-descriptors.wasm.inc | 41 + ...embler-unittest-custom-descriptors.wat.inc | 19 + .../wasm/wasm-disassembler-unittest.cc | 11 +- .../unittests/wasm/wasm-tracing-unittest.cc | 365 + deps/v8/test/wasm-api-tests/BUILD.gn | 75 +- .../wasm-spec-tests/wasm-spec-tests.status | 8 - deps/v8/test/webkit/webkit.status | 6 + deps/v8/third_party/abseil-cpp/BUILD.gn | 4 + .../abseil-cpp/CMake/AbseilDll.cmake | 1 + .../v8/third_party/abseil-cpp/README.chromium | 2 +- .../abseil-cpp/absl/algorithm/BUILD.bazel | 2 +- .../abseil-cpp/absl/algorithm/BUILD.gn | 2 +- .../abseil-cpp/absl/algorithm/CMakeLists.txt | 3 +- .../abseil-cpp/absl/algorithm/container.h | 332 +- .../absl/algorithm/container_test.cc | 818 +++ .../abseil-cpp/absl/base/BUILD.bazel | 26 + .../third_party/abseil-cpp/absl/base/BUILD.gn | 46 + .../abseil-cpp/absl/base/CMakeLists.txt | 28 + .../abseil-cpp/absl/base/call_once_test.cc | 20 +- .../third_party/abseil-cpp/absl/base/config.h | 15 +- .../absl/base/internal/nullability_traits.h | 71 + .../base/internal/nullability_traits_test.cc | 98 + .../absl/base/internal/raw_logging.cc | 7 +- .../abseil-cpp/absl/base/internal/sysinfo.cc | 9 - .../absl/base/internal/sysinfo_test.cc | 6 - .../base/internal/unscaledcycleclock_config.h | 2 +- .../abseil-cpp/absl/base/optimization.h | 4 +- .../absl/container/inlined_vector.h | 6 +- .../absl/container/inlined_vector_test.cc | 2 + .../absl/container/internal/raw_hash_set.cc | 136 +- .../absl/container/internal/raw_hash_set.h | 147 +- .../abseil-cpp/absl/debugging/BUILD.bazel | 4 + .../abseil-cpp/absl/debugging/BUILD.gn | 1 + .../abseil-cpp/absl/debugging/CMakeLists.txt | 1 + .../absl/debugging/internal/elf_mem_image.h | 8 +- .../internal/stacktrace_aarch64-inl.inc | 2 +- .../internal/stacktrace_riscv-inl.inc | 3 +- .../absl/debugging/internal/symbolize.h | 4 +- .../absl/debugging/stacktrace_test.cc | 2 + .../abseil-cpp/absl/functional/BUILD.bazel | 4 + .../abseil-cpp/absl/functional/BUILD.gn | 4 + .../abseil-cpp/absl/functional/CMakeLists.txt | 4 + .../abseil-cpp/absl/functional/function_ref.h | 126 +- .../absl/functional/function_ref_test.cc | 119 +- .../absl/functional/internal/function_ref.h | 46 +- .../abseil-cpp/absl/log/BUILD.bazel | 2 + .../third_party/abseil-cpp/absl/log/BUILD.gn | 2 + .../abseil-cpp/absl/log/CMakeLists.txt | 3 + .../abseil-cpp/absl/log/check_test_impl.inc | 17 +- .../abseil-cpp/absl/log/die_if_null.cc | 4 +- .../abseil-cpp/absl/log/die_if_null.h | 27 +- .../abseil-cpp/absl/log/internal/BUILD.bazel | 1 + .../abseil-cpp/absl/log/internal/BUILD.gn | 1 + .../abseil-cpp/absl/log/internal/check_op.cc | 4 +- .../abseil-cpp/absl/log/internal/check_op.h | 77 +- .../abseil-cpp/absl/log/internal/conditions.h | 73 +- .../absl/log/internal/log_message.cc | 7 +- .../absl/log/internal/log_message.h | 6 +- .../abseil-cpp/absl/meta/type_traits.h | 21 +- .../abseil-cpp/absl/meta/type_traits_test.cc | 3 + .../abseil-cpp/absl/numeric/int128.h | 26 +- .../absl/numeric/int128_have_intrinsic.inc | 32 +- .../absl/numeric/int128_no_intrinsic.inc | 12 +- .../abseil-cpp/absl/numeric/int128_test.cc | 27 + .../absl/random/internal/fastmath_test.cc | 8 +- .../absl/random/internal/platform.h | 13 - .../random/internal/randen_engine_test.cc | 1 - .../absl/random/internal/seed_material.cc | 28 +- .../abseil-cpp/absl/strings/cord.cc | 4 +- .../abseil-cpp/absl/strings/cord.h | 2 +- .../strings/internal/str_format/checker.h | 6 +- .../absl/strings/str_format_test.cc | 8 +- .../abseil-cpp/absl/synchronization/mutex.h | 16 +- .../abseil-cpp/absl/utility/utility.h | 13 + .../abseil-cpp/generate_def_files.py | 169 +- .../abseil-cpp/symbols_arm64_dbg.def | 801 ++- .../abseil-cpp/symbols_arm64_rel.def | 70 +- .../abseil-cpp/symbols_x64_dbg.def | 801 ++- .../abseil-cpp/symbols_x64_rel.def | 74 +- .../abseil-cpp/symbols_x64_rel_asan.def | 58 +- .../abseil-cpp/symbols_x86_dbg.def | 801 ++- .../abseil-cpp/symbols_x86_rel.def | 77 +- .../fp16/src/include/fp16/bitcasts.h | 14 +- .../third_party/fp16/src/include/fp16/fp16.h | 86 +- .../fp16/src/include/fp16/macros.h | 14 + deps/v8/third_party/glibc/README.v8 | 1 + deps/v8/third_party/highway/src/hwy/abort.cc | 50 +- deps/v8/third_party/highway/src/hwy/abort.h | 21 +- .../highway/src/hwy/abort_header_only_test.cc | 22 + .../third_party/highway/src/hwy/abort_test.cc | 21 + .../highway/src/hwy/aligned_allocator.h | 6 +- .../highway/src/hwy/aligned_allocator_test.cc | 19 +- .../third_party/highway/src/hwy/auto_tune.h | 516 ++ .../highway/src/hwy/auto_tune_test.cc | 125 + deps/v8/third_party/highway/src/hwy/base.h | 417 +- .../third_party/highway/src/hwy/base_test.cc | 69 +- .../highway/src/hwy/bit_set_test.cc | 1 - .../highway/src/hwy/cache_control.h | 16 + .../highway/src/hwy/contrib/algo/copy_test.cc | 4 +- .../src/hwy/contrib/algo/transform_test.cc | 12 +- .../src/hwy/contrib/bit_pack/bit_pack_test.cc | 2 +- .../highway/src/hwy/contrib/dot/dot-inl.h | 105 +- .../highway/src/hwy/contrib/dot/dot_test.cc | 25 +- .../highway/src/hwy/contrib/image/image.cc | 30 +- .../src/hwy/contrib/math/math_hyper_test.cc | 211 + .../src/hwy/contrib/math/math_tan_test.cc | 540 ++ .../highway/src/hwy/contrib/math/math_test.cc | 462 +- .../src/hwy/contrib/math/math_trig_test.cc | 241 + .../src/hwy/contrib/matvec/matvec-inl.h | 27 +- .../src/hwy/contrib/matvec/matvec_test.cc | 54 +- .../highway/src/hwy/contrib/sort/BUILD | 264 - .../highway/src/hwy/contrib/sort/algo-inl.h | 15 +- .../src/hwy/contrib/sort/bench_sort.cc | 17 +- .../src/hwy/contrib/sort/print_network.cc | 2 +- .../highway/src/hwy/contrib/sort/result-inl.h | 20 +- .../highway/src/hwy/contrib/sort/shared-inl.h | 31 +- .../highway/src/hwy/contrib/sort/sort_test.cc | 22 +- .../src/hwy/contrib/sort/sort_unit_test.cc | 15 +- .../highway/src/hwy/contrib/sort/traits-inl.h | 8 +- .../highway/src/hwy/contrib/sort/vqsort-inl.h | 47 +- .../highway/src/hwy/contrib/sort/vqsort.cc | 108 +- .../src/hwy/contrib/sort/vqsort_128a.cc | 27 + .../src/hwy/contrib/sort/vqsort_128d.cc | 27 + .../src/hwy/contrib/sort/vqsort_f16a.cc | 14 +- .../src/hwy/contrib/sort/vqsort_f16d.cc | 14 +- .../src/hwy/contrib/sort/vqsort_f32a.cc | 7 + .../src/hwy/contrib/sort/vqsort_f32d.cc | 7 + .../src/hwy/contrib/sort/vqsort_f64a.cc | 7 + .../src/hwy/contrib/sort/vqsort_f64d.cc | 7 + .../src/hwy/contrib/sort/vqsort_i16a.cc | 7 + .../src/hwy/contrib/sort/vqsort_i16d.cc | 7 + .../src/hwy/contrib/sort/vqsort_i32a.cc | 7 + .../src/hwy/contrib/sort/vqsort_i32d.cc | 7 + .../src/hwy/contrib/sort/vqsort_i64a.cc | 7 + .../src/hwy/contrib/sort/vqsort_i64d.cc | 7 + .../src/hwy/contrib/sort/vqsort_kv128a.cc | 27 + .../src/hwy/contrib/sort/vqsort_kv128d.cc | 27 + .../src/hwy/contrib/sort/vqsort_kv64a.cc | 7 + .../src/hwy/contrib/sort/vqsort_kv64d.cc | 7 + .../src/hwy/contrib/sort/vqsort_u16a.cc | 7 + .../src/hwy/contrib/sort/vqsort_u16d.cc | 7 + .../src/hwy/contrib/sort/vqsort_u32a.cc | 7 + .../src/hwy/contrib/sort/vqsort_u32d.cc | 7 + .../src/hwy/contrib/sort/vqsort_u64a.cc | 7 + .../src/hwy/contrib/sort/vqsort_u64d.cc | 7 + .../src/hwy/contrib/thread_pool/futex.h | 71 +- .../src/hwy/contrib/thread_pool/spin.h | 326 + .../src/hwy/contrib/thread_pool/spin_test.cc | 116 + .../src/hwy/contrib/thread_pool/thread_pool.h | 1166 ++-- .../contrib/thread_pool/thread_pool_test.cc | 223 +- .../src/hwy/contrib/thread_pool/topology.cc | 1112 ++- .../src/hwy/contrib/thread_pool/topology.h | 33 + .../hwy/contrib/thread_pool/topology_test.cc | 50 +- .../src/hwy/contrib/unroller/unroller-inl.h | 29 +- .../src/hwy/contrib/unroller/unroller_test.cc | 56 +- .../highway/src/hwy/detect_compiler_arch.h | 54 +- .../highway/src/hwy/detect_targets.h | 284 +- .../highway/src/hwy/examples/benchmark.cc | 16 +- .../src/hwy/examples/profiler_example.cc | 73 +- .../highway/src/hwy/examples/skeleton.cc | 2 + .../highway/src/hwy/foreach_target.h | 35 + deps/v8/third_party/highway/src/hwy/highway.h | 276 +- .../highway/src/hwy/highway_test.cc | 5 + .../highway/src/hwy/nanobenchmark.cc | 38 +- .../highway/src/hwy/nanobenchmark.h | 20 +- .../highway/src/hwy/nanobenchmark_test.cc | 2 +- .../highway/src/hwy/ops/arm_neon-inl.h | 1048 +-- .../highway/src/hwy/ops/arm_sve-inl.h | 1471 ++-- .../highway/src/hwy/ops/emu128-inl.h | 35 +- .../highway/src/hwy/ops/generic_ops-inl.h | 929 ++- .../highway/src/hwy/ops/loongarch_lasx-inl.h | 4681 +++++++++++++ .../highway/src/hwy/ops/loongarch_lsx-inl.h | 5954 +++++++++++++++++ .../highway/src/hwy/ops/ppc_vsx-inl.h | 365 +- .../third_party/highway/src/hwy/ops/rvv-inl.h | 399 +- .../highway/src/hwy/ops/scalar-inl.h | 52 +- .../highway/src/hwy/ops/set_macros-inl.h | 141 +- .../highway/src/hwy/ops/shared-inl.h | 43 +- .../highway/src/hwy/ops/wasm_128-inl.h | 181 +- .../highway/src/hwy/ops/wasm_256-inl.h | 28 + .../highway/src/hwy/ops/x86_128-inl.h | 690 +- .../highway/src/hwy/ops/x86_256-inl.h | 755 ++- .../highway/src/hwy/ops/x86_512-inl.h | 1034 +-- .../highway/src/hwy/ops/x86_avx3-inl.h | 501 ++ .../third_party/highway/src/hwy/per_target.cc | 2 + .../highway/src/hwy/perf_counters.cc | 377 ++ .../highway/src/hwy/perf_counters.h | 156 + .../highway/src/hwy/perf_counters_test.cc | 151 + .../third_party/highway/src/hwy/print-inl.h | 2 + deps/v8/third_party/highway/src/hwy/print.cc | 22 +- .../third_party/highway/src/hwy/profiler.cc | 146 + .../v8/third_party/highway/src/hwy/profiler.h | 1151 ++-- deps/v8/third_party/highway/src/hwy/stats.h | 21 +- .../v8/third_party/highway/src/hwy/targets.cc | 256 +- deps/v8/third_party/highway/src/hwy/targets.h | 82 +- .../highway/src/hwy/targets_test.cc | 8 + .../highway/src/hwy/tests/arithmetic_test.cc | 198 + .../highway/src/hwy/tests/compare_test.cc | 159 +- .../src/hwy/tests/complex_arithmetic_test.cc | 356 + .../highway/src/hwy/tests/concat_test.cc | 5 +- .../highway/src/hwy/tests/convert_test.cc | 106 + .../highway/src/hwy/tests/count_test.cc | 43 + .../highway/src/hwy/tests/demote_test.cc | 5 +- .../highway/src/hwy/tests/div_test.cc | 58 +- .../highway/src/hwy/tests/float_test.cc | 146 +- .../highway/src/hwy/tests/fma_test.cc | 96 +- .../highway/src/hwy/tests/hwy_gtest.h | 15 +- .../highway/src/hwy/tests/if_test.cc | 4 +- .../highway/src/hwy/tests/list_targets.cc | 114 +- .../highway/src/hwy/tests/logical_test.cc | 51 + .../highway/src/hwy/tests/mask_set_test.cc | 366 + .../highway/src/hwy/tests/mask_test.cc | 360 +- .../src/hwy/tests/masked_arithmetic_test.cc | 511 +- .../src/hwy/tests/masked_minmax_test.cc | 22 + .../highway/src/hwy/tests/memory_test.cc | 103 +- .../highway/src/hwy/tests/minmax128_test.cc | 193 + .../src/hwy/tests/minmax_magnitude_test.cc | 156 + .../src/hwy/tests/minmax_number_test.cc | 173 + .../highway/src/hwy/tests/minmax_test.cc | 237 +- .../src/hwy/tests/mul_pairwise_test.cc | 5 +- .../highway/src/hwy/tests/mul_test.cc | 28 + .../highway/src/hwy/tests/reduction_test.cc | 119 + .../highway/src/hwy/tests/saturated_test.cc | 8 +- .../highway/src/hwy/tests/shift_test.cc | 246 +- .../src/hwy/tests/swizzle_block_test.cc | 36 + .../highway/src/hwy/tests/swizzle_test.cc | 2 +- .../highway/src/hwy/tests/test_util-inl.h | 48 +- .../highway/src/hwy/tests/test_util.h | 30 + .../highway/src/hwy/tests/tuple_test.cc | 3 +- .../third_party/highway/src/hwy/timer-inl.h | 170 +- deps/v8/third_party/highway/src/hwy/timer.cc | 78 +- deps/v8/third_party/highway/src/hwy/timer.h | 173 +- .../third_party/highway/src/hwy/x86_cpuid.h | 81 + .../third_party/rapidhash-v8/README.chromium | 1 + deps/v8/third_party/utf8-decoder/README.v8 | 1 + deps/v8/third_party/v8/builtins/array-sort.tq | 6 +- deps/v8/third_party/zlib/README.chromium | 8 +- deps/v8/third_party/zlib/chromeconf.h | 3 - .../clusterfuzz/foozzie/v8_fuzz_flags.json | 5 +- deps/v8/tools/clusterfuzz/js_fuzzer/corpus.js | 67 +- deps/v8/tools/clusterfuzz/js_fuzzer/random.js | 9 + deps/v8/tools/clusterfuzz/js_fuzzer/run.js | 10 +- deps/v8/tools/clusterfuzz/js_fuzzer/runner.js | 36 +- .../clusterfuzz/js_fuzzer/script_mutator.js | 7 + .../clusterfuzz/js_fuzzer/test/helpers.js | 3 + .../clusterfuzz/js_fuzzer/test/test_corpus.js | 28 +- .../js_fuzzer/test/test_differential_fuzz.js | 13 +- .../clusterfuzz/js_fuzzer/test/test_runner.js | 35 +- .../expected_code_0.js | 37 +- .../expected_code_1.js | 53 +- .../expected_code_2.js | 38 +- .../expected_flags_0.js | 6 +- .../expected_flags_1.js | 6 +- .../expected_flags_2.js | 6 +- .../corpus/program_1.js | 0 .../corpus/program_2.js | 0 .../corpus/program_3.js | 0 .../settings.json | 0 .../corpus/program_1.js | 0 .../corpus/program_2.js | 0 .../corpus/program_3.js | 0 .../settings.json | 0 .../fuzzdir-diff-fuzz-1/corpus/program_2.js | 5 + .../fuzzdir-diff-fuzz-1/settings.json | 7 + .../trials/clusterfuzz_trials_config.json | 4 +- deps/v8/tools/dev/gm.py | 45 +- deps/v8/tools/include-file-as-bytes.py | 58 + deps/v8/tools/profile.mjs | 4 + deps/v8/tools/testrunner/local/variants.py | 71 +- deps/v8/tools/testrunner/num_fuzzer.py | 3 + deps/v8/tools/testrunner/objects/testcase.py | 12 +- deps/v8/tools/testrunner/standard_runner.py | 2 +- deps/v8/tools/testrunner/testproc/fuzzer.py | 18 +- .../testrunner/utils/augmented_options.py | 1 + .../tools/ubsan/array_bounds_ignorelist.txt | 25 + deps/v8/tools/v8_presubmit.py | 5 + deps/v8/tools/v8windbg/base/utilities.h | 2 + deps/v8/tools/whitespace.txt | 2 +- 1228 files changed, 70547 insertions(+), 32245 deletions(-) create mode 100644 deps/v8/src/codegen/arm64/constant-pool-arm64.cc create mode 100644 deps/v8/src/codegen/arm64/constant-pool-arm64.h create mode 100644 deps/v8/src/codegen/constant-pool-entry.h delete mode 100644 deps/v8/src/codegen/constant-pool.cc create mode 100644 deps/v8/src/codegen/ppc/constant-pool-ppc.cc create mode 100644 deps/v8/src/codegen/ppc/constant-pool-ppc.h create mode 100644 deps/v8/src/codegen/riscv/constant-pool-riscv.cc create mode 100644 deps/v8/src/codegen/riscv/constant-pool-riscv.h create mode 100644 deps/v8/src/codegen/riscv/constant-riscv-zimop.h create mode 100644 deps/v8/src/codegen/riscv/extension-riscv-zimop.cc create mode 100644 deps/v8/src/codegen/riscv/extension-riscv-zimop.h create mode 100644 deps/v8/src/compiler/turboshaft/simplified-optimization-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/wasm-type-cast-rtt-optimization-helpers.cc create mode 100644 deps/v8/src/compiler/turboshaft/wasm-type-cast-rtt-optimization-helpers.h create mode 100644 deps/v8/src/flags/save-flags.cc create mode 100644 deps/v8/src/flags/save-flags.h delete mode 100644 deps/v8/src/heap/scavenger-inl.h create mode 100644 deps/v8/src/maglev/maglev-kna-processor.h create mode 100644 deps/v8/src/maglev/maglev-known-node-aspects.cc create mode 100644 deps/v8/src/maglev/maglev-known-node-aspects.h rename deps/v8/src/maglev/{ppc64/maglev-assembler-ppc64-inl.h => ppc/maglev-assembler-ppc-inl.h} (99%) rename deps/v8/src/maglev/{ppc64/maglev-assembler-ppc64.cc => ppc/maglev-assembler-ppc.cc} (97%) rename deps/v8/src/maglev/{ppc64/maglev-ir-ppc64.cc => ppc/maglev-ir-ppc.cc} (98%) create mode 100644 deps/v8/src/objects/js-temporal-zoneinfo64.cc create mode 100644 deps/v8/src/objects/js-temporal-zoneinfo64.h delete mode 100644 deps/v8/src/wasm/memory-tracing.h create mode 100644 deps/v8/src/wasm/wasm-tracing.cc create mode 100644 deps/v8/src/wasm/wasm-tracing.h rename deps/v8/test/{fuzzer => common}/wasm/fuzzer-common.cc (70%) rename deps/v8/test/{fuzzer => common}/wasm/fuzzer-common.h (82%) create mode 100644 deps/v8/test/filecheck/js-wasm-wrapper-inlining-lazy-deopt.js create mode 100644 deps/v8/test/inspector/heap-profiler/sampling-heap-profiler-call-stack-expected.txt create mode 100644 deps/v8/test/inspector/heap-profiler/sampling-heap-profiler-call-stack.js create mode 100644 deps/v8/test/intl/number-format/comma-compat-off.js create mode 100644 deps/v8/test/intl/number-format/comma-compat-on.js create mode 100644 deps/v8/test/intl/number-format/italian-compat-off.js create mode 100644 deps/v8/test/intl/number-format/italian-compat-on.js create mode 100644 deps/v8/test/message/js-wasm-wrapper-inlining-turbolev-64.js create mode 100644 deps/v8/test/message/js-wasm-wrapper-inlining-turbolev-64.out create mode 100644 deps/v8/test/message/js-wasm-wrapper-inlining-turbolev.js create mode 100644 deps/v8/test/message/js-wasm-wrapper-inlining-turbolev.out delete mode 100644 deps/v8/test/mjsunit/ignition/optimize-proto-assign-seq.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-434414109.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-436305802.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-441549153.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-443300701.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-443362704.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-445048824.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-445206945.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-447658917.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-446096116.js create mode 100644 deps/v8/test/mjsunit/maglev/truncate-int32-many-uses.js create mode 100644 deps/v8/test/mjsunit/maglev/truncate-int32.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_arrow_function.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_assign_key_multiple_times.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_class_fast_path.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_different_left_most_var.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_eval_return_last_set_property.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_feedback_vector_side_effect.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_function_fast_path.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_has_prototype_keys.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_has_setters.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_not_proto_assign_seq.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_null_prototype.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_poison_default_proto.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_proto_of_prototype_assigned.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_prototype_proto_keys.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_prototype_read_only.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_variable_proxy.js create mode 100644 deps/v8/test/mjsunit/opt-proto-seq/test_variable_proxy_eval.js create mode 100644 deps/v8/test/mjsunit/regexp-444637793.js create mode 100644 deps/v8/test/mjsunit/regexp-peephole.js create mode 100644 deps/v8/test/mjsunit/regress/asm/regress-444637791.js delete mode 100644 deps/v8/test/mjsunit/regress/regress-333926321.js create mode 100644 deps/v8/test/mjsunit/regress/regress-439522866.js create mode 100644 deps/v8/test/mjsunit/regress/regress-441360078.js create mode 100644 deps/v8/test/mjsunit/regress/regress-442923337.js create mode 100644 deps/v8/test/mjsunit/regress/regress-443906710.js create mode 100644 deps/v8/test/mjsunit/regress/regress-446078846.js create mode 100644 deps/v8/test/mjsunit/regress/regress-446395421.js create mode 100644 deps/v8/test/mjsunit/regress/regress-447254174.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-442161248.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-444254187.js create mode 100644 deps/v8/test/mjsunit/regress/regress-thin-string-keyed-access.js delete mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-331383939.js delete mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-348473836-global.js delete mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-348473836-memory.js delete mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-348473836-table.js delete mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-348473836-tag.js delete mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-348473836-webassembly.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-438770394.js delete mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-441131191.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-441816628.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-443377612.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-444049512.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-444067407.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-435630461.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-442981541.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-443182220.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress-443772809.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-435630464-ccall.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-435630464-centry.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-445102886.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-445209324.js create mode 100644 deps/v8/test/mjsunit/sandbox/regress/regress-446113730.js create mode 100644 deps/v8/test/mjsunit/turbolev/alloc-inlining-into-checkmaps.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-429421804.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-437697684.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-443254910.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-443476912-1.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-443476912-2.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-443476912-3.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-444067398.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-444883987.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-444936494.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-445208694.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-446429188.js create mode 100644 deps/v8/test/mjsunit/turbolev/regress-446606878.js create mode 100644 deps/v8/test/mjsunit/turboshaft/string-escape-analysis-new-cons-string.js create mode 100644 deps/v8/test/mjsunit/wasm/custom-descriptors-bottom.js create mode 100644 deps/v8/test/mjsunit/wasm/custom-descriptors-interop.js create mode 100644 deps/v8/test/mjsunit/wasm/half-dup-shuffles.js delete mode 100644 deps/v8/test/mjsunit/wasm/jspi-conditional.js delete mode 100644 deps/v8/test/mjsunit/wasm/jspi-init-safe.js delete mode 100644 deps/v8/test/mjsunit/wasm/origin-trial-flags.js create mode 100644 deps/v8/test/mjsunit/wasm/prototype-setup-builder.js rename deps/v8/test/mjsunit/{harmony => }/weakrefs/basics.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/cleanup-from-different-realm.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/cleanup-is-not-a-microtask.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/cleanup-on-detached-realm.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/cleanup-proxy-from-different-realm.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/cleanup.js (99%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/clearkeptobjects-on-quit.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/finalizationregistry-and-weakref.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/finalizationregistry-independent-lifetime-multiple.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/finalizationregistry-independent-lifetime.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/finalizationregistry-keeps-holdings-alive.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/finalizationregistry-scheduled-for-cleanup-multiple-times.js (100%) create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-cleanup-from-different-realm.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-cleanup-is-not-a-microtask.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-cleanup-on-detached-realm.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-cleanup-proxy-from-different-realm.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-cleanup.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-dirty-finalization-registry-two-gcs.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-finalizationregistry-and-weakref.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-finalizationregistry-independent-lifetime-multiple.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-finalizationregistry-independent-lifetime.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-finalizationregistry-keeps-holdings-alive.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-finalizationregistry-scheduled-for-cleanup-multiple-times.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-multiple-dirty-finalization-groups.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-reclaims-unreachable-weak-cell-target.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-reclaims-unreachable-weakref-target.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-reentrant-gc-from-cleanup.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-stress-finalizationregistry-dirty-enqueue.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-two-weakrefs.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-undefined-holdings.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-unregister-after-cleanup.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-unregister-before-cleanup.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-unregister-called-twice.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-unregister-inside-cleanup.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-unregister-inside-cleanup2.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-unregister-inside-cleanup3.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-unregister-many.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-unregister-when-cleanup-already-scheduled.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-weak-cell-basics.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-weak-unregistertoken.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-weakref-creation-keeps-alive.js create mode 100644 deps/v8/test/mjsunit/weakrefs/minor-gc-weakref-deref-keeps-alive.js rename deps/v8/test/mjsunit/{harmony => }/weakrefs/multiple-dirty-finalization-groups.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/reentrant-gc-from-cleanup.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/stress-finalizationregistry-dirty-enqueue.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/symbol-as-weakref-target-gc.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/symbol-as-weakref-target.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/symbol-in-finalizationregistry.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/two-weakrefs.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/undefined-holdings.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/unregister-after-cleanup.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/unregister-before-cleanup.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/unregister-called-twice.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/unregister-inside-cleanup.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/unregister-inside-cleanup2.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/unregister-inside-cleanup3.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/unregister-many.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/unregister-when-cleanup-already-scheduled.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/weak-cell-basics.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/weak-unregistertoken.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/weakref-creation-keeps-alive.js (100%) rename deps/v8/test/mjsunit/{harmony => }/weakrefs/weakref-deref-keeps-alive.js (100%) create mode 100644 deps/v8/test/unittests/heap/code-range-unittest.cc create mode 100644 deps/v8/test/unittests/interpreter/bytecode-expectations-parser.cc create mode 100644 deps/v8/test/unittests/interpreter/bytecode-expectations-parser.h create mode 100644 deps/v8/test/unittests/interpreter/bytecode_expectations/ForOfOptimization.golden create mode 100644 deps/v8/test/unittests/interpreter/bytecode_expectations/SetPrototypePropertiesOptimization.golden rename deps/v8/test/{cctest/test-property-details.cc => unittests/objects/property-details-unittest.cc} (69%) rename deps/v8/test/unittests/wasm/{cross-compiler-determinism-fuzztest.cc => float32-cross-compiler-determinism-fuzztest.cc} (74%) create mode 100644 deps/v8/test/unittests/wasm/simd-cross-compiler-determinism-fuzztest.cc create mode 100644 deps/v8/test/unittests/wasm/wasm-disassembler-unittest-custom-descriptors.wasm.inc create mode 100644 deps/v8/test/unittests/wasm/wasm-disassembler-unittest-custom-descriptors.wat.inc create mode 100644 deps/v8/test/unittests/wasm/wasm-tracing-unittest.cc create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/nullability_traits.h create mode 100644 deps/v8/third_party/abseil-cpp/absl/base/internal/nullability_traits_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/abort_header_only_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/auto_tune.h create mode 100644 deps/v8/third_party/highway/src/hwy/auto_tune_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/math/math_hyper_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/math/math_tan_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/math/math_trig_test.cc delete mode 100644 deps/v8/third_party/highway/src/hwy/contrib/sort/BUILD create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/thread_pool/spin.h create mode 100644 deps/v8/third_party/highway/src/hwy/contrib/thread_pool/spin_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/ops/loongarch_lasx-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/loongarch_lsx-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/ops/x86_avx3-inl.h create mode 100644 deps/v8/third_party/highway/src/hwy/perf_counters.cc create mode 100644 deps/v8/third_party/highway/src/hwy/perf_counters.h create mode 100644 deps/v8/third_party/highway/src/hwy/perf_counters_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/profiler.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/complex_arithmetic_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/mask_set_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/minmax128_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/minmax_magnitude_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/tests/minmax_number_test.cc create mode 100644 deps/v8/third_party/highway/src/hwy/x86_cpuid.h rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/{fuzzdir-1 => fuzzdir-diff-fuzz-1}/corpus/program_1.js (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/{fuzzdir-1 => fuzzdir-diff-fuzz-1}/corpus/program_2.js (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/{fuzzdir-1 => fuzzdir-diff-fuzz-1}/corpus/program_3.js (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/{fuzzdir-1 => fuzzdir-diff-fuzz-1}/settings.json (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/{fuzzdir-2 => fuzzdir-diff-fuzz-2}/corpus/program_1.js (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/{fuzzdir-2 => fuzzdir-diff-fuzz-2}/corpus/program_2.js (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/{fuzzdir-2 => fuzzdir-diff-fuzz-2}/corpus/program_3.js (100%) rename deps/v8/tools/clusterfuzz/js_fuzzer/test_data/differential_fuzz_fuzzilli/fuzzilli/{fuzzdir-2 => fuzzdir-diff-fuzz-2}/settings.json (100%) create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/fuzzilli/fuzzdir-diff-fuzz-1/corpus/program_2.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/fuzzilli/fuzzdir-diff-fuzz-1/settings.json create mode 100644 deps/v8/tools/include-file-as-bytes.py create mode 100644 deps/v8/tools/ubsan/array_bounds_ignorelist.txt diff --git a/deps/v8/.ycm_extra_conf.py b/deps/v8/.ycm_extra_conf.py index 382abaea15d114..c44d4ef09c0ef4 100644 --- a/deps/v8/.ycm_extra_conf.py +++ b/deps/v8/.ycm_extra_conf.py @@ -149,9 +149,14 @@ def GetClangCommandFromNinjaForFilename(v8_root, filename): v8_flags.append(MakeIncludePathAbsolute(flag, "-I", out_dir)) elif flag.startswith('-isystem'): v8_flags.append(MakeIncludePathAbsolute(flag, "-isystem", out_dir)) - elif flag.startswith('-std') or flag.startswith( - '-pthread') or flag.startswith('-no'): + elif any([flag.startswith(p) for p in ['-std', '-pthread', '-no']]): v8_flags.append(flag) + elif any([ + flag.startswith(p) for p in ['-fmodule-map-file=', '-fmodule-file='] + ]) or flag == '-fbuiltin-module-map': + # Modules don't play well together with clang/clangd, see + # https://crrev.com/c/6887510. + continue elif flag.startswith('-') and flag[1] in 'DWFfmgOX': v8_flags.append(flag) return v8_flags diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index ffce5c6df023ce..a9ea710211ad0f 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -191,6 +191,7 @@ Keith Smiley Kevin Gibbons Keyhan Vakil Kris Selden +Krishna Ravishankar Kyounga Ra Levi Zim LN Liberda @@ -295,6 +296,7 @@ Tianping Yang Timo Teräs Tobias Burnus Tobias Nießen +Tomasz Malinowski Ujjwal Sharma Vadim Gorbachev Varun Varada diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index 3bbb5fd48f8a83..afe73fe83c3d73 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -577,6 +577,7 @@ v8_config( }) + select({ ":enable_pointer_compression_shared_cage": [ "V8_COMPRESS_POINTERS_IN_SHARED_CAGE", + "V8_CONTIGUOUS_COMPRESSED_RO_SPACE_SIZE_MB=8", ], ":enable_pointer_compression_multiple_cages": [ "V8_COMPRESS_POINTERS_IN_MULTIPLE_CAGES", @@ -1461,8 +1462,8 @@ filegroup( "src/codegen/compilation-cache.h", "src/codegen/compiler.cc", "src/codegen/compiler.h", - "src/codegen/constant-pool.cc", "src/codegen/constant-pool.h", + "src/codegen/constant-pool-entry.h", "src/codegen/constants-arch.h", "src/codegen/cpu-features.h", "src/codegen/external-reference.cc", @@ -1671,6 +1672,8 @@ filegroup( "src/flags/flags-impl.h", "src/flags/flags.cc", "src/flags/flags.h", + "src/flags/save-flags.h", + "src/flags/save-flags.cc", "src/handles/global-handles.cc", "src/handles/global-handles.h", "src/handles/global-handles-inl.h", @@ -1876,7 +1879,6 @@ filegroup( "src/heap/safepoint.h", "src/heap/scavenger.cc", "src/heap/scavenger.h", - "src/heap/scavenger-inl.h", "src/heap/slot-set.cc", "src/heap/slot-set.h", "src/heap/spaces.cc", @@ -2731,6 +2733,8 @@ filegroup( "src/codegen/arm64/assembler-arm64.cc", "src/codegen/arm64/assembler-arm64.h", "src/codegen/arm64/assembler-arm64-inl.h", + "src/codegen/arm64/constant-pool-arm64.cc", + "src/codegen/arm64/constant-pool-arm64.h", "src/codegen/arm64/constants-arm64.h", "src/codegen/arm64/cpu-arm64.cc", "src/codegen/arm64/decoder-arm64.cc", @@ -2797,6 +2801,8 @@ filegroup( "src/codegen/riscv/base-assembler-riscv.h", "src/codegen/riscv/base-constants-riscv.h", "src/codegen/riscv/base-riscv-i.h", + "src/codegen/riscv/constant-pool-riscv.cc", + "src/codegen/riscv/constant-pool-riscv.h", "src/codegen/riscv/constant-riscv-a.h", "src/codegen/riscv/constant-riscv-b.h", "src/codegen/riscv/constant-riscv-c.h", @@ -2817,6 +2823,8 @@ filegroup( "src/codegen/riscv/extension-riscv-v.h", "src/codegen/riscv/extension-riscv-zicsr.h", "src/codegen/riscv/extension-riscv-zifencei.h", + "src/codegen/riscv/extension-riscv-zimop.cc", + "src/codegen/riscv/extension-riscv-zimop.h", "src/codegen/riscv/interface-descriptors-riscv-inl.h", "src/codegen/riscv/macro-assembler-riscv.h", "src/codegen/riscv/register-riscv.h", @@ -2839,6 +2847,8 @@ filegroup( "src/codegen/ppc/assembler-ppc.cc", "src/codegen/ppc/assembler-ppc.h", "src/codegen/ppc/assembler-ppc-inl.h", + "src/codegen/ppc/constant-pool-ppc.cc", + "src/codegen/ppc/constant-pool-ppc.h", "src/codegen/ppc/constants-ppc.cc", "src/codegen/ppc/constants-ppc.h", "src/codegen/ppc/cpu-ppc.cc", @@ -2907,6 +2917,7 @@ filegroup( "src/maglev/maglev-interpreter-frame-state.h", "src/maglev/maglev-ir-inl.h", "src/maglev/maglev-ir.h", + "src/maglev/maglev-kna-processor.h", "src/maglev/maglev-phi-representation-selector.h", "src/maglev/maglev-truncation.h", "src/maglev/maglev-pipeline-statistics.h", @@ -2926,6 +2937,8 @@ filegroup( "src/maglev/maglev-compiler.cc", "src/maglev/maglev-concurrent-dispatcher.cc", "src/maglev/maglev-graph-builder.cc", + "src/maglev/maglev-known-node-aspects.cc", + "src/maglev/maglev-known-node-aspects.h", "src/maglev/maglev-graph-labeller.cc", "src/maglev/maglev-graph-optimizer.cc", "src/maglev/maglev-graph-printer.cc", @@ -3029,7 +3042,6 @@ filegroup( "src/wasm/leb-helper.h", "src/wasm/local-decl-encoder.cc", "src/wasm/local-decl-encoder.h", - "src/wasm/memory-tracing.h", "src/wasm/module-compiler.cc", "src/wasm/module-compiler.h", "src/wasm/module-decoder.cc", @@ -3107,6 +3119,8 @@ filegroup( "src/wasm/wasm-subtyping.cc", "src/wasm/wasm-subtyping.h", "src/wasm/wasm-tier.h", + "src/wasm/wasm-tracing.cc", + "src/wasm/wasm-tracing.h", "src/wasm/wasm-value.h", "src/wasm/well-known-imports.cc", "src/wasm/well-known-imports.h", @@ -3525,6 +3539,7 @@ filegroup( "src/compiler/turboshaft/select-lowering-reducer.h", "src/compiler/turboshaft/sidetable.cc", "src/compiler/turboshaft/sidetable.h", + "src/compiler/turboshaft/simplified-optimization-reducer.h", "src/compiler/turboshaft/simplify-tf-loops.cc", "src/compiler/turboshaft/simplify-tf-loops.h", "src/compiler/turboshaft/snapshot-table.h", @@ -3658,6 +3673,8 @@ filegroup( "src/compiler/turboshaft/wasm-shuffle-reducer.h", "src/compiler/turboshaft/wasm-simd-phase.cc", "src/compiler/turboshaft/wasm-simd-phase.h", + "src/compiler/turboshaft/wasm-type-cast-rtt-optimization-helpers.cc", + "src/compiler/turboshaft/wasm-type-cast-rtt-optimization-helpers.h", "src/compiler/wasm-address-reassociation.cc", "src/compiler/wasm-address-reassociation.h", "src/compiler/wasm-call-descriptors.cc", @@ -3695,6 +3712,8 @@ filegroup( "src/maglev/maglev-compilation-info.h", "src/maglev/maglev-compilation-unit.cc", "src/maglev/maglev-compilation-unit.h", + "src/maglev/maglev-known-node-aspects.cc", + "src/maglev/maglev-known-node-aspects.h", "src/maglev/maglev-graph-builder.cc", "src/maglev/maglev-graph-builder.h", "src/maglev/maglev-graph-optimizer.cc", @@ -3714,6 +3733,7 @@ filegroup( "src/maglev/maglev-ir.cc", "src/maglev/maglev-ir.h", "src/maglev/maglev-ir-inl.h", + "src/maglev/maglev-kna-processor.h", "src/maglev/maglev-reducer-inl.h", "src/maglev/maglev-reducer.h", "src/maglev/maglev-register-frame-array.h", diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 487a7466168196..52a9c860841b53 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -353,9 +353,6 @@ declare_args() { # Sets -DV8_ENABLE_SANDBOX_HARDWARE_SUPPORT v8_enable_sandbox_hardware_support = false - # Enable leaptiering - v8_enable_leaptiering = true - # Enable the memory corruption API. Useful for testing the sandbox. # The memory corruption API is only exposed to JavaScript if sandbox testing # mode is enabled at runtime, for example via --sandbox-fuzzing. @@ -460,8 +457,8 @@ declare_args() { # Use the experimental TSA-based definition for some builtins. v8_enable_experimental_tsa_builtins = false - # Use the experimental encoding of undefined in double values. - v8_enable_experimental_undefined_double = false + # Use the encoding of undefined in double values. + v8_enable_undefined_double = false v8_dcheck_always_on = dcheck_always_on @@ -479,13 +476,7 @@ declare_args() { # closely mimic in-browser behavior. # # Currently used in d8. - # TODO(399144247,400141120,392817524): Temporarily disabled again because of - # performance regressions in multi-threaded, Zone-allocation heavy workloads, - # e.g., JetStream startup or Wasm eager compilation. - v8_enable_partition_alloc = - false && !build_with_v8_embedder && - !(defined(build_with_node) && build_with_node) && - (v8_target_cpu != "ppc64" && v8_target_cpu != "s390x") + v8_enable_partition_alloc = "" # V8 uses Chrome's blink-gc clang plugin for checking V8's internal cppgc # usages. The plugin is not exhaustive but covers most common known pitfalls. @@ -510,7 +501,8 @@ if (v8_enable_verify_heap == "") { } if (v8_enable_verify_write_barriers == "") { v8_enable_verify_write_barriers = - v8_enable_debugging_features && !v8_disable_write_barriers + (v8_enable_debugging_features || v8_dcheck_always_on) && + !v8_disable_write_barriers } if (v8_enable_object_print == "") { v8_enable_object_print = v8_enable_debugging_features @@ -568,8 +560,7 @@ if (v8_multi_arch_build && rebase_path(get_label_info(":d8", "root_out_dir"), root_build_dir) == "clang_x64_fuzzer_experiments") { v8_enable_pointer_compression = !v8_enable_pointer_compression - v8_enable_experimental_undefined_double = - !v8_enable_experimental_undefined_double + v8_enable_undefined_double = !v8_enable_undefined_double v8_lower_limits_mode = !v8_lower_limits_mode } @@ -615,11 +606,22 @@ if (v8_enable_maglev == "") { v8_enable_maglev = v8_enable_turbofan && (v8_current_cpu == "arm" || v8_current_cpu == "x64" || v8_current_cpu == "arm64" || v8_current_cpu == "s390x" || - v8_current_cpu == "riscv64") + v8_current_cpu == "ppc64" || v8_current_cpu == "riscv64") } assert(v8_enable_turbofan || !v8_enable_maglev, "Maglev is not available when Turbofan is disabled.") +if (v8_enable_partition_alloc == "") { + v8_enable_partition_alloc = + !build_with_v8_embedder && + !(defined(build_with_node) && build_with_node) && + (v8_target_cpu != "ppc64" && v8_target_cpu != "s390x") && + v8_enable_pointer_compression_shared_cage +} + +assert(!v8_enable_partition_alloc || v8_enable_pointer_compression_shared_cage, + "partition_alloc is not available for multi-cage mode.") + is_wasm_interpreter_mode_enabled = !v8_enable_sparkplug && !v8_enable_maglev && !v8_enable_turbofan && v8_enable_webassembly && v8_enable_drumbrake @@ -760,10 +762,6 @@ assert(!v8_enable_pointer_compression_8gb || v8_enable_pointer_compression, assert(!v8_enable_sandbox || v8_enable_external_code_space, "The sandbox requires the external code space") -assert( - v8_enable_leaptiering, - "non-leaptiering is deprecated (see https://groups.google.com/g/v8-dev/c/PYk2_GGP2Wk)") - assert(!v8_enable_memory_corruption_api || v8_enable_sandbox, "The Memory Corruption API requires the sandbox") @@ -1174,9 +1172,16 @@ config("features") { defines += [ "V8_TLS_USED_IN_LIBRARY" ] } - if (v8_enable_pointer_compression && - !v8_enable_pointer_compression_shared_cage) { - defines += [ "V8_COMPRESS_POINTERS_IN_MULTIPLE_CAGES" ] + if (v8_enable_pointer_compression) { + if (v8_enable_pointer_compression_shared_cage) { + defines += [ + # TODO(442942399): Re-enable after bug has been addressed. + # "V8_CONTIGUOUS_COMPRESSED_RO_SPACE", + "V8_CONTIGUOUS_COMPRESSED_RO_SPACE_SIZE_MB=${v8_contiguous_compressed_ro_space_size_mb}", + ] + } else { + defines += [ "V8_COMPRESS_POINTERS_IN_MULTIPLE_CAGES" ] + } } if (v8_embedder_string != "") { @@ -1450,12 +1455,10 @@ config("features") { if (v8_enable_experimental_tsa_builtins) { defines += [ "V8_ENABLE_EXPERIMENTAL_TSA_BUILTINS" ] } - if (v8_enable_experimental_undefined_double) { - defines += [ "V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE" ] - } - if (v8_enable_leaptiering) { - defines += [ "V8_ENABLE_LEAPTIERING" ] + if (v8_enable_undefined_double) { + defines += [ "V8_ENABLE_UNDEFINED_DOUBLE" ] } + defines += [ "V8_ENABLE_LEAPTIERING" ] if (v8_enable_partition_alloc) { defines += [ "V8_ENABLE_PARTITION_ALLOC" ] } @@ -1793,6 +1796,32 @@ config("always_turbofanimize") { } } +# Sanitizer defines. V8 will inherit a default `-fsanitize=array-bounds` +# from Chromium's `//build/config/`, which prevents clean usage of +# `__has_feature(undefined_behavior_sanitizer)` in the short term, +# until something like `--lie-about-ubsan-enablement=array-bounds` +# can be implemented. +# +# This config provides a clear signal of "are we sanitizing" tied to +# GN configuration. +# +# See also: https://crbug.com/386992829 +config("sanitizer_defines") { + defines = [] + if (is_asan) { + defines += [ "V8_USE_ADDRESS_SANITIZER" ] + } + if (is_hwasan) { + defines += [ "V8_USE_HWADDRESS_SANITIZER" ] + } + if (is_msan) { + defines += [ "V8_USE_MEMORY_SANITIZER" ] + } + if (is_ubsan) { + defines += [ "V8_USE_UNDEFINED_BEHAVIOR_SANITIZER" ] + } +} + ############################################################################### # Actions # @@ -2891,7 +2920,6 @@ action("v8_dump_build_config") { "verify_predictable=$v8_enable_verify_predictable", "wasm_random_fuzzers=$v8_wasm_random_fuzzers", "memory_corruption_api=$v8_enable_memory_corruption_api", - "leaptiering=$v8_enable_leaptiering", "lower_limits_mode=$v8_lower_limits_mode", # Please add new switches also in `build_config_content` in `bazel/defs.bzl` @@ -3373,6 +3401,23 @@ v8_header_set("v8_flags") { ] } +if (v8_enable_temporal_support) { + # In cases where we aren't using ICU4C (e.g. v8_enable_i18n_support=false), + # we "bake" in a zoneinfo64.res binary for Temporal + action("make_temporal_zoneinfo_cpp") { + script = "tools/include-file-as-bytes.py" + inputs = [ get_label_info("//third_party/icu/", "dir") + + "/tzres/zoneinfo64.res" ] + outputs = + [ "$target_gen_dir/src/builtins/builtins-temporal-zoneinfo64-data.cc" ] + args = [ + rebase_path(inputs[0], root_build_dir), + rebase_path(outputs[0], root_build_dir), + "zoneinfo64_static_data", + ] + } +} + v8_header_set("v8_internal_headers") { configs = [ ":internal_config" ] @@ -3431,6 +3476,7 @@ v8_header_set("v8_internal_headers") { "src/codegen/code-reference.h", "src/codegen/compilation-cache.h", "src/codegen/compiler.h", + "src/codegen/constant-pool-entry.h", "src/codegen/constant-pool.h", "src/codegen/constants-arch.h", "src/codegen/cpu-features.h", @@ -3673,6 +3719,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/runtime-call-descriptors.h", "src/compiler/turboshaft/select-lowering-reducer.h", "src/compiler/turboshaft/sidetable.h", + "src/compiler/turboshaft/simplified-optimization-reducer.h", "src/compiler/turboshaft/simplify-tf-loops.h", "src/compiler/turboshaft/snapshot-table-opindex.h", "src/compiler/turboshaft/snapshot-table.h", @@ -3780,6 +3827,7 @@ v8_header_set("v8_internal_headers") { "src/extensions/ignition-statistics-extension.h", "src/extensions/statistics-extension.h", "src/extensions/trigger-failure-extension.h", + "src/flags/save-flags.h", "src/handles/global-handles-inl.h", "src/handles/global-handles.h", "src/handles/handles-inl.h", @@ -3910,7 +3958,6 @@ v8_header_set("v8_internal_headers") { "src/heap/remembered-set-inl.h", "src/heap/remembered-set.h", "src/heap/safepoint.h", - "src/heap/scavenger-inl.h", "src/heap/scavenger.h", "src/heap/slot-set.h", "src/heap/spaces-inl.h", @@ -4414,6 +4461,7 @@ v8_header_set("v8_internal_headers") { sources += [ "src/objects/js-temporal-objects-inl.h", "src/objects/js-temporal-objects.h", + "src/objects/js-temporal-zoneinfo64.h", ] } @@ -4460,6 +4508,8 @@ v8_header_set("v8_internal_headers") { "src/maglev/maglev-interpreter-frame-state.h", "src/maglev/maglev-ir-inl.h", "src/maglev/maglev-ir.h", + "src/maglev/maglev-kna-processor.h", + "src/maglev/maglev-known-node-aspects.h", "src/maglev/maglev-phi-representation-selector.h", "src/maglev/maglev-pipeline-statistics.h", "src/maglev/maglev-post-hoc-optimizations-processors.h", @@ -4483,7 +4533,7 @@ v8_header_set("v8_internal_headers") { } else if (v8_current_cpu == "s390x") { sources += [ "src/maglev/s390/maglev-assembler-s390-inl.h" ] } else if (v8_current_cpu == "ppc64") { - sources += [ "src/maglev/ppc64/maglev-assembler-ppc64-inl.h" ] + sources += [ "src/maglev/ppc/maglev-assembler-ppc-inl.h" ] } } @@ -4512,6 +4562,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/wasm-shuffle-reducer.h", "src/compiler/turboshaft/wasm-simd-phase.h", "src/compiler/turboshaft/wasm-turboshaft-compiler.h", + "src/compiler/turboshaft/wasm-type-cast-rtt-optimization-helpers.h", "src/compiler/wasm-address-reassociation.h", "src/compiler/wasm-call-descriptors.h", "src/compiler/wasm-compiler-definitions.h", @@ -4552,7 +4603,6 @@ v8_header_set("v8_internal_headers") { "src/wasm/jump-table-assembler.h", "src/wasm/leb-helper.h", "src/wasm/local-decl-encoder.h", - "src/wasm/memory-tracing.h", "src/wasm/module-compiler.h", "src/wasm/module-decoder-impl.h", "src/wasm/module-decoder.h", @@ -4601,6 +4651,7 @@ v8_header_set("v8_internal_headers") { "src/wasm/wasm-serialization.h", "src/wasm/wasm-subtyping.h", "src/wasm/wasm-tier.h", + "src/wasm/wasm-tracing.h", "src/wasm/wasm-value.h", "src/wasm/well-known-imports.h", "src/wasm/wrappers-inl.h", @@ -4777,6 +4828,7 @@ v8_header_set("v8_internal_headers") { ### gcmole(arm64) ### "src/codegen/arm64/assembler-arm64-inl.h", "src/codegen/arm64/assembler-arm64.h", + "src/codegen/arm64/constant-pool-arm64.h", "src/codegen/arm64/constants-arm64.h", "src/codegen/arm64/decoder-arm64-inl.h", "src/codegen/arm64/decoder-arm64.h", @@ -4880,6 +4932,7 @@ v8_header_set("v8_internal_headers") { ### gcmole(ppc64) ### "src/codegen/ppc/assembler-ppc-inl.h", "src/codegen/ppc/assembler-ppc.h", + "src/codegen/ppc/constant-pool-ppc.h", "src/codegen/ppc/constants-ppc.h", "src/codegen/ppc/interface-descriptors-ppc-inl.h", "src/codegen/ppc/macro-assembler-ppc.h", @@ -4931,6 +4984,7 @@ v8_header_set("v8_internal_headers") { "src/codegen/riscv/base-assembler-riscv.h", "src/codegen/riscv/base-constants-riscv.h", "src/codegen/riscv/base-riscv-i.h", + "src/codegen/riscv/constant-pool-riscv.h", "src/codegen/riscv/constant-riscv-a.h", "src/codegen/riscv/constant-riscv-b.h", "src/codegen/riscv/constant-riscv-c.h", @@ -4953,6 +5007,7 @@ v8_header_set("v8_internal_headers") { "src/codegen/riscv/extension-riscv-zicond.h", "src/codegen/riscv/extension-riscv-zicsr.h", "src/codegen/riscv/extension-riscv-zifencei.h", + "src/codegen/riscv/extension-riscv-zimop.h", "src/codegen/riscv/interface-descriptors-riscv-inl.h", "src/codegen/riscv/macro-assembler-riscv.h", "src/codegen/riscv/register-riscv.h", @@ -5009,6 +5064,7 @@ v8_header_set("v8_internal_headers") { "src/codegen/riscv/extension-riscv-v.h", "src/codegen/riscv/extension-riscv-zicsr.h", "src/codegen/riscv/extension-riscv-zifencei.h", + "src/codegen/riscv/extension-riscv-zimop.h", "src/codegen/riscv/interface-descriptors-riscv-inl.h", "src/codegen/riscv/macro-assembler-riscv.h", "src/codegen/riscv/register-riscv.h", @@ -5232,6 +5288,7 @@ if (!v8_enable_maglev) { "src/maglev/maglev-inlining.cc", "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-ir.cc", + "src/maglev/maglev-known-node-aspects.cc", "src/maglev/maglev-phi-representation-selector.cc", "src/maglev/maglev-truncation.cc", ] @@ -5328,6 +5385,7 @@ if (v8_enable_webassembly) { "src/compiler/turboshaft/wasm-shuffle-reducer.cc", "src/compiler/turboshaft/wasm-simd-phase.cc", "src/compiler/turboshaft/wasm-turboshaft-compiler.cc", + "src/compiler/turboshaft/wasm-type-cast-rtt-optimization-helpers.cc", "src/compiler/wasm-address-reassociation.cc", "src/compiler/wasm-call-descriptors.cc", "src/compiler/wasm-compiler.cc", @@ -5517,7 +5575,6 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/code-reference.cc", "src/codegen/compilation-cache.cc", "src/codegen/compiler.cc", - "src/codegen/constant-pool.cc", "src/codegen/external-reference-encoder.cc", "src/codegen/external-reference-table.cc", "src/codegen/external-reference.cc", @@ -5598,6 +5655,7 @@ v8_source_set("v8_base_without_compiler") { "src/extensions/statistics-extension.cc", "src/extensions/trigger-failure-extension.cc", "src/flags/flags.cc", + "src/flags/save-flags.cc", "src/handles/global-handles.cc", "src/handles/handles.cc", "src/handles/local-handles.cc", @@ -5947,6 +6005,7 @@ v8_source_set("v8_base_without_compiler") { sources += [ "src/builtins/builtins-temporal.cc", "src/objects/js-temporal-objects.cc", + "src/objects/js-temporal-zoneinfo64.cc", ] } @@ -5973,6 +6032,7 @@ v8_source_set("v8_base_without_compiler") { "src/maglev/maglev-inlining.cc", "src/maglev/maglev-interpreter-frame-state.cc", "src/maglev/maglev-ir.cc", + "src/maglev/maglev-known-node-aspects.cc", "src/maglev/maglev-phi-representation-selector.cc", "src/maglev/maglev-pipeline-statistics.cc", "src/maglev/maglev-regalloc.cc", @@ -6006,8 +6066,8 @@ v8_source_set("v8_base_without_compiler") { ] } else if (v8_current_cpu == "ppc64") { sources += [ - "src/maglev/ppc64/maglev-assembler-ppc64.cc", - "src/maglev/ppc64/maglev-ir-ppc64.cc", + "src/maglev/ppc/maglev-assembler-ppc.cc", + "src/maglev/ppc/maglev-ir-ppc.cc", ] } } @@ -6075,6 +6135,7 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/wasm-result.cc", "src/wasm/wasm-serialization.cc", "src/wasm/wasm-subtyping.cc", + "src/wasm/wasm-tracing.cc", "src/wasm/well-known-imports.cc", ] if (v8_wasm_random_fuzzers) { @@ -6178,6 +6239,7 @@ v8_source_set("v8_base_without_compiler") { sources += [ ### gcmole(arm64) ### "src/codegen/arm64/assembler-arm64.cc", + "src/codegen/arm64/constant-pool-arm64.cc", "src/codegen/arm64/cpu-arm64.cc", "src/codegen/arm64/decoder-arm64.cc", "src/codegen/arm64/instructions-arm64-constants.cc", @@ -6265,6 +6327,7 @@ v8_source_set("v8_base_without_compiler") { sources += [ ### gcmole(ppc64) ### "src/codegen/ppc/assembler-ppc.cc", + "src/codegen/ppc/constant-pool-ppc.cc", "src/codegen/ppc/constants-ppc.cc", "src/codegen/ppc/cpu-ppc.cc", "src/codegen/ppc/macro-assembler-ppc.cc", @@ -6298,6 +6361,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/base-assembler-riscv.cc", "src/codegen/riscv/base-constants-riscv.cc", "src/codegen/riscv/base-riscv-i.cc", + "src/codegen/riscv/constant-pool-riscv.cc", "src/codegen/riscv/cpu-riscv.cc", "src/codegen/riscv/extension-riscv-a.cc", "src/codegen/riscv/extension-riscv-b.cc", @@ -6310,6 +6374,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-zicond.cc", "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", + "src/codegen/riscv/extension-riscv-zimop.cc", "src/codegen/riscv/macro-assembler-riscv.cc", "src/deoptimizer/riscv/deoptimizer-riscv.cc", "src/diagnostics/riscv/disasm-riscv.cc", @@ -6339,6 +6404,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/base-assembler-riscv.cc", "src/codegen/riscv/base-constants-riscv.cc", "src/codegen/riscv/base-riscv-i.cc", + "src/codegen/riscv/constant-pool-riscv.cc", "src/codegen/riscv/cpu-riscv.cc", "src/codegen/riscv/extension-riscv-a.cc", "src/codegen/riscv/extension-riscv-b.cc", @@ -6351,6 +6417,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-zicond.cc", "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", + "src/codegen/riscv/extension-riscv-zimop.cc", "src/codegen/riscv/macro-assembler-riscv.cc", "src/deoptimizer/riscv/deoptimizer-riscv.cc", "src/diagnostics/riscv/disasm-riscv.cc", @@ -6457,6 +6524,14 @@ v8_source_set("v8_base_without_compiler") { ] } + # In i18n mode, we can use ICU4C to load ICU4C's builtin zoneinfo64.res data + # In non-i18n mode, we need to copy that into the binary + if (v8_enable_temporal_support && !v8_enable_i18n_support) { + sources += + [ "$target_gen_dir/src/builtins/builtins-temporal-zoneinfo64-data.cc" ] + deps += [ ":make_temporal_zoneinfo_cpp" ] + } + if (v8_postmortem_support) { sources += [ "$target_gen_dir/debug-support.cc" ] deps += [ ":postmortem-metadata" ] @@ -8132,10 +8207,7 @@ if (v8_enable_webassembly) { ":v8_internal_headers", ] - public_deps = [ - ":wasm_fuzzer_common", - ":wasm_test_common", - ] + public_deps = [ ":wasm_test_common" ] configs = [ ":external_config", @@ -8206,40 +8278,13 @@ if (v8_enable_webassembly) { "test/common/flag-utils.h", "test/common/value-helper.h", "test/common/wasm/flag-utils.h", + "test/common/wasm/fuzzer-common.cc", + "test/common/wasm/fuzzer-common.h", "test/common/wasm/wasm-macro-gen.h", "test/common/wasm/wasm-module-runner.cc", "test/common/wasm/wasm-module-runner.h", "test/common/wasm/wasm-run-utils.cc", "test/common/wasm/wasm-run-utils.h", - ] - - deps = [ - ":generate_bytecode_builtins_list", - ":run_torque", - ":v8_internal_headers", - ":v8_libbase", - ":v8_maybe_temporal", - ":v8_shared_internal_headers", - ":v8_tracing", - ] - - public_deps = [ - ":v8_abseil", - ":v8_maybe_icu", - ] - - configs = [ - ":external_config", - ":internal_config_base", - ] - } - - v8_source_set("wasm_fuzzer_common") { - testonly = true - - sources = [ - "test/fuzzer/wasm/fuzzer-common.cc", - "test/fuzzer/wasm/fuzzer-common.h", "tools/wasm/mjsunit-module-disassembler-impl.h", ] @@ -8248,9 +8293,10 @@ if (v8_enable_webassembly) { ":generate_bytecode_builtins_list", ":run_torque", ":v8_internal_headers", + ":v8_libbase", ":v8_maybe_temporal", + ":v8_shared_internal_headers", ":v8_tracing", - ":wasm_test_common", ] public_deps = [ @@ -8267,10 +8313,7 @@ if (v8_enable_webassembly) { template("v8_wasm_fuzzer") { forward_variables_from(invoker, "*") v8_fuzzer(target_name) { - deps = [ - ":wasm_fuzzer_common", - ":wasm_test_common", - ] + deps = [ ":wasm_test_common" ] } } diff --git a/deps/v8/DEPS b/deps/v8/DEPS index c6b16a0d770bf1..7439281d9f41a0 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -59,7 +59,7 @@ vars = { 'checkout_fuchsia_no_hooks': False, # reclient CIPD package version - 'reclient_version': 're_client_version:0.179.0.28341fc7-gomaip', + 'reclient_version': 're_client_version:0.183.0.3b3097cd-gomaip', # Fetch configuration files required for the 'use_remoteexec' gn arg 'download_remoteexec_cfg': False, @@ -75,24 +75,24 @@ vars = { 'build_with_chromium': False, # GN CIPD package version. - 'gn_version': 'git_revision:5d0a4153b0bcc86c5a23310d5b648a587be3c56d', + 'gn_version': 'git_revision:81b24e01531ecf0eff12ec9359a555ec3944ec4e', # ninja CIPD package version # https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja 'ninja_version': 'version:3@1.12.1.chromium.4', # siso CIPD package version - 'siso_version': 'git_revision:8863265a67843154872be2be1fc0c37339691405', + 'siso_version': 'git_revision:f7020b54462c37f1b10a16e68563c338c9f14371', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Fuchsia sdk # and whatever else without interference from each other. - 'fuchsia_version': 'version:29.20250824.3.1', + 'fuchsia_version': 'version:29.20250927.0.1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling partition_alloc_version # and whatever else without interference from each other. - 'partition_alloc_version': '51d0a558ecdf5cac58509d08263c36764c270ca6', + 'partition_alloc_version': 'cca2b369b2f8895cb14e24740e1f9bf91d5b371e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_build-tools_version @@ -130,9 +130,9 @@ vars = { deps = { 'build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + 'd964efc5f27dcb8690921b9dc4a7780dce83695c', + Var('chromium_url') + '/chromium/src/build.git' + '@' + 'dd54bc718b7c5363155660d12b7965ea9f87ada9', 'buildtools': - Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '2ca9a5b96fbf0a4947d626454781e333b28e275a', + Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + 'fe8567e143162ec1a2fc8d13f85d67a8d2dde1b7', 'buildtools/linux64': { 'packages': [ { @@ -178,9 +178,9 @@ deps = { 'test/mozilla/data': Var('chromium_url') + '/v8/deps/third_party/mozilla-tests.git' + '@' + 'f6c578a10ea707b1a8ab0b88943fe5115ce2b9be', 'test/test262/data': - Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'b947715fdda79a420b253821c1cc52272a77222d', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'a5e69a1534de88d1eb29b76657d84c8541b72df7', 'third_party/android_platform': { - 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + 'e97e62b0b5f26315a0cd58ff8772a2483107158e', + 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + 'e3919359f2387399042d31401817db4a02d756ec', 'condition': 'checkout_android', }, 'third_party/android_sdk/public': { @@ -232,7 +232,7 @@ deps = { 'dep_type': 'cipd', }, 'third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + '3c5077921dbacc75db5768cf4fc0b1d9ca05d2e0', + 'url': Var('chromium_url') + '/catapult.git' + '@' + 'e2b34e6c5df90b060797419372b230d5638a3843', 'condition': 'checkout_android', }, 'third_party/clang-format/script': @@ -246,15 +246,15 @@ deps = { 'condition': 'checkout_android', }, 'third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '6b19831e3cfb16884a36b8045383594955712892', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '73e46667ed3a1326cf564747737b4e11137d7f29', 'third_party/dragonbox/src': Var('chromium_url') + '/external/github.com/jk-jeon/dragonbox.git' + '@' + '6c7c925b571d54486b9ffae8d9d18a822801cbda', 'third_party/fp16/src': - Var('chromium_url') + '/external/github.com/Maratyszcza/FP16.git' + '@' + 'b3720617faf1a4581ed7e6787cc51722ec7751f0', + Var('chromium_url') + '/external/github.com/Maratyszcza/FP16.git' + '@' + '3d2de1816307bac63c16a297e8c4dc501b4076df', 'third_party/fast_float/src': Var('chromium_url') + '/external/github.com/fastfloat/fast_float.git' + '@' + 'cb1d42aaa1e14b09e1452cfdef373d051b8c02a4', 'third_party/fuchsia-gn-sdk': { - 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + '7e28b752c19443ee31cb47a7195add4131a1cc09', + 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + '99294ee55f28f8ae5a3552f4c435528e4c1686b6', 'condition': 'checkout_fuchsia', }, 'third_party/simdutf': @@ -280,11 +280,11 @@ deps = { 'third_party/fuzztest': Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + 'aa6ba9074b8d66a2e2853a0a0992c25966022e13', 'third_party/fuzztest/src': - Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + '169baf17795850fd4b2c29e4d52136aa8d955b61', + Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + 'e101ca021a40733d0fa76a3bd9b49b5f76da4f8a', 'third_party/googletest/src': Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '244cec869d12e53378fa0efb610cd4c32a454ec8', 'third_party/highway/src': - Var('chromium_url') + '/external/github.com/google/highway.git' + '@' + '00fe003dac355b979f36157f9407c7c46448958e', + Var('chromium_url') + '/external/github.com/google/highway.git' + '@' + '84379d1c73de9681b54fbe1c035a23c7bd5d272d', 'third_party/icu': Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '1b2e3e8a421efae36141a7b932b41e315b089af8', 'third_party/instrumented_libs': { @@ -302,169 +302,169 @@ 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' + '@' + '70c21e34ea54ef13377bc6d8283453290e17c7b8', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '4b4a57f5cf627639c041368120af9d69ed40032c', 'third_party/libc++abi/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'f7f5a32b3e9582092d8a4511acec036a09ae8524', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '864f61dc9253d56586ada34c388278565ef513f6', 'third_party/libunwind/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '92fb77dfd4d86aa120730359f5e4d6bb47f1c129', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '322be580a5a193a921c349a15747eeeb9a716ad1', 'third_party/llvm-libc/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + '11725050a2e117625867ec45d70746bb78b170fd', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + '7b45735a2b2c0c11c7c4e02fc6bae12ea95aec48', 'third_party/llvm-build/Release+Asserts': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/clang-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': 'a9f5af449672a239366199c17441427c2c4433a120cace9ffd32397e15224c64', - 'size_bytes': 55087424, - 'generation': 1754486730635359, + 'object_name': 'Linux_x64/clang-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '35a8629534f534aa6771470945fc0baa6906b3fffb28433bc08674d343b84c90', + 'size_bytes': 55674480, + 'generation': 1758743123214066, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Linux_x64/clang-tidy-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': 'c2ce17d666c5124d1b3999e160836b096b22a7c2dbb6f70637be6dceefa4bb86', - 'size_bytes': 13688944, - 'generation': 1754486730632975, + 'object_name': 'Linux_x64/clang-tidy-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '0342c1f9f546b2c87010418c37eaf494b3bcee24e60a351a880046951bf4d47b', + 'size_bytes': 14059964, + 'generation': 1758743123322050, 'condition': 'host_os == "linux" and checkout_clang_tidy', }, { - 'object_name': 'Linux_x64/clangd-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': 'd42b0b22da85e7a49f239eeb378b0e8cd6eeeb1c685e89155c30a344de219636', - 'size_bytes': 13982120, - 'generation': 1754486730644041, + 'object_name': 'Linux_x64/clangd-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '8b9513babd89f706e928be51b9a4c08a4511dae1c152285808d7a25b299ae94b', + 'size_bytes': 14210752, + 'generation': 1758743123414815, 'condition': 'host_os == "linux" and checkout_clangd', }, { - 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '5768970291fb6173bc69c342235e9dcc53c2c475acde8422e7787a8f8170bdd8', - 'size_bytes': 2251652, - 'generation': 1754486730690951, + 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '56bb0093e2e8f71e682f03b0e379d7dac0bacfcc83bfccfd42a4fcd1310fbe75', + 'size_bytes': 2272396, + 'generation': 1758743123592944, 'condition': 'host_os == "linux" and checkout_clang_coverage_tools', }, { - 'object_name': 'Linux_x64/llvmobjdump-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '861c331f1bab58556bd84f33632667fd5af90402f94fb104f8b06dc039a8f598', - 'size_bytes': 5619264, - 'generation': 1754486730668455, + 'object_name': 'Linux_x64/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '9236697d64fc9444b22c90a112f6b3a76ee1edf5b3891af67de0849deb274514', + 'size_bytes': 5666148, + 'generation': 1758743123461779, 'condition': '(checkout_linux or checkout_mac or checkout_android) and host_os == "linux"', }, { - 'object_name': 'Mac/clang-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '484e1b4128566635f123aefd6f9db9f0a1e99f462c247d2393941eb1a6b2efe2', - 'size_bytes': 52422108, - 'generation': 1754486732274509, + 'object_name': 'Mac/clang-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '90e1a97b91d9a39bafc719f5e3b4c3cd8bf457c39f1dc4a27e4bfc59b9331bc5', + 'size_bytes': 53576996, + 'generation': 1758743125100350, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '9a1fc6d92af9af410736066c8fff34cd1f95b3e3696b2b6dd581f8021eb74abc', - 'size_bytes': 996044, - 'generation': 1754486741367172, + 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '7140b54db5936c79bb6f216ea176be70c7e6711f0dec2224369fba76cb9c1572', + 'size_bytes': 1004900, + 'generation': 1758743135101043, 'condition': 'checkout_mac and not host_os == "mac"', }, { - 'object_name': 'Mac/clang-tidy-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '4a4a9dcfe0b11c50e9cfb86963b7014dedf53e2de951fd573713803d45c3fb0f', - 'size_bytes': 13749248, - 'generation': 1754486732350716, + 'object_name': 'Mac/clang-tidy-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '0ef9124d5c56825ebbd10539298400a0b0d1d8d67e0902a7e89b3fecff7f9b0c', + 'size_bytes': 14141008, + 'generation': 1758743125225488, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_tidy', }, { - 'object_name': 'Mac/clangd-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': 'a26a4bc078745f89a5aee6ba20e3507de4497e236592116e304510ce669d5760', - 'size_bytes': 15159680, - 'generation': 1754486732421420, + 'object_name': 'Mac/clangd-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': 'aec08495162681dbfe4e78bd6c728e6f1f410f3fe6c0e070c095dcf4bfda1382', + 'size_bytes': 15632104, + 'generation': 1758743125301839, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clangd', }, { - 'object_name': 'Mac/llvm-code-coverage-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': 'f1b13f22aa030969870d72eaee9a3cfa633c41c811d6a4ee442e616ce4836202', - 'size_bytes': 2283192, - 'generation': 1754486732574927, + 'object_name': 'Mac/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '36b279a1a6dc9d90e932823138f522e3c2741005e34732bce60fea60881a3963', + 'size_bytes': 2321200, + 'generation': 1758743125546947, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Mac/llvmobjdump-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '99dbba5b4f8eb4b7bd6675d0589a4809576bceb4fc857474302d00b545945dcd', - 'size_bytes': 5489896, - 'generation': 1754486732472583, + 'object_name': 'Mac/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '29e8b2d333ecb6640cf99d9103b999ff2be0bb13fe8300528b4245bf6b88869c', + 'size_bytes': 5582716, + 'generation': 1758743125362967, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac_arm64/clang-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '7b99ec0bd96307f6eee85abbe9efe97d341051d7572e65d56f99b0e981fdc2c6', - 'size_bytes': 43856532, - 'generation': 1754486742864144, + 'object_name': 'Mac_arm64/clang-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '29d82cb9830396c21b967a5784f838dcb3d62abfebd08d67d36821dba6eb4ce8', + 'size_bytes': 44576940, + 'generation': 1758743136591599, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Mac_arm64/clang-tidy-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '9c9538cb6c5e431ff030b524ab456775c914dcff8d29751bd02eb991948fc588', - 'size_bytes': 11831704, - 'generation': 1754486742856483, + 'object_name': 'Mac_arm64/clang-tidy-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '8d7781b19bd032eeda7a94810e5429e0501392ac5585fcd16499a3d72e12ab9e', + 'size_bytes': 12142468, + 'generation': 1758743136678250, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_tidy', }, { - 'object_name': 'Mac_arm64/clangd-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '6dbb3d3d584e8d2c778f89f48bf9614bfce8e9d5876e03dbc91747991eec33b1', - 'size_bytes': 12138872, - 'generation': 1754486742962580, + 'object_name': 'Mac_arm64/clangd-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '16617a896e7304ba76af9cbcab00edeb63753804237fc5055810b2049d00b3dc', + 'size_bytes': 12474420, + 'generation': 1758743136764487, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clangd', }, { - 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '0e58aceeb995192461b4a26f059694346e869ba2c2ed806c38e74ed92a3fcf0f', - 'size_bytes': 1933704, - 'generation': 1754486743038880, + 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '3ae73edf0d6b69d6aa41247c8268aaf292630f708036d55f3e0e5fa2ce340497', + 'size_bytes': 1947856, + 'generation': 1758743136945536, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Mac_arm64/llvmobjdump-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': 'd197d5d7581336a63a11f3cb8ca3d3f807c9f6032a21616d029573b90633fed5', - 'size_bytes': 5243848, - 'generation': 1754486742944902, + 'object_name': 'Mac_arm64/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '069266d0ab2b9029908edc0b958af5d5ec3d9cd939b063da7aeeb53548137df9', + 'size_bytes': 5277360, + 'generation': 1758743136838343, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Win/clang-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '1f3dc2b70567abfa52effbcdcd271aa54fbe5e4325e91a2d488748998df79f7e', - 'size_bytes': 47038772, - 'generation': 1754486753863077, + 'object_name': 'Win/clang-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': 'bec899a7163ba0d446a5355e554cf8644b5e3db729404c6defb077549bc9f1b4', + 'size_bytes': 47645664, + 'generation': 1758743148772393, 'condition': 'host_os == "win"', }, { - 'object_name': 'Win/clang-tidy-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '0e640abc3d4335945662024d0583017ef073d6db59171fad290ee0b86de099bc', - 'size_bytes': 13681872, - 'generation': 1754486754006910, + 'object_name': 'Win/clang-tidy-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '10770b3b7b34a0e968cbeb1838b1446080897941c2bb5d192aa6596bbb386c27', + 'size_bytes': 14025008, + 'generation': 1758743148836717, 'condition': 'host_os == "win" and checkout_clang_tidy', }, { - 'object_name': 'Win/clang-win-runtime-library-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '3e41cf1c8b4d5996e60353e282e0219608f134ca475a16541f536a63bf1a036f', - 'size_bytes': 2483996, - 'generation': 1754486763172399, + 'object_name': 'Win/clang-win-runtime-library-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': 'fedf17614b4cba1c8edc7f3ad1c4636bb79535068e76ad6fed75fe65515dc4b8', + 'size_bytes': 2503180, + 'generation': 1758743159444585, 'condition': 'checkout_win and not host_os == "win"', }, { - 'object_name': 'Win/clangd-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': 'd65400e92d8d7393511dc6beab1a2c8be2d4a5b5d946f957a6b55f8e39f666a4', - 'size_bytes': 14175060, - 'generation': 1754486754078416, + 'object_name': 'Win/clangd-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '6dcd1c2f3bd7dbd547f8b93b014a3bc9f9d84b0920fc7632f45a6bfc1b359ae1', + 'size_bytes': 14366920, + 'generation': 1758743148925930, 'condition': 'host_os == "win" and checkout_clangd', }, { - 'object_name': 'Win/llvm-code-coverage-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': '01f7cec8caee5cbc89107f0b287b7f41a4c26979bbec3d88f3eee5faebee4c5e', - 'size_bytes': 2349144, - 'generation': 1754486754112875, + 'object_name': 'Win/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '57e86c6eeeccb1e6e5b87d87c2231f01e006d9067e2f3ad50530e32674599ad6', + 'size_bytes': 2366460, + 'generation': 1758743149180966, 'condition': 'host_os == "win" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/llvmobjdump-llvmorg-21-init-16348-gbd809ffb-17.tar.xz', - 'sha256sum': 'f4048cb8c08849e3f4ff8228ccaca4cf08789023df28bdf5cbad07aa0e245b45', - 'size_bytes': 5603744, - 'generation': 1754486754075834, + 'object_name': 'Win/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-1.tar.xz', + 'sha256sum': '3f398db586e4f75a48eda2a508be4577a9c54cda78cf03afa57b454801ed5bde', + 'size_bytes': 5668924, + 'generation': 1758743148999346, 'condition': '(checkout_linux or checkout_mac or checkout_android) and host_os == "win"', }, ], @@ -490,7 +490,7 @@ deps = { 'third_party/perfetto': Var('android_url') + '/platform/external/perfetto.git' + '@' + '40b529923598b739b2892a536a7692eedbed5685', 'third_party/protobuf': - Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + 'e354a43e42a0ecacd1d65caafb8d40b21f4b4286', + Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + 'fef7a765bb0d1122d32b99f588537b83e2dffe7b', 'third_party/re2/src': Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + '6569a9a3df256f4c0c3813cb8ee2f8eef6e2c1fb', 'third_party/requests': { @@ -498,41 +498,41 @@ deps = { 'condition': 'checkout_android', }, 'tools/rust': - Var('chromium_url') + '/chromium/src/tools/rust' + '@' + 'f71995f8f92a8d6b0658fafce0f0dde769edabfa', + Var('chromium_url') + '/chromium/src/tools/rust' + '@' + 'f93e7ca2a64938e9b4759ec3297f02ca7b3f605f', 'tools/win': - Var('chromium_url') + '/chromium/src/tools/win' + '@' + '89d58ebe78f02706d414154f923f759a05a887b6', + Var('chromium_url') + '/chromium/src/tools/win' + '@' + '2cbfc8d2e5ef4a6afd9774e9a9eaebd921a9f248', 'third_party/rust': - Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + 'f058a25008a8a6b48a35656b21f0589535134d0f', + Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + '667365a2aef07b2a9065a53beddbc8ea60ff5c6d', 'third_party/rust-toolchain': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/rust-toolchain-22be76b7e259f27bf3e55eb931f354cd8b69d55f-4-llvmorg-21-init-16348-gbd809ffb.tar.xz', - 'sha256sum': '3e5cf980edb893cbdc915d62bce1b29b896eda6df6455e145200bf25a52576b1', - 'size_bytes': 159517088, - 'generation': 1756377175296503, + 'object_name': 'Linux_x64/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz', + 'sha256sum': '2bdaea0b11cb11a8f2f4dcb79b0dbb4bf38e2bd22479ff8014f55b9b6890e135', + 'size_bytes': 142044388, + 'generation': 1758743116775859, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Mac/rust-toolchain-22be76b7e259f27bf3e55eb931f354cd8b69d55f-4-llvmorg-21-init-16348-gbd809ffb.tar.xz', - 'sha256sum': '8f0d15259a48df6c284ebcfb9dfb0ecba77d8267620aae1ff42d23a2f595ad77', - 'size_bytes': 132425148, - 'generation': 1756377177172203, + 'object_name': 'Mac/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz', + 'sha256sum': '351347e1930a900c63b3953cdb10775b73572c6145e389f3820ba920816d46ca', + 'size_bytes': 135891820, + 'generation': 1758743118329536, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac_arm64/rust-toolchain-22be76b7e259f27bf3e55eb931f354cd8b69d55f-4-llvmorg-21-init-16348-gbd809ffb.tar.xz', - 'sha256sum': 'ef0f5795e28fde6b0708647500fc94138e9518f173c3e99321cd8918006f606c', - 'size_bytes': 120345408, - 'generation': 1756377179094363, + 'object_name': 'Mac_arm64/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz', + 'sha256sum': '33d6b8cf4fc6617aa98888a46bc1dbef29ae9a9ebd01c3f248ef8c08ec5f198b', + 'size_bytes': 123302332, + 'generation': 1758743119839246, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Win/rust-toolchain-22be76b7e259f27bf3e55eb931f354cd8b69d55f-4-llvmorg-21-init-16348-gbd809ffb.tar.xz', - 'sha256sum': '056cfdae49dd3d73b38ca7ef8245dec2105c7a77b47efba99995552ea1d89f6e', - 'size_bytes': 194943632, - 'generation': 1756377180954050, + 'object_name': 'Win/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz', + 'sha256sum': '4f6dfa230e5d401bf9aadd804142b412467177b17d50a3f52a8c69c1957aa2db', + 'size_bytes': 199998880, + 'generation': 1758743121322555, 'condition': 'host_os == "win"', }, ], @@ -548,13 +548,13 @@ deps = { 'condition': 'not build_with_chromium and host_cpu != "s390" and host_os != "zos" and host_cpu != "ppc"', }, 'third_party/zlib': - Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + 'caf4afa1afc92e16fef429f182444bed98a46a6c', + Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '85f05b0835f934e52772efc308baa80cdd491838', 'tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '3895bad8d8b0aa864c77deff02fd42ff7b2732d1', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'b1d66053e6460f04dbe81d77cfeaa9a5d50dee3e', 'tools/protoc_wrapper': Var('chromium_url') + '/chromium/src/tools/protoc_wrapper.git' + '@' + '3438d4183bfc7c0d6850e8b970204cc8189f0323', 'third_party/abseil-cpp': { - 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '5141e83267542f8869adf18b5bd6440440d6801e', + 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + 'c3655ab8bb514aa318207c2685b3ba557a048201', 'condition': 'not build_with_chromium', }, 'third_party/zoslib': { diff --git a/deps/v8/MODULE.bazel b/deps/v8/MODULE.bazel index 65824eaeaa9770..3370e06bc077b9 100644 --- a/deps/v8/MODULE.bazel +++ b/deps/v8/MODULE.bazel @@ -7,7 +7,7 @@ bazel_dep(name = "bazel_skylib", version = "1.7.1") bazel_dep(name = "rules_cc", version = "0.1.2") bazel_dep(name = "rules_python", version = "1.0.0") bazel_dep(name = "platforms", version = "0.0.11") -bazel_dep(name = "abseil-cpp", version = "20240722.0.bcr.2") +bazel_dep(name = "abseil-cpp", version = "20250814.0") bazel_dep(name = "highway", version = "1.2.0") pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index 0c821c628e610e..b184024786f923 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -172,8 +172,15 @@ def _CheckUnwantedDependencies(input_api, output_api): # eval-ed and thus doesn't have __file__. original_sys_path = sys.path try: - sys.path = sys.path + [input_api.os_path.join( - input_api.PresubmitLocalPath(), 'buildtools', 'checkdeps')] + root = input_api.PresubmitLocalPath() + if not os.path.exists(os.path.join(root, 'buildtools')): + root = os.path.dirname(root) + if not os.path.exists(os.path.join(root, 'buildtools')): + raise RuntimeError( + "Failed to find //buildtools directory for checkdeps") + sys.path = sys.path + [ + input_api.os_path.join(root, 'buildtools', 'checkdeps') + ] import checkdeps from cpp_checker import CppChecker from rules import Rule @@ -485,6 +492,7 @@ def _CommonChecks(input_api, output_api): _CheckInlineHeadersIncludeNonInlineHeadersFirst, _CheckJSONFiles, _CheckNoexceptAnnotations, + _CheckBannedCpp, _RunTestsWithVPythonSpec, _CheckPythonLiterals, ] @@ -607,6 +615,48 @@ def FilterFile(affected_file): return [] +def _CheckBannedCpp(input_api, output_api): + # We only check for a single pattern right now; feel free to add more, but + # potentially change the logic for files_to_skip then (and skip individual + # checks for individual files instead). + bad_cpp = [ + ('std::bit_cast', + 'Use base::bit_cast instead, which has additional checks'), + ] + + def file_filter(x): + return input_api.FilterSourceFile( + x, + files_to_skip=[ + # The implementation of base::bit_cast uses std::bit_cast. + r'src/base/macros\.h', + # src/base/numerics is a dependency-free header-only library, hence + # uses std::bit_cast directly. + r'src/base/numerics/.*' + ], + files_to_check=[r'.*\.h$', r'.*\.cc$']) + + errors = [] + for f in input_api.AffectedSourceFiles(file_filter): + for line_number, line in f.ChangedContents(): + for pattern, message in bad_cpp: + if not pattern in line: + continue + # Skip if part of a comment. + if '//' in line and line.index('//') < line.index(pattern): + continue + + # Make sure there are word separators around the pattern. + regex = r'\b%s\b' % pattern + if not input_api.re.search(regex, line): + continue + + errors.append( + output_api.PresubmitError('Banned pattern ({}):\n {}:{} {}'.format( + regex, f.LocalPath(), line_number, message))) + return errors + + def CheckChangeOnUpload(input_api, output_api): results = [] results.extend(_CommonChecks(input_api, output_api)) diff --git a/deps/v8/bazel/defs.bzl b/deps/v8/bazel/defs.bzl index b475bf5ff0a160..a7e1e2af786ce4 100644 --- a/deps/v8/bazel/defs.bzl +++ b/deps/v8/bazel/defs.bzl @@ -8,6 +8,8 @@ This module contains helper functions to compile V8. load("@rules_cc//cc:cc_library.bzl", "cc_library") load("@rules_cc//cc:cc_binary.bzl", "cc_binary") +load("@rules_cc//cc/common:cc_common.bzl", "cc_common") +load("@rules_cc//cc/common:cc_info.bzl", "CcInfo") FlagInfo = provider("The value of an option.", fields = ["value"]) @@ -441,7 +443,7 @@ def _v8_target_cpu_transition_impl(settings, "armeabi-v7a": "arm32", "s390x": "s390x", "riscv64": "riscv64", - "ppc64": "ppc64le", + "ppc": "ppc64le", } v8_target_cpu = mapping[settings["//command_line_option:cpu"]] return {"@v8//bazel/config:v8_target_cpu": v8_target_cpu} diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index 0ddd653e0eca9d..44f056cf897bcd 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -218,6 +218,11 @@ declare_args() { v8_enable_pointer_compression_shared_cage = "" v8_enable_31bit_smis_on_64bit_arch = false + # When `v8_enable_pointer_compression_shared_cage` RO space is placed into a + # contiguous area at the front of the cage. In case RO allocations fails this + # size needs to be adjusted. + v8_contiguous_compressed_ro_space_size_mb = 8 + # Change code emission and runtime features to be CET shadow-stack compliant # (incomplete and experimental). v8_enable_cet_shadow_stack = false @@ -332,6 +337,7 @@ v8_add_configs = [ v8_path_prefix + ":features", v8_path_prefix + ":toolchain", v8_path_prefix + ":strict_warnings", + v8_path_prefix + ":sanitizer_defines", ] if (is_debug && !v8_optimized_debug) { diff --git a/deps/v8/include/js_protocol.pdl b/deps/v8/include/js_protocol.pdl index 73da9149b5d8bc..bc86332d869b87 100644 --- a/deps/v8/include/js_protocol.pdl +++ b/deps/v8/include/js_protocol.pdl @@ -794,6 +794,8 @@ experimental domain HeapProfiler # Average sample interval in bytes. Poisson distribution is used for the intervals. The # default value is 32768 bytes. optional number samplingInterval + # Maximum stack depth. The default value is 128. + optional number stackDepth # By default, the sampling heap profiler reports only objects which are # still alive when the profile is returned via getSamplingProfile or # stopSampling, which is useful for determining what functions contribute @@ -1140,6 +1142,8 @@ domain Runtime dataview webassemblymemory wasmvalue + # blink's subtypes. + trustedtype # Object class (constructor) name. Specified for `object` type values only. optional string className # Remote object value in case of primitive values or JSON values (if it was requested). @@ -1201,6 +1205,8 @@ domain Runtime dataview webassemblymemory wasmvalue + # blink's subtypes. + trustedtype # String representation of the object. optional string description # True iff some of the properties or entries of the original object did not fit. @@ -1250,6 +1256,8 @@ domain Runtime dataview webassemblymemory wasmvalue + # blink's subtypes. + trustedtype experimental type EntryPreview extends object properties diff --git a/deps/v8/include/v8-callbacks.h b/deps/v8/include/v8-callbacks.h index 920e4e25f10cdc..09fb5843d724e4 100644 --- a/deps/v8/include/v8-callbacks.h +++ b/deps/v8/include/v8-callbacks.h @@ -184,6 +184,7 @@ enum GCCallbackFlags { kGCCallbackFlagCollectAllAvailableGarbage = 1 << 4, kGCCallbackFlagCollectAllExternalMemory = 1 << 5, kGCCallbackScheduleIdleGarbageCollection = 1 << 6, + kGCCallbackFlagLastResort = 1 << 7, }; using GCCallback = void (*)(GCType type, GCCallbackFlags flags); @@ -321,9 +322,6 @@ using WasmAsyncResolvePromiseCallback = void (*)( using WasmLoadSourceMapCallback = Local (*)(Isolate* isolate, const char* name); -// --- Callback for checking if WebAssembly imported strings are enabled --- -using WasmImportedStringsEnabledCallback = bool (*)(Local context); - // --- Callback for checking if WebAssembly Custom Descriptors are enabled --- using WasmCustomDescriptorsEnabledCallback = bool (*)(Local context); @@ -331,9 +329,6 @@ using WasmCustomDescriptorsEnabledCallback = bool (*)(Local context); using SharedArrayBufferConstructorEnabledCallback = bool (*)(Local context); -// --- Callback for checking if WebAssembly JSPI is enabled --- -using WasmJSPIEnabledCallback = bool (*)(Local context); - /** * Import phases in import requests. */ diff --git a/deps/v8/include/v8-context.h b/deps/v8/include/v8-context.h index c93c5652c502f5..1d52f5bf40652e 100644 --- a/deps/v8/include/v8-context.h +++ b/deps/v8/include/v8-context.h @@ -255,12 +255,6 @@ class V8_EXPORT Context : public Data { */ Maybe DeepFreeze(DeepFreezeDelegate* delegate = nullptr); - /** Returns the isolate associated with a current context. */ - V8_DEPRECATED( - "Use Isolate::GetCurrent() instead, which is guaranteed to return the " - "same isolate since https://crrev.com/c/6458560.") - Isolate* GetIsolate(); - /** Returns the microtask queue associated with a current context. */ MicrotaskQueue* GetMicrotaskQueue(); @@ -305,9 +299,30 @@ class V8_EXPORT Context : public Data { * SetAlignedPointerInEmbedderData with the same index. Note that index 0 * currently has a special meaning for Chrome's debugger. */ + V8_INLINE void* GetAlignedPointerFromEmbedderData(Isolate* isolate, int index, + EmbedderDataTypeTag tag); + V8_INLINE void* GetAlignedPointerFromEmbedderData(int index, + EmbedderDataTypeTag tag); + + V8_DEPRECATE_SOON( + "Use GetAlignedPointerFromEmbedderData with EmbedderDataTypeTag " + "parameter instead.") V8_INLINE void* GetAlignedPointerFromEmbedderData(Isolate* isolate, - int index); - V8_INLINE void* GetAlignedPointerFromEmbedderData(int index); + int index) { + return GetAlignedPointerFromEmbedderData(isolate, index, + kEmbedderDataTypeTagDefault); + } + + V8_DEPRECATE_SOON( + "Use GetAlignedPointerFromEmbedderData with EmbedderDataTypeTag " + "parameter instead.") + V8_INLINE void* GetAlignedPointerFromEmbedderData(int index) { + return GetAlignedPointerFromEmbedderData(index, + kEmbedderDataTypeTagDefault); + } + + void SetAlignedPointerInEmbedderData(int index, void* value, + EmbedderDataTypeTag tag); /** * Sets a 2-byte-aligned native pointer in the embedder data with the given @@ -317,10 +332,9 @@ class V8_EXPORT Context : public Data { V8_DEPRECATE_SOON( "Use SetAlignedPointerInEmbedderData with EmbedderDataTypeTag parameter " "instead.") - void SetAlignedPointerInEmbedderData(int index, void* value); - - void SetAlignedPointerInEmbedderData(int index, void* value, - EmbedderDataTypeTag slot); + void SetAlignedPointerInEmbedderData(int index, void* value) { + SetAlignedPointerInEmbedderData(index, value, kEmbedderDataTypeTagDefault); + } /** * Control whether code generation from strings is allowed. Calling @@ -439,7 +453,8 @@ class V8_EXPORT Context : public Data { internal::ValueHelper::InternalRepresentationType GetDataFromSnapshotOnce( size_t index); Local SlowGetEmbedderData(int index); - void* SlowGetAlignedPointerFromEmbedderData(int index); + void* SlowGetAlignedPointerFromEmbedderData(int index, + EmbedderDataTypeTag tag); }; // --- Implementation --- @@ -467,7 +482,8 @@ Local Context::GetEmbedderData(int index) { #endif } -void* Context::GetAlignedPointerFromEmbedderData(Isolate* isolate, int index) { +void* Context::GetAlignedPointerFromEmbedderData(Isolate* isolate, int index, + EmbedderDataTypeTag tag) { #if !defined(V8_ENABLE_CHECKS) using A = internal::Address; using I = internal::Internals; @@ -477,16 +493,15 @@ void* Context::GetAlignedPointerFromEmbedderData(Isolate* isolate, int index) { int value_offset = I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; - return reinterpret_cast( - I::ReadExternalPointerField<{internal::kFirstEmbedderDataTag, - internal::kLastEmbedderDataTag}>( - isolate, embedder_data, value_offset)); + return reinterpret_cast(I::ReadExternalPointerField( + isolate, embedder_data, value_offset, ToExternalPointerTag(tag))); #else - return SlowGetAlignedPointerFromEmbedderData(index); + return SlowGetAlignedPointerFromEmbedderData(index, tag); #endif } -void* Context::GetAlignedPointerFromEmbedderData(int index) { +void* Context::GetAlignedPointerFromEmbedderData(int index, + EmbedderDataTypeTag tag) { #if !defined(V8_ENABLE_CHECKS) using A = internal::Address; using I = internal::Internals; @@ -497,12 +512,10 @@ void* Context::GetAlignedPointerFromEmbedderData(int index) { (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; Isolate* isolate = I::GetCurrentIsolateForSandbox(); - return reinterpret_cast( - I::ReadExternalPointerField<{internal::kFirstEmbedderDataTag, - internal::kLastEmbedderDataTag}>( - isolate, embedder_data, value_offset)); + return reinterpret_cast(I::ReadExternalPointerField( + isolate, embedder_data, value_offset, ToExternalPointerTag(tag))); #else - return SlowGetAlignedPointerFromEmbedderData(index); + return SlowGetAlignedPointerFromEmbedderData(index, tag); #endif } diff --git a/deps/v8/include/v8-data.h b/deps/v8/include/v8-data.h index f9c60f4dc6068b..bf40b746adf887 100644 --- a/deps/v8/include/v8-data.h +++ b/deps/v8/include/v8-data.h @@ -52,6 +52,11 @@ class V8_EXPORT Data { */ bool IsFunctionTemplate() const; + /** + * Returns true if this data is a |v8::DictionaryTemplate|. + */ + bool IsDictionaryTemplate() const; + /** * Returns true if this data is a |v8::Context|. */ diff --git a/deps/v8/include/v8-inspector.h b/deps/v8/include/v8-inspector.h index 0992cb1c3cb599..d1993c0eade0ca 100644 --- a/deps/v8/include/v8-inspector.h +++ b/deps/v8/include/v8-inspector.h @@ -288,11 +288,21 @@ class V8_EXPORT V8InspectorClient { virtual void installAdditionalCommandLineAPI(v8::Local, v8::Local) {} + // Deprecated. Use version with contextId. virtual void consoleAPIMessage(int contextGroupId, v8::Isolate::MessageErrorLevel level, const StringView& message, const StringView& url, unsigned lineNumber, unsigned columnNumber, V8StackTrace*) {} + virtual void consoleAPIMessage(int contextGroupId, int contextId, + v8::Isolate::MessageErrorLevel level, + const StringView& message, + const StringView& url, unsigned lineNumber, + unsigned columnNumber, + V8StackTrace* stackTrace) { + consoleAPIMessage(contextGroupId, level, message, url, lineNumber, + columnNumber, stackTrace); + } virtual v8::MaybeLocal memoryInfo(v8::Isolate*, v8::Local) { return v8::MaybeLocal(); diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h index 5f006948716a8b..9a39f8ede92bad 100644 --- a/deps/v8/include/v8-internal.h +++ b/deps/v8/include/v8-internal.h @@ -421,10 +421,10 @@ constexpr size_t kMaxCppHeapPointers = 0; #endif // V8_COMPRESS_POINTERS -// The number of tags reserved for embedder data. The value is picked -// arbitrarily. In Chrome there are 4 embedders, so at least 4 tags are needed. -// A generic tag was used for embedder data before, so one tag is used for that. -#define V8_EMBEDDER_DATA_TAG_COUNT 5 +// The number of tags reserved for embedder data stored in internal fields. The +// value is picked arbitrarily, and is slightly larger than the number of tags +// currently used in Chrome. +#define V8_EMBEDDER_DATA_TAG_COUNT 15 // Generic tag range struct to represent ranges of type tags. // @@ -434,6 +434,19 @@ constexpr size_t kMaxCppHeapPointers = 0; // which all subtypes of a given supertype use contiguous tags. This struct can // then be used to represent such a type range. // +// As an example, consider the following type hierarchy: +// +// A F +// / \ +// B E +// / \ +// C D +// +// A potential type id assignment for range-based type checks is +// {A: 0, B: 1, C: 2, D: 3, E: 4, F: 5}. With that, the type check for type A +// would check for the range [A, E], while the check for B would check range +// [B, D], and for F it would simply check [F, F]. +// // In addition, there is an option for performance tweaks: if the size of the // type range corresponding to a supertype is a power of two and starts at a // power of two (e.g. [0x100, 0x13f]), then the compiler can often optimize @@ -566,7 +579,6 @@ enum ExternalPointerTag : uint16_t { // Placeholders for embedder data. kFirstEmbedderDataTag, kLastEmbedderDataTag = kFirstEmbedderDataTag + V8_EMBEDDER_DATA_TAG_COUNT - 1, - kEmbedderDataSlotPayloadTag = kLastEmbedderDataTag, // This tag essentially stands for a `void*` pointer in the V8 API, and it is // the Embedder's responsibility to ensure type safety (against substitution) // and lifetime validity of these objects. @@ -1025,16 +1037,12 @@ class Internals { using Tagged_t = uint32_t; struct StaticReadOnlyRoot { #ifdef V8_ENABLE_WEBASSEMBLY -#ifdef V8_INTL_SUPPORT - static constexpr Tagged_t kBuildDependentTheHoleValue = 0x67b9; -#else - static constexpr Tagged_t kBuildDependentTheHoleValue = 0x5b1d; -#endif + static constexpr Tagged_t kBuildDependentTheHoleValue = 0x20001; #else #ifdef V8_INTL_SUPPORT - static constexpr Tagged_t kBuildDependentTheHoleValue = 0x6511; + static constexpr Tagged_t kBuildDependentTheHoleValue = 0x6559; #else - static constexpr Tagged_t kBuildDependentTheHoleValue = 0x5875; + static constexpr Tagged_t kBuildDependentTheHoleValue = 0x58bd; #endif #endif @@ -1328,18 +1336,6 @@ class Internals { #endif } - V8_DEPRECATED( - "Use GetCurrentIsolateForSandbox() instead, which is guaranteed to " - "return the same isolate since https://crrev.com/c/6458560.") - V8_INLINE static v8::Isolate* GetIsolateForSandbox(Address obj) { -#ifdef V8_ENABLE_SANDBOX - return GetCurrentIsolate(); -#else - // Not used in non-sandbox mode. - return nullptr; -#endif - } - // Returns v8::Isolate::Current(), but without needing to include the // v8-isolate.h header. V8_EXPORT static v8::Isolate* GetCurrentIsolate(); @@ -1383,6 +1379,34 @@ class Internals { #endif // V8_ENABLE_SANDBOX } + V8_INLINE static Address ReadExternalPointerField( + v8::Isolate* isolate, Address heap_object_ptr, int offset, + ExternalPointerTagRange tag_range) { +#ifdef V8_ENABLE_SANDBOX + // See src/sandbox/external-pointer-table.h. Logic duplicated here so + // it can be inlined and doesn't require an additional call. + Address* table = IsSharedExternalPointerType(tag_range) + ? GetSharedExternalPointerTableBase(isolate) + : GetExternalPointerTableBase(isolate); + internal::ExternalPointerHandle handle = + ReadRawField(heap_object_ptr, offset); + uint32_t index = handle >> kExternalPointerIndexShift; + std::atomic
* ptr = + reinterpret_cast*>(&table[index]); + Address entry = std::atomic_load_explicit(ptr, std::memory_order_relaxed); + ExternalPointerTag actual_tag = static_cast( + (entry & kExternalPointerTagMask) >> kExternalPointerTagShift); + if (V8_LIKELY(tag_range.Contains(actual_tag))) { + return entry & kExternalPointerPayloadMask; + } else { + return 0; + } + return entry; +#else + return ReadRawField
(heap_object_ptr, offset); +#endif // V8_ENABLE_SANDBOX + } + #ifdef V8_COMPRESS_POINTERS V8_INLINE static Address GetPtrComprCageBaseFromOnHeapAddress(Address addr) { return addr & -static_cast(kPtrComprCageBaseAlignment); diff --git a/deps/v8/include/v8-isolate.h b/deps/v8/include/v8-isolate.h index 16c61f605f9909..bb9676d982a0e3 100644 --- a/deps/v8/include/v8-isolate.h +++ b/deps/v8/include/v8-isolate.h @@ -1708,17 +1708,12 @@ class V8_EXPORT Isolate { void SetWasmLoadSourceMapCallback(WasmLoadSourceMapCallback callback); - void SetWasmImportedStringsEnabledCallback( - WasmImportedStringsEnabledCallback callback); - void SetWasmCustomDescriptorsEnabledCallback( WasmCustomDescriptorsEnabledCallback callback); void SetSharedArrayBufferConstructorEnabledCallback( SharedArrayBufferConstructorEnabledCallback callback); - void SetWasmJSPIEnabledCallback(WasmJSPIEnabledCallback callback); - /** * This function can be called by the embedder to signal V8 that the dynamic * enabling of features has finished. V8 can now set up dynamically added diff --git a/deps/v8/include/v8-message.h b/deps/v8/include/v8-message.h index 04ed4c21a2f49a..b3e898fa77d153 100644 --- a/deps/v8/include/v8-message.h +++ b/deps/v8/include/v8-message.h @@ -108,14 +108,6 @@ class V8_EXPORT Message { public: Local Get() const; - /** - * Return the isolate to which the Message belongs. - */ - V8_DEPRECATED( - "Use Isolate::GetCurrent() instead, which is guaranteed to return the " - "same isolate since https://crrev.com/c/6458560.") - Isolate* GetIsolate() const; - V8_WARN_UNUSED_RESULT MaybeLocal GetSource( Local context) const; V8_WARN_UNUSED_RESULT MaybeLocal GetSourceLine( diff --git a/deps/v8/include/v8-object.h b/deps/v8/include/v8-object.h index 860cecaadc3ed7..444e18a8c23bfe 100644 --- a/deps/v8/include/v8-object.h +++ b/deps/v8/include/v8-object.h @@ -33,6 +33,11 @@ class PropertyCallbackInfo; */ using EmbedderDataTypeTag = uint16_t; +constexpr EmbedderDataTypeTag kEmbedderDataTypeTagDefault = 0; + +V8_EXPORT internal::ExternalPointerTag ToExternalPointerTag( + v8::EmbedderDataTypeTag api_tag); + /** * A private symbol * @@ -177,10 +182,10 @@ using AccessorNameSetterCallback = * the kind of cross-context access that should be allowed. * */ -enum V8_DEPRECATE_SOON( - "This enum is no longer used and will be removed in V8 12.9.") +enum V8_DEPRECATED( + "This enum is no longer used and will be removed in V8 14.3.") AccessControl { - DEFAULT V8_ENUM_DEPRECATE_SOON("not used") = 0, + DEFAULT V8_ENUM_DEPRECATED("not used") = 0, }; /** @@ -451,23 +456,10 @@ class V8_EXPORT Object : public Value { */ Local GetPrototypeV2(); - /** - * Set the prototype object. This does not skip objects marked to - * be skipped by __proto__ and it does not consult the security - * handler. - */ - V8_DEPRECATED( - "V8 will stop providing access to hidden prototype (i.e. " - "JSGlobalObject). Use SetPrototypeV2() instead. " - "See http://crbug.com/333672197.") - V8_WARN_UNUSED_RESULT Maybe SetPrototype(Local context, - Local prototype); - /** * Set the prototype object (same as calling Object.setPrototypeOf(..)). * This does not consult the security handler. - * TODO(333672197): rename back to SetPrototype() once the old version goes - * through the deprecation process and is removed. + * TODO(http://crbug.com/333672197): rename back to SetPrototype(). */ V8_WARN_UNUSED_RESULT Maybe SetPrototypeV2(Local context, Local prototype); @@ -531,11 +523,40 @@ class V8_EXPORT Object : public Value { * must have been set by SetAlignedPointerInInternalField, everything else * leads to undefined behavior. */ - V8_INLINE void* GetAlignedPointerFromInternalField(int index); + V8_INLINE void* GetAlignedPointerFromInternalField(int index, + EmbedderDataTypeTag tag); + V8_INLINE void* GetAlignedPointerFromInternalField(v8::Isolate* isolate, + int index, + EmbedderDataTypeTag tag); + + V8_DEPRECATE_SOON( + "Use GetAlignedPointerFromInternalField with EmbedderDataTypeTag " + "parameter instead.") + V8_INLINE void* GetAlignedPointerFromInternalField(int index) { + return GetAlignedPointerFromInternalField(index, + kEmbedderDataTypeTagDefault); + } + + V8_DEPRECATE_SOON( + "Use GetAlignedPointerFromInternalField with EmbedderDataTypeTag " + "parameter instead.") V8_INLINE void* GetAlignedPointerFromInternalField(v8::Isolate* isolate, - int index); + int index) { + return GetAlignedPointerFromInternalField(isolate, index, + kEmbedderDataTypeTagDefault); + } /** Same as above, but works for PersistentBase. */ + V8_INLINE static void* GetAlignedPointerFromInternalField( + const PersistentBase& object, int index, + EmbedderDataTypeTag tag) { + return object.template value()->GetAlignedPointerFromInternalField( + index, tag); + } + + V8_DEPRECATE_SOON( + "Use GetAlignedPointerFromInternalField with EmbedderDataTypeTag " + "parameter instead.") V8_INLINE static void* GetAlignedPointerFromInternalField( const PersistentBase& object, int index) { return object.template value()->GetAlignedPointerFromInternalField( @@ -543,6 +564,16 @@ class V8_EXPORT Object : public Value { } /** Same as above, but works for TracedReference. */ + V8_INLINE static void* GetAlignedPointerFromInternalField( + const BasicTracedReference& object, int index, + EmbedderDataTypeTag tag) { + return object.template value()->GetAlignedPointerFromInternalField( + index, tag); + } + + V8_DEPRECATE_SOON( + "Use GetAlignedPointerFromInternalField with EmbedderDataTypeTag " + "parameter instead.") V8_INLINE static void* GetAlignedPointerFromInternalField( const BasicTracedReference& object, int index) { return object.template value()->GetAlignedPointerFromInternalField( @@ -554,13 +585,15 @@ class V8_EXPORT Object : public Value { * a field, GetAlignedPointerFromInternalField must be used, everything else * leads to undefined behavior. */ + void SetAlignedPointerInInternalField(int index, void* value, + EmbedderDataTypeTag tag); + V8_DEPRECATE_SOON( "Use SetAlignedPointerInInternalField with EmbedderDataTypeTag parameter " "instead.") - void SetAlignedPointerInInternalField(int index, void* value); - - void SetAlignedPointerInInternalField(int index, void* value, - EmbedderDataTypeTag tag); + void SetAlignedPointerInInternalField(int index, void* value) { + SetAlignedPointerInInternalField(index, value, kEmbedderDataTypeTagDefault); + } V8_DEPRECATE_SOON( "Use SetAlignedPointerInInternalField with EmbedderDataTypeTag " @@ -795,9 +828,27 @@ class V8_EXPORT Object : public Value { * Prefer using version with Isolate parameter if you have an Isolate, * otherwise use the other one. */ + void* GetAlignedPointerFromEmbedderDataInCreationContext( + v8::Isolate* isolate, int index, EmbedderDataTypeTag tag); + void* GetAlignedPointerFromEmbedderDataInCreationContext( + int index, EmbedderDataTypeTag tag); + + V8_DEPRECATE_SOON( + "Use GetAlignedPointerFromEmbedderDataInCreationContext with " + "EmbedderDataTypeTag parameter instead.") void* GetAlignedPointerFromEmbedderDataInCreationContext(v8::Isolate* isolate, - int index); - void* GetAlignedPointerFromEmbedderDataInCreationContext(int index); + int index) { + return GetAlignedPointerFromEmbedderDataInCreationContext( + isolate, index, kEmbedderDataTypeTagDefault); + } + + V8_DEPRECATE_SOON( + "Use GetAlignedPointerFromEmbedderDataInCreationContext with " + "EmbedderDataTypeTag parameter instead.") + void* GetAlignedPointerFromEmbedderDataInCreationContext(int index) { + return GetAlignedPointerFromEmbedderDataInCreationContext( + index, kEmbedderDataTypeTagDefault); + } /** * Checks whether a callback is set by the @@ -848,21 +899,6 @@ class V8_EXPORT Object : public Value { V8_WARN_UNUSED_RESULT MaybeLocal CallAsConstructor( Local context, int argc, Local argv[]); - /** - * Return the isolate to which the Object belongs to. - */ - V8_DEPRECATED( - "Use Isolate::GetCurrent() instead, which is guaranteed to return the " - "same isolate since https://crrev.com/c/6458560.") - Isolate* GetIsolate(); - - V8_DEPRECATED( - "Use Isolate::GetCurrent() instead, which is guaranteed to return the " - "same isolate since https://crrev.com/c/6458560.") - V8_INLINE static Isolate* GetIsolate(const TracedReference& handle) { - return handle.template value()->GetIsolate(); - } - /** * If this object is a Set, Map, WeakSet or WeakMap, this returns a * representation of the elements of this object as an array. @@ -909,8 +945,10 @@ class V8_EXPORT Object : public Value { Object(); static void CheckCast(Value* obj); Local SlowGetInternalField(int index); - void* SlowGetAlignedPointerFromInternalField(int index); - void* SlowGetAlignedPointerFromInternalField(v8::Isolate* isolate, int index); + void* SlowGetAlignedPointerFromInternalField(int index, + EmbedderDataTypeTag tag); + void* SlowGetAlignedPointerFromInternalField(v8::Isolate* isolate, int index, + EmbedderDataTypeTag tag); }; // --- Implementation --- @@ -929,7 +967,7 @@ Local Object::GetInternalField(int index) { A value = I::ReadRawField(obj, offset); #ifdef V8_COMPRESS_POINTERS // We read the full pointer value and then decompress it in order to avoid - // dealing with potential endiannes issues. + // dealing with potential endianness issues. value = I::DecompressTaggedField(obj, static_cast(value)); #endif @@ -941,7 +979,8 @@ Local Object::GetInternalField(int index) { } void* Object::GetAlignedPointerFromInternalField(v8::Isolate* isolate, - int index) { + int index, + EmbedderDataTypeTag tag) { #if !defined(V8_ENABLE_CHECKS) using A = internal::Address; using I = internal::Internals; @@ -953,17 +992,16 @@ void* Object::GetAlignedPointerFromInternalField(v8::Isolate* isolate, int offset = I::kJSAPIObjectWithEmbedderSlotsHeaderSize + (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; - A value = - I::ReadExternalPointerField<{internal::kFirstEmbedderDataTag, - internal::kLastEmbedderDataTag}>( - isolate, obj, offset); + A value = I::ReadExternalPointerField(isolate, obj, offset, + ToExternalPointerTag(tag)); return reinterpret_cast(value); } #endif - return SlowGetAlignedPointerFromInternalField(isolate, index); + return SlowGetAlignedPointerFromInternalField(isolate, index, tag); } -void* Object::GetAlignedPointerFromInternalField(int index) { +void* Object::GetAlignedPointerFromInternalField(int index, + EmbedderDataTypeTag tag) { #if !defined(V8_ENABLE_CHECKS) using A = internal::Address; using I = internal::Internals; @@ -976,14 +1014,12 @@ void* Object::GetAlignedPointerFromInternalField(int index) { (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; Isolate* isolate = I::GetCurrentIsolateForSandbox(); - A value = - I::ReadExternalPointerField<{internal::kFirstEmbedderDataTag, - internal::kLastEmbedderDataTag}>( - isolate, obj, offset); + A value = I::ReadExternalPointerField(isolate, obj, offset, + ToExternalPointerTag(tag)); return reinterpret_cast(value); } #endif - return SlowGetAlignedPointerFromInternalField(index); + return SlowGetAlignedPointerFromInternalField(index, tag); } // static diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index f7f88ba6c74969..61f427ea47c691 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -1041,6 +1041,8 @@ class V8_EXPORT HeapProfiler { /** * Callback interface for retrieving user friendly names of global objects. + * + * This interface will soon be deprecated in favour of ContextNameResolver. */ class ObjectNameResolver { public: @@ -1054,6 +1056,23 @@ class V8_EXPORT HeapProfiler { virtual ~ObjectNameResolver() = default; }; + /** + * Callback interface for retrieving user friendly names of a V8::Context + * objects. + */ + class ContextNameResolver { + public: + /** + * Returns name to be used in the heap snapshot for given node. Returned + * string must stay alive until snapshot collection is completed. + * If no user friendly name is available return nullptr. + */ + virtual const char* GetName(Local context) = 0; + + protected: + virtual ~ContextNameResolver() = default; + }; + enum class HeapSnapshotMode { /** * Heap snapshot for regular developers. @@ -1083,6 +1102,10 @@ class V8_EXPORT HeapProfiler { // NOLINTNEXTLINE HeapSnapshotOptions() {} + // TODO(https://crbug.com/333672197): remove once ObjectNameResolver is + // removed. + ALLOW_COPY_AND_MOVE_WITH_DEPRECATED_FIELDS(HeapSnapshotOptions) + /** * The control used to report intermediate progress to. */ @@ -1090,7 +1113,15 @@ class V8_EXPORT HeapProfiler { /** * The resolver used by the snapshot generator to get names for V8 objects. */ + V8_DEPRECATE_SOON("Use context_name_resolver callback instead.") ObjectNameResolver* global_object_name_resolver = nullptr; + /** + * The resolver used by the snapshot generator to get names for v8::Context + * objects. + * In case both this and |global_object_name_resolver| callbacks are + * provided, this one will be used. + */ + ContextNameResolver* context_name_resolver = nullptr; /** * Mode for taking the snapshot, see `HeapSnapshotMode`. */ @@ -1120,10 +1151,20 @@ class V8_EXPORT HeapProfiler { * * \returns the snapshot. */ + V8_DEPRECATE_SOON("Use overload with ContextNameResolver* resolver instead.") const HeapSnapshot* TakeHeapSnapshot( - ActivityControl* control, - ObjectNameResolver* global_object_name_resolver = nullptr, + ActivityControl* control, ObjectNameResolver* global_object_name_resolver, bool hide_internals = true, bool capture_numeric_value = false); + const HeapSnapshot* TakeHeapSnapshot(ActivityControl* control, + ContextNameResolver* resolver, + bool hide_internals = true, + bool capture_numeric_value = false); + // TODO(333672197): remove this version once ObjectNameResolver* overload + // is removed. + const HeapSnapshot* TakeHeapSnapshot(ActivityControl* control, + std::nullptr_t resolver = nullptr, + bool hide_internals = true, + bool capture_numeric_value = false); /** * Obtains list of Detached JS Wrapper Objects. This functon calls garbage diff --git a/deps/v8/include/v8-script.h b/deps/v8/include/v8-script.h index 9d47b751f271eb..debe89b50847ea 100644 --- a/deps/v8/include/v8-script.h +++ b/deps/v8/include/v8-script.h @@ -220,6 +220,13 @@ class V8_EXPORT Module : public Data { Local context, Local specifier, Local import_attributes, Local referrer); + using ResolveModuleByIndexCallback = MaybeLocal (*)( + Local context, size_t module_request_index, + Local referrer); + using ResolveSourceByIndexCallback = MaybeLocal (*)( + Local context, size_t module_request_index, + Local referrer); + /** * Instantiates the module and its dependencies. * @@ -231,6 +238,16 @@ class V8_EXPORT Module : public Data { Local context, ResolveModuleCallback module_callback, ResolveSourceCallback source_callback = nullptr); + /** + * Similar to the variant that takes ResolveModuleCallback and + * ResolveSourceCallback, but uses the index into the array that is returned + * by GetModuleRequests() instead of the specifier and import attributes to + * identify the requests. + */ + V8_WARN_UNUSED_RESULT Maybe InstantiateModule( + Local context, ResolveModuleByIndexCallback module_callback, + ResolveSourceByIndexCallback source_callback = nullptr); + /** * Evaluates the module and its dependencies. * diff --git a/deps/v8/include/v8-template.h b/deps/v8/include/v8-template.h index 3ae4a957ed21df..4c8bf6d68c17f4 100644 --- a/deps/v8/include/v8-template.h +++ b/deps/v8/include/v8-template.h @@ -1071,7 +1071,7 @@ class V8_EXPORT ObjectTemplate : public Template { /** * A template to create dictionary objects at runtime. */ -class V8_EXPORT DictionaryTemplate final { +class V8_EXPORT DictionaryTemplate final : public Data { public: /** Creates a new template. Also declares data properties that can be passed * on instantiation of the template. Properties can only be declared on diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 9ef4d60891d7b3..9c3d563071e753 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 14 -#define V8_MINOR_VERSION 1 -#define V8_BUILD_NUMBER 146 -#define V8_PATCH_LEVEL 11 +#define V8_MINOR_VERSION 2 +#define V8_BUILD_NUMBER 231 +#define V8_PATCH_LEVEL 4 // 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 d03363ac019076..9a5298f10ba808 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -335,7 +335,6 @@ path. Add it with -I to the command line // - [[no_unique_address]] supported // V8_HAS_CPP_ATTRIBUTE_LIFETIME_BOUND - [[clang::lifetimebound]] supported // V8_HAS_BUILTIN_ADD_OVERFLOW - __builtin_add_overflow() supported -// V8_HAS_BUILTIN_BIT_CAST - __builtin_bit_cast() supported // V8_HAS_BUILTIN_BSWAP16 - __builtin_bswap16() supported // V8_HAS_BUILTIN_BSWAP32 - __builtin_bswap32() supported // V8_HAS_BUILTIN_BSWAP64 - __builtin_bswap64() supported @@ -418,7 +417,6 @@ path. Add it with -I to the command line # define V8_HAS_BUILTIN_ADD_OVERFLOW (__has_builtin(__builtin_add_overflow)) # define V8_HAS_BUILTIN_ASSUME (__has_builtin(__builtin_assume)) # define V8_HAS_BUILTIN_ASSUME_ALIGNED (__has_builtin(__builtin_assume_aligned)) -# define V8_HAS_BUILTIN_BIT_CAST (__has_builtin(__builtin_bit_cast)) # define V8_HAS_BUILTIN_BSWAP16 (__has_builtin(__builtin_bswap16)) # define V8_HAS_BUILTIN_BSWAP32 (__has_builtin(__builtin_bswap32)) # define V8_HAS_BUILTIN_BSWAP64 (__has_builtin(__builtin_bswap64)) @@ -473,9 +471,6 @@ path. Add it with -I to the command line // for V8_HAS_CPP_ATTRIBUTE_NODISCARD. See https://crbug.com/v8/11707. # define V8_HAS_BUILTIN_ASSUME_ALIGNED 1 -# if __GNUC__ >= 11 -# define V8_HAS_BUILTIN_BIT_CAST 1 -# endif # define V8_HAS_BUILTIN_CLZ 1 # define V8_HAS_BUILTIN_CTZ 1 # define V8_HAS_BUILTIN_EXPECT 1 @@ -605,15 +600,11 @@ path. Add it with -I to the command line // functions. // Use like: // V8_NOINLINE V8_PRESERVE_MOST void UnlikelyMethod(); -#if V8_OS_WIN -# define V8_PRESERVE_MOST -#else #if V8_HAS_ATTRIBUTE_PRESERVE_MOST # define V8_PRESERVE_MOST __attribute__((preserve_most)) #else # define V8_PRESERVE_MOST /* NOT SUPPORTED */ #endif -#endif // A macro (V8_DEPRECATED) to mark classes or functions as deprecated. diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index 147910193bd666..566b46fc3ff4e7 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -136,6 +136,7 @@ 'V8 Linux64 - verify builtins': 'release_x64_verify_builtins', 'V8 Linux64 - verify deterministic': 'release_x64_verify_deterministic', 'V8 Linux - full debug builder': 'full_debug_x86', + 'V8 Linux64 - full debug builder': 'full_debug_x64', 'V8 Mac64 - full debug builder': 'full_debug_x64', 'V8 Random Deopt Fuzzer - debug': 'debug_x64', }, @@ -145,44 +146,44 @@ '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_undefined_double', # 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_undefined_double', 'V8 Clusterfuzz Mac64 ASAN - release builder': - 'release_x64_asan_no_lsan_verify_heap', + 'release_x64_asan_no_lsan_verify_heap_undefined_double', 'V8 Clusterfuzz Mac64 ASAN - debug builder': - 'debug_x64_asan_no_lsan_static', + 'debug_x64_asan_no_lsan_static_undefined_double', 'V8 Clusterfuzz Linux64 - release builder': - 'release_x64_correctness_fuzzer', - 'V8 Clusterfuzz Linux64 - debug builder': 'debug_x64', + 'release_x64_correctness_fuzzer_undefined_double', + 'V8 Clusterfuzz Linux64 - debug builder': 'debug_x64_undefined_double', 'V8 Clusterfuzz Linux64 ASAN no inline - release builder': - 'release_x64_asan_symbolized_verify_heap', + 'release_x64_asan_symbolized_verify_heap_undefined_double', 'V8 Clusterfuzz Linux ASAN no inline - release builder': - 'release_x86_asan_symbolized_verify_heap', - 'V8 Clusterfuzz Linux64 ASAN - debug builder': 'debug_x64_asan', + 'release_x86_asan_symbolized_verify_heap_undefined_double', + 'V8 Clusterfuzz Linux64 ASAN - debug builder': 'debug_x64_asan_undefined_double', 'V8 Clusterfuzz Linux64 ASAN - undefined double - debug builder': 'debug_x64_asan_undefined_double', - 'V8 Clusterfuzz Linux ASAN - debug builder': 'debug_x86_asan', + 'V8 Clusterfuzz Linux ASAN - debug builder': 'debug_x86_asan_undefined_double', 'V8 Clusterfuzz Linux64 ASAN arm64 - debug builder': - 'debug_simulate_arm64_asan', - 'V8 Clusterfuzz Linux - debug builder': 'debug_x86', + 'debug_simulate_arm64_asan_undefined_double', + 'V8 Clusterfuzz Linux - debug builder': 'debug_x86_undefined_double', 'V8 Clusterfuzz Linux ASAN arm - debug builder': - 'debug_simulate_arm_asan', + 'debug_simulate_arm_asan_undefined_double', 'V8 Clusterfuzz Linux64 CFI - release builder': - 'release_x64_cfi_clusterfuzz', + 'release_x64_cfi_clusterfuzz_undefined_double', 'V8 Clusterfuzz Linux MSAN no origins': - 'release_simulate_arm64_msan_no_origins', + 'release_simulate_arm64_msan_no_origins_undefined_double', 'V8 Clusterfuzz Linux MSAN chained origins': - 'release_simulate_arm64_msan', - 'V8 Clusterfuzz Linux64 TSAN - release builder': 'release_x64_tsan', + 'release_simulate_arm64_msan_undefined_double', + 'V8 Clusterfuzz Linux64 TSAN - release builder': 'release_x64_tsan_undefined_double', 'V8 Clusterfuzz Linux64 UBSan - release builder': - 'release_x64_ubsan_recover', + 'release_x64_ubsan_recover_undefined_double', 'V8 Clusterfuzz Linux64 sandbox testing - release builder': - 'release_x64_sandbox_testing', + 'release_x64_sandbox_testing_undefined_double', 'V8 Clusterfuzz Linux64 ASAN sandbox testing - release builder': - 'release_x64_asan_sandbox_testing', + 'release_x64_asan_sandbox_testing_undefined_double', }, 'client.v8.perf' : { # Arm @@ -232,7 +233,9 @@ 'V8 Linux - ppc64 - sim - builder': 'release_simulate_ppc64', 'V8 Linux - s390x - sim - builder': 'release_simulate_s390x', # RISC-V + 'V8 Linux - riscv32 - sim - debug builder': 'debug_simulate_riscv32', 'V8 Linux - riscv32 - sim - builder': 'release_simulate_riscv32', + 'V8 Linux - riscv64 - sim - debug builder': 'debug_simulate_riscv64', 'V8 Linux - riscv64 - sim - builder': 'release_simulate_riscv64', 'V8 Linux - riscv64 - sim - pointer compression - builder': 'release_simulate_riscv64_pointer_compression', # Loongson @@ -275,6 +278,7 @@ 'v8_linux64_dict_tracking_compile_dbg': 'debug_x64_dict_tracking_trybot', 'v8_linux64_disable_runtime_call_stats_compile_rel': 'release_x64_disable_runtime_call_stats', 'v8_linux64_css_compile_dbg': 'debug_x64_conservative_stack_scanning', + 'v8_linux64_full_compile_dbg': 'full_debug_x64', 'v8_linux64_gc_stress_custom_snapshot_compile_dbg': 'debug_x64_trybot_custom', 'v8_linux64_gc_stress_compile_dbg': 'debug_x64_trybot', 'v8_linux64_gcc_compile_dbg': 'debug_x64_gcc', @@ -300,14 +304,16 @@ '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_undefined_double', + 'v8_linux64_asan_sandbox_testing_compile_rel': 'release_x64_asan_sandbox_testing_undefined_double', 'v8_linux64_cfi_compile_rel': 'release_x64_cfi', 'v8_linux64_fuzzilli_compile_rel': 'release_x64_fuzzilli', 'v8_linux64_loong64_compile_rel': 'release_simulate_loong64', 'v8_linux64_lower_limits_compile_rel': 'release_x64_lower_limits', 'v8_linux64_msan_compile_rel': 'release_simulate_arm64_msan_minimal_symbols', + 'v8_linux_riscv32_compile_dbg': 'debug_simulate_riscv32', 'v8_linux_riscv32_compile_rel': 'release_simulate_riscv32', + 'v8_linux64_riscv64_compile_dbg': 'debug_simulate_riscv64', 'v8_linux64_riscv64_compile_rel': 'release_simulate_riscv64', 'v8_linux64_riscv64_pointer_compression_compile_rel': 'release_simulate_riscv64_pointer_compression', 'v8_linux64_sticky_mark_bits_compile_dbg': 'debug_x64_sticky_mark_bits', @@ -351,7 +357,7 @@ 'v8_linux_arm64_compile_dbg': 'debug_simulate_arm64', 'v8_linux_arm64_gc_stress_compile_dbg': 'debug_simulate_arm64', 'v8_linux_mips64el_compile_rel': 'release_simulate_mips64el', - 'v8_numfuzz_asan_compile_rel': 'release_x64_asan_symbolized_verify_heap', + 'v8_numfuzz_asan_compile_rel': 'release_x64_asan_symbolized_verify_heap_undefined_double', 'v8_numfuzz_compile_rel': 'release_x64', 'v8_numfuzz_compile_dbg': 'debug_x64', 'v8_numfuzz_tsan_compile_rel': 'release_x64_tsan', @@ -450,14 +456,19 @@ # Debug configs for simulators. 'debug_simulate_arm': [ 'debug_bot', 'simulate_arm'], - 'debug_simulate_arm_asan': [ - 'debug_bot', 'simulate_arm', 'asan'], + 'debug_simulate_arm_asan_undefined_double': [ + 'debug_bot', 'simulate_arm', 'asan', 'v8_enable_undefined_double'], '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_undefined_double': [ + 'debug_bot', 'simulate_arm64', 'asan', 'lsan', + 'v8_enable_undefined_double'], + 'debug_simulate_riscv32': [ + 'debug_bot', 'simulate_riscv32'], + 'debug_simulate_riscv64': [ + 'debug_bot', 'simulate_riscv64'], # Release configs for simulators. 'release_simulate_arm_gcmole': [ @@ -481,10 +492,11 @@ 'release_bot', 'simulate_arm64', 'msan'], 'release_simulate_arm64_msan_minimal_symbols': [ 'release_bot', 'simulate_arm64', 'msan', 'minimal_symbols'], - 'release_simulate_arm64_msan_no_origins': [ - 'release_bot', 'simulate_arm64', 'msan_no_origins'], - 'release_simulate_arm64_msan': [ - 'release_bot', 'simulate_arm64', 'msan'], + 'release_simulate_arm64_msan_no_origins_undefined_double': [ + 'release_bot', 'simulate_arm64', 'msan_no_origins', + 'v8_enable_undefined_double'], + 'release_simulate_arm64_msan_undefined_double': [ + 'release_bot', 'simulate_arm64', 'msan', 'v8_enable_undefined_double'], 'release_simulate_loong64': [ 'release_bot', 'simulate_loong64'], 'release_simulate_mips64el': [ @@ -578,25 +590,27 @@ '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_dchecks': [ + 'release_x64_asan_no_lsan_verify_heap_undefined_double': [ + 'release_bot', 'x64', 'asan', 'v8_verify_heap', + 'v8_enable_undefined_double'], + 'release_x64_asan_no_lsan_verify_heap_dchecks_undefined_double': [ 'release_bot', 'x64', 'asan', 'dcheck_always_on', - 'v8_enable_slow_dchecks', 'v8_verify_heap'], - 'release_x64_sandbox_testing': [ - 'release_bot', 'x64', 'symbolized', 'backtrace', 'v8_enable_memory_corruption_api'], - 'release_x64_asan_sandbox_testing': [ + 'v8_enable_slow_dchecks', 'v8_verify_heap', 'v8_enable_undefined_double'], + 'release_x64_sandbox_testing_undefined_double': [ + 'release_bot', 'x64', 'symbolized', 'backtrace', 'v8_enable_memory_corruption_api', + 'v8_enable_undefined_double'], + 'release_x64_asan_sandbox_testing_undefined_double': [ 'release_bot', 'x64', 'asan', 'symbolized', - 'v8_enable_memory_corruption_api'], - 'release_x64_asan_symbolized_verify_heap': [ + 'v8_enable_memory_corruption_api', 'v8_enable_undefined_double'], + 'release_x64_asan_symbolized_verify_heap_undefined_double': [ 'release_bot', 'x64', 'asan', 'lsan', 'symbolized', - 'v8_verify_heap'], + 'v8_verify_heap', 'v8_enable_undefined_double'], 'release_x64_cet_shadow_stack': [ 'release_bot', 'x64', 'cet_shadow_stack'], 'release_x64_cfi': [ 'release_bot', 'x64', 'cfi'], - 'release_x64_cfi_clusterfuzz': [ - 'release_bot', 'x64', 'cfi_clusterfuzz'], + 'release_x64_cfi_clusterfuzz_undefined_double': [ + 'release_bot', 'x64', 'cfi_clusterfuzz', 'v8_enable_undefined_double'], 'release_x64_coverage': [ 'release_bot', 'x64', 'clang_coverage'], 'release_x64_fuzzilli': [ @@ -604,8 +618,9 @@ 'v8_verify_heap', 'v8_verify_csa', 'fuzzilli'], 'release_x64_gcmole': [ 'release_bot', 'x64', 'gcmole'], - 'release_x64_correctness_fuzzer' : [ - 'release_bot', 'x64', 'v8_correctness_fuzzer'], + 'release_x64_correctness_fuzzer_undefined_double' : [ + 'release_bot', 'x64', 'v8_correctness_fuzzer', + 'v8_enable_undefined_double'], 'release_x64_disable_runtime_call_stats': [ 'release_bot', 'x64', 'v8_disable_runtime_call_stats'], 'release_x64_fuchsia': [ @@ -641,14 +656,14 @@ 'release_bot', 'x64', 'tsan', 'disable_concurrent_marking'], 'release_x64_tsan_minimal_symbols': [ 'release_bot', 'x64', 'tsan', 'minimal_symbols'], - 'release_x64_tsan': [ - 'release_bot', 'x64', 'tsan'], + 'release_x64_tsan_undefined_double': [ + 'release_bot', 'x64', 'tsan', 'v8_enable_undefined_double'], '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_undefined_double': [ + 'release_bot', 'x64', 'ubsan_recover', 'v8_enable_undefined_double'], 'release_x64_shared_verify_heap': [ 'release_bot', 'x64', 'shared', 'v8_verify_heap'], 'release_x64_verify_builtins': [ @@ -674,13 +689,13 @@ # Debug configs for x64. 'debug_x64': [ 'debug_bot', 'x64'], - 'debug_x64_asan': [ - 'debug_bot', 'x64', 'asan', 'lsan'], + 'debug_x64_asan_undefined_double': [ + 'debug_bot', 'x64', 'asan', 'lsan', 'v8_enable_undefined_double'], 'debug_x64_asan_centipede': [ 'debug_bot', 'x64', 'asan', 'use_centipede'], - 'debug_x64_asan_no_lsan_static': [ + 'debug_x64_asan_no_lsan_static_undefined_double': [ 'debug', 'static', 'remoteexec', 'v8_enable_slow_dchecks', - 'v8_optimized_debug', 'x64', 'asan'], + 'v8_optimized_debug', 'x64', 'asan', 'v8_enable_undefined_double'], 'debug_x64_asan_undefined_double': [ 'debug_bot', 'x64', 'asan', 'v8_enable_undefined_double'], 'debug_x64_conservative_stack_scanning': [ @@ -715,8 +730,8 @@ 'debug_bot', 'x64', 'v8_enable_sticky_mark_bits'], 'debug_x64_trybot': [ 'debug_trybot', 'x64'], - 'debug_x64': [ - 'debug_bot', 'x64'], + 'debug_x64_undefined_double': [ + 'debug_bot', 'x64', 'v8_enable_undefined_double'], 'debug_x64_dict_tracking_trybot': [ 'debug_trybot', 'x64', 'v8_enable_dict_property_const_tracking'], 'debug_x64_trybot_custom': [ @@ -732,25 +747,25 @@ # Debug configs for x86. 'debug_x86': [ 'debug_bot', 'x86'], - 'debug_x86_asan': [ - 'debug_bot', 'x86', 'asan', 'lsan'], + 'debug_x86_asan_undefined_double': [ + 'debug_bot', 'x86', 'asan', 'lsan', 'v8_enable_undefined_double'], 'debug_x86_minimal_symbols': [ 'debug_bot', 'x86', 'minimal_symbols'], 'debug_x86_no_i18n': [ 'debug_bot', 'x86', 'v8_no_i18n'], 'debug_x86_trybot': [ 'debug_trybot', 'x86'], - 'debug_x86': [ - 'debug_bot', 'x86'], + 'debug_x86_undefined_double': [ + 'debug_bot', 'x86', 'v8_enable_undefined_double'], 'debug_x86_vtunejit': [ 'debug_bot', 'x86', 'v8_enable_vtunejit'], 'full_debug_x86': [ 'debug', 'x86', 'remoteexec', 'v8_enable_slow_dchecks', 'v8_full_debug'], # Release configs for x86. - 'release_x86_asan_symbolized_verify_heap': [ + 'release_x86_asan_symbolized_verify_heap_undefined_double': [ 'release_bot', 'x86', 'asan', 'lsan', 'symbolized', - 'v8_verify_heap'], + 'v8_verify_heap', 'v8_enable_undefined_double'], 'release_x86_gcmole': [ 'release_bot', 'x86', 'gcmole'], 'release_x86_gcmole_trybot': [ @@ -1136,7 +1151,7 @@ }, 'v8_enable_undefined_double': { - 'gn_args': 'v8_enable_experimental_undefined_double=true', + 'gn_args': 'v8_enable_undefined_double=true', }, 'v8_enable_verify_predictable': { diff --git a/deps/v8/infra/testing/PRESUBMIT.py b/deps/v8/infra/testing/PRESUBMIT.py index 67e72197eab1b4..89c5b28c5f224c 100644 --- a/deps/v8/infra/testing/PRESUBMIT.py +++ b/deps/v8/infra/testing/PRESUBMIT.py @@ -123,9 +123,9 @@ def _check_test(error_msg, test): if not all(isinstance(x, str) for x in test_args): errors += error_msg('If specified, all test_args must be strings') - # Limit shards to 14 to avoid erroneous resource exhaustion. + # Limit shards to avoid erroneous resource exhaustion. errors += _check_int_range( - error_msg, test, 'shards', lower_bound=1, upper_bound=14) + error_msg, test, 'shards', lower_bound=1, upper_bound=16) variant = test.get('variant', 'default') if not variant or not isinstance(variant, str): diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl index 8e00738857d1a1..59e1bce6016639 100644 --- a/deps/v8/infra/testing/builders.pyl +++ b/deps/v8/infra/testing/builders.pyl @@ -56,29 +56,28 @@ {'name': 'benchmarks', 'variant': 'extra'}, {'name': 'mozilla'}, {'name': 'mozilla', 'variant': 'extra'}, - {'name': 'test262', 'variant': 'default', 'shards': 2}, - {'name': 'test262', 'variant': 'future', 'shards': 2}, - {'name': 'test262', 'variant': 'extra', 'shards': 7}, - {'name': 'v8testing', 'shards': 4}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, + {'name': 'test262', 'variant': 'default', 'shards': 4}, + {'name': 'test262', 'variant': 'future', 'shards': 4}, + {'name': 'v8testing', 'shards': 6}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 5}, # Noavx. { 'name': 'mozilla', 'suffix': 'noavx', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], }, { 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', 'test_args': ['--extra-flags', '--noenable-avx'], - 'shards': 2 + 'shards': 4, }, { 'name': 'v8testing', 'suffix': 'noavx', 'test_args': ['--extra-flags', '--noenable-avx'], - 'shards': 4 + 'shards': 6, }, # Nosse3. { @@ -88,7 +87,7 @@ '--extra-flags', '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx', ], - 'shards': 4, + 'shards': 6, }, ], }, @@ -156,7 +155,6 @@ {'name': 'mozilla', 'variant': 'extra'}, {'name': 'optimize_for_size'}, {'name': 'test262', 'shards': 4}, - {'name': 'test262', 'variant': 'extra', 'shards': 6}, {'name': 'v8testing', 'shards': 4}, {'name': 'v8testing', 'suffix': 'isolates', 'test_args': ['--isolates'], 'shards': 4}, {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, @@ -393,7 +391,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 3}, + {'name': 'v8testing', 'shards': 5}, ], }, 'v8_linux64_css_dbg': { @@ -417,37 +415,37 @@ {'name': 'benchmarks', 'variant': 'extra', 'shards': 2}, {'name': 'mozilla'}, {'name': 'mozilla', 'variant': 'extra'}, - {'name': 'test262', 'variant': 'default', 'shards': 3}, - {'name': 'test262', 'variant': 'future', 'shards': 3}, - {'name': 'test262', 'variant': 'extra', 'shards': 14}, + {'name': 'test262', 'variant': 'default', 'shards': 4}, + {'name': 'test262', 'variant': 'future', 'shards': 4}, {'name': 'v8testing', 'shards': 8}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 5}, - {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, - {'name': 'v8testing', 'variant': 'precise_pinning'}, - {'name': 'v8testing', 'variant': 'no_lfa'}, - {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, - {'name': 'v8testing', 'variant': 'stress_concurrent_allocation'}, - {'name': 'v8testing', 'variant': 'stress_concurrent_inlining'}, - {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, + {'name': 'v8testing', 'variant': 'minor_ms', 'shards': 2}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning', 'shards': 2}, + {'name': 'v8testing', 'variant': 'precise_pinning', 'shards': 2}, + {'name': 'v8testing', 'variant': 'no_lfa', 'shards': 2}, + {'name': 'v8testing', 'variant': 'stress_instruction_scheduling', 'shards': 2}, + {'name': 'v8testing', 'variant': 'stress_concurrent_allocation', 'shards': 2}, + {'name': 'v8testing', 'variant': 'stress_concurrent_inlining','shards': 2}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan', 'shards': 2}, # Maglev -- move to extra once more architectures are supported. - {'name': 'v8testing', 'variant': 'maglev'}, - {'name': 'v8testing', 'variant': 'maglev_future'}, - {'name': 'v8testing', 'variant': 'stress_maglev'}, - {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, - {'name': 'v8testing', 'variant': 'stress_maglev_future'}, - {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'maglev', 'shards': 2}, + {'name': 'v8testing', 'variant': 'maglev_future', 'shards': 2}, + {'name': 'v8testing', 'variant': 'stress_maglev', 'shards': 2}, + {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining', 'shards': 2}, + {'name': 'v8testing', 'variant': 'stress_maglev_future', 'shards': 2}, + {'name': 'v8testing', 'variant': 'turbolev', 'shards': 2}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future', 'shards': 2}, # Code serializer. {'name': 'benchmarks', 'variant': 'code_serializer', 'shards': 1}, - {'name': 'd8testing', 'variant': 'code_serializer', 'shards': 1}, + {'name': 'd8testing', 'variant': 'code_serializer', 'shards': 2}, {'name': 'mozilla', 'variant': 'code_serializer', 'shards': 1}, - {'name': 'test262', 'variant': 'code_serializer', 'shards': 5}, + {'name': 'test262', 'variant': 'code_serializer', 'shards': 6}, # GC stress { 'name': 'd8testing', 'suffix': 'gc-stress', 'test_args': ['--gc-stress'], - 'shards': 7, + 'shards': 9, }, # Jit fuzzing. {'name': 'mjsunit', 'variant': 'jit_fuzzing'}, @@ -471,6 +469,14 @@ {'name': 'v8testing'}, ], }, + 'v8_linux64_full_dbg': { + 'swarming_dimensions': { + 'os': 'Ubuntu-22.04', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default', 'shards': 8}, + ], + }, 'v8_linux64_fuzzilli_rel': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -494,8 +500,12 @@ # Experimental regexp engine. {'name': 'mjsunit', 'variant': 'experimental_regexp'}, # Variants for maglev. - {'name': 'v8testing', 'variant': 'maglev_no_turbofan'}, {'name': 'v8testing', 'variant': 'stress_maglev_no_turbofan'}, + # Variants maglev + regexp assemble from bc + # TODO(437003349) change to maglev_no_turbofan once the regexp project + # is complete. + {'name': 'v8testing', 'variant': 'maglev_no_turbofan_regexp_from_bc'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tracing'}, ], }, 'v8_linux64_gc_stress_custom_snapshot_dbg': { @@ -624,9 +634,15 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, {'name': 'v8testing', 'variant': 'minor_ms'}, {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, + { + 'name': 'v8testing', + 'suffix': 'noavx', + 'test_args': ['--extra-flags', '--noenable-avx'] + }, ], }, 'v8_linux64_perfetto_dbg': { @@ -659,7 +675,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 5}, + {'name': 'v8testing', 'shards': 7}, ], }, 'v8_linux64_official_rel': { @@ -713,7 +729,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 3}, + {'name': 'v8testing', 'shards': 7}, ], }, 'v8_linux64_sticky_mark_bits_dbg': { @@ -735,7 +751,6 @@ {'name': 'mozilla', 'shards': 1}, {'name': 'optimize_for_size'}, {'name': 'test262', 'shards': 6}, - {'name': 'test262', 'variant': 'extra', 'shards': 6}, {'name': 'v8initializers'}, {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, @@ -753,6 +768,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, # Code serializer. {'name': 'benchmarks', 'variant': 'code_serializer', 'shards': 1}, {'name': 'd8testing', 'variant': 'code_serializer', 'shards': 1}, @@ -803,7 +819,7 @@ {'name': 'mozilla', 'shards': 2}, {'name': 'test262', 'variant': 'default', 'shards': 5}, {'name': 'v8testing', 'shards': 6}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 5}, {'name': 'v8testing', 'variant': 'slow_path', 'shards': 2}, {'name': 'v8testing', 'variant': 'stress_concurrent_allocation', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms', 'shards': 2}, @@ -820,7 +836,7 @@ {'name': 'mozilla', 'shards': 4}, {'name': 'test262', 'variant': 'default', 'shards': 5}, {'name': 'v8testing', 'shards': 12}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 10}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 9}, ], }, 'v8_linux64_tsan_no_cm_rel': { @@ -857,7 +873,7 @@ 'cpu': 'x86-64', }, 'tests': [ - {'name': 'v8testing', 'shards': 3}, + {'name': 'v8testing', 'shards': 5}, ], }, 'v8_linux64_verify_csa_rel': { @@ -865,7 +881,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 2}, + {'name': 'v8testing', 'shards': 3}, ], }, ############################################################################## @@ -878,7 +894,7 @@ {'name': 'mozilla', 'shards': 4}, {'name': 'test262', 'variant': 'default', 'shards': 4}, {'name': 'v8testing', 'shards': 14}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 14}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 12}, { 'name': 'v8testing', 'suffix': 'all_features', @@ -905,7 +921,7 @@ {'name': 'mozilla', 'shards': 4}, {'name': 'test262', 'variant': 'default', 'shards': 4}, {'name': 'v8testing', 'shards': 14}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 14}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 12}, { 'name': 'v8testing', 'suffix': 'all_features', @@ -935,6 +951,14 @@ }, ############################################################################## # Linux with RISC-V simulators + 'v8_linux_riscv32_dbg': { + 'swarming_dimensions': { + 'os': 'Ubuntu-22.04', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 6}, + ], + }, 'v8_linux_riscv32_rel': { 'swarming_dimensions': { 'os': 'Ubuntu-22.04', @@ -943,6 +967,14 @@ {'name': 'v8testing', 'shards': 3}, ], }, + 'v8_linux64_riscv64_dbg': { + 'swarming_dimensions': { + 'os': 'Ubuntu-22.04', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 6}, + ], + }, 'v8_linux64_riscv64_rel': { 'swarming_dimensions': { 'os': 'Ubuntu-22.04', @@ -1075,12 +1107,12 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default', 'shards': 4}, - {'name': 'v8testing', 'shards': 6}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, - {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, - {'name': 'v8testing', 'variant': 'precise_pinning'}, + {'name': 'test262', 'variant': 'default', 'shards': 6}, + {'name': 'v8testing', 'shards': 8}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 7}, + {'name': 'v8testing', 'variant': 'minor_ms', 'shards': 2}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning', 'shards': 2}, + {'name': 'v8testing', 'variant': 'precise_pinning', 'shards': 2}, ], }, 'v8_mac_arm64_gc_stress_dbg': { @@ -1132,6 +1164,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, {'name': 'v8testing', 'variant': 'minor_ms'}, {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, @@ -1144,7 +1177,7 @@ 'pool': 'chromium.tests', }, 'tests': [ - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, {'name': 'mjsunit', 'variant': 'stress_maglev_tests_with_turbofan'}, # Maglev -- move to extra once more architectures are supported. {'name': 'v8testing', 'variant': 'maglev'}, @@ -1153,6 +1186,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, {'name': 'v8testing', 'variant': 'minor_ms'}, {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, @@ -1174,6 +1208,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, {'name': 'v8testing', 'variant': 'minor_ms'}, {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, @@ -1286,13 +1321,13 @@ {'name': 'mozilla', 'variant': 'extra'}, {'name': 'optimize_for_size'}, {'name': 'test262', 'shards': 10}, - {'name': 'test262', 'variant': 'extra', 'shards': 12}, + {'name': 'test262', 'variant': 'extra', 'shards': 10}, {'name': 'v8testing', 'shards': 3}, { 'name': 'v8testing', 'suffix': 'isolates', 'test_args': ['--isolates'], - 'shards': 4 + 'shards': 6, }, {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, # Nosse3. @@ -1377,6 +1412,11 @@ 'swarming_dimensions': { 'os': 'Ubuntu-22.04', }, + 'swarming_task_attrs': { + 'expiration': 14400, + 'hard_timeout': 3600, + 'priority': 35, + }, 'tests': [ {'name': 'v8testing', 'variant': 'default', 'shards': 8}, ], @@ -1481,6 +1521,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, # Noavx. { 'name': 'mozilla', @@ -1573,7 +1614,7 @@ {'name': 'mozilla', 'variant': 'extra'}, {'name': 'optimize_for_size'}, {'name': 'test262', 'shards': 12}, - {'name': 'test262', 'variant': 'extra', 'shards': 12}, + {'name': 'test262', 'variant': 'extra', 'shards': 10}, {'name': 'v8testing', 'shards': 5}, {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, {'name': 'v8testing', 'variant': 'minor_ms'}, @@ -1592,6 +1633,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, # Noavx. { 'name': 'mozilla', @@ -1603,7 +1645,7 @@ 'suffix': 'noavx', 'variant': 'default', 'test_args': ['--extra-flags', '--noenable-avx'], - 'shards': 2 + 'shards': 3 }, { 'name': 'v8testing', @@ -1615,12 +1657,20 @@ {'name': 'benchmarks', 'variant': 'code_serializer', 'shards': 1}, {'name': 'd8testing', 'variant': 'code_serializer', 'shards': 1}, {'name': 'mozilla', 'variant': 'code_serializer', 'shards': 1}, - {'name': 'test262', 'variant': 'code_serializer', 'shards': 3}, + {'name': 'test262', 'variant': 'code_serializer', 'shards': 4}, # Jit fuzzing. {'name': 'mjsunit', 'variant': 'jit_fuzzing'}, {'name': 'mjsunit', 'variant': 'jit_fuzzing_maglev'}, ], }, + 'V8 Linux64 - full debug': { + 'swarming_dimensions': { + 'os': 'Ubuntu-22.04', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default', 'shards': 8}, + ], + }, 'V8 Linux64 - minor mc - debug': { 'swarming_dimensions': { 'cpu': 'x86-64-avx2', @@ -1630,7 +1680,7 @@ {'name': 'v8testing', 'variant': 'minor_ms'}, {'name': 'benchmarks', 'variant': 'minor_ms'}, {'name': 'mozilla', 'variant': 'minor_ms'}, - {'name': 'test262', 'variant': 'minor_ms', 'shards': 2}, + {'name': 'test262', 'variant': 'minor_ms', 'shards': 3}, ], }, 'V8 Linux64 - disable runtime call stats': { @@ -1647,7 +1697,7 @@ }, 'tests': [ # Infra staging. - {'name': 'v8testing', 'variant': 'infra_staging', 'shards': 3}, + {'name': 'v8testing', 'variant': 'infra_staging', 'shards': 4}, # Stress sampling. {'name': 'mjsunit', 'variant': 'stress_sampling'}, {'name': 'webkit', 'variant': 'stress_sampling'}, @@ -1657,8 +1707,12 @@ # Experimental regexp engine. {'name': 'mjsunit', 'variant': 'experimental_regexp'}, # Variants for maglev. - {'name': 'v8testing', 'variant': 'maglev_no_turbofan'}, {'name': 'v8testing', 'variant': 'stress_maglev_no_turbofan'}, + # Variants maglev + regexp assemble from bc + # TODO(437003349) change to maglev_no_turbofan once the regexp project + # is complete. + {'name': 'v8testing', 'variant': 'maglev_no_turbofan_regexp_from_bc'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tracing'}, ], }, 'V8 Linux64 - cppgc-non-default - debug': { @@ -1667,7 +1721,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 3}, + {'name': 'v8testing', 'shards': 5}, ], }, 'V8 Linux64 - debug - perfetto': { @@ -1712,8 +1766,12 @@ # Experimental regexp engine. {'name': 'mjsunit', 'variant': 'experimental_regexp'}, # Variants for maglev. - {'name': 'v8testing', 'variant': 'maglev_no_turbofan'}, {'name': 'v8testing', 'variant': 'stress_maglev_no_turbofan'}, + # Variants maglev + regexp assemble from bc + # TODO(437003349) change to maglev_no_turbofan once the regexp project + # is complete. + {'name': 'v8testing', 'variant': 'maglev_no_turbofan_regexp_from_bc'}, + {'name': 'mjsunit', 'variant': 'stress_maglev_tracing'}, ], }, 'V8 Linux64 - PKU': { @@ -1829,7 +1887,7 @@ 'priority': 35, }, 'tests': [ - {'name': 'v8testing', 'shards': 4}, + {'name': 'v8testing', 'shards': 6}, ], }, 'V8 Linux64 - no pointer compression': { @@ -1855,7 +1913,7 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ - {'name': 'v8testing', 'shards': 3}, + {'name': 'v8testing', 'shards': 4}, ], }, 'V8 Linux64 - sandbox testing': { @@ -1892,7 +1950,7 @@ 'cpu': 'x86-64', }, 'tests': [ - {'name': 'v8testing', 'shards': 3}, + {'name': 'v8testing', 'shards': 5}, ], }, 'V8 Linux64 - verify csa': { @@ -1971,7 +2029,7 @@ {'name': 'mozilla', 'shards': 4}, {'name': 'test262', 'variant': 'default', 'shards': 6}, {'name': 'v8testing', 'shards': 12}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 12}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 10}, ], }, 'V8 Linux64 TSAN - stress-incremental-marking': { @@ -2059,10 +2117,10 @@ {'name': 'mozilla'}, {'name': 'test262', 'variant': 'default', 'shards': 4}, {'name': 'v8testing', 'shards': 6}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, - {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, - {'name': 'v8testing', 'variant': 'precise_pinning'}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 5}, + {'name': 'v8testing', 'variant': 'minor_ms', 'shards': 2}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning', 'shards': 2}, + {'name': 'v8testing', 'variant': 'precise_pinning', 'shards': 2}, ], }, 'V8 Mac64 ASAN': { @@ -2100,6 +2158,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, {'name': 'v8testing', 'variant': 'minor_ms'}, {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, @@ -2122,6 +2181,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, {'name': 'v8testing', 'variant': 'minor_ms'}, {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, @@ -2144,6 +2204,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_non_eager_inlining'}, {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, + {'name': 'v8testing', 'variant': 'stress_turbolev_future'}, {'name': 'v8testing', 'variant': 'minor_ms'}, {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, @@ -2156,7 +2217,7 @@ 'pool': 'chromium.tests', }, 'tests': [ - {'name': 'v8testing'}, + {'name': 'v8testing', 'shards': 2}, ], }, 'V8 Win32': { @@ -2333,7 +2394,7 @@ {'name': 'mozilla', 'shards': 3}, {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 10}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 10}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 9}, {'name': 'v8testing', 'variant': 'turbolev'}, # Armv8-a. { @@ -2423,9 +2484,9 @@ }, 'tests': [ {'name': 'mozilla', 'shards': 2}, - {'name': 'test262', 'variant': 'default', 'shards': 2}, + {'name': 'test262', 'variant': 'default', 'shards': 3}, {'name': 'v8testing', 'shards': 12}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 14}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 12}, { 'name': 'v8testing', 'suffix': 'all_features', @@ -2448,7 +2509,7 @@ { 'name': 'd8testing', 'test_args': ['--gc-stress', '--extra-flags=--verify-heap-skip-remembered-set'], - 'shards': 7 + 'shards': 12 }, ], }, @@ -2492,6 +2553,19 @@ {'name': 'v8testing', 'shards': 3}, ], }, + 'V8 Linux - riscv32 - sim - debug': { + 'swarming_dimensions': { + 'os': 'Ubuntu-22.04', + }, + 'swarming_task_attrs': { + 'expiration': 14400, + 'hard_timeout': 3600, + 'priority': 35, + }, + 'tests': [ + {'name': 'v8testing', 'shards': 6}, + ], + }, 'V8 Linux - riscv32 - sim': { 'swarming_dimensions': { 'os': 'Ubuntu-22.04', @@ -2505,6 +2579,19 @@ {'name': 'v8testing', 'shards': 3}, ], }, + 'V8 Linux - riscv64 - sim - debug': { + 'swarming_dimensions': { + 'os': 'Ubuntu-22.04', + }, + 'swarming_task_attrs': { + 'expiration': 14400, + 'hard_timeout': 3600, + 'priority': 35, + }, + 'tests': [ + {'name': 'v8testing', 'shards': 6}, + ], + }, 'V8 Linux - riscv64 - sim': { 'swarming_dimensions': { 'os': 'Ubuntu-22.04', @@ -2584,7 +2671,7 @@ 'priority': 35, }, 'tests': [ - {'name': 'v8testing', 'shards': 7}, + {'name': 'v8testing', 'shards': 8}, ], }, ############################################################################## @@ -2599,6 +2686,11 @@ 'priority': 35, }, 'tests': [ + { + 'name': 'numfuzz', + 'suffix': 'bytecode', + 'test_args': ['--total-timeout-sec=2100', '--stress-bytecode-budget=1'] + }, { 'name': 'numfuzz', 'suffix': 'deopt', @@ -2631,6 +2723,11 @@ '--extra-flags=--gc-interval=500', ] }, + { + 'name': 'numfuzz', + 'suffix': 'bytecode', + 'test_args': ['--total-timeout-sec=4200', '--stress-bytecode-budget=1'] + }, { 'name': 'numfuzz', 'suffix': 'marking', @@ -2662,6 +2759,7 @@ 'test_args': [ '--total-timeout-sec=4200', '--allocation-offset=2', + '--stress-bytecode-budget=1', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2691,7 +2789,7 @@ 'priority': 35, }, 'tests': [ - {'name': 'd8testing_random_gc'}, + {'name': 'd8testing_random_gc', 'shards': 2}, { 'name': 'numfuzz', 'suffix': 'allocation', @@ -2699,7 +2797,13 @@ '--total-timeout-sec=4200', '--allocation-offset=1', '--extra-flags=--gc-interval=500', - ] + ], + 'shards': 2 + }, + { + 'name': 'numfuzz', + 'suffix': 'bytecode', + 'test_args': ['--total-timeout-sec=4200', '--stress-bytecode-budget=1'] }, { 'name': 'numfuzz', @@ -2733,6 +2837,7 @@ 'test_args': [ '--total-timeout-sec=4200', '--allocation-offset=2', + '--stress-bytecode-budget=1', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2763,6 +2868,11 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ + { + 'name': 'numfuzz', + 'suffix': 'bytecode', + 'test_args': ['--total-timeout-sec=900', '--stress-bytecode-budget=1'] + }, { 'name': 'numfuzz', 'suffix': 'deopt', @@ -2789,6 +2899,11 @@ '--extra-flags=--gc-interval=500', ] }, + { + 'name': 'numfuzz', + 'suffix': 'bytecode', + 'test_args': ['--total-timeout-sec=900', '--stress-bytecode-budget=1'] + }, { 'name': 'numfuzz', 'suffix': 'marking', @@ -2820,6 +2935,7 @@ 'test_args': [ '--total-timeout-sec=900', '--allocation-offset=2', + '--stress-bytecode-budget=1', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2852,6 +2968,11 @@ '--extra-flags=--gc-interval=500', ] }, + { + 'name': 'numfuzz', + 'suffix': 'bytecode', + 'test_args': ['--total-timeout-sec=900', '--stress-bytecode-budget=1'] + }, { 'name': 'numfuzz', 'suffix': 'marking', @@ -2883,6 +3004,7 @@ 'test_args': [ '--total-timeout-sec=900', '--allocation-offset=2', + '--stress-bytecode-budget=1', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', diff --git a/deps/v8/src/api/api-natives.cc b/deps/v8/src/api/api-natives.cc index f70cfff754d9f4..80466c2e8f97af 100644 --- a/deps/v8/src/api/api-natives.cc +++ b/deps/v8/src/api/api-natives.cc @@ -331,8 +331,8 @@ MaybeHandle InstantiateObject(Isolate* isolate, const auto new_js_object_type = constructor->has_initial_map() && IsJSApiWrapperObjectMap(constructor->initial_map()) - ? NewJSObjectType::kAPIWrapper - : NewJSObjectType::kNoAPIWrapper; + ? NewJSObjectType::kMaybeEmbedderFieldsAndApiWrapper + : NewJSObjectType::kMaybeEmbedderFieldsAndNoApiWrapper; Handle object; ASSIGN_RETURN_ON_EXCEPTION( isolate, object, @@ -532,7 +532,7 @@ MaybeHandle ApiNatives::InstantiateRemoteObject( Handle object = isolate->factory()->NewJSObjectFromMap( object_map, AllocationType::kYoung, DirectHandle::null(), - NewJSObjectType::kAPIWrapper); + NewJSObjectType::kMaybeEmbedderFieldsAndApiWrapper); JSObject::ForceSetPrototype(isolate, object, isolate->factory()->null_value()); diff --git a/deps/v8/src/api/api.cc b/deps/v8/src/api/api.cc index e5f703bb5e7ddb..d8d924ac922c8d 100644 --- a/deps/v8/src/api/api.cc +++ b/deps/v8/src/api/api.cc @@ -185,8 +185,6 @@ namespace v8 { -namespace { - i::ExternalPointerTag ToExternalPointerTag(v8::EmbedderDataTypeTag api_tag) { uint16_t tag_value = static_cast(i::kFirstEmbedderDataTag) + static_cast(api_tag); @@ -195,16 +193,6 @@ i::ExternalPointerTag ToExternalPointerTag(v8::EmbedderDataTypeTag api_tag) { return static_cast(tag_value); } -v8::EmbedderDataTypeTag ToApiEmbedderDataTypeTag(i::ExternalPointerTag tag) { - DCHECK_GE(tag, i::kFirstEmbedderDataTag); - DCHECK_LE(tag, i::kLastEmbedderDataTag); - uint16_t tag_value = static_cast(tag) - - static_cast(i::kFirstEmbedderDataTag); - return static_cast(tag_value); -} - -} // namespace - static OOMErrorCallback g_oom_error_callback = nullptr; using RCCId = i::RuntimeCallCounterId; @@ -859,6 +847,10 @@ bool Data::IsFunctionTemplate() const { return i::IsFunctionTemplateInfo(*Utils::OpenDirectHandle(this)); } +bool Data::IsDictionaryTemplate() const { + return i::IsDictionaryTemplateInfo(*Utils::OpenDirectHandle(this)); +} + bool Data::IsContext() const { return i::IsContext(*Utils::OpenDirectHandle(this)); } @@ -976,7 +968,8 @@ void Context::SetEmbedderData(int index, v8::Local value) { *Utils::OpenDirectHandle(*GetEmbedderData(index))); } -void* Context::SlowGetAlignedPointerFromEmbedderData(int index) { +void* Context::SlowGetAlignedPointerFromEmbedderData(int index, + EmbedderDataTypeTag tag) { const char* location = "v8::Context::GetAlignedPointerFromEmbedderData()"; i::Isolate* i_isolate = i::Isolate::Current(); i::HandleScope handle_scope(i_isolate); @@ -984,17 +977,13 @@ void* Context::SlowGetAlignedPointerFromEmbedderData(int index) { EmbedderDataFor(this, index, false, location); if (data.is_null()) return nullptr; void* result; - Utils::ApiCheck(i::EmbedderDataSlot(*data, index) - .DeprecatedToAlignedPointer(i_isolate, &result), - location, "Pointer is not aligned"); + Utils::ApiCheck( + i::EmbedderDataSlot(*data, index) + .ToAlignedPointer(i_isolate, &result, ToExternalPointerTag(tag)), + location, "Pointer is not aligned"); return result; } -void Context::SetAlignedPointerInEmbedderData(int index, void* value) { - SetAlignedPointerInEmbedderData( - index, value, ToApiEmbedderDataTypeTag(i::kEmbedderDataSlotPayloadTag)); -} - void Context::SetAlignedPointerInEmbedderData(int index, void* value, EmbedderDataTypeTag tag) { const char* location = "v8::Context::SetAlignedPointerInEmbedderData()"; @@ -1005,7 +994,7 @@ void Context::SetAlignedPointerInEmbedderData(int index, void* value, .store_aligned_pointer(i_isolate, *data, value, ToExternalPointerTag(tag)); Utils::ApiCheck(ok, location, "Pointer is not aligned"); - DCHECK_EQ(value, GetAlignedPointerFromEmbedderData(index)); + DCHECK_EQ(value, GetAlignedPointerFromEmbedderData(index, tag)); } // --- T e m p l a t e --- @@ -2266,14 +2255,34 @@ int Module::GetIdentityHash() const { return self->hash(); } +Maybe Module::InstantiateModule( + Local context, ResolveModuleByIndexCallback module_callback, + ResolveSourceByIndexCallback source_callback) { + auto i_isolate = i::Isolate::Current(); + EnterV8Scope<> api_scope{i_isolate, context, + RCCId::kAPI_Module_InstantiateModule}; + + i::Module::UserResolveCallbacks callbacks; + callbacks.module_callback_by_index = module_callback; + callbacks.source_callback_by_index = source_callback; + if (!i::Module::Instantiate(i_isolate, Utils::OpenHandle(this), context, + callbacks)) { + return {}; + } + return Just(true); +} + Maybe Module::InstantiateModule(Local context, ResolveModuleCallback module_callback, ResolveSourceCallback source_callback) { auto i_isolate = i::Isolate::Current(); EnterV8Scope<> api_scope{i_isolate, context, RCCId::kAPI_Module_InstantiateModule}; + i::Module::UserResolveCallbacks callbacks; + callbacks.module_callback = module_callback; + callbacks.source_callback = source_callback; if (!i::Module::Instantiate(i_isolate, Utils::OpenHandle(this), context, - module_callback, source_callback)) { + callbacks)) { return {}; } return Just(true); @@ -2904,11 +2913,6 @@ Local Message::Get() const { return scope.Escape(result); } -v8::Isolate* Message::GetIsolate() const { - i::Isolate* i_isolate = i::Isolate::Current(); - return reinterpret_cast(i_isolate); -} - ScriptOrigin Message::GetScriptOrigin() const { auto self = Utils::OpenDirectHandle(this); i::Isolate* i_isolate = i::Isolate::Current(); @@ -4701,12 +4705,6 @@ Maybe SetPrototypeImpl(v8::Object* this_, Local context, } // namespace -Maybe v8::Object::SetPrototype(Local context, - Local value) { - static constexpr bool from_javascript = false; - return SetPrototypeImpl(this, context, value, from_javascript); -} - Maybe v8::Object::SetPrototypeV2(Local context, Local value) { static constexpr bool from_javascript = true; @@ -5173,7 +5171,8 @@ Local v8::Object::GetCreationContextChecked() { namespace { V8_INLINE void* GetAlignedPointerFromEmbedderDataInCreationContextImpl( i::DirectHandle object, - i::IsolateForSandbox i_isolate_for_sandbox, int index) { + i::IsolateForSandbox i_isolate_for_sandbox, int index, + EmbedderDataTypeTag tag) { const char* location = "v8::Object::GetAlignedPointerFromEmbedderDataInCreationContext()"; auto maybe_context = object->GetCreationContext(); @@ -5208,10 +5207,10 @@ V8_INLINE void* GetAlignedPointerFromEmbedderDataInCreationContextImpl( if (V8_LIKELY(static_cast(index) < static_cast(data->length()))) { void* result; - Utils::ApiCheck( - i::EmbedderDataSlot(data, index) - .DeprecatedToAlignedPointer(i_isolate_for_sandbox, &result), - location, "Pointer is not aligned"); + Utils::ApiCheck(i::EmbedderDataSlot(data, index) + .ToAlignedPointer(i_isolate_for_sandbox, &result, + ToExternalPointerTag(tag)), + location, "Pointer is not aligned"); return result; } // Bad index, report an API error. @@ -5223,19 +5222,19 @@ V8_INLINE void* GetAlignedPointerFromEmbedderDataInCreationContextImpl( } // namespace void* v8::Object::GetAlignedPointerFromEmbedderDataInCreationContext( - v8::Isolate* isolate, int index) { + v8::Isolate* isolate, int index, EmbedderDataTypeTag tag) { auto self = Utils::OpenDirectHandle(this); auto i_isolate = reinterpret_cast(isolate); return GetAlignedPointerFromEmbedderDataInCreationContextImpl(self, i_isolate, - index); + index, tag); } void* v8::Object::GetAlignedPointerFromEmbedderDataInCreationContext( - int index) { + int index, EmbedderDataTypeTag tag) { auto self = Utils::OpenDirectHandle(this); i::IsolateForSandbox isolate = i::GetCurrentIsolateForSandbox(); return GetAlignedPointerFromEmbedderDataInCreationContextImpl(self, isolate, - index); + index, tag); } int v8::Object::GetIdentityHash() { @@ -5933,7 +5932,6 @@ void String::WriteV2(Isolate* v8_isolate, uint32_t offset, uint32_t length, void String::WriteOneByteV2(Isolate* v8_isolate, uint32_t offset, uint32_t length, uint8_t* buffer, int flags) const { - DCHECK(IsOneByte()); WriteHelperV2(reinterpret_cast(v8_isolate), this, buffer, offset, length, flags); } @@ -6260,36 +6258,32 @@ void v8::Object::SetInternalField(int index, v8::Local value) { i::Cast(obj)->SetEmbedderField(index, *val); } -void* v8::Object::SlowGetAlignedPointerFromInternalField(v8::Isolate* isolate, - int index) { +void* v8::Object::SlowGetAlignedPointerFromInternalField( + v8::Isolate* isolate, int index, EmbedderDataTypeTag tag) { auto obj = Utils::OpenDirectHandle(this); const char* location = "v8::Object::GetAlignedPointerFromInternalField()"; if (!InternalFieldOK(obj, index, location)) return nullptr; void* result; Utils::ApiCheck(i::EmbedderDataSlot(i::Cast(*obj), index) - .DeprecatedToAlignedPointer( - reinterpret_cast(isolate), &result), + .ToAlignedPointer(reinterpret_cast(isolate), + &result, ToExternalPointerTag(tag)), location, "Unaligned pointer"); return result; } -void* v8::Object::SlowGetAlignedPointerFromInternalField(int index) { +void* v8::Object::SlowGetAlignedPointerFromInternalField( + int index, EmbedderDataTypeTag tag) { auto obj = Utils::OpenDirectHandle(this); const char* location = "v8::Object::GetAlignedPointerFromInternalField()"; if (!InternalFieldOK(obj, index, location)) return nullptr; void* result; - Utils::ApiCheck( - i::EmbedderDataSlot(i::Cast(*obj), index) - .DeprecatedToAlignedPointer(i::Isolate::Current(), &result), - location, "Unaligned pointer"); + Utils::ApiCheck(i::EmbedderDataSlot(i::Cast(*obj), index) + .ToAlignedPointer(i::Isolate::Current(), &result, + ToExternalPointerTag(tag)), + location, "Unaligned pointer"); return result; } -void v8::Object::SetAlignedPointerInInternalField(int index, void* value) { - SetAlignedPointerInInternalField( - index, value, ToApiEmbedderDataTypeTag(i::kEmbedderDataSlotPayloadTag)); -} - void v8::Object::SetAlignedPointerInInternalField(int index, void* value, EmbedderDataTypeTag tag) { auto obj = Utils::OpenDirectHandle(this); @@ -6301,13 +6295,12 @@ void v8::Object::SetAlignedPointerInInternalField(int index, void* value, .store_aligned_pointer(i::Isolate::Current(), *obj, value, ToExternalPointerTag(tag)), location, "Unaligned pointer"); - DCHECK_EQ(value, GetAlignedPointerFromInternalField(index)); + DCHECK_EQ(value, GetAlignedPointerFromInternalField(index, tag)); } void v8::Object::SetAlignedPointerInInternalFields(int argc, int indices[], void* values[]) { - EmbedderDataTypeTag tag = - ToApiEmbedderDataTypeTag(i::kEmbedderDataSlotPayloadTag); + EmbedderDataTypeTag tag = kEmbedderDataTypeTagDefault; auto obj = Utils::OpenDirectHandle(this); if (!IsJSObject(*obj)) return; @@ -6327,7 +6320,7 @@ void v8::Object::SetAlignedPointerInInternalFields(int argc, int indices[], .store_aligned_pointer(i::Isolate::Current(), *obj, value, ToExternalPointerTag(tag)), location, "Unaligned pointer"); - DCHECK_EQ(value, GetAlignedPointerFromInternalField(index)); + DCHECK_EQ(value, GetAlignedPointerFromInternalField(index, tag)); } } @@ -7212,8 +7205,6 @@ Maybe Context::DeepFreeze(DeepFreezeDelegate* delegate) { return JustVoid(); } -v8::Isolate* Context::GetIsolate() { return Isolate::GetCurrent(); } - v8::MicrotaskQueue* Context::GetMicrotaskQueue() { auto env = Utils::OpenDirectHandle(this); Utils::ApiCheck(i::IsNativeContext(*env), "v8::Context::GetMicrotaskQueue", @@ -7805,11 +7796,6 @@ bool v8::String::StringEquals(Local that) const { return self->Equals(*other); } -Isolate* v8::Object::GetIsolate() { - i::Isolate* i_isolate = i::Isolate::Current(); - return reinterpret_cast(i_isolate); -} - Local v8::Object::New(Isolate* v8_isolate) { i::Isolate* i_isolate = reinterpret_cast(v8_isolate); ApiRuntimeCallStatsScope rcs_scope(i_isolate, RCCId::kAPI_Object_New); @@ -8322,10 +8308,10 @@ FastIterateResult FastIterateArray(DirectHandle array, DirectHandle value; if (elements->is_the_hole(i)) { value = Handle(isolate->factory()->undefined_value()); -#ifdef V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE +#ifdef V8_ENABLE_UNDEFINED_DOUBLE } else if (elements->is_undefined(i)) { value = Handle(isolate->factory()->undefined_value()); -#endif // V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE +#endif // V8_ENABLE_UNDEFINED_DOUBLE } else { value = isolate->factory()->NewNumber(elements->get_scalar(i)); } @@ -9728,6 +9714,13 @@ int64_t Isolate::AdjustAmountOfExternalAllocatedMemoryImpl( return amount; } +#if V8_VERIFY_WRITE_BARRIERS + // Incrementing the number of allocated bytes may trigger GC. + i_isolate->main_thread_local_heap() + ->allocator() + ->ResetMostRecentYoungAllocation(); +#endif + if (amount > i_isolate->heap()->external_memory_limit_for_interrupt()) { HandleExternalMemoryInterrupt(); } @@ -10886,17 +10879,10 @@ CALLBACK_SETTER(WasmAsyncResolvePromiseCallback, CALLBACK_SETTER(WasmLoadSourceMapCallback, WasmLoadSourceMapCallback, wasm_load_source_map_callback) -CALLBACK_SETTER(WasmImportedStringsEnabledCallback, - WasmImportedStringsEnabledCallback, - wasm_imported_strings_enabled_callback) - CALLBACK_SETTER(WasmCustomDescriptorsEnabledCallback, WasmCustomDescriptorsEnabledCallback, wasm_custom_descriptors_enabled_callback) -CALLBACK_SETTER(WasmJSPIEnabledCallback, WasmJSPIEnabledCallback, - wasm_jspi_enabled_callback) - CALLBACK_SETTER(SharedArrayBufferConstructorEnabledCallback, SharedArrayBufferConstructorEnabledCallback, sharedarraybuffer_constructor_enabled_callback) @@ -11906,6 +11892,34 @@ const HeapSnapshot* HeapProfiler::TakeHeapSnapshot(ActivityControl* control, return TakeHeapSnapshot(options); } +const HeapSnapshot* HeapProfiler::TakeHeapSnapshot( + ActivityControl* control, ContextNameResolver* resolver, + bool hide_internals, bool capture_numeric_value) { + HeapSnapshotOptions options; + options.control = control; + options.context_name_resolver = resolver; + options.snapshot_mode = hide_internals ? HeapSnapshotMode::kRegular + : HeapSnapshotMode::kExposeInternals; + options.numerics_mode = capture_numeric_value + ? NumericsMode::kExposeNumericValues + : NumericsMode::kHideNumericValues; + return TakeHeapSnapshot(options); +} + +const HeapSnapshot* HeapProfiler::TakeHeapSnapshot(ActivityControl* control, + std::nullptr_t resolver, + bool hide_internals, + bool capture_numeric_value) { + HeapSnapshotOptions options; + options.control = control; + options.snapshot_mode = hide_internals ? HeapSnapshotMode::kRegular + : HeapSnapshotMode::kExposeInternals; + options.numerics_mode = capture_numeric_value + ? NumericsMode::kExposeNumericValues + : NumericsMode::kHideNumericValues; + return TakeHeapSnapshot(options); +} + std::vector> HeapProfiler::GetDetachedJSWrapperObjects() { return reinterpret_cast(this) ->GetDetachedJSWrapperObjects(); diff --git a/deps/v8/src/asmjs/asm-parser.cc b/deps/v8/src/asmjs/asm-parser.cc index 76fde22b45d774..05647c347f1e6f 100644 --- a/deps/v8/src/asmjs/asm-parser.cc +++ b/deps/v8/src/asmjs/asm-parser.cc @@ -806,7 +806,8 @@ void AsmJsParser::ValidateFunction() { } // Check against limit on number of local variables. - if (locals.size() + function_temp_locals_used_ > kV8MaxWasmFunctionLocals) { + if (locals.size() + function_temp_locals_used_ + params.size() > + kV8MaxWasmFunctionLocals) { FAIL("Number of local variables exceeds internal limit"); } diff --git a/deps/v8/src/ast/ast-function-literal-id-reindexer.cc b/deps/v8/src/ast/ast-function-literal-id-reindexer.cc index c0892994528850..bd79b016f79847 100644 --- a/deps/v8/src/ast/ast-function-literal-id-reindexer.cc +++ b/deps/v8/src/ast/ast-function-literal-id-reindexer.cc @@ -70,11 +70,12 @@ void AstFunctionLiteralIdReindexer::VisitClassLiteral(ClassLiteral* expr) { for (int i = 0; i < props->length(); ++i) { ClassLiteralProperty* prop = props->at(i); - // Public fields with computed names have their key - // and value present in instance_members_initializer_function, so they will + // Public fields and auto accessors with computed names have their key and + // value present in instance_members_initializer_function, so they will // already have been visited. if (prop->is_computed_name() && - prop->kind() == ClassLiteralProperty::Kind::FIELD) { + (prop->kind() == ClassLiteralProperty::Kind::FIELD || + (prop->kind() == ClassLiteralProperty::Kind::AUTO_ACCESSOR))) { if (!prop->key()->IsLiteral()) { CheckVisited(prop->key()); } @@ -85,6 +86,10 @@ void AstFunctionLiteralIdReindexer::VisitClassLiteral(ClassLiteral* expr) { } Visit(prop->value()); } + if (prop->kind() == ClassLiteralProperty::Kind::AUTO_ACCESSOR) { + Visit(prop->auto_accessor_info()->generated_getter()); + Visit(prop->auto_accessor_info()->generated_setter()); + } } } diff --git a/deps/v8/src/ast/prettyprinter.cc b/deps/v8/src/ast/prettyprinter.cc index 3a1f47b8f18233..f4cf7258f8828d 100644 --- a/deps/v8/src/ast/prettyprinter.cc +++ b/deps/v8/src/ast/prettyprinter.cc @@ -631,7 +631,10 @@ void CallPrinter::FindArguments(const ZonePtrList* arguments) { void CallPrinter::PrintLiteral(DirectHandle value, bool quote) { if (!ShouldPrint()) return; - if (IsString(*value)) { + if (IsAnyHole(*value)) { + // Holes can occur in array literals, and should show up as empty entries. + Print(""); + } else if (IsString(*value)) { if (quote) Print("\""); Print(Cast(value)); if (quote) Print("\""); diff --git a/deps/v8/src/base/address-region.h b/deps/v8/src/base/address-region.h index e6f53b3f2c062a..e6fb50759eb05e 100644 --- a/deps/v8/src/base/address-region.h +++ b/deps/v8/src/base/address-region.h @@ -30,37 +30,37 @@ class AddressRegion { constexpr AddressRegion(Address address, size_t size) : address_(address), size_(size) {} - Address begin() const { return address_; } - Address end() const { return address_ + size_; } + constexpr Address begin() const { return address_; } + constexpr Address end() const { return address_ + size_; } - size_t size() const { return size_; } + constexpr size_t size() const { return size_; } void set_size(size_t size) { size_ = size; } - bool is_empty() const { return size_ == 0; } + constexpr bool is_empty() const { return size_ == 0; } - bool contains(Address address) const { + constexpr bool contains(Address address) const { static_assert(std::is_unsigned_v
); return (address - begin()) < size(); } - bool contains(Address address, size_t size) const { + constexpr bool contains(Address address, size_t size) const { static_assert(std::is_unsigned_v
); - Address offset = address - begin(); + const Address offset = address - begin(); return (offset < size_) && (offset + size <= size_); } - bool contains(AddressRegion region) const { + constexpr bool contains(AddressRegion region) const { return contains(region.address_, region.size_); } - base::AddressRegion GetOverlap(AddressRegion region) const { - Address overlap_start = std::max(begin(), region.begin()); - Address overlap_end = + constexpr base::AddressRegion GetOverlap(AddressRegion region) const { + const Address overlap_start = std::max(begin(), region.begin()); + const Address overlap_end = std::max(overlap_start, std::min(end(), region.end())); return {overlap_start, overlap_end - overlap_start}; } - bool operator==(AddressRegion other) const { + constexpr bool operator==(AddressRegion other) const { return address_ == other.address_ && size_ == other.size_; } diff --git a/deps/v8/src/base/atomic-utils.h b/deps/v8/src/base/atomic-utils.h index 98be98267f0b44..9013fde59f2454 100644 --- a/deps/v8/src/base/atomic-utils.h +++ b/deps/v8/src/base/atomic-utils.h @@ -134,6 +134,13 @@ class AsAtomicImpl { cast_helper::to_storage_type(new_value))); } + template + static T Relaxed_FetchOr(T* addr, std::remove_reference_t bits) { + static_assert(sizeof(T) <= sizeof(AtomicStorageType)); + return cast_helper::to_return_type(base::Relaxed_FetchOr( + to_storage_addr(addr), cast_helper::to_storage_type(bits))); + } + template static T AcquireRelease_CompareAndSwap(T* addr, std::remove_reference_t old_value, @@ -187,6 +194,18 @@ class AsAtomicImpl { return true; } + // Atomically sets bits selected by the mask to 1. Returns false if the bits + // are already set as needed. + template + static bool Relaxed_SetBits(T* addr, T mask) { + static_assert(sizeof(T) <= sizeof(AtomicStorageType)); + T old_value = Relaxed_Load(addr); + if ((old_value & mask) == mask) return false; + + T old_value_before_fo = Relaxed_FetchOr(addr, mask); + return (old_value_before_fo | mask) != old_value_before_fo; + } + private: template struct cast_helper { diff --git a/deps/v8/src/base/atomicops.h b/deps/v8/src/base/atomicops.h index f57b4aed8e9875..8ab93476ba32ee 100644 --- a/deps/v8/src/base/atomicops.h +++ b/deps/v8/src/base/atomicops.h @@ -125,6 +125,21 @@ inline Atomic32 Relaxed_CompareAndSwap(volatile Atomic32* ptr, return old_value; } +inline Atomic8 Relaxed_FetchOr(volatile Atomic8* ptr, Atomic8 bits) { + auto old = helper::to_std_atomic(ptr); + return old->fetch_or(bits, std::memory_order_relaxed); +} + +inline Atomic16 Relaxed_FetchOr(volatile Atomic16* ptr, Atomic16 bits) { + auto old = helper::to_std_atomic(ptr); + return old->fetch_or(bits, std::memory_order_relaxed); +} + +inline Atomic32 Relaxed_FetchOr(volatile Atomic32* ptr, Atomic32 bits) { + auto old = helper::to_std_atomic(ptr); + return old->fetch_or(bits, std::memory_order_relaxed); +} + inline Atomic32 Relaxed_AtomicExchange(volatile Atomic32* ptr, Atomic32 new_value) { return std::atomic_exchange_explicit(helper::to_std_atomic(ptr), new_value, @@ -276,6 +291,11 @@ inline Atomic64 Relaxed_CompareAndSwap(volatile Atomic64* ptr, return old_value; } +inline Atomic64 Relaxed_FetchOr(volatile Atomic64* ptr, Atomic64 bits) { + auto old = helper::to_std_atomic(ptr); + return old->fetch_or(bits, std::memory_order_relaxed); +} + inline Atomic64 Relaxed_AtomicExchange(volatile Atomic64* ptr, Atomic64 new_value) { return std::atomic_exchange_explicit(helper::to_std_atomic(ptr), new_value, diff --git a/deps/v8/src/base/bit-field.h b/deps/v8/src/base/bit-field.h index 6291336493b05c..ce899c1fe96688 100644 --- a/deps/v8/src/base/bit-field.h +++ b/deps/v8/src/base/bit-field.h @@ -8,6 +8,7 @@ #include #include +#include #include "src/base/macros.h" @@ -30,6 +31,15 @@ class BitField final { static_assert(shift + size <= 8 * sizeof(U)); static_assert(size > 0); + // Make sure we don't create bitfields that are too large for their value. + // Carve out an exception for 32-bit size_t, for uniformity between 32-bit + // and 64-bit code. + static_assert(size <= 8 * sizeof(T) || + (std::is_same_v && sizeof(size_t) == 4), + "Bitfield is unnecessarily big!"); + static_assert(!std::is_same_v || size == 1, + "Bitfield is unnecessarily big!"); + using FieldType = T; using BaseType = U; @@ -53,7 +63,22 @@ class BitField final { // Returns a type U with the bit field value encoded. static constexpr U encode(T value) { - DCHECK(is_valid(value)); + if constexpr (std::is_enum_v || sizeof(T) * 8 <= kSize || + std::is_same_v) { + // For enums, we trust that they are within the valid range, since they + // are typed and we assume that the enum itself has a valid value. DCHECK + // just in case (e.g. in case valid enum values are outside the bitfield + // size). + // + // Similarly, if T fits exactly in the bitfield (either in bytes, or + // because bools can be stored as 1 bit), we trust that they are valid. + DCHECK(is_valid(value)); + } else { + // For non-enums (in practice, integers), we don't trust that they are + // valid, since we pass them around without static value interval + // information. + CHECK(is_valid(value)); + } return static_cast(value) << kShift; } diff --git a/deps/v8/src/base/bounded-page-allocator.cc b/deps/v8/src/base/bounded-page-allocator.cc index fe24fe9b5aab7a..de53e0d4bdb38f 100644 --- a/deps/v8/src/base/bounded-page-allocator.cc +++ b/deps/v8/src/base/bounded-page-allocator.cc @@ -330,5 +330,12 @@ const char* BoundedPageAllocator::AllocationStatusToString( } } +BoundedPageAllocator::Stats BoundedPageAllocator::RecordStats() { + MutexGuard guard(&mutex_); + return {.free_size = region_allocator_.free_size(), + .largest_free_region = region_allocator_.GetLargestFreeRegionSize(), + .allocation_status = allocation_status_}; +} + } // namespace base } // namespace v8 diff --git a/deps/v8/src/base/bounded-page-allocator.h b/deps/v8/src/base/bounded-page-allocator.h index 9925586ccf83dc..7848cd180d3a7f 100644 --- a/deps/v8/src/base/bounded-page-allocator.h +++ b/deps/v8/src/base/bounded-page-allocator.h @@ -64,6 +64,12 @@ class V8_BASE_EXPORT BoundedPageAllocator : public v8::PageAllocator { kHintedAddressTakenOrNotFound, }; + struct Stats { + size_t free_size = 0; + size_t largest_free_region = 0; + AllocationStatus allocation_status = AllocationStatus::kSuccess; + }; + using Address = uintptr_t; static const char* AllocationStatusToString(AllocationStatus); @@ -132,6 +138,8 @@ class V8_BASE_EXPORT BoundedPageAllocator : public v8::PageAllocator { return allocation_status_; } + Stats RecordStats(); + private: v8::base::Mutex mutex_; const size_t allocate_page_size_; diff --git a/deps/v8/src/base/cpu.cc b/deps/v8/src/base/cpu.cc index 3ed447983c435a..6a6fc4513339b7 100644 --- a/deps/v8/src/base/cpu.cc +++ b/deps/v8/src/base/cpu.cc @@ -56,6 +56,18 @@ #include #endif +#if V8_HOST_ARCH_RISCV64 +#include + +// The __riscv_vlenb intrinsic is only available when compiling with the RVV +// extension enabled. Use the 'target' attribute to tell the compiler to +// compile this function with RVV enabled. +// We must not call this function when RVV is not supported by the CPU. +__attribute__((target("arch=+v"))) static unsigned vlen_intrinsic() { + return static_cast(__riscv_vlenb() * 8); +} +#endif + namespace v8 { namespace base { @@ -459,6 +471,7 @@ CPU::CPU() is_running_in_vm_(false), has_msa_(false), riscv_mmu_(RV_MMU_MODE::kRiscvSV48), + vlen_(kUnknownVlen), has_rvv_(false), has_zba_(false), has_zbb_(false), @@ -1030,6 +1043,9 @@ CPU::CPU() riscv_mmu_ = RV_MMU_MODE::kRiscvSV57; } #endif + if (has_rvv_) { + vlen_ = vlen_intrinsic(); + } #endif // V8_HOST_ARCH_RISCV64 } diff --git a/deps/v8/src/base/cpu.h b/deps/v8/src/base/cpu.h index 0f949591a473ac..08939c958aabf5 100644 --- a/deps/v8/src/base/cpu.h +++ b/deps/v8/src/base/cpu.h @@ -132,6 +132,7 @@ class V8_BASE_EXPORT CPU final { bool has_msa() const { return has_msa_; } // riscv-specific part codes + unsigned vlen() const { return vlen_; } bool has_rvv() const { return has_rvv_; } bool has_zba() const { return has_zba_; } bool has_zbb() const { return has_zbb_; } @@ -142,6 +143,7 @@ class V8_BASE_EXPORT CPU final { kRiscvSV57, }; RV_MMU_MODE riscv_mmu() const { return riscv_mmu_; } + static const unsigned kUnknownVlen = 0; private: #if defined(V8_OS_STARBOARD) @@ -206,6 +208,7 @@ class V8_BASE_EXPORT CPU final { bool is_running_in_vm_; bool has_msa_; RV_MMU_MODE riscv_mmu_; + unsigned vlen_; bool has_rvv_; bool has_zba_; bool has_zbb_; diff --git a/deps/v8/src/base/macros.h b/deps/v8/src/base/macros.h index c9f982c379ad3c..57ba2620626f10 100644 --- a/deps/v8/src/base/macros.h +++ b/deps/v8/src/base/macros.h @@ -5,6 +5,7 @@ #ifndef V8_BASE_MACROS_H_ #define V8_BASE_MACROS_H_ +#include #include #include @@ -122,6 +123,9 @@ char (&ArraySizeHelper(const T (&array)[N]))[N]; SUPPRESSED_DANGLING_ELSE_WARNING_IF(init; false) {} \ SUPPRESSED_DANGLING_ELSE_WARNING_ELSE +// -- Copied from chromium's "base/bit_cast.h", but uses `std::bit_cast` instead +// of `__builtin_bit_cast`. +// // This is an equivalent to C++20's std::bit_cast<>(), but with additional // warnings. It morally does what `*reinterpret_cast(&source)` does, but // the cast/deref pair is undefined behavior, while bit_cast<>() isn't. @@ -134,7 +138,7 @@ char (&ArraySizeHelper(const T (&array)[N]))[N]; namespace v8::base { template -V8_INLINE Dest bit_cast(Source const& source) { +V8_INLINE constexpr Dest bit_cast(Source const& source) noexcept { static_assert(!std::is_pointer_v, "bit_cast must not be used on pointer types"); static_assert(!std::is_pointer_v, @@ -150,13 +154,7 @@ V8_INLINE Dest bit_cast(Source const& source) { std::is_trivially_copyable_v, "bit_cast requires the destination type to be trivially copyable"); -#if V8_HAS_BUILTIN_BIT_CAST - return __builtin_bit_cast(Dest, source); -#else - Dest dest; - memcpy(&dest, &source, sizeof(dest)); - return dest; -#endif + return std::bit_cast(source); } } // namespace v8::base @@ -200,34 +198,6 @@ V8_INLINE Dest bit_cast(Source const& source) { void operator delete(void*, size_t) { v8::base::OS::Abort(); } \ void operator delete[](void*, size_t) { v8::base::OS::Abort(); } -// Define V8_USE_ADDRESS_SANITIZER macro. -#if defined(__has_feature) -#if __has_feature(address_sanitizer) -#define V8_USE_ADDRESS_SANITIZER 1 -#endif -#endif - -// Define V8_USE_HWADDRESS_SANITIZER macro. -#if defined(__has_feature) -#if __has_feature(hwaddress_sanitizer) -#define V8_USE_HWADDRESS_SANITIZER 1 -#endif -#endif - -// Define V8_USE_MEMORY_SANITIZER macro. -#if defined(__has_feature) -#if __has_feature(memory_sanitizer) -#define V8_USE_MEMORY_SANITIZER 1 -#endif -#endif - -// Define V8_USE_UNDEFINED_BEHAVIOR_SANITIZER macro. -#if defined(__has_feature) -#if __has_feature(undefined_behavior_sanitizer) -#define V8_USE_UNDEFINED_BEHAVIOR_SANITIZER 1 -#endif -#endif - // Define V8_USE_SAFE_STACK macro. #if defined(__has_feature) #if __has_feature(safe_stack) diff --git a/deps/v8/src/base/numbers/double.h b/deps/v8/src/base/numbers/double.h index 0de0aad0847cb5..5f7c83d85a36f2 100644 --- a/deps/v8/src/base/numbers/double.h +++ b/deps/v8/src/base/numbers/double.h @@ -15,10 +15,10 @@ namespace base { // We assume that doubles and uint64_t have the same endianness. inline constexpr uint64_t double_to_uint64(double d) { - return std::bit_cast(d); + return base::bit_cast(d); } inline constexpr double uint64_to_double(uint64_t d64) { - return std::bit_cast(d64); + return base::bit_cast(d64); } // Helper functions for doubles. diff --git a/deps/v8/src/base/platform/mutex.cc b/deps/v8/src/base/platform/mutex.cc index 859709d3324324..ea25ae80476e27 100644 --- a/deps/v8/src/base/platform/mutex.cc +++ b/deps/v8/src/base/platform/mutex.cc @@ -60,17 +60,17 @@ Mutex::Mutex() { Mutex::~Mutex() { DCHECK_EQ(0, level_); } void Mutex::Lock() ABSL_NO_THREAD_SAFETY_ANALYSIS { - native_handle_.Lock(); + native_handle_.lock(); AssertUnheldAndMark(); } void Mutex::Unlock() ABSL_NO_THREAD_SAFETY_ANALYSIS { AssertHeldAndUnmark(); - native_handle_.Unlock(); + native_handle_.unlock(); } bool Mutex::TryLock() ABSL_NO_THREAD_SAFETY_ANALYSIS { - if (!native_handle_.TryLock()) return false; + if (!native_handle_.try_lock()) return false; AssertUnheldAndMark(); return true; } diff --git a/deps/v8/src/base/platform/platform-posix.cc b/deps/v8/src/base/platform/platform-posix.cc index b1de382bd1c07d..ca362e59b3096c 100644 --- a/deps/v8/src/base/platform/platform-posix.cc +++ b/deps/v8/src/base/platform/platform-posix.cc @@ -82,19 +82,7 @@ #define MAP_ANONYMOUS MAP_ANON #endif -/* - * NOTE: illumos starting with illumos#14418 (pushed April 20th, 2022) - * prototypes madvise(3C) properly with a `void *` first argument. - * The only way to detect this outside of configure-time checking is to - * check for the existence of MEMCNTL_SHARED, which gets defined for the first - * time in illumos#14418 under the same circumstances save _STRICT_POSIX, which - * thankfully neither Solaris nor illumos builds of Node or V8 do. - * - * If some future illumos push changes the MEMCNTL_SHARED assumptions made - * above, the illumos check below will have to be revisited. This check - * will work on both pre-and-post illumos#14418 illumos environments. - */ -#if defined(V8_OS_SOLARIS) && !(defined(__illumos__) && defined(MEMCNTL_SHARED)) +#if defined(V8_OS_SOLARIS) #if (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE > 2) || defined(__EXTENSIONS__) extern "C" int madvise(caddr_t, size_t, int); #else diff --git a/deps/v8/src/base/region-allocator.cc b/deps/v8/src/base/region-allocator.cc index 5c86f1159106d8..82642f6ab8c323 100644 --- a/deps/v8/src/base/region-allocator.cc +++ b/deps/v8/src/base/region-allocator.cc @@ -76,7 +76,7 @@ RegionAllocator::Region* RegionAllocator::FreeListFindRegion(size_t size) { } RegionAllocator::Region* RegionAllocator::FreeListFindLargestRegion( - size_t size) { + size_t size) const { Region* region = nullptr; for (Region* free_region : free_regions_) { if (free_region->size() < size) continue; @@ -87,6 +87,11 @@ RegionAllocator::Region* RegionAllocator::FreeListFindLargestRegion( return region; } +size_t RegionAllocator::GetLargestFreeRegionSize() const { + Region* region = FreeListFindLargestRegion(0); + return region != nullptr ? region->size() : 0; +} + void RegionAllocator::FreeListRemoveRegion(Region* region) { DCHECK(region->is_free()); auto iter = free_regions_.find(region); diff --git a/deps/v8/src/base/region-allocator.h b/deps/v8/src/base/region-allocator.h index 9cde9448a22166..09431254ed0b2a 100644 --- a/deps/v8/src/base/region-allocator.h +++ b/deps/v8/src/base/region-allocator.h @@ -140,6 +140,8 @@ class V8_BASE_EXPORT RegionAllocator final { // Total size of not yet acquired regions. size_t free_size() const { return free_size_; } + size_t GetLargestFreeRegionSize() const; + // The alignment of the allocated region's addresses and granularity of // the allocated region's sizes. size_t page_size() const { return page_size_; } @@ -213,7 +215,7 @@ class V8_BASE_EXPORT RegionAllocator final { Region* FreeListFindRegion(size_t size); // Finds largest free region for given size. - Region* FreeListFindLargestRegion(size_t size); + Region* FreeListFindLargestRegion(size_t size) const; // Removes given region from the set of free regions. void FreeListRemoveRegion(Region* region); diff --git a/deps/v8/src/base/template-meta-programming/list.h b/deps/v8/src/base/template-meta-programming/list.h index 13f7c9adb83ca6..dc06ab940ff7c6 100644 --- a/deps/v8/src/base/template-meta-programming/list.h +++ b/deps/v8/src/base/template-meta-programming/list.h @@ -6,8 +6,11 @@ #define V8_BASE_TEMPLATE_META_PROGRAMMING_LIST_H_ #include +#include #include +#include #include +#include #include "src/base/template-meta-programming/common.h" @@ -98,6 +101,13 @@ template , Cmp> : std::bool_constant<(Cmp::value && ...)> {}; +template +struct append_impl; +template +struct append_impl, T> { + using type = list; +}; + template struct insert_at_impl; template > { using type = T; }; +template +struct from_tuple_impl; +template +struct from_tuple_impl> { + using type = list; +}; + +template typename Fn, typename Seq> +struct call_foreach_impl; +template typename Fn, + size_t... Indices> +struct call_foreach_impl, Fn, std::index_sequence> { + template + static void call(Args&&... args) { + std::initializer_list _{ + (Fn{}(std::forward(args)...), 0)...}; + } +}; + } // namespace detail // length::value is the length of the {List}. @@ -211,7 +240,13 @@ struct all_equal : detail::all_equal_impl {}; template typename Cmp = equals> constexpr bool all_equal_v = all_equal::value; -// insert_at::value is identical to {List}, except that {T} is +// append::value appends {T} to {List}. +template +struct append : public detail::append_impl {}; +template +using append_t = append::type; + +// insert_at::type is identical to {List}, except that {T} is // inserted at position {I}. If {I} is larger than the length of the list, {T} // is simply appended. template @@ -238,6 +273,23 @@ struct fold_right1 : public detail::fold_right1_impl {}; template