From ba4a780dff09c16f9792e9a0957c92a123e6fb30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Tue, 31 Jan 2023 16:18:35 +0100 Subject: [PATCH 1/7] deps: update V8 to 11.1.277.3 --- deps/v8/.git-blame-ignore-revs | 95 + deps/v8/.gitignore | 1 + deps/v8/AUTHORS | 4 + deps/v8/BUILD.bazel | 94 +- deps/v8/BUILD.gn | 728 +- deps/v8/DEPS | 80 +- deps/v8/PPC_OWNERS | 1 - deps/v8/PRESUBMIT.py | 9 +- deps/v8/S390_OWNERS | 1 - deps/v8/WATCHLISTS | 10 +- .../trace_event/common/trace_event_common.h | 9 - deps/v8/bazel/config/BUILD.bazel | 7 + deps/v8/bazel/defs.bzl | 18 + deps/v8/gni/v8.gni | 25 + deps/v8/include/cppgc/internal/gc-info.h | 68 +- .../include/cppgc/internal/pointer-policies.h | 10 + .../v8/include/cppgc/internal/write-barrier.h | 8 + deps/v8/include/cppgc/visitor.h | 3 +- deps/v8/include/js_protocol.pdl | 11 +- deps/v8/include/libplatform/v8-tracing.h | 4 +- deps/v8/include/v8-array-buffer.h | 41 + deps/v8/include/v8-callbacks.h | 4 + deps/v8/include/v8-cppgc.h | 6 + deps/v8/include/v8-embedder-heap.h | 169 - deps/v8/include/v8-fast-api-calls.h | 10 +- deps/v8/include/v8-inspector.h | 25 +- deps/v8/include/v8-internal.h | 142 +- deps/v8/include/v8-isolate.h | 35 +- deps/v8/include/v8-local-handle.h | 2 + deps/v8/include/v8-metrics.h | 74 + deps/v8/include/v8-persistent-handle.h | 2 +- deps/v8/include/v8-platform.h | 12 +- deps/v8/include/v8-profiler.h | 1 + deps/v8/include/v8-script.h | 9 +- deps/v8/include/v8-snapshot.h | 4 +- deps/v8/include/v8-template.h | 4 +- deps/v8/include/v8-traced-handle.h | 15 +- deps/v8/include/v8-version.h | 8 +- deps/v8/include/v8config.h | 40 + deps/v8/infra/mb/mb_config.pyl | 132 +- deps/v8/infra/testing/builders.pyl | 281 +- deps/v8/src/DEPS | 4 +- deps/v8/src/api/api-arguments-inl.h | 30 +- deps/v8/src/api/api-arguments.h | 14 +- deps/v8/src/api/api-natives.cc | 4 +- deps/v8/src/api/api.cc | 357 +- deps/v8/src/asmjs/asm-parser.cc | 2 +- deps/v8/src/ast/ast.h | 7 +- deps/v8/src/ast/prettyprinter.cc | 4 + deps/v8/src/ast/scopes.cc | 23 +- deps/v8/src/ast/scopes.h | 2 + deps/v8/src/base/DEPS | 6 + deps/v8/src/base/bit-field.h | 2 +- deps/v8/src/base/bits.h | 29 + deps/v8/src/base/container-utils.h | 66 +- deps/v8/src/base/ieee754.cc | 15 +- deps/v8/src/base/ieee754.h | 25 +- deps/v8/src/base/immediate-crash.h | 4 +- deps/v8/src/base/logging.h | 10 +- deps/v8/src/base/numbers/diy-fp.h | 9 + deps/v8/src/base/numbers/double.h | 3 +- deps/v8/src/base/numbers/fast-dtoa.cc | 113 +- deps/v8/src/base/platform/memory.h | 4 +- deps/v8/src/base/platform/platform-fuchsia.cc | 4 +- deps/v8/src/base/platform/platform-posix.cc | 23 +- deps/v8/src/base/platform/platform-win32.cc | 2 +- deps/v8/src/base/platform/time.h | 9 +- deps/v8/src/base/small-vector.h | 48 +- deps/v8/src/base/sys-info.cc | 16 + deps/v8/src/base/sys-info.h | 6 + deps/v8/src/base/template-utils.h | 5 + .../src/base/utils/random-number-generator.h | 8 + deps/v8/src/base/vector.h | 44 +- deps/v8/src/base/vlq.h | 17 +- .../baseline/arm/baseline-assembler-arm-inl.h | 2 +- .../arm64/baseline-assembler-arm64-inl.h | 13 +- .../src/baseline/baseline-batch-compiler.cc | 2 +- deps/v8/src/baseline/baseline-compiler.cc | 3 +- .../ia32/baseline-assembler-ia32-inl.h | 4 +- .../loong64/baseline-assembler-loong64-inl.h | 4 +- .../mips64/baseline-assembler-mips64-inl.h | 4 +- .../baseline/ppc/baseline-assembler-ppc-inl.h | 12 +- .../riscv/baseline-assembler-riscv-inl.h | 4 +- .../s390/baseline-assembler-s390-inl.h | 2 +- .../baseline/x64/baseline-assembler-x64-inl.h | 3 +- deps/v8/src/bigint/tostring.cc | 3 +- deps/v8/src/builtins/accessors.cc | 22 +- deps/v8/src/builtins/accessors.h | 2 - deps/v8/src/builtins/arm/builtins-arm.cc | 69 +- deps/v8/src/builtins/arm64/builtins-arm64.cc | 90 +- deps/v8/src/builtins/array-from.tq | 29 +- deps/v8/src/builtins/array-of.tq | 23 +- deps/v8/src/builtins/array-reverse.tq | 77 +- deps/v8/src/builtins/array-to-reversed.tq | 95 +- deps/v8/src/builtins/base.tq | 33 +- deps/v8/src/builtins/builtins-api.cc | 11 +- deps/v8/src/builtins/builtins-array-gen.cc | 4 +- deps/v8/src/builtins/builtins-array.cc | 7 +- deps/v8/src/builtins/builtins-async-gen.cc | 2 +- .../builtins/builtins-async-generator-gen.cc | 16 +- deps/v8/src/builtins/builtins-bigint-gen.h | 119 + deps/v8/src/builtins/builtins-bigint.tq | 381 + deps/v8/src/builtins/builtins-call-gen.cc | 3 +- deps/v8/src/builtins/builtins-callsite.cc | 37 +- .../src/builtins/builtins-collections-gen.cc | 13 +- .../src/builtins/builtins-constructor-gen.cc | 9 +- .../src/builtins/builtins-conversion-gen.cc | 14 + .../v8/src/builtins/builtins-data-view-gen.cc | 30 + deps/v8/src/builtins/builtins-date-gen.cc | 17 +- deps/v8/src/builtins/builtins-definitions.h | 34 +- deps/v8/src/builtins/builtins-descriptors.h | 7 +- .../v8/src/builtins/builtins-generator-gen.cc | 6 +- deps/v8/src/builtins/builtins-internal-gen.cc | 209 +- deps/v8/src/builtins/builtins-intl-gen.cc | 10 +- deps/v8/src/builtins/builtins-lazy-gen.cc | 25 +- deps/v8/src/builtins/builtins-lazy-gen.h | 2 +- deps/v8/src/builtins/builtins-object-gen.cc | 197 +- deps/v8/src/builtins/builtins-object-gen.h | 58 + deps/v8/src/builtins/builtins-object.cc | 4 - deps/v8/src/builtins/builtins-reflect.cc | 26 - deps/v8/src/builtins/builtins-regexp-gen.cc | 57 +- deps/v8/src/builtins/builtins-regexp-gen.h | 2 - .../src/builtins/builtins-shadow-realm-gen.cc | 27 +- deps/v8/src/builtins/builtins-shadow-realm.cc | 8 +- deps/v8/src/builtins/builtins-string-gen.cc | 234 +- deps/v8/src/builtins/builtins-string-gen.h | 11 +- deps/v8/src/builtins/builtins-struct.cc | 80 +- deps/v8/src/builtins/builtins-typed-array.cc | 1 + deps/v8/src/builtins/builtins.cc | 190 +- deps/v8/src/builtins/builtins.h | 71 +- deps/v8/src/builtins/cast.tq | 8 +- .../src/builtins/constants-table-builder.cc | 6 +- .../v8/src/builtins/constants-table-builder.h | 6 +- deps/v8/src/builtins/convert.tq | 3 + deps/v8/src/builtins/ia32/builtins-ia32.cc | 51 +- .../src/builtins/loong64/builtins-loong64.cc | 93 +- .../v8/src/builtins/mips64/builtins-mips64.cc | 94 +- deps/v8/src/builtins/number.tq | 33 +- deps/v8/src/builtins/object.tq | 147 + deps/v8/src/builtins/ppc/builtins-ppc.cc | 64 +- deps/v8/src/builtins/promise-resolve.tq | 6 - deps/v8/src/builtins/reflect.tq | 16 + deps/v8/src/builtins/regexp-replace.tq | 60 +- deps/v8/src/builtins/riscv/builtins-riscv.cc | 98 +- deps/v8/src/builtins/s390/builtins-s390.cc | 59 +- .../src/builtins/setup-builtins-internal.cc | 20 +- deps/v8/src/builtins/string-iswellformed.tq | 45 + deps/v8/src/builtins/string-towellformed.tq | 59 + deps/v8/src/builtins/torque-internal.tq | 17 +- .../builtins/typed-array-createtypedarray.tq | 20 +- deps/v8/src/builtins/wasm.tq | 148 +- deps/v8/src/builtins/x64/builtins-x64.cc | 119 +- deps/v8/src/codegen/OWNERS | 1 + deps/v8/src/codegen/arm/assembler-arm-inl.h | 4 +- deps/v8/src/codegen/arm/assembler-arm.cc | 17 +- deps/v8/src/codegen/arm/assembler-arm.h | 6 +- .../arm/interface-descriptors-arm-inl.h | 3 + .../v8/src/codegen/arm/macro-assembler-arm.cc | 122 +- deps/v8/src/codegen/arm/macro-assembler-arm.h | 54 +- .../src/codegen/arm64/assembler-arm64-inl.h | 13 +- deps/v8/src/codegen/arm64/assembler-arm64.cc | 24 +- deps/v8/src/codegen/arm64/assembler-arm64.h | 25 +- deps/v8/src/codegen/arm64/constants-arm64.h | 38 +- .../arm64/interface-descriptors-arm64-inl.h | 3 + .../codegen/arm64/macro-assembler-arm64-inl.h | 20 +- .../codegen/arm64/macro-assembler-arm64.cc | 421 +- .../src/codegen/arm64/macro-assembler-arm64.h | 173 +- deps/v8/src/codegen/arm64/register-arm64.h | 7 + deps/v8/src/codegen/assembler.cc | 17 +- deps/v8/src/codegen/assembler.h | 21 +- deps/v8/src/codegen/background-merge-task.h | 7 +- deps/v8/src/codegen/bailout-reason.h | 3 +- deps/v8/src/codegen/callable.h | 8 +- deps/v8/src/codegen/code-comments.h | 2 +- deps/v8/src/codegen/code-desc.h | 2 +- deps/v8/src/codegen/code-factory.cc | 61 +- deps/v8/src/codegen/code-factory.h | 9 +- deps/v8/src/codegen/code-reference.cc | 41 +- deps/v8/src/codegen/code-reference.h | 34 +- deps/v8/src/codegen/code-stub-assembler.cc | 1179 ++- deps/v8/src/codegen/code-stub-assembler.h | 145 +- deps/v8/src/codegen/compilation-cache.cc | 4 +- deps/v8/src/codegen/compiler.cc | 296 +- deps/v8/src/codegen/compiler.h | 42 +- deps/v8/src/codegen/external-reference.cc | 108 +- deps/v8/src/codegen/external-reference.h | 26 + deps/v8/src/codegen/handler-table.cc | 8 +- deps/v8/src/codegen/handler-table.h | 15 +- deps/v8/src/codegen/ia32/assembler-ia32-inl.h | 4 +- deps/v8/src/codegen/ia32/assembler-ia32.cc | 17 +- deps/v8/src/codegen/ia32/assembler-ia32.h | 4 +- .../ia32/interface-descriptors-ia32-inl.h | 17 + .../src/codegen/ia32/macro-assembler-ia32.cc | 121 +- .../src/codegen/ia32/macro-assembler-ia32.h | 56 +- .../src/codegen/interface-descriptors-inl.h | 23 + deps/v8/src/codegen/interface-descriptors.h | 109 +- .../codegen/loong64/assembler-loong64-inl.h | 4 +- .../src/codegen/loong64/assembler-loong64.cc | 17 +- .../src/codegen/loong64/assembler-loong64.h | 18 +- .../interface-descriptors-loong64-inl.h | 3 + .../loong64/macro-assembler-loong64.cc | 157 +- .../codegen/loong64/macro-assembler-loong64.h | 71 +- deps/v8/src/codegen/machine-type.h | 2 + deps/v8/src/codegen/maglev-safepoint-table.cc | 8 +- deps/v8/src/codegen/maglev-safepoint-table.h | 25 +- .../src/codegen/mips64/assembler-mips64-inl.h | 2 +- .../v8/src/codegen/mips64/assembler-mips64.cc | 20 +- deps/v8/src/codegen/mips64/assembler-mips64.h | 16 +- .../mips64/interface-descriptors-mips64-inl.h | 3 + .../codegen/mips64/macro-assembler-mips64.cc | 169 +- .../codegen/mips64/macro-assembler-mips64.h | 70 +- deps/v8/src/codegen/ppc/assembler-ppc-inl.h | 2 +- deps/v8/src/codegen/ppc/assembler-ppc.cc | 16 +- deps/v8/src/codegen/ppc/assembler-ppc.h | 6 +- .../ppc/interface-descriptors-ppc-inl.h | 3 + .../v8/src/codegen/ppc/macro-assembler-ppc.cc | 487 +- deps/v8/src/codegen/ppc/macro-assembler-ppc.h | 126 +- deps/v8/src/codegen/register-base.h | 7 +- deps/v8/src/codegen/reloc-info.cc | 48 +- deps/v8/src/codegen/reloc-info.h | 21 +- .../src/codegen/riscv/assembler-riscv-inl.h | 20 +- deps/v8/src/codegen/riscv/assembler-riscv.cc | 24 +- deps/v8/src/codegen/riscv/assembler-riscv.h | 21 +- .../src/codegen/riscv/base-constants-riscv.h | 26 +- deps/v8/src/codegen/riscv/constant-riscv-a.h | 71 +- deps/v8/src/codegen/riscv/constant-riscv-c.h | 90 +- deps/v8/src/codegen/riscv/constant-riscv-d.h | 97 +- deps/v8/src/codegen/riscv/constant-riscv-f.h | 86 +- deps/v8/src/codegen/riscv/constant-riscv-i.h | 124 +- deps/v8/src/codegen/riscv/constant-riscv-m.h | 46 +- deps/v8/src/codegen/riscv/constant-riscv-v.h | 1027 +-- .../src/codegen/riscv/constant-riscv-zicsr.h | 16 +- .../codegen/riscv/constant-riscv-zifencei.h | 4 +- .../v8/src/codegen/riscv/extension-riscv-v.cc | 37 +- deps/v8/src/codegen/riscv/extension-riscv-v.h | 26 +- .../riscv/interface-descriptors-riscv-inl.h | 3 + .../codegen/riscv/macro-assembler-riscv.cc | 161 +- .../src/codegen/riscv/macro-assembler-riscv.h | 81 +- deps/v8/src/codegen/s390/assembler-s390-inl.h | 2 +- deps/v8/src/codegen/s390/assembler-s390.cc | 12 +- deps/v8/src/codegen/s390/assembler-s390.h | 9 +- .../s390/interface-descriptors-s390-inl.h | 3 + .../src/codegen/s390/macro-assembler-s390.cc | 154 +- .../src/codegen/s390/macro-assembler-s390.h | 60 +- deps/v8/src/codegen/safepoint-table.cc | 10 +- deps/v8/src/codegen/safepoint-table.h | 8 +- .../macro-assembler-shared-ia32-x64.cc | 101 +- .../macro-assembler-shared-ia32-x64.h | 7 + deps/v8/src/codegen/signature.h | 37 +- deps/v8/src/codegen/source-position.cc | 13 +- deps/v8/src/codegen/source-position.h | 11 +- deps/v8/src/codegen/turbo-assembler.cc | 7 + deps/v8/src/codegen/turbo-assembler.h | 1 + deps/v8/src/codegen/x64/assembler-x64-inl.h | 38 +- deps/v8/src/codegen/x64/assembler-x64.cc | 151 +- deps/v8/src/codegen/x64/assembler-x64.h | 106 +- .../x64/interface-descriptors-x64-inl.h | 3 + .../v8/src/codegen/x64/macro-assembler-x64.cc | 337 +- deps/v8/src/codegen/x64/macro-assembler-x64.h | 121 +- deps/v8/src/common/assert-scope.cc | 10 +- deps/v8/src/common/assert-scope.h | 6 + deps/v8/src/common/globals.h | 126 +- deps/v8/src/common/message-template.h | 13 +- deps/v8/src/common/ptr-compr-inl.h | 125 +- deps/v8/src/common/ptr-compr.cc | 19 + deps/v8/src/common/ptr-compr.h | 57 +- deps/v8/src/compiler/OWNERS | 1 + deps/v8/src/compiler/access-builder.cc | 43 +- deps/v8/src/compiler/access-builder.h | 9 + deps/v8/src/compiler/access-info.cc | 26 +- deps/v8/src/compiler/backend/OWNERS | 2 - .../backend/arm/code-generator-arm.cc | 119 +- .../backend/arm64/code-generator-arm64.cc | 171 +- .../arm64/instruction-selector-arm64.cc | 48 +- .../v8/src/compiler/backend/bitcast-elider.cc | 53 +- deps/v8/src/compiler/backend/bitcast-elider.h | 9 +- .../compiler/backend/code-generator-impl.h | 4 +- .../v8/src/compiler/backend/code-generator.cc | 10 +- deps/v8/src/compiler/backend/code-generator.h | 10 +- deps/v8/src/compiler/backend/gap-resolver.cc | 286 +- deps/v8/src/compiler/backend/gap-resolver.h | 36 +- .../backend/ia32/code-generator-ia32.cc | 132 +- .../backend/ia32/instruction-codes-ia32.h | 3 + .../ia32/instruction-scheduler-ia32.cc | 3 + .../backend/ia32/instruction-selector-ia32.cc | 40 +- .../compiler/backend/instruction-selector.cc | 123 +- .../compiler/backend/instruction-selector.h | 8 +- deps/v8/src/compiler/backend/instruction.cc | 50 +- deps/v8/src/compiler/backend/instruction.h | 27 +- .../backend/loong64/code-generator-loong64.cc | 122 +- .../backend/mips64/code-generator-mips64.cc | 126 +- .../backend/ppc/code-generator-ppc.cc | 427 +- .../compiler/backend/register-allocator.cc | 6 +- .../backend/riscv/code-generator-riscv.cc | 224 +- .../backend/s390/code-generator-s390.cc | 115 +- .../backend/x64/code-generator-x64.cc | 144 +- .../backend/x64/instruction-codes-x64.h | 12 +- .../backend/x64/instruction-scheduler-x64.cc | 8 + .../backend/x64/instruction-selector-x64.cc | 60 +- .../src/compiler/basic-block-instrumentor.cc | 9 +- deps/v8/src/compiler/branch-elimination.cc | 88 + deps/v8/src/compiler/branch-elimination.h | 1 + .../v8/src/compiler/bytecode-graph-builder.cc | 11 +- deps/v8/src/compiler/code-assembler.cc | 12 +- deps/v8/src/compiler/code-assembler.h | 20 +- .../src/compiler/common-operator-reducer.cc | 1 + deps/v8/src/compiler/common-operator.cc | 7 + .../src/compiler/compilation-dependencies.cc | 8 +- deps/v8/src/compiler/csa-load-elimination.cc | 10 +- .../src/compiler/effect-control-linearizer.cc | 300 +- deps/v8/src/compiler/fast-api-calls.cc | 3 +- deps/v8/src/compiler/globals.h | 2 + deps/v8/src/compiler/graph-assembler.cc | 3 +- deps/v8/src/compiler/graph-assembler.h | 60 +- deps/v8/src/compiler/graph-reducer.h | 6 +- deps/v8/src/compiler/graph-visualizer.cc | 21 +- deps/v8/src/compiler/graph.cc | 8 +- deps/v8/src/compiler/graph.h | 8 + deps/v8/src/compiler/heap-refs.cc | 92 +- deps/v8/src/compiler/heap-refs.h | 36 +- deps/v8/src/compiler/int64-lowering.cc | 178 +- deps/v8/src/compiler/int64-lowering.h | 33 +- deps/v8/src/compiler/js-call-reducer.cc | 75 +- deps/v8/src/compiler/js-call-reducer.h | 1 + deps/v8/src/compiler/js-create-lowering.cc | 3 +- deps/v8/src/compiler/js-generic-lowering.cc | 8 +- deps/v8/src/compiler/js-graph.cc | 26 +- deps/v8/src/compiler/js-graph.h | 9 +- deps/v8/src/compiler/js-heap-broker.cc | 41 +- deps/v8/src/compiler/js-heap-broker.h | 13 +- deps/v8/src/compiler/js-inlining.cc | 3 +- deps/v8/src/compiler/js-intrinsic-lowering.cc | 19 + deps/v8/src/compiler/js-intrinsic-lowering.h | 1 + .../js-native-context-specialization.cc | 1130 +-- .../js-native-context-specialization.h | 4 + deps/v8/src/compiler/js-operator.cc | 6 +- deps/v8/src/compiler/js-operator.h | 13 +- deps/v8/src/compiler/js-type-hint-lowering.cc | 77 +- deps/v8/src/compiler/js-typed-lowering.cc | 72 +- deps/v8/src/compiler/js-typed-lowering.h | 2 + deps/v8/src/compiler/linear-scheduler.cc | 4 +- deps/v8/src/compiler/linkage.h | 3 +- .../v8/src/compiler/machine-graph-verifier.cc | 50 +- deps/v8/src/compiler/machine-graph-verifier.h | 2 + deps/v8/src/compiler/machine-graph.cc | 6 +- deps/v8/src/compiler/machine-graph.h | 3 + .../src/compiler/machine-operator-reducer.cc | 472 +- .../src/compiler/machine-operator-reducer.h | 27 +- deps/v8/src/compiler/machine-operator.cc | 37 +- deps/v8/src/compiler/machine-operator.h | 18 + deps/v8/src/compiler/map-inference.cc | 3 +- deps/v8/src/compiler/memory-lowering.cc | 109 +- deps/v8/src/compiler/memory-optimizer.cc | 1 + deps/v8/src/compiler/node-matchers.h | 37 +- deps/v8/src/compiler/node-properties.cc | 48 + deps/v8/src/compiler/node-properties.h | 7 + deps/v8/src/compiler/opcodes.h | 543 +- deps/v8/src/compiler/operation-typer.cc | 129 +- deps/v8/src/compiler/operation-typer.h | 3 + deps/v8/src/compiler/operator-properties.cc | 5 +- deps/v8/src/compiler/pipeline.cc | 385 +- deps/v8/src/compiler/processed-feedback.h | 2 +- deps/v8/src/compiler/raw-machine-assembler.h | 8 +- deps/v8/src/compiler/representation-change.cc | 40 +- deps/v8/src/compiler/revectorizer.cc | 964 +++ deps/v8/src/compiler/revectorizer.h | 212 + deps/v8/src/compiler/schedule.cc | 18 +- deps/v8/src/compiler/scheduler.cc | 17 +- .../compiler/simplified-lowering-verifier.cc | 3 +- deps/v8/src/compiler/simplified-lowering.cc | 251 +- deps/v8/src/compiler/simplified-operator.cc | 491 +- deps/v8/src/compiler/simplified-operator.h | 81 +- deps/v8/src/compiler/turbofan-disabled.cc | 25 + deps/v8/src/compiler/turbofan-enabled.cc | 27 + deps/v8/src/compiler/turbofan.h | 39 + deps/v8/src/compiler/turboshaft/assembler.cc | 16 + deps/v8/src/compiler/turboshaft/assembler.h | 545 +- .../turboshaft/assert-types-reducer.h | 215 + .../turboshaft/branch-elimination-reducer.h | 490 ++ .../dead-code-elimination-reducer.h | 454 ++ deps/v8/src/compiler/turboshaft/deopt-data.h | 11 +- deps/v8/src/compiler/turboshaft/fast-hash.h | 9 +- .../src/compiler/turboshaft/graph-builder.cc | 365 +- .../src/compiler/turboshaft/graph-builder.h | 6 +- .../compiler/turboshaft/graph-visualizer.cc | 1 - deps/v8/src/compiler/turboshaft/graph.cc | 24 +- deps/v8/src/compiler/turboshaft/graph.h | 300 +- deps/v8/src/compiler/turboshaft/index.h | 120 + .../late-escape-analysis-reducer.cc | 101 + .../turboshaft/late-escape-analysis-reducer.h | 67 + .../compiler/turboshaft/layered-hash-map.h | 194 + .../turboshaft/machine-optimization-reducer.h | 141 +- .../turboshaft/memory-optimization.cc | 166 + .../compiler/turboshaft/memory-optimization.h | 268 + .../compiler/turboshaft/operation-matching.h | 25 +- deps/v8/src/compiler/turboshaft/operations.cc | 47 +- deps/v8/src/compiler/turboshaft/operations.h | 702 +- .../compiler/turboshaft/optimization-phase.h | 556 +- .../compiler/turboshaft/recreate-schedule.cc | 135 +- .../compiler/turboshaft/recreate-schedule.h | 2 + .../src/compiler/turboshaft/reducer-traits.h | 81 + .../src/compiler/turboshaft/representations.h | 29 +- .../turboshaft/select-lowering-reducer.h | 19 +- deps/v8/src/compiler/turboshaft/sidetable.h | 32 +- .../src/compiler/turboshaft/snapshot-table.h | 190 +- .../turboshaft/type-inference-reducer.h | 1477 ++++ .../v8/src/compiler/turboshaft/type-parser.cc | 33 + deps/v8/src/compiler/turboshaft/type-parser.h | 124 + .../turboshaft/typed-optimizations-reducer.h | 93 + deps/v8/src/compiler/turboshaft/types.cc | 644 ++ deps/v8/src/compiler/turboshaft/types.h | 731 ++ .../turboshaft/uniform-reducer-adapter.h | 150 + .../turboshaft/value-numbering-reducer.h | 9 +- .../compiler/turboshaft/variable-reducer.h | 299 + deps/v8/src/compiler/type-cache.h | 6 +- deps/v8/src/compiler/typer.cc | 43 +- deps/v8/src/compiler/types.cc | 2 +- deps/v8/src/compiler/types.h | 2 +- deps/v8/src/compiler/use-info.h | 8 +- deps/v8/src/compiler/verifier.cc | 52 +- deps/v8/src/compiler/wasm-call-descriptors.cc | 57 + deps/v8/src/compiler/wasm-call-descriptors.h | 67 + deps/v8/src/compiler/wasm-compiler.cc | 723 +- deps/v8/src/compiler/wasm-compiler.h | 33 +- deps/v8/src/compiler/wasm-gc-lowering.cc | 273 +- deps/v8/src/compiler/wasm-gc-lowering.h | 6 + .../src/compiler/wasm-gc-operator-reducer.cc | 58 +- .../src/compiler/wasm-gc-operator-reducer.h | 1 + deps/v8/src/compiler/wasm-graph-assembler.cc | 70 +- deps/v8/src/compiler/wasm-graph-assembler.h | 25 +- deps/v8/src/compiler/wasm-inlining.cc | 165 +- deps/v8/src/compiler/wasm-inlining.h | 4 +- deps/v8/src/compiler/wasm-load-elimination.cc | 446 ++ deps/v8/src/compiler/wasm-load-elimination.h | 155 + deps/v8/src/compiler/wasm-typer.cc | 170 +- deps/v8/src/compiler/wasm-typer.h | 1 - deps/v8/src/d8/d8-console.cc | 81 + deps/v8/src/d8/d8-console.h | 13 + deps/v8/src/d8/d8-test.cc | 176 +- deps/v8/src/d8/d8.cc | 215 +- deps/v8/src/d8/d8.h | 20 +- deps/v8/src/debug/debug-evaluate.cc | 110 +- deps/v8/src/debug/debug-interface.cc | 12 +- deps/v8/src/debug/debug-interface.h | 17 +- deps/v8/src/debug/debug-scopes.cc | 27 +- deps/v8/src/debug/debug-scopes.h | 2 - deps/v8/src/debug/debug.cc | 88 +- deps/v8/src/debug/debug.h | 6 +- .../src/debug/wasm/gdb-server/gdb-server.cc | 2 +- deps/v8/src/deoptimizer/deoptimize-reason.h | 2 + deps/v8/src/deoptimizer/deoptimizer.cc | 205 +- deps/v8/src/deoptimizer/deoptimizer.h | 26 +- deps/v8/src/deoptimizer/translated-state.cc | 289 +- deps/v8/src/deoptimizer/translation-array.cc | 437 +- deps/v8/src/deoptimizer/translation-array.h | 116 +- deps/v8/src/deoptimizer/translation-opcode.h | 24 +- deps/v8/src/diagnostics/disassembler.cc | 15 +- deps/v8/src/diagnostics/etw-jit-win.cc | 1 + deps/v8/src/diagnostics/gdb-jit.h | 4 +- deps/v8/src/diagnostics/objects-debug.cc | 129 +- deps/v8/src/diagnostics/objects-printer.cc | 82 +- deps/v8/src/diagnostics/perf-jit.cc | 19 +- deps/v8/src/diagnostics/perf-jit.h | 5 +- deps/v8/src/diagnostics/riscv/disasm-riscv.cc | 2 +- deps/v8/src/diagnostics/x64/disasm-x64.cc | 3 +- .../src/execution/arm/frame-constants-arm.cc | 6 + .../src/execution/arm/frame-constants-arm.h | 2 +- deps/v8/src/execution/arm/simulator-arm.cc | 4 + .../execution/arm64/frame-constants-arm64.cc | 10 + .../execution/arm64/frame-constants-arm64.h | 2 +- .../src/execution/arm64/pointer-auth-arm64.cc | 1 + .../v8/src/execution/arm64/simulator-arm64.cc | 4 + deps/v8/src/execution/execution.cc | 8 +- deps/v8/src/execution/execution.h | 2 +- deps/v8/src/execution/frames.cc | 214 +- deps/v8/src/execution/frames.h | 21 +- .../execution/ia32/frame-constants-ia32.cc | 6 + .../src/execution/ia32/frame-constants-ia32.h | 2 +- deps/v8/src/execution/isolate-data.h | 15 +- deps/v8/src/execution/isolate-utils-inl.h | 4 +- deps/v8/src/execution/isolate.cc | 435 +- deps/v8/src/execution/isolate.h | 63 +- .../loong64/frame-constants-loong64.cc | 6 + .../loong64/frame-constants-loong64.h | 2 +- .../execution/loong64/simulator-loong64.cc | 4 + deps/v8/src/execution/microtask-queue.cc | 5 +- .../mips64/frame-constants-mips64.cc | 6 + .../execution/mips64/frame-constants-mips64.h | 2 +- .../src/execution/mips64/simulator-mips64.cc | 4 + .../src/execution/ppc/frame-constants-ppc.cc | 6 + .../src/execution/ppc/frame-constants-ppc.h | 6 +- deps/v8/src/execution/ppc/simulator-ppc.cc | 4 + deps/v8/src/execution/protectors.h | 9 + .../execution/riscv/frame-constants-riscv.cc | 6 + .../execution/riscv/frame-constants-riscv.h | 2 +- .../v8/src/execution/riscv/simulator-riscv.cc | 34 +- deps/v8/src/execution/riscv/simulator-riscv.h | 1 + .../execution/s390/frame-constants-s390.cc | 6 + .../src/execution/s390/frame-constants-s390.h | 2 +- deps/v8/src/execution/s390/simulator-s390.cc | 4 + deps/v8/src/execution/simulator.h | 3 +- deps/v8/src/execution/thread-local-top.cc | 2 - deps/v8/src/execution/thread-local-top.h | 6 +- deps/v8/src/execution/tiering-manager.cc | 32 +- deps/v8/src/execution/tiering-manager.h | 2 +- deps/v8/src/execution/vm-state-inl.h | 7 +- deps/v8/src/execution/vm-state.h | 18 +- .../src/execution/x64/frame-constants-x64.cc | 8 + .../src/execution/x64/frame-constants-x64.h | 8 +- .../v8/src/extensions/statistics-extension.cc | 4 +- deps/v8/src/flags/flag-definitions.h | 194 +- deps/v8/src/flags/flags.cc | 88 +- deps/v8/src/flags/flags.h | 1 + deps/v8/src/handles/global-handles.cc | 1 - deps/v8/src/handles/handles.cc | 4 + deps/v8/src/handles/traced-handles.cc | 242 +- deps/v8/src/handles/traced-handles.h | 23 +- deps/v8/src/heap/array-buffer-sweeper.cc | 2 + deps/v8/src/heap/array-buffer-sweeper.h | 4 +- deps/v8/src/heap/base-space.h | 7 +- .../heap/base/asm/arm/push_registers_asm.cc | 39 + .../heap/base/asm/arm/save_registers_asm.cc | 36 - .../heap/base/asm/arm64/push_registers_asm.cc | 62 + .../heap/base/asm/arm64/push_registers_masm.S | 32 + .../heap/base/asm/arm64/save_registers_asm.cc | 50 - .../heap/base/asm/arm64/save_registers_masm.S | 24 - .../heap/base/asm/ia32/push_registers_asm.cc | 53 + .../base/asm/ia32/push_registers_masm.asm | 48 + .../heap/base/asm/ia32/save_registers_asm.cc | 48 - .../base/asm/ia32/save_registers_masm.asm | 36 - .../base/asm/loong64/push_registers_asm.cc | 48 + .../base/asm/loong64/save_registers_asm.cc | 40 - .../base/asm/mips64/push_registers_asm.cc | 49 + .../base/asm/mips64/save_registers_asm.cc | 41 - .../heap/base/asm/ppc/push_registers_asm.cc | 97 + .../heap/base/asm/ppc/save_registers_asm.cc | 110 - .../heap/base/asm/riscv/push_registers_asm.cc | 93 + .../heap/base/asm/riscv/save_registers_asm.cc | 68 - .../heap/base/asm/s390/push_registers_asm.cc | 37 + .../heap/base/asm/s390/save_registers_asm.cc | 32 - .../heap/base/asm/x64/push_registers_asm.cc | 106 + .../heap/base/asm/x64/push_registers_masm.asm | 57 + .../heap/base/asm/x64/save_registers_asm.cc | 94 - .../heap/base/asm/x64/save_registers_masm.asm | 43 - deps/v8/src/heap/base/basic-slot-set.h | 5 + deps/v8/src/heap/base/stack.cc | 188 +- deps/v8/src/heap/base/stack.h | 122 +- deps/v8/src/heap/base/worklist.cc | 13 +- deps/v8/src/heap/base/worklist.h | 22 +- deps/v8/src/heap/basic-memory-chunk.cc | 13 + deps/v8/src/heap/basic-memory-chunk.h | 7 + deps/v8/src/heap/code-range.cc | 234 +- deps/v8/src/heap/code-range.h | 10 +- deps/v8/src/heap/combined-heap.cc | 3 +- deps/v8/src/heap/combined-heap.h | 1 - deps/v8/src/heap/concurrent-allocator-inl.h | 1 + deps/v8/src/heap/concurrent-allocator.cc | 24 +- deps/v8/src/heap/concurrent-allocator.h | 9 +- deps/v8/src/heap/concurrent-marking.cc | 25 +- deps/v8/src/heap/cppgc-js/cpp-heap.cc | 300 +- deps/v8/src/heap/cppgc-js/cpp-heap.h | 65 +- .../src/heap/cppgc-js/cpp-marking-state-inl.h | 11 +- deps/v8/src/heap/cppgc-js/cpp-marking-state.h | 2 +- deps/v8/src/heap/cppgc-js/cpp-snapshot.cc | 17 +- .../cppgc-js/cross-heap-remembered-set.cc | 36 + .../heap/cppgc-js/cross-heap-remembered-set.h | 54 + .../cppgc-js/unified-heap-marking-state-inl.h | 31 +- .../cppgc-js/unified-heap-marking-state.cc | 8 +- .../cppgc-js/unified-heap-marking-state.h | 5 +- .../cppgc-js/unified-heap-marking-visitor.cc | 26 +- .../cppgc-js/unified-heap-marking-visitor.h | 29 +- .../v8/src/heap/cppgc-js/wrappable-info-inl.h | 50 + deps/v8/src/heap/cppgc-js/wrappable-info.h | 34 + deps/v8/src/heap/cppgc/DEPS | 5 + deps/v8/src/heap/cppgc/concurrent-marker.cc | 14 - deps/v8/src/heap/cppgc/gc-info.cc | 32 +- deps/v8/src/heap/cppgc/heap-base.cc | 5 +- deps/v8/src/heap/cppgc/heap-base.h | 13 +- deps/v8/src/heap/cppgc/heap.cc | 11 +- deps/v8/src/heap/cppgc/marker.cc | 31 +- deps/v8/src/heap/cppgc/marking-state.cc | 47 + deps/v8/src/heap/cppgc/marking-state.h | 113 +- deps/v8/src/heap/cppgc/marking-verifier.cc | 6 +- deps/v8/src/heap/cppgc/marking-verifier.h | 2 +- deps/v8/src/heap/cppgc/marking-visitor.cc | 2 +- deps/v8/src/heap/cppgc/marking-worklists.cc | 3 +- deps/v8/src/heap/cppgc/marking-worklists.h | 18 +- deps/v8/src/heap/cppgc/object-allocator.cc | 33 +- deps/v8/src/heap/cppgc/object-allocator.h | 43 +- deps/v8/src/heap/cppgc/stats-collector.cc | 10 +- deps/v8/src/heap/cppgc/stats-collector.h | 9 +- deps/v8/src/heap/cppgc/sweeper.cc | 59 +- deps/v8/src/heap/cppgc/write-barrier.cc | 33 + deps/v8/src/heap/embedder-tracing-inl.h | 46 - deps/v8/src/heap/embedder-tracing.cc | 211 - deps/v8/src/heap/embedder-tracing.h | 240 - deps/v8/src/heap/evacuation-verifier.cc | 25 +- deps/v8/src/heap/evacuation-verifier.h | 8 +- deps/v8/src/heap/factory-base.cc | 55 +- deps/v8/src/heap/factory-base.h | 14 +- deps/v8/src/heap/factory.cc | 466 +- deps/v8/src/heap/factory.h | 63 +- deps/v8/src/heap/free-list.h | 1 + deps/v8/src/heap/gc-tracer.cc | 43 +- deps/v8/src/heap/gc-tracer.h | 6 +- .../src/heap/global-handle-marking-visitor.h | 36 - deps/v8/src/heap/heap-inl.h | 24 +- deps/v8/src/heap/heap-verifier.cc | 436 +- deps/v8/src/heap/heap-verifier.h | 20 +- deps/v8/src/heap/heap-write-barrier-inl.h | 147 +- deps/v8/src/heap/heap-write-barrier.cc | 113 +- deps/v8/src/heap/heap-write-barrier.h | 56 +- deps/v8/src/heap/heap.cc | 848 +-- deps/v8/src/heap/heap.h | 269 +- deps/v8/src/heap/incremental-marking-job.cc | 1 - deps/v8/src/heap/incremental-marking.cc | 175 +- deps/v8/src/heap/incremental-marking.h | 1 + deps/v8/src/heap/large-spaces.cc | 133 +- deps/v8/src/heap/large-spaces.h | 5 +- deps/v8/src/heap/local-heap.cc | 55 +- deps/v8/src/heap/local-heap.h | 3 + deps/v8/src/heap/mark-compact-inl.h | 16 +- deps/v8/src/heap/mark-compact.cc | 927 ++- deps/v8/src/heap/mark-compact.h | 44 +- deps/v8/src/heap/marking-barrier-inl.h | 86 +- deps/v8/src/heap/marking-barrier.cc | 203 +- deps/v8/src/heap/marking-barrier.h | 39 +- deps/v8/src/heap/marking-state.h | 2 +- deps/v8/src/heap/marking-visitor-inl.h | 101 +- deps/v8/src/heap/marking-visitor.h | 38 +- deps/v8/src/heap/marking-worklist-inl.h | 11 - deps/v8/src/heap/marking-worklist.cc | 9 +- deps/v8/src/heap/marking-worklist.h | 10 - deps/v8/src/heap/memory-allocator.cc | 68 +- deps/v8/src/heap/memory-allocator.h | 38 +- deps/v8/src/heap/memory-chunk-layout.h | 4 +- deps/v8/src/heap/memory-chunk.cc | 17 +- deps/v8/src/heap/memory-chunk.h | 13 +- deps/v8/src/heap/memory-reducer.cc | 144 +- deps/v8/src/heap/memory-reducer.h | 73 +- deps/v8/src/heap/new-spaces.cc | 174 +- deps/v8/src/heap/new-spaces.h | 45 +- deps/v8/src/heap/object-stats.cc | 20 +- deps/v8/src/heap/object-stats.h | 4 +- deps/v8/src/heap/objects-visiting-inl.h | 13 +- deps/v8/src/heap/objects-visiting.cc | 36 +- deps/v8/src/heap/objects-visiting.h | 5 +- deps/v8/src/heap/paged-spaces-inl.h | 4 +- deps/v8/src/heap/paged-spaces.cc | 47 +- deps/v8/src/heap/paged-spaces.h | 9 +- deps/v8/src/heap/parked-scope.h | 26 + deps/v8/src/heap/pretenuring-handler-inl.h | 10 +- deps/v8/src/heap/pretenuring-handler.cc | 63 +- deps/v8/src/heap/pretenuring-handler.h | 14 +- deps/v8/src/heap/read-only-heap-inl.h | 27 +- deps/v8/src/heap/read-only-heap.cc | 18 +- deps/v8/src/heap/read-only-heap.h | 18 +- deps/v8/src/heap/read-only-spaces.cc | 99 +- deps/v8/src/heap/read-only-spaces.h | 11 +- deps/v8/src/heap/remembered-set-inl.h | 21 +- deps/v8/src/heap/remembered-set.h | 32 +- deps/v8/src/heap/safepoint.cc | 53 +- deps/v8/src/heap/safepoint.h | 9 +- deps/v8/src/heap/scavenger-inl.h | 74 +- deps/v8/src/heap/scavenger.cc | 60 +- deps/v8/src/heap/scavenger.h | 9 +- deps/v8/src/heap/setup-heap-internal.cc | 348 +- deps/v8/src/heap/slot-set.h | 16 + deps/v8/src/heap/spaces.cc | 25 +- deps/v8/src/heap/spaces.h | 16 +- deps/v8/src/heap/sweeper.cc | 488 +- deps/v8/src/heap/sweeper.h | 52 +- ...r.cc => traced-handles-marking-visitor.cc} | 19 +- .../src/heap/traced-handles-marking-visitor.h | 40 + deps/v8/src/heap/weak-object-worklists.h | 2 +- deps/v8/src/ic/accessor-assembler.cc | 160 +- deps/v8/src/ic/accessor-assembler.h | 15 +- deps/v8/src/ic/binary-op-assembler.cc | 253 +- deps/v8/src/ic/handler-configuration-inl.h | 8 +- deps/v8/src/ic/handler-configuration.cc | 17 +- deps/v8/src/ic/handler-configuration.h | 12 +- deps/v8/src/ic/ic-inl.h | 2 +- deps/v8/src/ic/ic.cc | 16 +- deps/v8/src/ic/keyed-store-generic.cc | 12 +- deps/v8/src/ic/stub-cache.cc | 19 - deps/v8/src/ic/stub-cache.h | 4 - deps/v8/src/ic/unary-op-assembler.cc | 3 +- deps/v8/src/init/bootstrapper.cc | 99 +- deps/v8/src/init/heap-symbols.h | 11 +- deps/v8/src/init/isolate-allocator.cc | 13 +- deps/v8/src/init/setup-isolate-deserialize.cc | 22 +- deps/v8/src/init/setup-isolate-full.cc | 27 +- deps/v8/src/init/setup-isolate.h | 12 +- deps/v8/src/inspector/BUILD.gn | 4 + deps/v8/src/inspector/crc32.cc | 85 + deps/v8/src/inspector/crc32.h | 16 + deps/v8/src/inspector/string-16.cc | 18 +- deps/v8/src/inspector/string-16.h | 1 + .../src/inspector/v8-debugger-agent-impl.cc | 149 +- .../v8/src/inspector/v8-debugger-agent-impl.h | 14 +- deps/v8/src/inspector/v8-debugger-barrier.cc | 19 + deps/v8/src/inspector/v8-debugger-barrier.h | 28 + deps/v8/src/inspector/v8-debugger.cc | 124 +- deps/v8/src/inspector/v8-debugger.h | 8 +- deps/v8/src/inspector/v8-inspector-impl.cc | 25 +- deps/v8/src/inspector/v8-inspector-impl.h | 6 +- .../inspector/v8-inspector-session-impl.cc | 17 +- .../src/inspector/v8-inspector-session-impl.h | 9 +- .../v8/src/inspector/v8-runtime-agent-impl.cc | 51 +- deps/v8/src/inspector/v8-runtime-agent-impl.h | 8 +- deps/v8/src/inspector/v8-stack-trace-impl.cc | 18 + deps/v8/src/inspector/v8-stack-trace-impl.h | 2 + deps/v8/src/inspector/value-mirror.cc | 12 +- .../src/interpreter/bytecode-array-builder.cc | 5 +- .../src/interpreter/bytecode-array-builder.h | 5 +- deps/v8/src/interpreter/bytecode-flags.cc | 13 + deps/v8/src/interpreter/bytecode-flags.h | 2 + deps/v8/src/interpreter/bytecode-generator.cc | 178 +- deps/v8/src/interpreter/bytecode-generator.h | 27 +- deps/v8/src/interpreter/bytecodes.h | 3 +- .../src/interpreter/interpreter-assembler.cc | 10 +- .../src/interpreter/interpreter-generator.cc | 13 +- deps/v8/src/interpreter/interpreter.cc | 13 +- deps/v8/src/interpreter/interpreter.h | 6 +- deps/v8/src/json/json-parser.cc | 56 +- deps/v8/src/json/json-parser.h | 2 + deps/v8/src/json/json-stringifier.cc | 7 +- .../libplatform/tracing/tracing-controller.cc | 11 +- deps/v8/src/logging/code-events.h | 46 +- deps/v8/src/logging/counters-definitions.h | 15 +- deps/v8/src/logging/local-logger.cc | 3 +- deps/v8/src/logging/local-logger.h | 2 +- deps/v8/src/logging/log-file.cc | 1 + deps/v8/src/logging/log.cc | 200 +- deps/v8/src/logging/log.h | 42 +- deps/v8/src/logging/runtime-call-stats.h | 4 + .../maglev/arm64/maglev-assembler-arm64-inl.h | 703 ++ .../maglev/arm64/maglev-assembler-arm64.cc | 717 ++ deps/v8/src/maglev/arm64/maglev-ir-arm64.cc | 2611 +++++++ deps/v8/src/maglev/maglev-assembler-inl.h | 175 +- deps/v8/src/maglev/maglev-assembler.cc | 333 +- deps/v8/src/maglev/maglev-assembler.h | 274 +- deps/v8/src/maglev/maglev-basic-block.h | 35 + deps/v8/src/maglev/maglev-code-generator.cc | 458 +- deps/v8/src/maglev/maglev-compiler.cc | 188 +- deps/v8/src/maglev/maglev-compiler.h | 4 +- .../maglev/maglev-concurrent-dispatcher.cc | 33 +- .../src/maglev/maglev-concurrent-dispatcher.h | 4 +- deps/v8/src/maglev/maglev-graph-builder.cc | 1759 +++-- deps/v8/src/maglev/maglev-graph-builder.h | 494 +- deps/v8/src/maglev/maglev-graph-printer.cc | 16 +- deps/v8/src/maglev/maglev-graph-processor.h | 7 + deps/v8/src/maglev/maglev-graph-verifier.h | 303 +- deps/v8/src/maglev/maglev-graph.h | 22 + .../maglev/maglev-interpreter-frame-state.cc | 461 ++ .../maglev/maglev-interpreter-frame-state.h | 443 +- deps/v8/src/maglev/maglev-ir-inl.h | 79 + deps/v8/src/maglev/maglev-ir.cc | 5531 ++++++-------- deps/v8/src/maglev/maglev-ir.h | 2190 ++++-- deps/v8/src/maglev/maglev-regalloc.cc | 377 +- deps/v8/src/maglev/maglev-regalloc.h | 9 +- deps/v8/src/maglev/maglev-vreg-allocator.h | 55 - deps/v8/src/maglev/maglev.cc | 10 +- deps/v8/src/maglev/maglev.h | 4 +- .../src/maglev/x64/maglev-assembler-x64-inl.h | 568 ++ .../v8/src/maglev/x64/maglev-assembler-x64.cc | 624 ++ deps/v8/src/maglev/x64/maglev-ir-x64.cc | 2647 +++++++ deps/v8/src/numbers/conversions.cc | 123 +- deps/v8/src/numbers/conversions.h | 5 + deps/v8/src/objects/all-objects-inl.h | 1 + deps/v8/src/objects/backing-store.cc | 16 +- deps/v8/src/objects/backing-store.h | 4 + deps/v8/src/objects/bigint.cc | 177 +- deps/v8/src/objects/bigint.h | 31 + deps/v8/src/objects/call-site-info-inl.h | 21 +- deps/v8/src/objects/code-inl.h | 1101 ++- deps/v8/src/objects/code.cc | 207 +- deps/v8/src/objects/code.h | 431 +- deps/v8/src/objects/code.tq | 2 +- .../v8/src/objects/compilation-cache-table.cc | 4 +- deps/v8/src/objects/contexts-inl.h | 20 +- deps/v8/src/objects/contexts.cc | 24 +- deps/v8/src/objects/contexts.h | 14 +- deps/v8/src/objects/contexts.tq | 3 + deps/v8/src/objects/data-handler.tq | 11 +- deps/v8/src/objects/elements-kind.h | 14 + deps/v8/src/objects/elements.cc | 5 +- deps/v8/src/objects/feedback-vector-inl.h | 20 +- deps/v8/src/objects/feedback-vector.cc | 36 +- deps/v8/src/objects/feedback-vector.h | 14 +- deps/v8/src/objects/feedback-vector.tq | 4 +- deps/v8/src/objects/field-index-inl.h | 4 + deps/v8/src/objects/field-index.h | 1 + deps/v8/src/objects/fixed-array-inl.h | 6 +- deps/v8/src/objects/fixed-array.h | 16 +- deps/v8/src/objects/free-space-inl.h | 32 +- deps/v8/src/objects/free-space.h | 14 +- deps/v8/src/objects/free-space.tq | 2 +- deps/v8/src/objects/hash-table-inl.h | 3 +- deps/v8/src/objects/heap-object.h | 19 +- deps/v8/src/objects/instance-type-inl.h | 107 +- deps/v8/src/objects/instance-type.h | 15 +- deps/v8/src/objects/intl-objects.cc | 30 +- deps/v8/src/objects/js-array-buffer-inl.h | 22 + deps/v8/src/objects/js-array-buffer.h | 3 + deps/v8/src/objects/js-array.tq | 15 + .../objects/js-atomics-synchronization-inl.h | 1 + .../src/objects/js-atomics-synchronization.h | 11 +- .../src/objects/js-atomics-synchronization.tq | 2 +- deps/v8/src/objects/js-duration-format.cc | 44 +- deps/v8/src/objects/js-function-inl.h | 44 +- deps/v8/src/objects/js-function.cc | 28 +- deps/v8/src/objects/js-function.h | 18 +- deps/v8/src/objects/js-function.tq | 3 +- deps/v8/src/objects/js-locale.cc | 2 +- deps/v8/src/objects/js-number-format.cc | 56 +- deps/v8/src/objects/js-objects-inl.h | 26 +- deps/v8/src/objects/js-objects.cc | 52 +- deps/v8/src/objects/js-regexp-inl.h | 4 +- deps/v8/src/objects/js-regexp.cc | 9 +- deps/v8/src/objects/js-regexp.h | 8 +- deps/v8/src/objects/js-shared-array-inl.h | 1 + deps/v8/src/objects/js-shared-array.h | 16 +- deps/v8/src/objects/js-shared-array.tq | 2 +- deps/v8/src/objects/js-struct-inl.h | 2 + deps/v8/src/objects/js-struct.h | 11 +- deps/v8/src/objects/js-struct.tq | 10 +- deps/v8/src/objects/js-temporal-objects.cc | 6 +- deps/v8/src/objects/keys.cc | 15 +- deps/v8/src/objects/lookup-inl.h | 8 +- deps/v8/src/objects/lookup.cc | 59 +- deps/v8/src/objects/lookup.h | 4 +- deps/v8/src/objects/map-inl.h | 19 +- deps/v8/src/objects/map.cc | 17 +- deps/v8/src/objects/map.h | 7 +- deps/v8/src/objects/object-list-macros.h | 35 +- .../objects/objects-body-descriptors-inl.h | 47 +- deps/v8/src/objects/objects-inl.h | 153 +- deps/v8/src/objects/objects.cc | 55 +- deps/v8/src/objects/objects.h | 64 +- deps/v8/src/objects/ordered-hash-table.cc | 2 +- deps/v8/src/objects/property-array-inl.h | 16 +- .../src/objects/property-descriptor-object.tq | 142 + deps/v8/src/objects/property-descriptor.cc | 39 +- deps/v8/src/objects/scope-info.cc | 16 +- deps/v8/src/objects/scope-info.h | 3 +- deps/v8/src/objects/scope-info.tq | 4 +- deps/v8/src/objects/script-inl.h | 11 + deps/v8/src/objects/script.h | 5 + deps/v8/src/objects/script.tq | 5 + .../v8/src/objects/shared-function-info-inl.h | 32 +- deps/v8/src/objects/shared-function-info.cc | 10 +- deps/v8/src/objects/shared-function-info.h | 6 +- deps/v8/src/objects/shared-function-info.tq | 3 +- deps/v8/src/objects/simd.cc | 9 +- deps/v8/src/objects/slots-inl.h | 59 +- deps/v8/src/objects/string-comparator.cc | 5 +- .../src/objects/string-forwarding-table-inl.h | 11 +- .../v8/src/objects/string-forwarding-table.cc | 105 +- deps/v8/src/objects/string-forwarding-table.h | 3 +- deps/v8/src/objects/string-inl.h | 62 +- deps/v8/src/objects/string-table.cc | 20 +- deps/v8/src/objects/string.cc | 84 +- deps/v8/src/objects/string.h | 37 +- deps/v8/src/objects/string.tq | 4 +- deps/v8/src/objects/tagged-field.h | 2 +- deps/v8/src/objects/tagged-impl.cc | 9 +- deps/v8/src/objects/tagged-impl.h | 16 +- deps/v8/src/objects/transitions.cc | 31 +- deps/v8/src/objects/turboshaft-types-inl.h | 33 + deps/v8/src/objects/turboshaft-types.h | 115 + deps/v8/src/objects/turboshaft-types.tq | 234 + deps/v8/src/objects/type-hints.cc | 2 + deps/v8/src/objects/type-hints.h | 1 + deps/v8/src/objects/value-serializer.cc | 157 +- deps/v8/src/objects/value-serializer.h | 10 +- deps/v8/src/objects/visitors.h | 37 +- deps/v8/src/parsing/parse-info.cc | 17 +- deps/v8/src/parsing/parse-info.h | 13 +- deps/v8/src/parsing/parser-base.h | 53 +- deps/v8/src/parsing/parser.cc | 30 +- .../pending-compilation-error-handler.cc | 9 +- .../pending-compilation-error-handler.h | 2 + deps/v8/src/parsing/preparser.h | 2 +- deps/v8/src/parsing/scanner-inl.h | 29 +- deps/v8/src/parsing/scanner.h | 8 +- deps/v8/src/profiler/cpu-profiler-inl.h | 41 +- deps/v8/src/profiler/cpu-profiler.cc | 5 +- deps/v8/src/profiler/cpu-profiler.h | 30 +- .../src/profiler/heap-snapshot-generator.cc | 180 +- .../v8/src/profiler/heap-snapshot-generator.h | 19 +- deps/v8/src/profiler/profile-generator.cc | 23 +- deps/v8/src/profiler/profile-generator.h | 20 +- deps/v8/src/profiler/profiler-listener.cc | 41 +- deps/v8/src/profiler/profiler-listener.h | 12 +- .../v8/src/profiler/sampling-heap-profiler.cc | 7 +- deps/v8/src/profiler/symbolizer.cc | 3 +- deps/v8/src/profiler/symbolizer.h | 12 +- deps/v8/src/profiler/tracing-cpu-profiler.cc | 19 + deps/v8/src/profiler/tracing-cpu-profiler.h | 11 + deps/v8/src/profiler/weak-code-registry.h | 5 +- .../regexp/arm/regexp-macro-assembler-arm.cc | 12 +- .../arm64/regexp-macro-assembler-arm64.cc | 13 +- .../experimental/experimental-compiler.cc | 21 +- .../src/regexp/experimental/experimental.cc | 6 +- .../ia32/regexp-macro-assembler-ia32.cc | 10 +- .../loong64/regexp-macro-assembler-loong64.cc | 13 +- .../mips64/regexp-macro-assembler-mips64.cc | 13 +- .../regexp/ppc/regexp-macro-assembler-ppc.cc | 12 +- deps/v8/src/regexp/regexp-ast.cc | 47 + deps/v8/src/regexp/regexp-ast.h | 95 +- deps/v8/src/regexp/regexp-compiler-tonode.cc | 266 +- deps/v8/src/regexp/regexp-compiler.cc | 4 +- deps/v8/src/regexp/regexp-error.h | 4 +- deps/v8/src/regexp/regexp-macro-assembler.cc | 6 +- deps/v8/src/regexp/regexp-macro-assembler.h | 5 +- deps/v8/src/regexp/regexp-parser.cc | 937 ++- deps/v8/src/regexp/regexp.cc | 19 +- .../riscv/regexp-macro-assembler-riscv.cc | 16 +- .../s390/regexp-macro-assembler-s390.cc | 15 +- .../regexp/x64/regexp-macro-assembler-x64.cc | 32 +- .../regexp/x64/regexp-macro-assembler-x64.h | 9 +- deps/v8/src/roots/roots-inl.h | 49 +- deps/v8/src/roots/roots.cc | 29 + deps/v8/src/roots/roots.h | 59 +- deps/v8/src/roots/static-roots.h | 1510 ++++ deps/v8/src/runtime/runtime-bigint.cc | 19 + deps/v8/src/runtime/runtime-compiler.cc | 60 +- deps/v8/src/runtime/runtime-internal.cc | 5 +- deps/v8/src/runtime/runtime-object.cc | 280 +- deps/v8/src/runtime/runtime-regexp.cc | 47 +- deps/v8/src/runtime/runtime-shadow-realm.cc | 12 + deps/v8/src/runtime/runtime-strings.cc | 58 +- deps/v8/src/runtime/runtime-test-wasm.cc | 73 +- deps/v8/src/runtime/runtime-test.cc | 76 +- deps/v8/src/runtime/runtime-utils.h | 2 +- deps/v8/src/runtime/runtime-wasm.cc | 91 +- deps/v8/src/runtime/runtime.h | 59 +- deps/v8/src/sandbox/external-pointer-inl.h | 87 +- .../src/sandbox/external-pointer-table-inl.h | 13 +- deps/v8/src/sandbox/sandbox.cc | 164 +- deps/v8/src/sandbox/sandbox.h | 18 +- deps/v8/src/sanitizer/OWNERS | 3 - deps/v8/src/snapshot/code-serializer.cc | 52 +- deps/v8/src/snapshot/code-serializer.h | 6 +- deps/v8/src/snapshot/context-serializer.cc | 26 +- deps/v8/src/snapshot/deserializer.cc | 838 ++- deps/v8/src/snapshot/deserializer.h | 53 +- .../v8/src/snapshot/embedded/embedded-data.cc | 41 +- deps/v8/src/snapshot/embedded/embedded-data.h | 16 +- .../embedded/embedded-file-writer-interface.h | 2 +- .../snapshot/embedded/embedded-file-writer.cc | 2 +- .../platform-embedded-file-writer-aix.cc | 2 +- .../platform-embedded-file-writer-generic.cc | 2 +- .../platform-embedded-file-writer-mac.cc | 2 +- deps/v8/src/snapshot/mksnapshot.cc | 7 +- .../v8/src/snapshot/read-only-deserializer.cc | 54 +- deps/v8/src/snapshot/read-only-deserializer.h | 2 + deps/v8/src/snapshot/read-only-serializer.cc | 88 +- deps/v8/src/snapshot/roots-serializer.h | 2 + .../v8/src/snapshot/serializer-deserializer.h | 3 +- deps/v8/src/snapshot/serializer-inl.h | 14 +- deps/v8/src/snapshot/serializer.cc | 157 +- deps/v8/src/snapshot/serializer.h | 25 +- deps/v8/src/snapshot/startup-deserializer.cc | 1 + deps/v8/src/snapshot/startup-serializer.cc | 4 +- deps/v8/src/snapshot/static-roots-gen.cc | 104 + deps/v8/src/snapshot/static-roots-gen.h | 21 + deps/v8/src/strings/string-builder-inl.h | 30 +- deps/v8/src/strings/string-builder.cc | 23 +- deps/v8/src/strings/unicode.cc | 31 + deps/v8/src/strings/unicode.h | 16 +- deps/v8/src/torque/ast.h | 21 +- deps/v8/src/torque/cc-generator.cc | 7 +- deps/v8/src/torque/cfg.cc | 2 +- deps/v8/src/torque/constants.h | 3 + deps/v8/src/torque/csa-generator.cc | 7 +- deps/v8/src/torque/declarable.h | 12 +- deps/v8/src/torque/declaration-visitor.cc | 30 +- deps/v8/src/torque/declarations.cc | 11 +- deps/v8/src/torque/declarations.h | 3 +- deps/v8/src/torque/implementation-visitor.cc | 103 +- deps/v8/src/torque/instructions.cc | 6 +- deps/v8/src/torque/instructions.h | 10 +- deps/v8/src/torque/torque-parser.cc | 19 +- deps/v8/src/torque/types.h | 2 + .../src/tracing/tracing-category-observer.cc | 20 + .../src/tracing/tracing-category-observer.h | 14 +- deps/v8/src/trap-handler/OWNERS | 8 +- deps/v8/src/utils/allocation.cc | 8 +- deps/v8/src/utils/allocation.h | 12 +- deps/v8/src/wasm/DEPS | 4 + .../wasm/baseline/arm/liftoff-assembler-arm.h | 5 +- .../baseline/arm64/liftoff-assembler-arm64.h | 11 +- .../baseline/ia32/liftoff-assembler-ia32.h | 12 +- .../v8/src/wasm/baseline/liftoff-assembler.cc | 47 +- deps/v8/src/wasm/baseline/liftoff-assembler.h | 14 +- deps/v8/src/wasm/baseline/liftoff-compiler.cc | 964 ++- deps/v8/src/wasm/baseline/liftoff-compiler.h | 2 +- .../loong64/liftoff-assembler-loong64.h | 5 +- .../mips64/liftoff-assembler-mips64.h | 4 +- .../wasm/baseline/ppc/liftoff-assembler-ppc.h | 449 +- .../baseline/riscv/liftoff-assembler-riscv.h | 16 +- .../riscv/liftoff-assembler-riscv32.h | 3 +- .../riscv/liftoff-assembler-riscv64.h | 5 +- .../baseline/s390/liftoff-assembler-s390.h | 118 +- .../wasm/baseline/x64/liftoff-assembler-x64.h | 19 +- deps/v8/src/wasm/c-api.cc | 41 +- deps/v8/src/wasm/canonical-types.cc | 51 +- deps/v8/src/wasm/canonical-types.h | 17 +- deps/v8/src/wasm/code-space-access.cc | 53 +- deps/v8/src/wasm/code-space-access.h | 21 +- deps/v8/src/wasm/compilation-environment.h | 29 +- .../src/wasm/constant-expression-interface.cc | 13 +- deps/v8/src/wasm/decoder.h | 134 +- deps/v8/src/wasm/function-body-decoder-impl.h | 678 +- deps/v8/src/wasm/function-body-decoder.cc | 13 +- deps/v8/src/wasm/function-body-decoder.h | 10 +- deps/v8/src/wasm/function-compiler.cc | 46 +- deps/v8/src/wasm/function-compiler.h | 23 +- deps/v8/src/wasm/graph-builder-interface.cc | 504 +- deps/v8/src/wasm/graph-builder-interface.h | 17 + deps/v8/src/wasm/jump-table-assembler.cc | 126 +- deps/v8/src/wasm/jump-table-assembler.h | 14 +- deps/v8/src/wasm/module-compiler.cc | 1198 ++- deps/v8/src/wasm/module-compiler.h | 42 +- deps/v8/src/wasm/module-decoder-impl.h | 786 +- deps/v8/src/wasm/module-decoder.cc | 303 +- deps/v8/src/wasm/module-decoder.h | 67 +- deps/v8/src/wasm/module-instantiate.cc | 24 +- deps/v8/src/wasm/stacks.cc | 16 +- deps/v8/src/wasm/stacks.h | 2 +- deps/v8/src/wasm/streaming-decoder.cc | 157 +- deps/v8/src/wasm/streaming-decoder.h | 19 +- deps/v8/src/wasm/struct-types.h | 99 +- deps/v8/src/wasm/sync-streaming-decoder.cc | 2 +- deps/v8/src/wasm/value-type.cc | 20 +- deps/v8/src/wasm/value-type.h | 24 +- deps/v8/src/wasm/wasm-code-manager.cc | 611 +- deps/v8/src/wasm/wasm-code-manager.h | 152 +- deps/v8/src/wasm/wasm-constants.h | 1 + deps/v8/src/wasm/wasm-debug.cc | 3 + deps/v8/src/wasm/wasm-disassembler.cc | 112 +- deps/v8/src/wasm/wasm-engine.cc | 174 +- deps/v8/src/wasm/wasm-engine.h | 41 +- deps/v8/src/wasm/wasm-feature-flags.h | 2 +- deps/v8/src/wasm/wasm-features.cc | 6 + deps/v8/src/wasm/wasm-js.cc | 67 +- deps/v8/src/wasm/wasm-js.h | 14 +- deps/v8/src/wasm/wasm-limits.h | 10 +- deps/v8/src/wasm/wasm-module-builder.cc | 30 +- deps/v8/src/wasm/wasm-module-builder.h | 10 +- deps/v8/src/wasm/wasm-module.cc | 24 +- deps/v8/src/wasm/wasm-module.h | 176 +- deps/v8/src/wasm/wasm-objects.cc | 544 +- deps/v8/src/wasm/wasm-objects.h | 25 +- deps/v8/src/wasm/wasm-objects.tq | 11 +- deps/v8/src/wasm/wasm-opcodes.cc | 16 +- deps/v8/src/wasm/wasm-opcodes.h | 19 +- deps/v8/src/wasm/wasm-result.h | 11 + deps/v8/src/wasm/wasm-serialization.cc | 71 +- deps/v8/src/wasm/wasm-subtyping.cc | 230 +- deps/v8/src/wasm/wasm-subtyping.h | 28 +- deps/v8/src/wasm/wasm-tier.h | 4 +- deps/v8/src/web-snapshot/web-snapshot.cc | 8 +- deps/v8/src/zone/type-stats.cc | 5 +- deps/v8/src/zone/zone.cc | 25 +- deps/v8/src/zone/zone.h | 25 +- deps/v8/test/benchmarks/cpp/BUILD.gn | 13 + deps/v8/test/benchmarks/cpp/dtoa.cc | 1069 +++ deps/v8/test/cctest/BUILD.gn | 122 +- deps/v8/test/cctest/cctest.cc | 30 +- deps/v8/test/cctest/cctest.h | 22 +- deps/v8/test/cctest/cctest.status | 23 +- deps/v8/test/cctest/compiler/codegen-tester.h | 14 +- .../test/cctest/compiler/function-tester.cc | 18 +- .../v8/test/cctest/compiler/function-tester.h | 2 + .../compiler/test-basic-block-profiler.cc | 26 +- .../cctest/compiler/test-code-assembler.cc | 19 +- .../cctest/compiler/test-code-generator.cc | 577 +- .../test-concurrent-shared-function-info.cc | 8 +- .../test/cctest/compiler/test-gap-resolver.cc | 128 +- .../compiler/test-machine-operator-reducer.cc | 40 +- .../cctest/compiler/test-multiple-return.cc | 24 +- .../test/cctest/compiler/test-run-machops.cc | 94 +- .../cctest/compiler/test-run-native-calls.cc | 36 +- deps/v8/test/cctest/heap/heap-utils.cc | 2 - deps/v8/test/cctest/heap/heap-utils.h | 28 +- .../cctest/heap/test-array-buffer-tracker.cc | 8 + .../cctest/heap/test-concurrent-allocation.cc | 23 +- .../heap/test-external-string-tracker.cc | 12 +- deps/v8/test/cctest/heap/test-heap.cc | 316 +- deps/v8/test/cctest/heap/test-mark-compact.cc | 33 - deps/v8/test/cctest/heap/test-unmapper.cc | 1 + .../test/cctest/heap/test-weak-references.cc | 13 +- .../v8/test/cctest/heap/test-write-barrier.cc | 4 +- .../v8/test/cctest/setup-isolate-for-tests.cc | 20 +- deps/v8/test/cctest/setup-isolate-for-tests.h | 9 +- .../v8/test/cctest/test-accessor-assembler.cc | 22 +- deps/v8/test/cctest/test-accessors.cc | 2 +- deps/v8/test/cctest/test-api-array-buffer.cc | 65 + deps/v8/test/cctest/test-api.cc | 198 +- deps/v8/test/cctest/test-assembler-arm64.cc | 3 +- deps/v8/test/cctest/test-assembler-loong64.cc | 108 +- deps/v8/test/cctest/test-assembler-mips64.cc | 186 +- .../test/cctest/test-code-stub-assembler.cc | 324 +- deps/v8/test/cctest/test-cpu-profiler.cc | 131 +- deps/v8/test/cctest/test-debug-helper.cc | 9 +- deps/v8/test/cctest/test-debug.cc | 23 +- deps/v8/test/cctest/test-descriptor-array.cc | 6 +- .../test/cctest/test-disasm-regex-helper.cc | 2 +- .../test/cctest/test-field-type-tracking.cc | 14 +- deps/v8/test/cctest/test-heap-profiler.cc | 35 +- deps/v8/test/cctest/test-js-weak-refs.cc | 11 + deps/v8/test/cctest/test-lockers.cc | 2 + .../cctest/test-macro-assembler-loong64.cc | 54 +- .../cctest/test-macro-assembler-mips64.cc | 30 +- deps/v8/test/cctest/test-profile-generator.cc | 163 +- deps/v8/test/cctest/test-ptr-compr-cage.cc | 28 +- deps/v8/test/cctest/test-serialize.cc | 126 +- deps/v8/test/cctest/test-shared-strings.cc | 672 +- deps/v8/test/cctest/test-strings.cc | 43 + .../cctest/test-swiss-name-dictionary-csa.cc | 33 +- .../test/cctest/test-sync-primitives-arm64.cc | 4 +- .../test/cctest/test-unwinder-code-pages.cc | 27 +- deps/v8/test/cctest/torque/test-torque.cc | 183 +- deps/v8/test/cctest/wasm/test-c-wasm-entry.cc | 2 +- deps/v8/test/cctest/wasm/test-gc.cc | 170 +- .../cctest/wasm/test-jump-table-assembler.cc | 5 +- .../cctest/wasm/test-liftoff-for-fuzzing.cc | 34 +- .../cctest/wasm/test-liftoff-inspection.cc | 6 +- deps/v8/test/cctest/wasm/test-run-wasm-64.cc | 333 +- .../test/cctest/wasm/test-run-wasm-asmjs.cc | 76 +- .../test/cctest/wasm/test-run-wasm-atomics.cc | 174 +- .../cctest/wasm/test-run-wasm-atomics64.cc | 288 +- .../cctest/wasm/test-run-wasm-bulk-memory.cc | 166 +- .../cctest/wasm/test-run-wasm-exceptions.cc | 353 +- .../cctest/wasm/test-run-wasm-interpreter.cc | 192 +- deps/v8/test/cctest/wasm/test-run-wasm-js.cc | 37 +- .../cctest/wasm/test-run-wasm-memory64.cc | 12 +- .../cctest/wasm/test-run-wasm-relaxed-simd.cc | 181 +- .../wasm/test-run-wasm-sign-extension.cc | 10 +- .../cctest/wasm/test-run-wasm-simd-liftoff.cc | 96 +- .../v8/test/cctest/wasm/test-run-wasm-simd.cc | 1519 ++-- .../cctest/wasm/test-run-wasm-wrappers.cc | 8 +- deps/v8/test/cctest/wasm/test-run-wasm.cc | 1436 ++-- .../cctest/wasm/test-streaming-compilation.cc | 19 +- .../test/cctest/wasm/test-wasm-breakpoints.cc | 63 +- .../wasm/test-wasm-import-wrapper-cache.cc | 2 +- deps/v8/test/cctest/wasm/test-wasm-metrics.cc | 9 - .../cctest/wasm/test-wasm-serialization.cc | 82 +- .../cctest/wasm/test-wasm-shared-engine.cc | 4 +- deps/v8/test/cctest/wasm/test-wasm-stack.cc | 15 +- .../cctest/wasm/test-wasm-trap-position.cc | 16 +- deps/v8/test/cctest/wasm/wasm-run-utils.cc | 71 +- deps/v8/test/cctest/wasm/wasm-run-utils.h | 55 +- deps/v8/test/cctest/wasm/wasm-simd-utils.cc | 206 +- deps/v8/test/common/call-tester.h | 11 +- deps/v8/test/common/code-assembler-tester.h | 7 +- deps/v8/test/common/wasm/wasm-interpreter.cc | 67 +- deps/v8/test/common/wasm/wasm-interpreter.h | 2 +- deps/v8/test/common/wasm/wasm-macro-gen.h | 16 + .../v8/test/common/wasm/wasm-module-runner.cc | 9 +- deps/v8/test/common/wasm/wasm-module-runner.h | 4 +- .../wasm/debug-enabled-tier-down-wasm.js | 38 +- deps/v8/test/debugger/testcfg.py | 2 +- deps/v8/test/debugging/testcfg.py | 6 +- deps/v8/test/fuzzer/multi-return.cc | 7 +- deps/v8/test/fuzzer/wasm-async.cc | 38 +- deps/v8/test/fuzzer/wasm-code.cc | 14 +- deps/v8/test/fuzzer/wasm-compile.cc | 226 +- deps/v8/test/fuzzer/wasm-fuzzer-common.cc | 173 +- deps/v8/test/fuzzer/wasm-fuzzer-common.h | 49 +- deps/v8/test/fuzzer/wasm-streaming.cc | 26 +- deps/v8/test/fuzzer/wasm.cc | 39 +- deps/v8/test/fuzzer/wasm/regress-1404619.wasm | Bin 0 -> 38 bytes .../fuzzer/wasm_async/regress-1405322.wasm | Bin 0 -> 58 bytes .../break-on-exception-async-gen-expected.txt | 45 + .../debugger/break-on-exception-async-gen.js | 118 + ...private-class-member-conflict-expected.txt | 55 + ...all-frame-private-class-member-conflict.js | 12 + ...ll-frame-private-class-member-expected.txt | 231 + ...rivate-class-member-in-module-expected.txt | 16 + ...ll-frame-private-class-member-in-module.js | 32 + ...e-private-class-member-static-expected.txt | 231 + ...-call-frame-private-class-member-static.js | 12 + ...me-private-class-member-super-expected.txt | 0 ...uate-on-call-frame-private-class-member.js | 12 + ...rumentation-multiple-sessions-expected.txt | 64 + .../instrumentation-multiple-sessions.js | 292 + .../inspector/debugger/other-pause-reasons.js | 4 +- .../pause-on-instrumentation-expected.txt | 6 + .../debugger/pause-on-instrumentation.js | 28 +- .../debugger/restore-breakpoint-expected.txt | 73 + .../inspector/debugger/restore-breakpoint.js | 47 +- .../debugger/session-stop-expected.txt | 20 + .../test/inspector/debugger/session-stop.js | 86 + ...breakpoint-on-instrumentation-expected.txt | 4 +- .../set-breakpoint-on-instrumentation.js | 11 +- .../set-script-source-top-frame-expected.txt | 2 +- .../debugger/suspended-generator-scopes.js | 2 - .../debugger/wasm-gc-anyref-expected.txt | 19 +- .../test/inspector/debugger/wasm-gc-anyref.js | 40 +- ...sm-instrumentation-breakpoint-expected.txt | 6 - .../wasm-instrumentation-breakpoint.js | 6 +- .../debugger/wasm-scope-info-expected.txt | 114 +- ...breakpoint-on-instrumentation-expected.txt | 3 - .../wasm-set-breakpoint-on-instrumentation.js | 19 +- .../inspector/debugger/wasm-step-a-lot.js | 2 +- deps/v8/test/inspector/inspector-test.cc | 28 + deps/v8/test/inspector/inspector.status | 7 + deps/v8/test/inspector/isolate-data.cc | 27 +- deps/v8/test/inspector/isolate-data.h | 13 +- .../private-class-member-inspector-test.js | 167 + deps/v8/test/inspector/protocol-test.js | 23 +- .../regress/regress-crbug-1220203.js | 7 +- .../regress/regress-crbug-1246896.js | 2 - .../regress-crbug-1270780-expected.txt | 22 + .../regress/regress-crbug-1270780.js | 107 + .../regress-crbug-1401674-expected.txt | 5 + .../regress/regress-crbug-1401674.js | 38 + .../call-function-on-async-expected.txt | 43 +- .../runtime/call-function-on-async.js | 45 +- ...estroyed-on-context-collected-expected.txt | 1 + ...private-class-member-conflict-expected.txt | 55 + .../evaluate-private-class-member-conflict.js | 12 + ...evaluate-private-class-member-expected.txt | 231 + ...e-private-class-member-static-expected.txt | 231 + .../evaluate-private-class-member-static.js | 12 + .../runtime/evaluate-private-class-member.js | 12 + .../test/inspector/runtime/function-scopes.js | 2 - .../runtime/get-properties-expected.txt | 6 + .../get-properties-on-proxy-expected.txt | 8 +- .../inspector/runtime/internal-properties.js | 2 - .../runtime/remote-object-expected.txt | 76 +- .../test/inspector/runtime/remote-object.js | 8 + .../run-if-waiting-for-debugger-expected.txt | 12 + .../runtime/run-if-waiting-for-debugger.js | 35 + .../runtime/terminate-execution-expected.txt | 2 +- .../inspector/runtime/terminate-execution.js | 14 +- .../sessions/create-session-expected.txt | 3 + deps/v8/test/inspector/tasks.cc | 84 + deps/v8/test/inspector/tasks.h | 28 +- deps/v8/test/inspector/testcfg.py | 5 +- deps/v8/test/inspector/wasm-inspector-test.js | 6 +- deps/v8/test/intl/assert.js | 14 + .../date_style_time_style_hour_cycle.js | 8 +- .../date-format/en-format-range-to-parts.js | 6 +- deps/v8/test/intl/date-format/format-range.js | 24 +- .../date-format/format_range_hour_cycle.js | 24 +- deps/v8/test/intl/date-format/hour_cycle.js | 8 +- .../intl/date-format/time_style_hour_cycle.js | 8 +- deps/v8/test/intl/intl.status | 4 +- deps/v8/test/intl/locale/locale-collations.js | 1 + .../intl/number-format/unified/style-unit.js | 4 +- deps/v8/test/intl/regress-1074578.js | 8 +- deps/v8/test/intl/regress-527926.js | 2 +- deps/v8/test/intl/regress-9912.js | 6 +- .../intl/relative-time-format/format-en.js | 218 +- deps/v8/test/intl/testcfg.py | 2 +- .../v8/test/js-perf-test/BigInt/add-no-opt.js | 75 - deps/v8/test/js-perf-test/BigInt/add.js | 24 - .../test/js-perf-test/BigInt/bigint-util.js | 5 +- .../test/js-perf-test/BigInt/exponentiate.js | 48 - deps/v8/test/js-perf-test/BigInt/shift.js | 47 - deps/v8/test/js-perf-test/BigInt/subtract.js | 24 - deps/v8/test/js-perf-test/JSTests1.json | 49 - deps/v8/test/js-perf-test/JSTests2.json | 3 +- ...ct-prior-octal-escape-use-strict-before.js | 9 + ...t-prior-octal-escape-use-strict-before.out | 9 + .../message/fail/strict-prior-octal-escape.js | 9 + .../fail/strict-prior-octal-escape.out | 9 + .../fail/strict-prior-octal-literal.js | 9 + .../fail/strict-prior-octal-literal.out | 9 + .../test/message/fail/var-prior-conflict.js | 9 + .../test/message/fail/var-prior-conflict.out | 9 + deps/v8/test/message/testcfg.py | 2 +- deps/v8/test/mjsunit/array-reverse.js | 2 + deps/v8/test/mjsunit/asm/regress-1395401.js | 16 + .../mjsunit/compiler/bigint-bitwise-and.js | 1 + .../mjsunit/compiler/bigint-bitwise-or.js | 31 + .../mjsunit/compiler/bigint-bitwise-xor.js | 31 + .../test/mjsunit/compiler/bigint-compare.js | 61 + .../mjsunit/compiler/bigint-constructor.js | 107 + deps/v8/test/mjsunit/compiler/bigint-equal.js | 44 + .../mjsunit/compiler/bigint-shift-left.js | 110 + .../mjsunit/compiler/bigint-shift-right.js | 140 + .../test/mjsunit/compiler/bigint64-array.js | 71 + .../compiler/fast-api-calls-pointer.js | 140 + .../compiler/fast-api-clamp-annotations.js | 1 + .../mjsunit/compiler/regress-crbug-1399626.js | 19 + .../mjsunit/compiler/regress-crbug-1399627.js | 18 + deps/v8/test/mjsunit/const-dict-tracking.js | 734 -- deps/v8/test/mjsunit/const-field-tracking.js | 235 - .../array-concat-arraylike-string-length.js | 2 +- .../mjsunit/es6/array-concat-arraylike.js | 2 +- .../mjsunit/es6/array-concat-holey-array.js | 4 +- .../array-concat-sloppy-arguments-holey.js | 2 +- ...rray-concat-sloppy-arguments-with-dupes.js | 2 +- .../es6/array-concat-sloppy-arguments.js | 2 +- .../es6/array-concat-spreadable-function.js | 2 +- ...ay-concat-spreadable-nonarraylike-proxy.js | 4 +- .../es6/array-concat-spreadable-regexp.js | 2 +- .../array-concat-spreadable-sparse-object.js | 2 +- .../es6/array-concat-strict-arguments.js | 2 +- deps/v8/test/mjsunit/es6/array-from.js | 21 + deps/v8/test/mjsunit/es6/array-of.js | 16 + .../v8/test/mjsunit/es6/array-spread-holey.js | 2 +- .../harmony/array-prototype-groupby.js | 2 +- .../harmony/array-prototype-groupbytomap.js | 2 +- .../test/mjsunit/harmony/array-to-reversed.js | 30 + .../test/mjsunit/harmony/array-to-sorted.js | 19 +- .../mjsunit/harmony/arraybuffer-transfer.js | 2 +- .../harmony/public-instance-class-fields.js | 10 + .../harmony/public-static-class-fields.js | 40 + .../mjsunit/harmony/regexp-unicode-sets.js | 116 +- .../harmony/shadowrealm-callsite-throw.js | 114 + .../mjsunit/harmony/shadowrealm-evaluate.js | 21 +- .../harmony/shadowrealm-importvalue.js | 12 +- .../shadowrealm-skip-3-throw-object.mjs | 2 + .../harmony/shadowrealm-wrapped-function.js | 23 + .../string-iswellformed-external-uncached.js | 42 + .../string-iswellformed-flat-indirect.js | 35 + deps/v8/test/mjsunit/ic-megadom-2.js | 2 +- deps/v8/test/mjsunit/ic-megadom-3.js | 2 +- deps/v8/test/mjsunit/ic-megadom.js | 2 +- .../test/mjsunit/interrupt-budget-override.js | 2 +- .../test/mjsunit/keyed-store-array-literal.js | 2 +- deps/v8/test/mjsunit/maglev/exceptions.js | 39 +- deps/v8/test/mjsunit/maglev/lots-of-args.js | 46 + deps/v8/test/mjsunit/maglev/negate.js | 67 + .../v8/test/mjsunit/maglev/regress-1403324.js | 29 + .../v8/test/mjsunit/maglev/regress-1405092.js | 29 + .../v8/test/mjsunit/maglev/regress-1406456.js | 17 + .../v8/test/mjsunit/maglev/regress-1407606.js | 18 + .../mjsunit/maglev/regress/regress-1383712.js | 26 + .../mjsunit/maglev/regress/regress-1392936.js | 16 + .../mjsunit/maglev/regress/regress-1394279.js | 21 + .../mjsunit/maglev/regress/regress-1403575.js | 14 + .../mjsunit/maglev/regress/regress-1405651.js | 51 + .../mjsunit/maglev/regress/regress-1407959.js | 27 + .../maglev/regress/regress-crbug-1392061.js | 37 + .../maglev/regress/regress-crbug-1394036.js | 19 + .../maglev/regress/regress-crbug-1403280.js | 14 + .../maglev/regress/regress-crbug-1403323.js | 15 + .../maglev/regress/regress-crbug-1403399.js | 36 + .../maglev/regress/regress-crbug-1403470.js | 14 + .../maglev/regress/regress-crbug-1403749.js | 25 + .../maglev/regress/regress-crbug-1405445.js | 16 + deps/v8/test/mjsunit/maglev/resumable.js | 17 + .../maglev/typedarray-resizablearraybuffer.js | 815 +++ deps/v8/test/mjsunit/mjsunit-assert-equals.js | 6 +- deps/v8/test/mjsunit/mjsunit.js | 2 + deps/v8/test/mjsunit/mjsunit.status | 67 +- deps/v8/test/mjsunit/never-optimize.js | 2 +- .../test/mjsunit/optimized-string-includes.js | 18 +- .../mjsunit/rab-gsab-transfer-to-worker.js | 232 + deps/v8/test/mjsunit/regress-1400809.js | 11 + deps/v8/test/mjsunit/regress-crbug-1359991.js | 2 +- deps/v8/test/mjsunit/regress-v8-13459.js | 111 + .../mjsunit/regress/asm/regress-1402270.js | 16 + .../test/mjsunit/regress/regress-1320641.js | 16 + .../test/mjsunit/regress/regress-1383362.js | 17 + .../test/mjsunit/regress/regress-1385368.js | 10 + .../test/mjsunit/regress/regress-1393865.js | 28 + .../test/mjsunit/regress/regress-1393942.js | 26 + .../test/mjsunit/regress/regress-1394663.js | 10 + .../test/mjsunit/regress/regress-1400053.js | 24 + .../test/mjsunit/regress/regress-1400056.js | 24 + .../test/mjsunit/regress/regress-1400897.js | 29 + .../test/mjsunit/regress/regress-1404607.js | 18 + .../test/mjsunit/regress/regress-1404863.js | 18 + .../test/mjsunit/regress/regress-1407070.js | 11 + .../test/mjsunit/regress/regress-1407349.js | 17 + .../test/mjsunit/regress/regress-1409058.js | 9 + .../v8/test/mjsunit/regress/regress-165637.js | 2 +- .../v8/test/mjsunit/regress/regress-804177.js | 2 +- .../mjsunit/regress/regress-crbug-1381404.js | 9 + .../mjsunit/regress/regress-crbug-1383883.js | 27 + .../mjsunit/regress/regress-crbug-1383976.js | 24 + .../regress/regress-crbug-1384474-variant2.js | 13 + .../regress/regress-crbug-1384474-variant3.js | 14 + .../mjsunit/regress/regress-crbug-1384474.js | 12 + .../mjsunit/regress/regress-crbug-1392577.js | 14 + .../mjsunit/regress/regress-crbug-1393375.js | 14 + .../mjsunit/regress/regress-crbug-1394741.js | 23 + .../mjsunit/regress/regress-crbug-1395117.js | 14 + .../mjsunit/regress/regress-crbug-1399695.js | 13 + .../mjsunit/regress/regress-crbug-1399799.js | 45 + .../mjsunit/regress/regress-crbug-1402139.js | 13 + .../mjsunit/regress/regress-crbug-1406774.js | 23 + .../mjsunit/regress/regress-crbug-1407080.js | 7 + .../mjsunit/regress/regress-crbug-1408310.js | 23 + .../test/mjsunit/regress/regress-v8-13410.js | 15 + .../wasm/export-wrapper-canonical-types.js | 69 + .../mjsunit/regress/wasm/regress-1179065.js | 9 +- .../mjsunit/regress/wasm/regress-12874.js | 6 +- .../mjsunit/regress/wasm/regress-12945.js | 2 + .../mjsunit/regress/wasm/regress-13230.js | 2 +- .../mjsunit/regress/wasm/regress-13290.js | 2 +- .../mjsunit/regress/wasm/regress-1388938.js | 16 + .../mjsunit/regress/wasm/regress-1388942.js | 17 + .../mjsunit/regress/wasm/regress-1395604.js | 34 + .../mjsunit/regress/wasm/regress-1403398.js | 119 + .../mjsunit/regress/wasm/regress-1408337.js | 24 + .../test/mjsunit/shared-memory/condition.js | 7 + .../mjsunit/shared-memory/mutex-lock-twice.js | 19 + deps/v8/test/mjsunit/shared-memory/mutex.js | 7 + .../shared-memory/non-instance-prototype.js | 42 + .../mjsunit/shared-memory/private-field.js | 25 + .../mjsunit/shared-memory/private-name.js | 13 + .../shared-memory/shared-array-surface.js | 14 +- .../shared-string-copy-on-share-large.js | 53 + .../shared-string-copy-on-share.js | 62 + .../shared-memory/shared-struct-surface.js | 59 + .../shared-value-barrier-optimization.js | 29 + .../shared-memory/shrink-large-object.js | 17 + deps/v8/test/mjsunit/testcfg.py | 9 +- .../test/mjsunit/tools/processor-bigint.mjs | 59 + deps/v8/test/mjsunit/tools/tickprocessor.mjs | 4 +- .../test/mjsunit/turboshaft/type-inference.js | 118 + .../mjsunit/turboshaft/typed-optimizations.js | 39 + ...rray-resizablearraybuffer-array-methods.js | 11 +- .../typedarray-resizablearraybuffer.js | 606 +- .../mjsunit/wasm/array-init-from-segment.js | 64 + deps/v8/test/mjsunit/wasm/bit-shift-right.js | 2 +- .../mjsunit/wasm/bounds-check-turbofan.js | 8 +- deps/v8/test/mjsunit/wasm/call-ref.js | 83 +- deps/v8/test/mjsunit/wasm/call_indirect.js | 4 - deps/v8/test/mjsunit/wasm/code-flushing.js | 40 + .../test/mjsunit/wasm/code-space-overflow.js | 44 + ...ustion.js => committed-code-exhaustion.js} | 2 +- ...own-to-liftoff.js => enter-debug-state.js} | 31 +- .../mjsunit/wasm/externref-globals-liftoff.js | 7 - .../v8/test/mjsunit/wasm/externref-liftoff.js | 8 - .../mjsunit/wasm/gc-cast-type-inference.js | 172 + .../v8/test/mjsunit/wasm/gc-casts-from-any.js | 415 ++ .../v8/test/mjsunit/wasm/gc-casts-subtypes.js | 556 +- .../wasm/gc-js-interop-async-debugger.js | 11 + .../mjsunit/wasm/gc-js-interop-collections.js | 6 +- .../wasm/gc-js-interop-global-constructors.js | 35 +- .../mjsunit/wasm/gc-js-interop-helpers.js | 1 - .../mjsunit/wasm/gc-js-interop-import.mjs | 1 - .../mjsunit/wasm/gc-js-interop-objects.js | 33 +- .../test/mjsunit/wasm/gc-js-interop-wasm.js | 2 +- deps/v8/test/mjsunit/wasm/gc-js-interop.js | 20 +- deps/v8/test/mjsunit/wasm/gc-nominal.js | 59 - deps/v8/test/mjsunit/wasm/gc-optimizations.js | 55 +- deps/v8/test/mjsunit/wasm/i31ref.js | 85 + deps/v8/test/mjsunit/wasm/inlining.js | 62 + .../wasm/log-code-after-post-message.js | 44 + .../test/mjsunit/wasm/max-wasm-functions.js | 16 + deps/v8/test/mjsunit/wasm/multi-value.js | 1 - .../test/mjsunit/wasm/origin-trial-flags.js | 46 + .../mjsunit/wasm/reference-globals-import.js | 47 +- .../v8/test/mjsunit/wasm/reference-globals.js | 8 +- .../wasm/reference-table-js-interop.js | 27 +- deps/v8/test/mjsunit/wasm/reference-tables.js | 92 +- .../wasm/runtime-type-canonicalization.js | 1 - .../test/mjsunit/wasm/speculative-inlining.js | 12 +- .../mjsunit/wasm/streaming-error-position.js | 80 +- .../test/mjsunit/wasm/stringrefs-exec-gc.js | 52 +- deps/v8/test/mjsunit/wasm/stringrefs-exec.js | 103 +- .../mjsunit/wasm/stringrefs-regressions.js | 4 +- deps/v8/test/mjsunit/wasm/stringrefs-valid.js | 18 +- .../mjsunit/wasm/stringview-valuestack.js | 73 + .../test/mjsunit/wasm/table-access-liftoff.js | 7 - .../mjsunit/wasm/type-based-optimizations.js | 2 + .../wasm/wasm-gc-externalize-internalize.js | 5 +- .../test/mjsunit/wasm/wasm-gc-js-roundtrip.js | 53 +- .../test/mjsunit/wasm/wasm-module-builder.js | 131 +- .../test/mjsunit/wasm/wrapper-compilation.js | 33 + deps/v8/test/test262/test262.status | 508 +- deps/v8/test/test262/testcfg.py | 4 +- deps/v8/test/unittests/BUILD.gn | 237 +- .../v8/test/unittests/api/api-icu-unittest.cc | 3 +- .../test/unittests/api/api-wasm-unittest.cc | 30 + .../unittests/api/deserialize-unittest.cc | 105 +- .../test/unittests/api/v8-script-unittest.cc | 71 + .../assembler/disasm-ia32-unittest.cc | 4 - .../assembler/disasm-riscv-unittest.cc | 2 +- .../assembler/disasm-x64-unittest.cc | 8 +- .../assembler/macro-assembler-x64-unittest.cc | 5 +- .../test/unittests/base/ieee754-unittest.cc | 245 +- .../v8/test/unittests/base/vector-unittest.cc | 27 +- .../unittests/codegen/code-pages-unittest.cc | 60 +- .../unittests/codegen/factory-unittest.cc | 3 +- .../test/unittests/compiler/codegen-tester.h | 14 +- .../compiler/csa-load-elimination-unittest.cc | 3 +- .../unittests/compiler/function-tester.cc | 22 +- .../test/unittests/compiler/function-tester.h | 4 +- .../compiler/graph-reducer-unittest.h | 1 + .../compiler/int64-lowering-unittest.cc | 74 +- .../compiler/js-call-reducer-unittest.cc | 14 +- .../machine-operator-reducer-unittest.cc | 372 +- .../unittests/compiler/node-test-utils.cc | 1 + .../test/unittests/compiler/node-test-utils.h | 2 + .../redundancy-elimination-unittest.cc | 12 +- .../test/unittests/compiler/revec-unittest.cc | 233 + .../compiler/run-tail-calls-unittest.cc | 9 +- .../turboshaft/snapshot-table-unittest.cc | 324 +- .../turboshaft/turboshaft-types-unittest.cc | 787 ++ .../deoptimizer/deoptimization-unittest.cc | 17 - .../conservative-stack-visitor-unittest.cc | 14 +- .../embedder-roots-handler-unittest.cc | 283 + .../heap/cppgc-js/unified-heap-unittest.cc | 347 +- .../heap/cppgc-js/unified-heap-utils.cc | 25 + .../heap/cppgc-js/unified-heap-utils.h | 9 +- .../cppgc-js/young-unified-heap-unittest.cc | 401 ++ .../heap/cppgc/concurrent-sweeper-unittest.cc | 41 + .../heap/cppgc/marking-verifier-unittest.cc | 4 +- .../unittests/heap/cppgc/test-platform.cc | 3 +- .../heap/embedder-tracing-unittest.cc | 1212 ---- .../test/unittests/heap/gc-tracer-unittest.cc | 12 + .../unittests/heap/global-handles-unittest.cc | 47 +- deps/v8/test/unittests/heap/heap-unittest.cc | 11 +- deps/v8/test/unittests/heap/heap-utils.cc | 11 + deps/v8/test/unittests/heap/heap-utils.h | 30 +- .../unittests/heap/local-heap-unittest.cc | 18 +- .../heap/marking-worklist-unittest.cc | 11 - .../unittests/heap/memory-reducer-unittest.cc | 247 +- .../unittests/inspector/inspector-unittest.cc | 48 +- .../bytecode-array-builder-unittest.cc | 3 +- .../ObjectLiterals.golden | 4 +- .../PrivateAccessorAccess.golden | 28 +- .../PrivateClassFields.golden | 9 +- .../PrivateMethodAccess.golden | 20 +- .../PublicClassFields.golden | 9 +- .../StaticClassFields.golden | 33 +- .../StaticPrivateMethodAccess.golden | 30 +- .../interpreter/interpreter-unittest.cc | 28 +- .../unittests/libplatform/tracing-unittest.cc | 10 +- .../v8/test/unittests/logging/log-unittest.cc | 7 +- .../test/unittests/objects/roots-unittest.cc | 11 + .../objects/value-serializer-unittest.cc | 124 +- .../unittests/objects/weakmaps-unittest.cc | 6 + .../test/unittests/parser/decls-unittest.cc | 2 - .../test/unittests/parser/parsing-unittest.cc | 12 +- .../test/unittests/regexp/regexp-unittest.cc | 31 +- deps/v8/test/unittests/test-utils.cc | 20 +- deps/v8/test/unittests/test-utils.h | 33 +- deps/v8/test/unittests/testcfg.py | 14 +- .../test/unittests/torque/torque-unittest.cc | 2 +- deps/v8/test/unittests/unittests.status | 3 + .../unittests/utils/identity-map-unittest.cc | 1 + .../wasm/function-body-decoder-unittest.cc | 186 +- .../wasm/loop-assignment-analysis-unittest.cc | 29 +- .../wasm/memory-protection-unittest.cc | 66 +- .../wasm/module-decoder-memory64-unittest.cc | 8 +- .../unittests/wasm/module-decoder-unittest.cc | 339 +- .../wasm/streaming-decoder-unittest.cc | 80 +- .../unittests/wasm/struct-types-unittest.cc | 70 + .../test/unittests/wasm/subtyping-unittest.cc | 157 +- ....cc => trap-handler-x64-arm64-unittest.cc} | 145 +- .../wasm-disassembler-unittest-gc.wasm.inc | 135 + .../wasm-disassembler-unittest-gc.wat.inc | 107 + .../wasm-disassembler-unittest-mvp.wat.inc | 1 - ...sassembler-unittest-too-many-ends.wasm.inc | 31 + ...isassembler-unittest-too-many-ends.wat.inc | 9 + .../wasm/wasm-disassembler-unittest.cc | 38 +- .../web-snapshot/web-snapshot-unittest.cc | 4 + deps/v8/test/wasm-api-tests/callbacks.cc | 2 - deps/v8/test/wasm-api-tests/finalize.cc | 7 +- deps/v8/test/wasm-api-tests/serialize.cc | 2 - deps/v8/test/wasm-api-tests/table.cc | 2 +- deps/v8/test/wasm-api-tests/traps.cc | 9 +- deps/v8/test/wasm-api-tests/wasm-api-test.h | 4 +- deps/v8/test/wasm-js/tests.tar.gz.sha1 | 2 +- deps/v8/test/wasm-js/wasm-js.status | 1 - .../v8/test/wasm-spec-tests/tests.tar.gz.sha1 | 2 +- .../wasm-spec-tests/wasm-spec-tests.status | 22 +- deps/v8/test/webkit/testcfg.py | 2 +- deps/v8/third_party/glibc/LICENSE | 502 ++ deps/v8/third_party/glibc/METADATA | 18 + deps/v8/third_party/glibc/README.v8 | 8 + .../src/sysdeps/ieee754/dbl-64/branred.c | 143 + .../src/sysdeps/ieee754/dbl-64/branred.h | 79 + .../glibc/src/sysdeps/ieee754/dbl-64/dla.h | 38 + .../glibc/src/sysdeps/ieee754/dbl-64/endian.h | 21 + .../glibc/src/sysdeps/ieee754/dbl-64/mydefs.h | 34 + .../glibc/src/sysdeps/ieee754/dbl-64/s_sin.c | 312 + .../src/sysdeps/ieee754/dbl-64/sincostab.c | 913 +++ .../glibc/src/sysdeps/ieee754/dbl-64/trig.h | 14 + .../glibc/src/sysdeps/ieee754/dbl-64/usncs.h | 47 + .../jinja2/Jinja2-2.11.3.tar.gz.md5 | 1 - .../jinja2/Jinja2-2.11.3.tar.gz.sha512 | 1 - deps/v8/third_party/jinja2/README.chromium | 10 +- deps/v8/third_party/jinja2/README.rst | 26 +- deps/v8/third_party/jinja2/__init__.py | 71 +- deps/v8/third_party/jinja2/_compat.py | 132 - deps/v8/third_party/jinja2/_identifier.py | 2 +- deps/v8/third_party/jinja2/async_utils.py | 84 + deps/v8/third_party/jinja2/asyncfilters.py | 158 - deps/v8/third_party/jinja2/asyncsupport.py | 264 - deps/v8/third_party/jinja2/bccache.py | 190 +- deps/v8/third_party/jinja2/compiler.py | 1202 ++-- deps/v8/third_party/jinja2/constants.py | 3 +- deps/v8/third_party/jinja2/debug.py | 199 +- deps/v8/third_party/jinja2/defaults.py | 18 +- deps/v8/third_party/jinja2/environment.py | 1095 ++- deps/v8/third_party/jinja2/exceptions.py | 103 +- deps/v8/third_party/jinja2/ext.py | 497 +- deps/v8/third_party/jinja2/filters.py | 1080 ++- deps/v8/third_party/jinja2/idtracking.py | 176 +- deps/v8/third_party/jinja2/jinja2.gni | 4 +- deps/v8/third_party/jinja2/lexer.py | 442 +- deps/v8/third_party/jinja2/loaders.py | 425 +- deps/v8/third_party/jinja2/meta.py | 62 +- deps/v8/third_party/jinja2/nativetypes.py | 70 +- deps/v8/third_party/jinja2/nodes.py | 502 +- deps/v8/third_party/jinja2/optimizer.py | 18 +- deps/v8/third_party/jinja2/parser.py | 341 +- ...iled-template-deterministic-for-pyth.patch | 30 - deps/v8/third_party/jinja2/py.typed | 0 deps/v8/third_party/jinja2/runtime.py | 816 ++- deps/v8/third_party/jinja2/sandbox.py | 264 +- deps/v8/third_party/jinja2/tests.py | 114 +- deps/v8/third_party/jinja2/utils.py | 594 +- deps/v8/third_party/jinja2/visitor.py | 35 +- .../zlib/contrib/optimizations/chunkcopy.h | 2 +- .../contrib/optimizations/insert_string.h | 5 +- deps/v8/third_party/zlib/google/zip.cc | 2 +- deps/v8/third_party/zlib/google/zip.h | 2 +- deps/v8/third_party/zlib/google/zip_reader.cc | 18 +- deps/v8/third_party/zlib/google/zip_reader.h | 2 +- .../zlib/google/zip_reader_unittest.cc | 2 +- .../third_party/zlib/google/zip_unittest.cc | 2 +- deps/v8/tools/.vpython3 | 91 + deps/v8/tools/BUILD.gn | 6 +- deps/v8/tools/PRESUBMIT.py | 17 +- deps/v8/tools/builtins-pgo/arm64.profile | 6403 ----------------- .../tools/builtins-pgo/download_profiles.py | 151 + .../builtins-pgo/download_profiles_test.py | 62 + deps/v8/tools/builtins-pgo/generate.py | 3 +- deps/v8/tools/builtins-pgo/x64.profile | 5975 +++++++-------- .../builtins-pgo/{arm.profile => x86.profile} | 5935 +++++++-------- .../foozzie/testdata/failure_output.txt | 2 +- .../foozzie/testdata/failure_output_arch.txt | 2 +- .../testdata/failure_output_second.txt | 2 +- .../foozzie/testdata/smoke_test_output.txt | 2 +- .../tools/clusterfuzz/foozzie/v8_foozzie.py | 18 +- .../foozzie/v8_fuzz_experiments.json | 9 +- .../clusterfuzz/foozzie/v8_fuzz_flags.json | 4 +- .../clusterfuzz/js_fuzzer/gen_exceptions.sh | 0 .../js_fuzzer/generated/exceptions.js | 553 +- .../mutators/function_call_mutator.js | 11 +- .../clusterfuzz/js_fuzzer/script_mutator.js | 32 +- .../clusterfuzz/js_fuzzer/source_helpers.js | 16 +- .../test/test_mutate_function_calls.js | 17 +- .../js_fuzzer/test/test_mutation_order.js | 56 + .../mutate_function_call_maglev_expected.js | 23 + .../test_data/mutation_order/input.js | 23 + .../mutation_order/output_expected.js | 119 + .../test_data/spidermonkey/test/load.js | 3 + .../spidermonkey/test/load_expected.js | 1 + .../clusterfuzz/js_fuzzer/tools/run_one.py | 5 +- .../trials/clusterfuzz_trials_config.json | 13 +- deps/v8/tools/codemap.mjs | 18 +- .../debug_helper/debug-helper-internal.cc | 3 + .../tools/debug_helper/gen-heap-constants.py | 3 + .../debug_helper/get-object-properties.cc | 33 +- deps/v8/tools/dev/gen-static-roots.py | 126 + deps/v8/tools/dev/gm.py | 4 + deps/v8/tools/dev/update-vscode.sh | 26 +- deps/v8/tools/gcmole/BUILD.gn | 86 +- deps/v8/tools/gcmole/PRESUBMIT.py | 32 + deps/v8/tools/gcmole/gcmole-test.cc | 10 + deps/v8/tools/gcmole/gcmole.py | 590 +- deps/v8/tools/gcmole/gcmole_args.py | 59 + deps/v8/tools/gcmole/gcmole_test.py | 433 ++ deps/v8/tools/gcmole/run-gcmole.py | 25 +- deps/v8/tools/gcmole/test-expectations.txt | 203 +- deps/v8/tools/gcmole/testdata/v8/BUILD.gn | 35 + .../v8/out/obj/v8_base_without_compiler.ninja | 7 + .../gcmole/testdata/v8/test/cctest/BUILD.gn | 12 + deps/v8/tools/gdbinit | 5 +- deps/v8/tools/gen-postmortem-metadata.py | 670 +- deps/v8/tools/heap-stats/categories.js | 2 +- deps/v8/tools/logreader.mjs | 27 +- deps/v8/tools/profile.mjs | 12 +- deps/v8/tools/profview/profile-utils.js | 12 +- deps/v8/tools/profview/profview.js | 8 +- deps/v8/tools/system-analyzer/log/tick.mjs | 2 +- deps/v8/tools/system-analyzer/processor.mjs | 70 +- deps/v8/tools/system-analyzer/view/helper.mjs | 4 +- .../view/property-link-table.mjs | 4 +- .../system-analyzer/view/script-panel.mjs | 170 +- deps/v8/tools/testrunner/base_runner.py | 53 +- deps/v8/tools/testrunner/build_config.py | 57 +- deps/v8/tools/testrunner/local/statusfile.py | 13 +- deps/v8/tools/testrunner/local/testsuite.py | 17 +- .../tools/testrunner/local/testsuite_test.py | 6 +- deps/v8/tools/testrunner/local/variants.py | 128 +- deps/v8/tools/testrunner/num_fuzzer.py | 3 +- deps/v8/tools/testrunner/objects/testcase.py | 90 +- .../tools/testrunner/objects/testcase_test.py | 74 + deps/v8/tools/testrunner/standard_runner.py | 3 +- .../tools/testrunner/standard_runner_test.py | 50 +- deps/v8/tools/testrunner/test_config.py | 6 + .../testdata/expected_test_results1.json | 246 +- .../testdata/expected_test_results2.json | 156 +- .../testroot1/out/build/v8_build_config.json | 14 +- .../testroot2/out/build/v8_build_config.json | 14 +- .../testroot3/out/build/v8_build_config.json | 14 +- .../out.gn/build/v8_build_config.json | 14 +- .../testroot6/out/build/v8_build_config.json | 14 +- deps/v8/tools/testrunner/testproc/base.py | 10 +- .../tools/testrunner/testproc/expectation.py | 2 +- deps/v8/tools/testrunner/testproc/fuzzer.py | 18 +- .../tools/testrunner/testproc/indicators.py | 13 +- deps/v8/tools/testrunner/testproc/progress.py | 5 +- deps/v8/tools/testrunner/testproc/rerun.py | 2 +- deps/v8/tools/testrunner/testproc/resultdb.py | 61 +- deps/v8/tools/testrunner/testproc/seed.py | 2 +- deps/v8/tools/testrunner/testproc/shard.py | 2 +- .../testproc/stack_utils/__init__.py | 3 + .../testproc/stack_utils/clusterfuzz_fakes.py | 30 + .../stack_utils/stack_analyzer_util.py | 107 + .../stack_utils/stack_analyzer_util_test.py | 65 + .../analyze_crash/code_kind.expected.json | 4 + .../testdata/analyze_crash/code_kind.txt | 20 + .../analyze_crash/data_race_1.expected.json | 4 + .../testdata/analyze_crash/data_race_1.txt | 91 + .../analyze_crash/data_race_2.expected.json | 4 + .../testdata/analyze_crash/data_race_2.txt | 118 + .../data_race_clusterfuzz.expected.json | 4 + .../analyze_crash/data_race_clusterfuzz.txt | 50 + .../deserialization.expected.json | 4 + .../analyze_crash/deserialization.txt | 43 + .../analyze_crash/fata_js_oom.expected.json | 4 + .../testdata/analyze_crash/fata_js_oom.txt | 48 + .../has_optimized_code.expected.json | 4 + .../analyze_crash/has_optimized_code.txt | 30 + .../analyze_crash/heap_limit.expected.json | 4 + .../testdata/analyze_crash/heap_limit.txt | 33 + .../is_main_thread_barrier.expected.json | 4 + .../analyze_crash/is_main_thread_barrier.txt | 30 + .../is_main_thread_barrier_2.expected.json | 4 + .../is_main_thread_barrier_2.txt | 26 + .../analyze_crash/js_func_ref.expected.json | 4 + .../testdata/analyze_crash/js_func_ref.txt | 55 + .../analyze_crash/marking_state.expected.json | 4 + .../testdata/analyze_crash/marking_state.txt | 37 + .../maybe_is_cleared.expected.json | 4 + .../analyze_crash/maybe_is_cleared.txt | 21 + .../missing_deoptimization.expected.json | 4 + .../analyze_crash/missing_deoptimization.txt | 24 + .../analyze_crash/seg_map_err.expected.json | 4 + .../testdata/analyze_crash/seg_map_err.txt | 13 + .../segmentation_error.expected.json | 4 + .../analyze_crash/segmentation_error.txt | 9 + .../segmentation_fault.expected.json | 4 + .../analyze_crash/segmentation_fault.txt | 15 + .../analyze_crash/stack_frame.expected.json | 4 + .../testdata/analyze_crash/stack_frame.txt | 60 + .../static_assertion_1.expected.json | 4 + .../analyze_crash/static_assertion_1.txt | 37 + .../static_assertion_2.expected.json | 4 + .../analyze_crash/static_assertion_2.txt | 37 + .../storage_is_populated.expected.json | 4 + .../analyze_crash/storage_is_populated.txt | 35 + .../topmost_optimized_code.expected.json | 4 + .../analyze_crash/topmost_optimized_code.txt | 24 + .../type_assertion_1.expected.json | 4 + .../analyze_crash/type_assertion_1.txt | 1 + .../type_assertion_2.expected.json | 4 + .../analyze_crash/type_assertion_2.txt | 5 + .../unreachable_code.expected.json | 4 + .../analyze_crash/unreachable_code.txt | 28 + .../custom_analyzer/data_race_1.expected | 3 + .../testdata/custom_analyzer/data_race_1.txt | 91 + .../custom_analyzer/data_race_2.expected | 3 + .../testdata/custom_analyzer/data_race_2.txt | 118 + .../custom_analyzer/data_race_3.expected | 3 + .../testdata/custom_analyzer/data_race_3.txt | 50 + .../custom_analyzer/data_race_4.expected | 3 + .../testdata/custom_analyzer/data_race_4.txt | 190 + .../custom_analyzer/data_race_5.expected | 3 + .../testdata/custom_analyzer/data_race_5.txt | 198 + .../custom_analyzer/data_race_6.expected | 3 + .../testdata/custom_analyzer/data_race_6.txt | 112 + .../custom_analyzer/data_race_8.expected | 3 + .../testdata/custom_analyzer/data_race_8.txt | 510 ++ .../custom_analyzer/data_race_9.expected | 3 + .../testdata/custom_analyzer/data_race_9.txt | 128 + deps/v8/tools/testrunner/testproc/util.py | 27 +- deps/v8/tools/testrunner/testproc/variant.py | 7 +- .../testrunner/utils/augmented_options.py | 5 + deps/v8/tools/testrunner/utils/test_utils.py | 22 + .../tools/torque/vim-torque/syntax/torque.vim | 2 +- deps/v8/tools/try_perf.py | 1 - .../css/turbo-visualizer-ranges.css | 238 +- .../tools/turbolizer/css/turbo-visualizer.css | 11 +- .../tools/turbolizer/src/common/constants.ts | 5 + deps/v8/tools/turbolizer/src/common/util.ts | 4 + .../turbolizer/src/phases/schedule-phase.ts | 22 +- .../turbolizer/src/phases/sequence-phase.ts | 57 +- deps/v8/tools/turbolizer/src/resizer.ts | 23 +- .../tools/turbolizer/src/views/range-view.ts | 886 ++- .../turbolizer/src/views/schedule-view.ts | 14 +- .../turbolizer/src/views/sequence-view.ts | 53 +- .../tools/turbolizer/src/views/text-view.ts | 20 + deps/v8/tools/turbolizer/tslint.json | 1 - deps/v8/tools/ubsan/ignorelist.txt | 3 + deps/v8/tools/v8_presubmit.py | 48 +- deps/v8/tools/v8heapconst.py | 841 +-- deps/v8/tools/v8windbg/test/v8windbg-test.cc | 28 +- deps/v8/tools/wasm/module-inspector.cc | 123 +- deps/v8/tools/whitespace.txt | 6 +- 1809 files changed, 106340 insertions(+), 57777 deletions(-) create mode 100644 deps/v8/src/builtins/builtins-data-view-gen.cc create mode 100644 deps/v8/src/builtins/builtins-object-gen.h create mode 100644 deps/v8/src/builtins/string-iswellformed.tq create mode 100644 deps/v8/src/builtins/string-towellformed.tq create mode 100644 deps/v8/src/common/ptr-compr.cc create mode 100644 deps/v8/src/compiler/revectorizer.cc create mode 100644 deps/v8/src/compiler/revectorizer.h create mode 100644 deps/v8/src/compiler/turbofan-disabled.cc create mode 100644 deps/v8/src/compiler/turbofan-enabled.cc create mode 100644 deps/v8/src/compiler/turbofan.h create mode 100644 deps/v8/src/compiler/turboshaft/assembler.cc create mode 100644 deps/v8/src/compiler/turboshaft/assert-types-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/branch-elimination-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/dead-code-elimination-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/index.h create mode 100644 deps/v8/src/compiler/turboshaft/late-escape-analysis-reducer.cc create mode 100644 deps/v8/src/compiler/turboshaft/late-escape-analysis-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/layered-hash-map.h create mode 100644 deps/v8/src/compiler/turboshaft/memory-optimization.cc create mode 100644 deps/v8/src/compiler/turboshaft/memory-optimization.h create mode 100644 deps/v8/src/compiler/turboshaft/reducer-traits.h create mode 100644 deps/v8/src/compiler/turboshaft/type-inference-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/type-parser.cc create mode 100644 deps/v8/src/compiler/turboshaft/type-parser.h create mode 100644 deps/v8/src/compiler/turboshaft/typed-optimizations-reducer.h create mode 100644 deps/v8/src/compiler/turboshaft/types.cc create mode 100644 deps/v8/src/compiler/turboshaft/types.h create mode 100644 deps/v8/src/compiler/turboshaft/uniform-reducer-adapter.h create mode 100644 deps/v8/src/compiler/turboshaft/variable-reducer.h create mode 100644 deps/v8/src/compiler/wasm-call-descriptors.cc create mode 100644 deps/v8/src/compiler/wasm-call-descriptors.h create mode 100644 deps/v8/src/compiler/wasm-load-elimination.cc create mode 100644 deps/v8/src/compiler/wasm-load-elimination.h create mode 100644 deps/v8/src/heap/base/asm/arm/push_registers_asm.cc delete mode 100644 deps/v8/src/heap/base/asm/arm/save_registers_asm.cc create mode 100644 deps/v8/src/heap/base/asm/arm64/push_registers_asm.cc create mode 100644 deps/v8/src/heap/base/asm/arm64/push_registers_masm.S delete mode 100644 deps/v8/src/heap/base/asm/arm64/save_registers_asm.cc delete mode 100644 deps/v8/src/heap/base/asm/arm64/save_registers_masm.S create mode 100644 deps/v8/src/heap/base/asm/ia32/push_registers_asm.cc create mode 100644 deps/v8/src/heap/base/asm/ia32/push_registers_masm.asm delete mode 100644 deps/v8/src/heap/base/asm/ia32/save_registers_asm.cc delete mode 100644 deps/v8/src/heap/base/asm/ia32/save_registers_masm.asm create mode 100644 deps/v8/src/heap/base/asm/loong64/push_registers_asm.cc delete mode 100644 deps/v8/src/heap/base/asm/loong64/save_registers_asm.cc create mode 100644 deps/v8/src/heap/base/asm/mips64/push_registers_asm.cc delete mode 100644 deps/v8/src/heap/base/asm/mips64/save_registers_asm.cc create mode 100644 deps/v8/src/heap/base/asm/ppc/push_registers_asm.cc delete mode 100644 deps/v8/src/heap/base/asm/ppc/save_registers_asm.cc create mode 100644 deps/v8/src/heap/base/asm/riscv/push_registers_asm.cc delete mode 100644 deps/v8/src/heap/base/asm/riscv/save_registers_asm.cc create mode 100644 deps/v8/src/heap/base/asm/s390/push_registers_asm.cc delete mode 100644 deps/v8/src/heap/base/asm/s390/save_registers_asm.cc create mode 100644 deps/v8/src/heap/base/asm/x64/push_registers_asm.cc create mode 100644 deps/v8/src/heap/base/asm/x64/push_registers_masm.asm delete mode 100644 deps/v8/src/heap/base/asm/x64/save_registers_asm.cc delete mode 100644 deps/v8/src/heap/base/asm/x64/save_registers_masm.asm create mode 100644 deps/v8/src/heap/cppgc-js/cross-heap-remembered-set.cc create mode 100644 deps/v8/src/heap/cppgc-js/cross-heap-remembered-set.h create mode 100644 deps/v8/src/heap/cppgc-js/wrappable-info-inl.h create mode 100644 deps/v8/src/heap/cppgc-js/wrappable-info.h delete mode 100644 deps/v8/src/heap/embedder-tracing-inl.h delete mode 100644 deps/v8/src/heap/embedder-tracing.cc delete mode 100644 deps/v8/src/heap/embedder-tracing.h delete mode 100644 deps/v8/src/heap/global-handle-marking-visitor.h rename deps/v8/src/heap/{global-handle-marking-visitor.cc => traced-handles-marking-visitor.cc} (74%) create mode 100644 deps/v8/src/heap/traced-handles-marking-visitor.h create mode 100644 deps/v8/src/inspector/crc32.cc create mode 100644 deps/v8/src/inspector/crc32.h create mode 100644 deps/v8/src/inspector/v8-debugger-barrier.cc create mode 100644 deps/v8/src/inspector/v8-debugger-barrier.h create mode 100644 deps/v8/src/maglev/arm64/maglev-assembler-arm64-inl.h create mode 100644 deps/v8/src/maglev/arm64/maglev-assembler-arm64.cc create mode 100644 deps/v8/src/maglev/arm64/maglev-ir-arm64.cc delete mode 100644 deps/v8/src/maglev/maglev-vreg-allocator.h create mode 100644 deps/v8/src/maglev/x64/maglev-assembler-x64-inl.h create mode 100644 deps/v8/src/maglev/x64/maglev-assembler-x64.cc create mode 100644 deps/v8/src/maglev/x64/maglev-ir-x64.cc create mode 100644 deps/v8/src/objects/turboshaft-types-inl.h create mode 100644 deps/v8/src/objects/turboshaft-types.h create mode 100644 deps/v8/src/objects/turboshaft-types.tq create mode 100644 deps/v8/src/roots/static-roots.h delete mode 100644 deps/v8/src/sanitizer/OWNERS create mode 100644 deps/v8/src/snapshot/static-roots-gen.cc create mode 100644 deps/v8/src/snapshot/static-roots-gen.h create mode 100644 deps/v8/test/benchmarks/cpp/dtoa.cc create mode 100644 deps/v8/test/fuzzer/wasm/regress-1404619.wasm create mode 100644 deps/v8/test/fuzzer/wasm_async/regress-1405322.wasm create mode 100644 deps/v8/test/inspector/debugger/break-on-exception-async-gen-expected.txt create mode 100644 deps/v8/test/inspector/debugger/break-on-exception-async-gen.js create mode 100644 deps/v8/test/inspector/debugger/evaluate-on-call-frame-private-class-member-conflict-expected.txt create mode 100644 deps/v8/test/inspector/debugger/evaluate-on-call-frame-private-class-member-conflict.js create mode 100644 deps/v8/test/inspector/debugger/evaluate-on-call-frame-private-class-member-expected.txt create mode 100644 deps/v8/test/inspector/debugger/evaluate-on-call-frame-private-class-member-in-module-expected.txt create mode 100644 deps/v8/test/inspector/debugger/evaluate-on-call-frame-private-class-member-in-module.js create mode 100644 deps/v8/test/inspector/debugger/evaluate-on-call-frame-private-class-member-static-expected.txt create mode 100644 deps/v8/test/inspector/debugger/evaluate-on-call-frame-private-class-member-static.js create mode 100644 deps/v8/test/inspector/debugger/evaluate-on-call-frame-private-class-member-super-expected.txt create mode 100644 deps/v8/test/inspector/debugger/evaluate-on-call-frame-private-class-member.js create mode 100644 deps/v8/test/inspector/debugger/instrumentation-multiple-sessions-expected.txt create mode 100644 deps/v8/test/inspector/debugger/instrumentation-multiple-sessions.js create mode 100644 deps/v8/test/inspector/debugger/session-stop-expected.txt create mode 100644 deps/v8/test/inspector/debugger/session-stop.js create mode 100644 deps/v8/test/inspector/private-class-member-inspector-test.js create mode 100644 deps/v8/test/inspector/regress/regress-crbug-1270780-expected.txt create mode 100644 deps/v8/test/inspector/regress/regress-crbug-1270780.js create mode 100644 deps/v8/test/inspector/regress/regress-crbug-1401674-expected.txt create mode 100644 deps/v8/test/inspector/regress/regress-crbug-1401674.js create mode 100644 deps/v8/test/inspector/runtime/evaluate-private-class-member-conflict-expected.txt create mode 100644 deps/v8/test/inspector/runtime/evaluate-private-class-member-conflict.js create mode 100644 deps/v8/test/inspector/runtime/evaluate-private-class-member-expected.txt create mode 100644 deps/v8/test/inspector/runtime/evaluate-private-class-member-static-expected.txt create mode 100644 deps/v8/test/inspector/runtime/evaluate-private-class-member-static.js create mode 100644 deps/v8/test/inspector/runtime/evaluate-private-class-member.js create mode 100644 deps/v8/test/inspector/runtime/run-if-waiting-for-debugger-expected.txt create mode 100644 deps/v8/test/inspector/runtime/run-if-waiting-for-debugger.js delete mode 100644 deps/v8/test/js-perf-test/BigInt/add-no-opt.js delete mode 100644 deps/v8/test/js-perf-test/BigInt/exponentiate.js create mode 100644 deps/v8/test/message/fail/strict-prior-octal-escape-use-strict-before.js create mode 100644 deps/v8/test/message/fail/strict-prior-octal-escape-use-strict-before.out create mode 100644 deps/v8/test/message/fail/strict-prior-octal-escape.js create mode 100644 deps/v8/test/message/fail/strict-prior-octal-escape.out create mode 100644 deps/v8/test/message/fail/strict-prior-octal-literal.js create mode 100644 deps/v8/test/message/fail/strict-prior-octal-literal.out create mode 100644 deps/v8/test/message/fail/var-prior-conflict.js create mode 100644 deps/v8/test/message/fail/var-prior-conflict.out create mode 100644 deps/v8/test/mjsunit/asm/regress-1395401.js create mode 100644 deps/v8/test/mjsunit/compiler/bigint-bitwise-or.js create mode 100644 deps/v8/test/mjsunit/compiler/bigint-bitwise-xor.js create mode 100644 deps/v8/test/mjsunit/compiler/bigint-compare.js create mode 100644 deps/v8/test/mjsunit/compiler/bigint-constructor.js create mode 100644 deps/v8/test/mjsunit/compiler/bigint-equal.js create mode 100644 deps/v8/test/mjsunit/compiler/bigint-shift-left.js create mode 100644 deps/v8/test/mjsunit/compiler/bigint-shift-right.js create mode 100644 deps/v8/test/mjsunit/compiler/bigint64-array.js create mode 100644 deps/v8/test/mjsunit/compiler/fast-api-calls-pointer.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-crbug-1399626.js create mode 100644 deps/v8/test/mjsunit/compiler/regress-crbug-1399627.js delete mode 100644 deps/v8/test/mjsunit/const-dict-tracking.js delete mode 100644 deps/v8/test/mjsunit/const-field-tracking.js create mode 100644 deps/v8/test/mjsunit/harmony/shadowrealm-callsite-throw.js create mode 100644 deps/v8/test/mjsunit/harmony/shadowrealm-skip-3-throw-object.mjs create mode 100644 deps/v8/test/mjsunit/harmony/string-iswellformed-external-uncached.js create mode 100644 deps/v8/test/mjsunit/harmony/string-iswellformed-flat-indirect.js create mode 100644 deps/v8/test/mjsunit/maglev/lots-of-args.js create mode 100644 deps/v8/test/mjsunit/maglev/negate.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-1403324.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-1405092.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-1406456.js create mode 100644 deps/v8/test/mjsunit/maglev/regress-1407606.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-1383712.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-1392936.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-1394279.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-1403575.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-1405651.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-1407959.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-crbug-1392061.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-crbug-1394036.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-crbug-1403280.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-crbug-1403323.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-crbug-1403399.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-crbug-1403470.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-crbug-1403749.js create mode 100644 deps/v8/test/mjsunit/maglev/regress/regress-crbug-1405445.js create mode 100644 deps/v8/test/mjsunit/maglev/resumable.js create mode 100644 deps/v8/test/mjsunit/maglev/typedarray-resizablearraybuffer.js create mode 100644 deps/v8/test/mjsunit/rab-gsab-transfer-to-worker.js create mode 100644 deps/v8/test/mjsunit/regress-1400809.js create mode 100644 deps/v8/test/mjsunit/regress-v8-13459.js create mode 100644 deps/v8/test/mjsunit/regress/asm/regress-1402270.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1320641.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1383362.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1385368.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1393865.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1393942.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1394663.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1400053.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1400056.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1400897.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1404607.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1404863.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1407070.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1407349.js create mode 100644 deps/v8/test/mjsunit/regress/regress-1409058.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1381404.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1383883.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1383976.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1384474-variant2.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1384474-variant3.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1384474.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1392577.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1393375.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1394741.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1395117.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1399695.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1399799.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1402139.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1406774.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1407080.js create mode 100644 deps/v8/test/mjsunit/regress/regress-crbug-1408310.js create mode 100644 deps/v8/test/mjsunit/regress/regress-v8-13410.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/export-wrapper-canonical-types.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-1388938.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-1388942.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-1395604.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-1403398.js create mode 100644 deps/v8/test/mjsunit/regress/wasm/regress-1408337.js create mode 100644 deps/v8/test/mjsunit/shared-memory/mutex-lock-twice.js create mode 100644 deps/v8/test/mjsunit/shared-memory/non-instance-prototype.js create mode 100644 deps/v8/test/mjsunit/shared-memory/private-field.js create mode 100644 deps/v8/test/mjsunit/shared-memory/private-name.js create mode 100644 deps/v8/test/mjsunit/shared-memory/shared-string-copy-on-share-large.js create mode 100644 deps/v8/test/mjsunit/shared-memory/shared-string-copy-on-share.js create mode 100644 deps/v8/test/mjsunit/shared-memory/shared-value-barrier-optimization.js create mode 100644 deps/v8/test/mjsunit/shared-memory/shrink-large-object.js create mode 100644 deps/v8/test/mjsunit/tools/processor-bigint.mjs create mode 100644 deps/v8/test/mjsunit/turboshaft/type-inference.js create mode 100644 deps/v8/test/mjsunit/turboshaft/typed-optimizations.js create mode 100644 deps/v8/test/mjsunit/wasm/code-flushing.js create mode 100644 deps/v8/test/mjsunit/wasm/code-space-overflow.js rename deps/v8/test/mjsunit/wasm/{code-space-exhaustion.js => committed-code-exhaustion.js} (93%) rename deps/v8/test/mjsunit/wasm/{tier-down-to-liftoff.js => enter-debug-state.js} (64%) delete mode 100644 deps/v8/test/mjsunit/wasm/externref-globals-liftoff.js delete mode 100644 deps/v8/test/mjsunit/wasm/externref-liftoff.js create mode 100644 deps/v8/test/mjsunit/wasm/gc-cast-type-inference.js create mode 100644 deps/v8/test/mjsunit/wasm/gc-js-interop-async-debugger.js create mode 100644 deps/v8/test/mjsunit/wasm/log-code-after-post-message.js create mode 100644 deps/v8/test/mjsunit/wasm/max-wasm-functions.js create mode 100644 deps/v8/test/mjsunit/wasm/origin-trial-flags.js create mode 100644 deps/v8/test/mjsunit/wasm/stringview-valuestack.js delete mode 100644 deps/v8/test/mjsunit/wasm/table-access-liftoff.js create mode 100644 deps/v8/test/mjsunit/wasm/wrapper-compilation.js create mode 100644 deps/v8/test/unittests/compiler/revec-unittest.cc create mode 100644 deps/v8/test/unittests/compiler/turboshaft/turboshaft-types-unittest.cc create mode 100644 deps/v8/test/unittests/heap/cppgc-js/embedder-roots-handler-unittest.cc create mode 100644 deps/v8/test/unittests/heap/cppgc-js/young-unified-heap-unittest.cc delete mode 100644 deps/v8/test/unittests/heap/embedder-tracing-unittest.cc create mode 100644 deps/v8/test/unittests/wasm/struct-types-unittest.cc rename deps/v8/test/unittests/wasm/{trap-handler-x64-unittest.cc => trap-handler-x64-arm64-unittest.cc} (80%) create mode 100644 deps/v8/test/unittests/wasm/wasm-disassembler-unittest-gc.wasm.inc create mode 100644 deps/v8/test/unittests/wasm/wasm-disassembler-unittest-gc.wat.inc create mode 100644 deps/v8/test/unittests/wasm/wasm-disassembler-unittest-too-many-ends.wasm.inc create mode 100644 deps/v8/test/unittests/wasm/wasm-disassembler-unittest-too-many-ends.wat.inc create mode 100644 deps/v8/third_party/glibc/LICENSE create mode 100644 deps/v8/third_party/glibc/METADATA create mode 100644 deps/v8/third_party/glibc/README.v8 create mode 100644 deps/v8/third_party/glibc/src/sysdeps/ieee754/dbl-64/branred.c create mode 100644 deps/v8/third_party/glibc/src/sysdeps/ieee754/dbl-64/branred.h create mode 100644 deps/v8/third_party/glibc/src/sysdeps/ieee754/dbl-64/dla.h create mode 100644 deps/v8/third_party/glibc/src/sysdeps/ieee754/dbl-64/endian.h create mode 100644 deps/v8/third_party/glibc/src/sysdeps/ieee754/dbl-64/mydefs.h create mode 100644 deps/v8/third_party/glibc/src/sysdeps/ieee754/dbl-64/s_sin.c create mode 100644 deps/v8/third_party/glibc/src/sysdeps/ieee754/dbl-64/sincostab.c create mode 100644 deps/v8/third_party/glibc/src/sysdeps/ieee754/dbl-64/trig.h create mode 100644 deps/v8/third_party/glibc/src/sysdeps/ieee754/dbl-64/usncs.h delete mode 100644 deps/v8/third_party/jinja2/Jinja2-2.11.3.tar.gz.md5 delete mode 100644 deps/v8/third_party/jinja2/Jinja2-2.11.3.tar.gz.sha512 delete mode 100644 deps/v8/third_party/jinja2/_compat.py create mode 100644 deps/v8/third_party/jinja2/async_utils.py delete mode 100644 deps/v8/third_party/jinja2/asyncfilters.py delete mode 100644 deps/v8/third_party/jinja2/asyncsupport.py delete mode 100644 deps/v8/third_party/jinja2/patches/0001-jinja2-make-compiled-template-deterministic-for-pyth.patch create mode 100644 deps/v8/third_party/jinja2/py.typed create mode 100644 deps/v8/tools/.vpython3 delete mode 100644 deps/v8/tools/builtins-pgo/arm64.profile create mode 100755 deps/v8/tools/builtins-pgo/download_profiles.py create mode 100644 deps/v8/tools/builtins-pgo/download_profiles_test.py rename deps/v8/tools/builtins-pgo/{arm.profile => x86.profile} (56%) mode change 100644 => 100755 deps/v8/tools/clusterfuzz/js_fuzzer/gen_exceptions.sh create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test/test_mutation_order.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/mutate_function_call_maglev_expected.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/mutation_order/input.js create mode 100644 deps/v8/tools/clusterfuzz/js_fuzzer/test_data/mutation_order/output_expected.js create mode 100755 deps/v8/tools/dev/gen-static-roots.py create mode 100644 deps/v8/tools/gcmole/PRESUBMIT.py create mode 100644 deps/v8/tools/gcmole/gcmole_args.py create mode 100644 deps/v8/tools/gcmole/gcmole_test.py create mode 100644 deps/v8/tools/gcmole/testdata/v8/BUILD.gn create mode 100644 deps/v8/tools/gcmole/testdata/v8/out/obj/v8_base_without_compiler.ninja create mode 100644 deps/v8/tools/gcmole/testdata/v8/test/cctest/BUILD.gn create mode 100644 deps/v8/tools/testrunner/objects/testcase_test.py create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/__init__.py create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/clusterfuzz_fakes.py create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/stack_analyzer_util.py create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/stack_analyzer_util_test.py create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/code_kind.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/code_kind.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/data_race_1.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/data_race_1.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/data_race_2.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/data_race_2.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/data_race_clusterfuzz.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/data_race_clusterfuzz.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/deserialization.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/deserialization.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/fata_js_oom.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/fata_js_oom.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/has_optimized_code.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/has_optimized_code.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/heap_limit.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/heap_limit.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/is_main_thread_barrier.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/is_main_thread_barrier.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/is_main_thread_barrier_2.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/is_main_thread_barrier_2.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/js_func_ref.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/js_func_ref.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/marking_state.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/marking_state.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/maybe_is_cleared.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/maybe_is_cleared.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/missing_deoptimization.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/missing_deoptimization.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/seg_map_err.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/seg_map_err.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/segmentation_error.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/segmentation_error.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/segmentation_fault.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/segmentation_fault.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/stack_frame.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/stack_frame.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/static_assertion_1.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/static_assertion_1.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/static_assertion_2.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/static_assertion_2.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/storage_is_populated.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/storage_is_populated.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/topmost_optimized_code.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/topmost_optimized_code.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/type_assertion_1.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/type_assertion_1.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/type_assertion_2.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/type_assertion_2.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/unreachable_code.expected.json create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/analyze_crash/unreachable_code.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_1.expected create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_1.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_2.expected create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_2.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_3.expected create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_3.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_4.expected create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_4.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_5.expected create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_5.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_6.expected create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_6.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_8.expected create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_8.txt create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_9.expected create mode 100644 deps/v8/tools/testrunner/testproc/stack_utils/testdata/custom_analyzer/data_race_9.txt diff --git a/deps/v8/.git-blame-ignore-revs b/deps/v8/.git-blame-ignore-revs index 4c53e208e3acec..29372f34c1813d 100644 --- a/deps/v8/.git-blame-ignore-revs +++ b/deps/v8/.git-blame-ignore-revs @@ -18,11 +18,106 @@ # - Because you must use a hash, you need to append to this list in a follow-up # CL to the actual reformatting CL that you are trying to ignore. +# objects.h splitting +0604031eb1d01c52b6c1c9ae3012d80b23d74a68 +09e405453359000d66cc0faaa102854e626bebeb +766ef168fbcac6bd0728cc2c9bb3ae7cbd74278a +b5a2839b927be04bdb50a236071c11764e4d6400 +c911f91b5b6219e038c0117b05a8375bdf3db0b0 +1bb48bf91ba8c887884a0fbd674c91f64964d8a5 +19da9f24df7b59fec72b9dd8a979ad0ce5639c87 +b090d7e7468236ffce0afdb55bb496bf0073f2ee +f40638d148b7a435522d5b714993908061e3b10d +e8a1c25f6afae9b77921abb70fad49da252eb6f0 +6fa8283d0e031c9585d190f751907ed45bf85de0 +9aa861c4bcfed612039259f93c2cd2b01337e99e +8175648018bd9f70af866f9fa433f1d79644d86b +c7b1ceb801ec7f639a093468d8e6424212cc197c +e39d2cbe1b1baa6513ddce2d73c981e335cc34fb +eda00a5c499b7a83479115eb275a816b8a2ed104 +68deca9b418976ca8b3375e81058a9e0a815357f +0525e17847f39f80e3fd163021a58f68d8fcaf06 +81a3c699d6eef936452ac3d10c7c59a2c1e38c0c +01452bedfca2b5447a7f62bda87edbbb76259a6e +1baf1050113a5418696839c273e05ea5ad1b5c4d +4b39fe3d608916b1cfea015de287511a1623fc7f +c6effdbba9b301244475553538f6eb1b3d9670b9 +71e4c573199466ea4541e3d6b307c9b33d7bb785 +efc92f0d4aa77bb90f5b56606b6f0d0819fba4af +a9db2c74b5bae2345ac52be404748954a3b5050d +0a01b6202226bbe99c0b83acf6c5a80344f5fb6a +a6c44361c8f2dc07b935e3f2bb3e0d3ad4f4a383 +10d8aab1de430695a69e9d75af6ea42c2cdc9d6d +dd3c4fca2f0a2761b8b95cd47fcd62836d714890 +e9c932233980866074025e65051003d1f298516c +2b1f79881c3f0b69bfb9274bda57ea50f7304982 +7f031160d71a3d836667dc98288eaff4c94e6f56 +490fabb4578f8a3c4096fdccff688c17ed5ed00d +d953b2ab726acca0b3abe90ce090a16d7ccc2ae3 +bb514c426b9438cfb1149d219ac4ec2d8d1c8458 +dfb453d713d8a05e76f720a6aae2871eec210276 +b490fd66b873c89fca37b21eab58502b6367a864 +9a71683d9c8ff9470eda6be5b2b11babac7b9863 +37945f731c4d800ef788e3c32f8663773a93450e +b90c98fc29a8d896354de4a22c055f6d98376171 +35f3e9d0e654e84646a0b98f29e4a2786cdca4b1 +260eb5bb9b62ea3d5fa6ad0b0e8c2de75d48bad4 +cc2c11441ce352360acce8638a19f58edf361f7d +7be0159e4b1e0b064e215ae4ced34d649cb2552e +95a7cfe0eaabbcff0f730ed60e1805779f6cfe41 +8f54d18ba4ad10770e9537a2803459feccfe79a3 +f44759d9ff52a3e5563e5f2bb23ee2c08222fcfd +09050c8a967f5f2956305e5d016b304d7bf5e669 +c769745d5856a7eb3a0dbe6af5376c7638944364 +a1547aa914aeedd7862f74124c18d2bbaf432c36 +5f950698c0dc7c36b855961feb929022f74102fb +4aedeb1bd50c12ebcd6cf954c4cbef1205fff5ac +7366d8954cb1bd277d3283241da2fae62b886c48 +bc35251f5e55a65c3a4acf7cba52cee505c86a46 +4fb60b215801db70c694a799e735b64bfead59bb +03762b8488de0e393077e3f40fe7b63e675b3af3 +a8a45d875f0a98b192cf0063ceda12aaf75ddfaf +a48e5ab8804e9e97b5ea577d6f2667bacee92eb2 + # Update of quotations in DEPS file. e50b49a0e38b34e2b28e026f4d1c7e0da0c7bb1a # Rewrite code base to use "." instead of "->" to access Object members. 878ccb33bd3cf0e6dc018ff8d15843f585ac07be +# Splitting src/ into subfolders +632239011db501e76475d82ff6492f37fa8c1edc +f455f86d899716df3b9550950ce172f5b867619a +24a51e1eee4e286165dd0bba6afb4c35e8177a25 +f9a88acbc928f0fc5e9a3acbcd3b4ece52355f3d +dec3298d9cfbe95759774a0e00302a08836b5f3d +a0c3797461810e3159662851e64946e17654236e +b72941e8b0d2843adf768442024d8950da798db1 +4c986c625f19e35c95f3492c662822f4695218b4 +0fa243af7096ee5b748b194476be2e4efecaec59 +786ce26341b7ab11b4d42f1c77202530d5138ad2 +a6eeea35cb7ff0c29b6cfdd1c786f382110241ce +be014256adea1552d4a044ef80616cdab6a7d549 +93d3b7173fec7d010539057cdbd78d497f09fa9b +5bfe84a0dab60289b3470c080908ce83ac2212d4 +a7695520556665ba73ab02c497ab73b162a5fb13 +61523c45a335fe3be76498e0b16bf8e7aec0d058 +bf372a73d8a5f4029fc9f4f69b675ef0cad80ada +8ad6b335376c6275ffb3361c662a1a45c853f4fc +06bf8261cf2c94fc071652652600b5790f719c05 +81a0102fe8586071cc68e9595b26c5c1207ee5b3 +5f28539599f6a6a265e18b8c897cc96ccbeec9c4 +3253767622a784866dc34aeb7b5d0f02ebdff61e +9ac8b20086f95f1158a1901eefe12e25fd0333e4 +3cb560adfe26edb586a0e6e655e5a7c4755cad1a +7bbd0bfe5161d57bcf268716ce4d1ce14d6786e6 +c39cabbcbea26891558b81fd2236c38a7aeada08 +a3187716d31a0ab9d7051adde6be9bd2b2c6fec1 + # Move test/mjsunit/regress-*.js => test/mjsunit/regress/ cb67be1a3842fcf6a0da18aee444e3b7ea789e04 + +# [include] Split out v8.h +d1b27019d3bf86360ea838c317f8505fac6d3a7e +44fe02ced6e4c6b49d627807e3b3fd0edbbeb36e +ec06bb6ce5641cf65e400ec55b7421f87d04b999 diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index f1bd2f33fe771a..34011600a05cd9 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -67,6 +67,7 @@ /third_party/jsoncpp/source !/third_party/colorama /third_party/colorama/src +!/third_party/glibc !/third_party/googletest /third_party/googletest/src/* !/third_party/googletest/src/googletest diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 9696fc61d54d8f..21f0b915bb789b 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -44,6 +44,7 @@ CodeWeavers, Inc. <*@codeweavers.com> Alibaba, Inc. <*@alibaba-inc.com> SiFive, Inc. <*@sifive.com> +Aapo Alasuutari Aaron Bieber Aaron O'Mullan Abdulla Kamar @@ -152,6 +153,8 @@ Jiawen Geng Jiaxun Yang Joel Stanley Johan Bergstrƶm +Johan Levin +John Paul Adrian Glaubitz Jonathan Liu Juan Arboleda Julien Brianceau @@ -285,3 +288,4 @@ Zheng Liu Zhongping Wang ęŸ³č£äø€ Yang Xiang +Kotaro Ohsugi diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index 3be7da8f3bb11f..e3269a48681e6e 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -68,6 +68,7 @@ load(":bazel/v8-non-pointer-compression.bzl", "v8_binary_non_pointer_compression # v8_enable_sandbox # cppgc_enable_caged_heap # cppgc_enable_check_assignments_in_prefinalizers +# cppgc_enable_slim_write_barrier # cppgc_enable_object_names # cppgc_enable_pointer_compression # cppgc_enable_verify_heap @@ -132,6 +133,8 @@ v8_flag(name = "v8_enable_snapshot_code_comments") v8_flag(name = "v8_enable_snapshot_native_code_counters") +v8_flag(name = "v8_enable_static_roots") + v8_flag(name = "v8_enable_trace_maps") v8_flag(name = "v8_enable_v8_checks") @@ -144,6 +147,8 @@ v8_flag(name = "v8_enable_verify_predictable") v8_flag(name = "v8_enable_test_features") +v8_flag(name = "v8_enable_turbofan") + v8_flag( name = "v8_enable_webassembly", default = True, @@ -316,7 +321,9 @@ v8_config( "v8_enable_slow_dchecks": "ENABLE_SLOW_DCHECKS", "v8_enable_runtime_call_stats": "V8_RUNTIME_CALL_STATS", "v8_enable_snapshot_native_code_counters": "V8_SNAPSHOT_NATIVE_CODE_COUNTERS", + "v8_enable_static_roots": "V8_STATIC_ROOTS", "v8_enable_trace_maps": "V8_TRACE_MAPS", + "v8_enable_turbofan": "V8_ENABLE_TURBOFAN", "v8_enable_v8_checks": "V8_ENABLE_CHECKS", "v8_enable_verify_csa": "ENABLE_VERIFY_CSA", "v8_enable_verify_heap": "VERIFY_HEAP", @@ -325,7 +332,6 @@ v8_config( }, defines = [ "GOOGLE3", - "ENABLE_DEBUGGER_SUPPORT", "V8_ADVANCED_BIGINT_ALGORITHMS", "V8_CONCURRENT_MARKING", ] + select({ @@ -859,6 +865,7 @@ filegroup( "src/builtins/string-html.tq", "src/builtins/string-includes.tq", "src/builtins/string-indexof.tq", + "src/builtins/string-iswellformed.tq", "src/builtins/string-iterator.tq", "src/builtins/string-match-search.tq", "src/builtins/string-pad.tq", @@ -868,6 +875,7 @@ filegroup( "src/builtins/string-startswith.tq", "src/builtins/string-substr.tq", "src/builtins/string-substring.tq", + "src/builtins/string-towellformed.tq", "src/builtins/string-trim.tq", "src/builtins/symbol.tq", "src/builtins/torque-internal.tq", @@ -963,6 +971,7 @@ filegroup( "src/objects/templates.tq", "src/objects/torque-defined-classes.tq", "src/objects/turbofan-types.tq", + "src/objects/turboshaft-types.tq", "test/torque/test-torque.tq", "third_party/v8/builtins/array-sort.tq", ] + select({ @@ -1245,6 +1254,7 @@ filegroup( "src/common/message-template.h", "src/common/operation.h", "src/common/ptr-compr-inl.h", + "src/common/ptr-compr.cc", "src/common/ptr-compr.h", "src/compiler-dispatcher/lazy-compile-dispatcher.cc", "src/compiler-dispatcher/lazy-compile-dispatcher.h", @@ -1429,6 +1439,8 @@ filegroup( "src/heap/cppgc-js/cpp-marking-state-inl.h", "src/heap/cppgc-js/cpp-snapshot.cc", "src/heap/cppgc-js/cpp-snapshot.h", + "src/heap/cppgc-js/cross-heap-remembered-set.cc", + "src/heap/cppgc-js/cross-heap-remembered-set.h", "src/heap/cppgc-js/unified-heap-marking-state.cc", "src/heap/cppgc-js/unified-heap-marking-state.h", "src/heap/cppgc-js/unified-heap-marking-state-inl.h", @@ -1436,9 +1448,8 @@ filegroup( "src/heap/cppgc-js/unified-heap-marking-verifier.h", "src/heap/cppgc-js/unified-heap-marking-visitor.cc", "src/heap/cppgc-js/unified-heap-marking-visitor.h", - "src/heap/embedder-tracing.cc", - "src/heap/embedder-tracing.h", - "src/heap/embedder-tracing-inl.h", + "src/heap/cppgc-js/wrappable-info.h", + "src/heap/cppgc-js/wrappable-info-inl.h", "src/heap/evacuation-verifier.cc", "src/heap/evacuation-verifier.h", "src/heap/evacuation-verifier-inl.h", @@ -1459,8 +1470,6 @@ filegroup( "src/heap/gc-tracer.cc", "src/heap/gc-tracer-inl.h", "src/heap/gc-tracer.h", - "src/heap/global-handle-marking-visitor.cc", - "src/heap/global-handle-marking-visitor.h", "src/heap/heap-allocator-inl.h", "src/heap/heap-allocator.cc", "src/heap/heap-allocator.h", @@ -1567,6 +1576,8 @@ filegroup( "src/heap/stress-scavenge-observer.h", "src/heap/sweeper.cc", "src/heap/sweeper.h", + "src/heap/traced-handles-marking-visitor.cc", + "src/heap/traced-handles-marking-visitor.h", "src/heap/weak-object-worklists.cc", "src/heap/weak-object-worklists.h", "src/ic/call-optimization.cc", @@ -1915,6 +1926,8 @@ filegroup( "src/objects/transitions.h", "src/objects/turbofan-types-inl.h", "src/objects/turbofan-types.h", + "src/objects/turboshaft-types-inl.h", + "src/objects/turboshaft-types.h", "src/objects/type-hints.cc", "src/objects/type-hints.h", "src/objects/value-serializer.cc", @@ -2031,6 +2044,7 @@ filegroup( "src/roots/roots-inl.h", "src/roots/roots.cc", "src/roots/roots.h", + "src/roots/static-roots.h", "src/runtime/runtime-array.cc", "src/runtime/runtime-atomics.cc", "src/runtime/runtime-bigint.cc", @@ -2882,7 +2896,13 @@ filegroup( "src/compiler/state-values-utils.h", "src/compiler/store-store-elimination.cc", "src/compiler/store-store-elimination.h", + "src/compiler/turbofan-enabled.cc", + "src/compiler/turbofan.h", + "src/compiler/turboshaft/assembler.cc", "src/compiler/turboshaft/assembler.h", + "src/compiler/turboshaft/assert-types-reducer.h", + "src/compiler/turboshaft/branch-elimination-reducer.h", + "src/compiler/turboshaft/dead-code-elimination-reducer.h", "src/compiler/turboshaft/decompression-optimization.cc", "src/compiler/turboshaft/decompression-optimization.h", "src/compiler/turboshaft/deopt-data.h", @@ -2891,9 +2911,15 @@ filegroup( "src/compiler/turboshaft/graph-builder.h", "src/compiler/turboshaft/graph.cc", "src/compiler/turboshaft/graph.h", + "src/compiler/turboshaft/index.h", "src/compiler/turboshaft/graph-visualizer.cc", "src/compiler/turboshaft/graph-visualizer.h", + "src/compiler/turboshaft/late-escape-analysis-reducer.h", + "src/compiler/turboshaft/late-escape-analysis-reducer.cc", + "src/compiler/turboshaft/layered-hash-map.h", "src/compiler/turboshaft/machine-optimization-reducer.h", + "src/compiler/turboshaft/memory-optimization.cc", + "src/compiler/turboshaft/memory-optimization.h", "src/compiler/turboshaft/operations.cc", "src/compiler/turboshaft/operations.h", "src/compiler/turboshaft/operation-matching.h", @@ -2901,6 +2927,7 @@ filegroup( "src/compiler/turboshaft/optimization-phase.h", "src/compiler/turboshaft/recreate-schedule.cc", "src/compiler/turboshaft/recreate-schedule.h", + "src/compiler/turboshaft/reducer-traits.h", "src/compiler/turboshaft/representations.cc", "src/compiler/turboshaft/representations.h", "src/compiler/turboshaft/select-lowering-reducer.h", @@ -2908,9 +2935,17 @@ filegroup( "src/compiler/turboshaft/simplify-tf-loops.cc", "src/compiler/turboshaft/simplify-tf-loops.h", "src/compiler/turboshaft/snapshot-table.h", + "src/compiler/turboshaft/type-inference-reducer.h", + "src/compiler/turboshaft/type-parser.cc", + "src/compiler/turboshaft/type-parser.h", + "src/compiler/turboshaft/typed-optimizations-reducer.h", + "src/compiler/turboshaft/types.cc", + "src/compiler/turboshaft/types.h", + "src/compiler/turboshaft/uniform-reducer-adapter.h", "src/compiler/turboshaft/utils.cc", "src/compiler/turboshaft/utils.h", "src/compiler/turboshaft/value-numbering-reducer.h", + "src/compiler/turboshaft/variable-reducer.h", "src/compiler/type-cache.cc", "src/compiler/type-cache.h", "src/compiler/type-narrowing-reducer.cc", @@ -2933,11 +2968,15 @@ filegroup( ":is_v8_enable_webassembly": [ "src/compiler/int64-lowering.cc", "src/compiler/int64-lowering.h", + "src/compiler/wasm-call-descriptors.cc", + "src/compiler/wasm-call-descriptors.h", "src/compiler/wasm-compiler-definitions.h", "src/compiler/wasm-compiler.cc", "src/compiler/wasm-compiler.h", "src/compiler/wasm-escape-analysis.cc", "src/compiler/wasm-escape-analysis.h", + "src/compiler/wasm-load-elimination.cc", + "src/compiler/wasm-load-elimination.h", "src/compiler/wasm-loop-peeling.cc", "src/compiler/wasm-loop-peeling.h", "src/compiler/wasm-gc-lowering.cc", @@ -2976,6 +3015,7 @@ filegroup( "src/builtins/builtins-constructor.h", "src/builtins/builtins-conversion-gen.cc", "src/builtins/builtins-data-view-gen.h", + "src/builtins/builtins-data-view-gen.cc", "src/builtins/builtins-date-gen.cc", "src/builtins/builtins-generator-gen.cc", "src/builtins/builtins-global-gen.cc", @@ -2990,6 +3030,7 @@ filegroup( "src/builtins/builtins-microtask-queue-gen.cc", "src/builtins/builtins-number-gen.cc", "src/builtins/builtins-object-gen.cc", + "src/builtins/builtins-object-gen.h", "src/builtins/builtins-promise-gen.cc", "src/builtins/builtins-promise-gen.h", "src/builtins/builtins-proxy-gen.cc", @@ -3160,16 +3201,16 @@ filegroup( # Note these cannot be v8_target_is_* selects because these contain # inline assembly that runs inside the executable. Since these are # linked directly into mksnapshot, they must use the actual target cpu. - "@v8//bazel/config:is_inline_asm_ia32": ["src/heap/base/asm/ia32/save_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_x64": ["src/heap/base/asm/x64/save_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_arm": ["src/heap/base/asm/arm/save_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_arm64": ["src/heap/base/asm/arm64/save_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_s390x": ["src/heap/base/asm/s390/save_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_riscv64": ["src/heap/base/asm/riscv64/save_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_ppc64le": ["src/heap/base/asm/ppc/save_registers_asm.cc"], - "@v8//bazel/config:is_msvc_asm_ia32": ["src/heap/base/asm/ia32/save_registers_masm.asm"], - "@v8//bazel/config:is_msvc_asm_x64": ["src/heap/base/asm/x64/save_registers_masm.asm"], - "@v8//bazel/config:is_msvc_asm_arm64": ["src/heap/base/asm/arm64/save_registers_masm.S"], + "@v8//bazel/config:is_inline_asm_ia32": ["src/heap/base/asm/ia32/push_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_x64": ["src/heap/base/asm/x64/push_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_arm": ["src/heap/base/asm/arm/push_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_arm64": ["src/heap/base/asm/arm64/push_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_s390x": ["src/heap/base/asm/s390/push_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_riscv64": ["src/heap/base/asm/riscv64/push_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_ppc64le": ["src/heap/base/asm/ppc/push_registers_asm.cc"], + "@v8//bazel/config:is_msvc_asm_ia32": ["src/heap/base/asm/ia32/push_registers_masm.asm"], + "@v8//bazel/config:is_msvc_asm_x64": ["src/heap/base/asm/x64/push_registers_masm.asm"], + "@v8//bazel/config:is_msvc_asm_arm64": ["src/heap/base/asm/arm64/push_registers_masm.S"], }), ) @@ -3215,6 +3256,8 @@ filegroup( "src/snapshot/embedded/platform-embedded-file-writer-mac.h", "src/snapshot/embedded/platform-embedded-file-writer-win.cc", "src/snapshot/embedded/platform-embedded-file-writer-win.h", + "src/snapshot/static-roots-gen.cc", + "src/snapshot/static-roots-gen.h", "src/snapshot/mksnapshot.cc", "src/snapshot/snapshot-empty.cc", ], @@ -3223,6 +3266,8 @@ filegroup( filegroup( name = "v8_inspector_files", srcs = [ + "src/inspector/crc32.cc", + "src/inspector/crc32.h", "src/inspector/custom-preview.cc", "src/inspector/custom-preview.h", "src/inspector/injected-script.cc", @@ -3249,6 +3294,8 @@ filegroup( "src/inspector/v8-debugger.h", "src/inspector/v8-debugger-agent-impl.cc", "src/inspector/v8-debugger-agent-impl.h", + "src/inspector/v8-debugger-barrier.cc", + "src/inspector/v8-debugger-barrier.h", "src/inspector/v8-debugger-id.cc", "src/inspector/v8-debugger-id.h", "src/inspector/v8-debugger-script.cc", @@ -3549,12 +3596,14 @@ v8_mksnapshot( cc_library( name = "icu/generated_torque_headers", hdrs = [":icu/generated_torque_files"], + copts = ["-Wno-implicit-fallthrough"], strip_include_prefix = "icu", ) cc_library( name = "noicu/generated_torque_headers", hdrs = [":noicu/generated_torque_files"], + copts = ["-Wno-implicit-fallthrough"], strip_include_prefix = "noicu", ) @@ -3564,6 +3613,7 @@ v8_library( ":v8_libbase_files", ":v8_shared_internal_headers", ], + copts = ["-Wno-implicit-fallthrough"], ) cc_library( @@ -3572,6 +3622,7 @@ cc_library( "src/torque/kythe-data.h", "src/torque/torque-compiler.h", ], + copts = ["-Wno-implicit-fallthrough"], include_prefix = "third_party/v8", includes = ["."], ) @@ -3581,7 +3632,7 @@ cc_library( srcs = [ ":torque_base_files", ], - copts = select({ + copts = ["-Wno-implicit-fallthrough"] + select({ "@v8//bazel/config:is_posix": ["-fexceptions"], "//conditions:default": [], }), @@ -3598,6 +3649,7 @@ v8_library( ":v8_base_without_compiler_files", ":v8_common_libshared_files", ], + copts = ["-Wno-implicit-fallthrough"], icu_deps = [ ":icu/generated_torque_headers", "//external:icu", @@ -3623,6 +3675,7 @@ v8_library( name = "v8", srcs = [":v8_inspector_files"], hdrs = [":public_header_files"], + copts = ["-Wno-implicit-fallthrough"], icu_deps = [":icu/v8_libshared"], icu_srcs = [":icu/snapshot_files"], noicu_deps = [":noicu/v8_libshared"], @@ -3635,6 +3688,7 @@ v8_library( name = "wee8", srcs = [":wee8_files"], hdrs = [":public_wasm_c_api_header_files"], + copts = ["-Wno-implicit-fallthrough"], strip_include_prefix = "third_party", visibility = ["//visibility:public"], deps = [":noicu/v8"], @@ -3664,6 +3718,7 @@ v8_binary( "src/interpreter/bytecodes.cc", "src/interpreter/bytecodes.h", ], + copts = ["-Wno-implicit-fallthrough"], deps = ["v8_libbase"], ) @@ -3675,6 +3730,7 @@ v8_binary( ":v8_libbase_files", ":v8_shared_internal_headers", ], + copts = ["-Wno-implicit-fallthrough"], defines = [ "V8_INTL_SUPPORT", "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC", @@ -3693,7 +3749,7 @@ v8_binary( "src/torque/torque.cc", ":torque_base_files", ], - copts = select({ + copts = ["-Wno-implicit-fallthrough"] + select({ "@v8//bazel/config:is_posix": ["-fexceptions"], "//conditions:default": [], }), @@ -3708,6 +3764,7 @@ v8_binary( v8_binary( name = "mksnapshot", srcs = [":mksnapshot_files"], + copts = ["-Wno-implicit-fallthrough"], icu_deps = [":icu/v8_libshared"], linkopts = select({ "@v8//bazel/config:is_android": ["-llog"], @@ -3719,6 +3776,7 @@ v8_binary( v8_binary( name = "d8", srcs = [":d8_files"], + copts = ["-Wno-implicit-fallthrough"], icu_deps = [":icu/v8"], noicu_deps = [":noicu/v8"], ) diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 78fd8cd2d38790..316bcb4d3c7c81 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -10,10 +10,6 @@ import("//build/config/mips.gni") import("//build/config/sanitizers/sanitizers.gni") import("//build_overrides/build.gni") -if (is_android) { - import("//build/config/android/rules.gni") -} - import("gni/snapshot_toolchain.gni") import("gni/v8.gni") @@ -120,6 +116,9 @@ declare_args() { # as per the --native-code-counters flag. v8_enable_snapshot_native_code_counters = "" + # Use pre-generated static root pointer values from static-roots.h. + v8_enable_static_roots = "" + # Enable code-generation-time checking of types in the CodeStubAssembler. v8_enable_verify_csa = false @@ -204,10 +203,6 @@ declare_args() { # Sets -dV8_EXTERNAL_CODE_SPACE v8_enable_external_code_space = "" - # Enable the Maglev compiler. - # Sets -dV8_ENABLE_MAGLEV - v8_enable_maglev = "" - # With post mortem support enabled, metadata is embedded into libv8 that # describes various parameters of the VM for use by debuggers. See # tools/gen-postmortem-metadata.py for details. @@ -310,9 +305,6 @@ declare_args() { # Sets -DV8_ENABLE_SANDBOX. v8_enable_sandbox = "" - # Enable all available sandbox features. Implies v8_enable_sandbox. - v8_enable_sandbox_future = false - # Expose the memory corruption API to JavaScript. Useful for testing the sandbox. # WARNING This will expose builtins that (by design) cause memory corruption. # Sets -DV8_EXPOSE_MEMORY_CORRUPTION_API @@ -376,6 +368,9 @@ declare_args() { # Compile V8 using zlib as dependency. # Sets -DV8_USE_ZLIB v8_use_zlib = true + + # Make ValueDeserializer crash if the data to deserialize is invalid. + v8_value_deserializer_hard_fail = false } # Derived defaults. @@ -459,17 +454,35 @@ if (v8_enable_external_code_space == "") { (target_os != "fuchsia" && v8_current_cpu == "arm64")) } if (v8_enable_maglev == "") { - v8_enable_maglev = v8_current_cpu == "x64" && v8_enable_pointer_compression + v8_enable_maglev = v8_enable_turbofan && + (v8_current_cpu == "x64" || v8_current_cpu == "arm64") && + v8_enable_pointer_compression } +assert(v8_enable_turbofan || !v8_enable_maglev, + "Maglev is not available when Turbofan is disabled.") + if (v8_builtins_profiling_log_file == "default") { v8_builtins_profiling_log_file = "" - if (is_debug == false) { - if (v8_current_cpu == "x64") { + + # Don't use existing profile when + # * generating a new one (i.e. v8_enable_builtins_profiling), + # * is_debug or dcheck_always_on because they add more checks to the + # builtins control flow which we don't want to generate, + # * v8_enable_webassembly because it changes the set of opcodes which affects + # graphs hashes, + # * !is_clang because it might affect argument evaluation order, which + # makes node IDs not predictable for subgraphs like Op1(Op2(), Op3()) and + # as a result different graph hash. + if (!v8_enable_builtins_profiling && is_clang && !is_debug && + !dcheck_always_on && v8_enable_webassembly) { + if ((v8_current_cpu == "x64" || v8_current_cpu == "arm64") && + v8_enable_pointer_compression && v8_enable_external_code_space) { + # Note, currently x64 profile can be applied to arm64 but not the other + # way round. v8_builtins_profiling_log_file = "tools/builtins-pgo/x64.profile" - } else if (v8_current_cpu == "arm64") { - v8_builtins_profiling_log_file = "tools/builtins-pgo/arm64.profile" - } else if (v8_current_cpu == "arm") { - v8_builtins_profiling_log_file = "tools/builtins-pgo/arm.profile" + } else if (v8_current_cpu == "x86" || v8_current_cpu == "arm") { + # Note, x86 profile can be applied to arm but not the other way round. + v8_builtins_profiling_log_file = "tools/builtins-pgo/x86.profile" } } } @@ -500,6 +513,10 @@ assert(!v8_enable_trace_ignition || v8_enable_trace_unoptimized, "Ignition tracing requires unoptimized tracing to be enabled.") assert(!v8_enable_trace_baseline_exec || v8_enable_trace_unoptimized, "Baseline tracing requires unoptimized tracing to be enabled.") +assert( + v8_enable_debugging_features == true || dcheck_always_on || + !v8_enable_slow_dchecks, + "v8_enable_slow_dchecks requires v8_enable_debugging_features or dcheck_always_on.") if (v8_enable_short_builtin_calls && (!v8_enable_pointer_compression && v8_current_cpu != "x64")) { @@ -522,9 +539,29 @@ if (v8_enable_sandbox == "") { v8_enable_external_code_space && target_os != "fuchsia" } -# Enable all available sandbox features if sandbox future is enabled. -if (v8_enable_sandbox_future) { - v8_enable_sandbox = true +if (v8_enable_static_roots == "") { + # Static roots are only valid for builds with pointer compression and a + # shared read-only heap. + # TODO(olivf, v8:13466) Some configurations could be supported if we + # introduce different static root files for different build configurations: + # Non-wasm and non-i18n builds have fewer read only roots. Configurations + # without external code space allocate read only roots at a further + # location relative to the cage base. + v8_enable_static_roots = + v8_enable_pointer_compression && v8_enable_shared_ro_heap && + v8_enable_pointer_compression_shared_cage && + v8_enable_external_code_space && v8_enable_webassembly && + v8_enable_i18n_support +} + +assert(!v8_enable_static_roots || + (v8_enable_pointer_compression && v8_enable_shared_ro_heap && + v8_enable_pointer_compression_shared_cage && + v8_enable_webassembly && v8_enable_i18n_support), + "Trying to enable static roots in a configuration that is not supported") + +if (v8_enable_webassembly && !target_is_simulator && v8_current_cpu == "x64") { + v8_enable_wasm_simd256_revec = true } assert(!v8_disable_write_barriers || v8_enable_single_generation, @@ -567,8 +604,9 @@ assert( assert( !v8_enable_pointer_compression_shared_cage || v8_current_cpu == "x64" || - v8_current_cpu == "arm64" || v8_current_cpu == "riscv64", - "Sharing a pointer compression cage is only supported on x64,arm64 and riscv64") + v8_current_cpu == "arm64" || v8_current_cpu == "riscv64" || + v8_current_cpu == "ppc64", + "Sharing a pointer compression cage is only supported on x64,arm64, ppc64 and riscv64") assert(!v8_enable_unconditional_write_barriers || !v8_disable_write_barriers, "Write barriers can't be both enabled and disabled") @@ -800,6 +838,7 @@ config("v8_header_features") { external_cppgc_defines = [ "CPPGC_SUPPORTS_OBJECT_NAMES", "CPPGC_CAGED_HEAP", + "CPPGC_SLIM_WRITE_BARRIER", "CPPGC_YOUNG_GENERATION", "CPPGC_POINTER_COMPRESSION", ] @@ -829,6 +868,9 @@ if (cppgc_enable_pointer_compression) { if (cppgc_enable_2gb_cage) { enabled_external_cppgc_defines += [ "CPPGC_2GB_CAGE" ] } +if (cppgc_enable_slim_write_barrier) { + enabled_external_cppgc_defines += [ "CPPGC_SLIM_WRITE_BARRIER" ] +} disabled_external_cppgc_defines = external_cppgc_defines - enabled_external_cppgc_defines @@ -1010,6 +1052,9 @@ config("features") { if (v8_enable_maglev) { defines += [ "V8_ENABLE_MAGLEV" ] } + if (v8_enable_turbofan) { + defines += [ "V8_ENABLE_TURBOFAN" ] + } if (v8_enable_swiss_name_dictionary) { defines += [ "V8_ENABLE_SWISS_NAME_DICTIONARY" ] } @@ -1052,9 +1097,21 @@ config("features") { if (v8_enable_pointer_compression_8gb) { defines += [ "V8_COMPRESS_POINTERS_8GB" ] } + if (v8_enable_static_roots) { + defines += [ "V8_STATIC_ROOTS" ] + } if (v8_use_zlib) { defines += [ "V8_USE_ZLIB" ] } + if (v8_use_libm_trig_functions) { + defines += [ "V8_USE_LIBM_TRIG_FUNCTIONS" ] + } + if (v8_value_deserializer_hard_fail) { + defines += [ "V8_VALUE_DESERIALIZER_HARD_FAIL" ] + } + if (v8_enable_wasm_simd256_revec) { + defines += [ "V8_ENABLE_WASM_SIMD256_REVEC" ] + } } config("toolchain") { @@ -1251,13 +1308,12 @@ config("toolchain") { if ((is_linux || is_chromeos) && v8_enable_backtrace) { ldflags += [ "-rdynamic" ] } - + } + if (v8_enable_debugging_features || dcheck_always_on) { defines += [ "DEBUG" ] if (v8_enable_slow_dchecks) { defines += [ "ENABLE_SLOW_DCHECKS" ] } - } else if (dcheck_always_on) { - defines += [ "DEBUG" ] } if (v8_enable_verify_csa) { @@ -1556,108 +1612,95 @@ template("asm_to_inline_asm") { } } -if (is_android && enable_java_templates) { - android_assets("v8_external_startup_data_assets") { - if (v8_use_external_startup_data) { - deps = [ "//v8" ] - renaming_sources = [ "$root_out_dir/snapshot_blob.bin" ] - if (current_cpu == "arm" || current_cpu == "x86") { - renaming_destinations = [ "snapshot_blob_32.bin" ] - } else { - renaming_destinations = [ "snapshot_blob_64.bin" ] - } - disable_compression = true - } - } -} - -action("postmortem-metadata") { - # Only targets in this file and the top-level visibility target can - # depend on this. - visibility = [ - ":*", - "//:gn_visibility", - ] - - script = "tools/gen-postmortem-metadata.py" - - # NOSORT - sources = [ - "$target_gen_dir/torque-generated/instance-types.h", - "src/objects/allocation-site.h", - "src/objects/allocation-site-inl.h", - "src/objects/cell.h", - "src/objects/cell-inl.h", - "src/objects/code.h", - "src/objects/code-inl.h", - "src/objects/data-handler.h", - "src/objects/data-handler-inl.h", - "src/objects/descriptor-array.h", - "src/objects/descriptor-array-inl.h", - "src/objects/feedback-cell.h", - "src/objects/feedback-cell-inl.h", - "src/objects/fixed-array.h", - "src/objects/fixed-array-inl.h", - "src/objects/heap-number.h", - "src/objects/heap-number-inl.h", - "src/objects/heap-object.h", - "src/objects/heap-object-inl.h", - "src/objects/instance-type.h", - "src/objects/js-array-buffer.h", - "src/objects/js-array-buffer-inl.h", - "src/objects/js-array.h", - "src/objects/js-array-inl.h", - "src/objects/js-function-inl.h", - "src/objects/js-function.cc", - "src/objects/js-function.h", - "src/objects/js-objects.cc", - "src/objects/js-objects.h", - "src/objects/js-objects-inl.h", - "src/objects/js-promise.h", - "src/objects/js-promise-inl.h", - "src/objects/js-raw-json.cc", - "src/objects/js-raw-json.h", - "src/objects/js-raw-json-inl.h", - "src/objects/js-regexp.cc", - "src/objects/js-regexp.h", - "src/objects/js-regexp-inl.h", - "src/objects/js-regexp-string-iterator.h", - "src/objects/js-regexp-string-iterator-inl.h", - "src/objects/map.cc", - "src/objects/map.h", - "src/objects/map-inl.h", - "src/objects/megadom-handler.h", - "src/objects/megadom-handler-inl.h", - "src/objects/name.h", - "src/objects/name-inl.h", - "src/objects/objects.h", - "src/objects/objects-inl.h", - "src/objects/oddball.h", - "src/objects/oddball-inl.h", - "src/objects/primitive-heap-object.h", - "src/objects/primitive-heap-object-inl.h", - "src/objects/scope-info.h", - "src/objects/scope-info-inl.h", - "src/objects/script.h", - "src/objects/script-inl.h", - "src/objects/shared-function-info.cc", - "src/objects/shared-function-info.h", - "src/objects/shared-function-info-inl.h", - "src/objects/string.cc", - "src/objects/string-comparator.cc", - "src/objects/string-comparator.h", - "src/objects/string.h", - "src/objects/string-inl.h", - "src/objects/struct.h", - "src/objects/struct-inl.h", - ] - - outputs = [ "$target_gen_dir/debug-support.cc" ] +if (v8_postmortem_support) { + action("postmortem-metadata") { + # Only targets in this file and the top-level visibility target can + # depend on this. + visibility = [ + ":*", + "//:gn_visibility", + ] - args = rebase_path(outputs, root_build_dir) + - rebase_path(sources, root_build_dir) + script = "tools/gen-postmortem-metadata.py" - deps = [ ":run_torque" ] + # NOSORT + sources = [ + "$target_gen_dir/torque-generated/instance-types.h", + "src/objects/allocation-site.h", + "src/objects/allocation-site-inl.h", + "src/objects/cell.h", + "src/objects/cell-inl.h", + "src/objects/code.h", + "src/objects/code-inl.h", + "src/objects/data-handler.h", + "src/objects/data-handler-inl.h", + "src/objects/descriptor-array.h", + "src/objects/descriptor-array-inl.h", + "src/objects/feedback-cell.h", + "src/objects/feedback-cell-inl.h", + "src/objects/fixed-array.h", + "src/objects/fixed-array-inl.h", + "src/objects/heap-number.h", + "src/objects/heap-number-inl.h", + "src/objects/heap-object.h", + "src/objects/heap-object-inl.h", + "src/objects/instance-type.h", + "src/objects/js-array-buffer.h", + "src/objects/js-array-buffer-inl.h", + "src/objects/js-array.h", + "src/objects/js-array-inl.h", + "src/objects/js-function-inl.h", + "src/objects/js-function.cc", + "src/objects/js-function.h", + "src/objects/js-objects.cc", + "src/objects/js-objects.h", + "src/objects/js-objects-inl.h", + "src/objects/js-promise.h", + "src/objects/js-promise-inl.h", + "src/objects/js-raw-json.cc", + "src/objects/js-raw-json.h", + "src/objects/js-raw-json-inl.h", + "src/objects/js-regexp.cc", + "src/objects/js-regexp.h", + "src/objects/js-regexp-inl.h", + "src/objects/js-regexp-string-iterator.h", + "src/objects/js-regexp-string-iterator-inl.h", + "src/objects/map.cc", + "src/objects/map.h", + "src/objects/map-inl.h", + "src/objects/megadom-handler.h", + "src/objects/megadom-handler-inl.h", + "src/objects/name.h", + "src/objects/name-inl.h", + "src/objects/objects.h", + "src/objects/objects-inl.h", + "src/objects/oddball.h", + "src/objects/oddball-inl.h", + "src/objects/primitive-heap-object.h", + "src/objects/primitive-heap-object-inl.h", + "src/objects/scope-info.h", + "src/objects/scope-info-inl.h", + "src/objects/script.h", + "src/objects/script-inl.h", + "src/objects/shared-function-info.cc", + "src/objects/shared-function-info.h", + "src/objects/shared-function-info-inl.h", + "src/objects/string.cc", + "src/objects/string-comparator.cc", + "src/objects/string-comparator.h", + "src/objects/string.h", + "src/objects/string-inl.h", + "src/objects/struct.h", + "src/objects/struct-inl.h", + ] + + outputs = [ "$target_gen_dir/debug-support.cc" ] + + args = rebase_path(outputs, root_build_dir) + + rebase_path(sources, root_build_dir) + + deps = [ ":run_torque" ] + } } torque_files = [ @@ -1756,6 +1799,7 @@ torque_files = [ "src/builtins/string-html.tq", "src/builtins/string-includes.tq", "src/builtins/string-indexof.tq", + "src/builtins/string-iswellformed.tq", "src/builtins/string-iterator.tq", "src/builtins/string-match-search.tq", "src/builtins/string-pad.tq", @@ -1765,6 +1809,7 @@ torque_files = [ "src/builtins/string-startswith.tq", "src/builtins/string-substr.tq", "src/builtins/string-substring.tq", + "src/builtins/string-towellformed.tq", "src/builtins/string-trim.tq", "src/builtins/symbol.tq", "src/builtins/torque-internal.tq", @@ -1860,6 +1905,7 @@ torque_files = [ "src/objects/templates.tq", "src/objects/torque-defined-classes.tq", "src/objects/turbofan-types.tq", + "src/objects/turboshaft-types.tq", "test/torque/test-torque.tq", "third_party/v8/builtins/array-sort.tq", ] @@ -2114,12 +2160,6 @@ template("run_mksnapshot") { suffix = "_$name" } action("run_mksnapshot_" + name) { - # Only targets in this file and running mkgrokdump can depend on this. - visibility = [ - ":*", - "tools/debug_helper:run_mkgrokdump", - ] - deps = [ ":mksnapshot($v8_snapshot_toolchain)" ] script = "tools/run.py" @@ -2159,6 +2199,12 @@ template("run_mksnapshot") { "--turbo-profiling-input", rebase_path(v8_builtins_profiling_log_file, root_build_dir), ] + + # Replace this with --warn-about-builtin-profile-data to see the full + # list of builtins with incompatible profiles. + # TODO(crbug.com/v8/13647): Do not fail for invalid profiles + # args += [ "--abort-on-bad-builtin-profile-data" ] + args += [ "--warn-about-builtin-profile-data" ] } # This is needed to distinguish between generating code for the simulator @@ -2257,6 +2303,7 @@ action("v8_dump_build_config") { script = "tools/testrunner/utils/dump_build_config.py" outputs = [ "$root_out_dir/v8_build_config.json" ] is_gcov_coverage = v8_code_coverage && !is_clang + is_DEBUG_defined = v8_enable_debugging_features || dcheck_always_on is_full_debug = v8_enable_debugging_features && !v8_optimized_debug args = [ rebase_path("$root_out_dir/v8_build_config.json", root_build_dir), @@ -2268,35 +2315,45 @@ action("v8_dump_build_config") { "is_clang=$is_clang", "is_component_build=$is_component_build", "is_debug=$v8_enable_debugging_features", + "is_DEBUG_defined=$is_DEBUG_defined", "is_full_debug=$is_full_debug", "is_gcov_coverage=$is_gcov_coverage", "is_msan=$is_msan", "is_tsan=$is_tsan", "is_ubsan_vptr=$is_ubsan_vptr", "target_cpu=\"$target_cpu\"", + "v8_code_comments=$v8_code_comments", + "v8_control_flow_integrity=$v8_control_flow_integrity", "v8_current_cpu=\"$v8_current_cpu\"", + "v8_dict_property_const_tracking=$v8_dict_property_const_tracking", + "v8_disable_write_barriers=$v8_disable_write_barriers", "v8_enable_atomic_object_field_writes=" + "$v8_enable_atomic_object_field_writes", + "v8_enable_cet_shadow_stack=$v8_enable_cet_shadow_stack", + "v8_enable_concurrent_marking=$v8_enable_concurrent_marking", "v8_enable_conservative_stack_scanning=" + "$v8_enable_conservative_stack_scanning", - "v8_enable_concurrent_marking=$v8_enable_concurrent_marking", - "v8_enable_single_generation=$v8_enable_single_generation", + "v8_enable_debug_code=$v8_enable_debug_code", + "v8_enable_disassembler=$v8_enable_disassembler", + "v8_enable_gdbjit=$v8_enable_gdbjit", "v8_enable_i18n_support=$v8_enable_i18n_support", - "v8_enable_verify_predictable=$v8_enable_verify_predictable", - "v8_enable_verify_csa=$v8_enable_verify_csa", "v8_enable_lite_mode=$v8_enable_lite_mode", - "v8_enable_runtime_call_stats=$v8_enable_runtime_call_stats", + "v8_enable_maglev=$v8_enable_maglev", "v8_enable_pointer_compression=$v8_enable_pointer_compression", "v8_enable_pointer_compression_shared_cage=" + "$v8_enable_pointer_compression_shared_cage", + "v8_enable_runtime_call_stats=$v8_enable_runtime_call_stats", "v8_enable_sandbox=$v8_enable_sandbox", "v8_enable_shared_ro_heap=$v8_enable_shared_ro_heap", + "v8_enable_single_generation=$v8_enable_single_generation", + "v8_enable_slow_dchecks=$v8_enable_slow_dchecks", "v8_enable_third_party_heap=$v8_enable_third_party_heap", + "v8_enable_turbofan=$v8_enable_turbofan", + "v8_enable_verify_csa=$v8_enable_verify_csa", + "v8_enable_verify_heap=$v8_enable_verify_heap", + "v8_enable_verify_predictable=$v8_enable_verify_predictable", "v8_enable_webassembly=$v8_enable_webassembly", - "v8_dict_property_const_tracking=$v8_dict_property_const_tracking", - "v8_control_flow_integrity=$v8_control_flow_integrity", "v8_target_cpu=\"$v8_target_cpu\"", - "v8_enable_cet_shadow_stack=$v8_enable_cet_shadow_stack", ] if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { @@ -2317,6 +2374,7 @@ v8_source_set("v8_snapshot") { deps = [ ":v8_internal_headers", ":v8_libbase", + ":v8_tracing", ] public_deps = [ # This should be public so downstream targets can declare the snapshot @@ -2388,6 +2446,7 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-constructor-gen.h", "src/builtins/builtins-constructor.h", "src/builtins/builtins-conversion-gen.cc", + "src/builtins/builtins-data-view-gen.cc", "src/builtins/builtins-data-view-gen.h", "src/builtins/builtins-date-gen.cc", "src/builtins/builtins-generator-gen.cc", @@ -2404,6 +2463,7 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-microtask-queue-gen.cc", "src/builtins/builtins-number-gen.cc", "src/builtins/builtins-object-gen.cc", + "src/builtins/builtins-object-gen.h", "src/builtins/builtins-promise-gen.cc", "src/builtins/builtins-promise-gen.h", "src/builtins/builtins-proxy-gen.cc", @@ -2454,57 +2514,57 @@ v8_source_set("v8_initializers") { if (v8_current_cpu == "x86") { sources += [ - ### gcmole(arch:ia32) ### + ### gcmole(ia32) ### "src/builtins/ia32/builtins-ia32.cc", ] } else if (v8_current_cpu == "x64") { sources += [ - ### gcmole(arch:x64) ### + ### gcmole(x64) ### "src/builtins/x64/builtins-x64.cc", ] } else if (v8_current_cpu == "arm") { sources += [ - ### gcmole(arch:arm) ### + ### gcmole(arm) ### "src/builtins/arm/builtins-arm.cc", ] } else if (v8_current_cpu == "arm64") { sources += [ - ### gcmole(arch:arm64) ### + ### gcmole(arm64) ### "src/builtins/arm64/builtins-arm64.cc", ] } else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { sources += [ - ### gcmole(arch:mips64el) ### + ### gcmole(mips64el) ### "src/builtins/mips64/builtins-mips64.cc", ] } else if (v8_current_cpu == "loong64") { sources += [ - ### gcmole(arch:loong64) ### + ### gcmole(loong64) ### "src/builtins/loong64/builtins-loong64.cc", ] } else if (v8_current_cpu == "ppc") { sources += [ - ### gcmole(arch:ppc) ### + ### gcmole(ppc) ### "src/builtins/ppc/builtins-ppc.cc", ] } else if (v8_current_cpu == "ppc64") { sources += [ - ### gcmole(arch:ppc64) ### + ### gcmole(ppc64) ### "src/builtins/ppc/builtins-ppc.cc", ] } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { sources += [ - ### gcmole(arch:s390) ### + ### gcmole(s390) ### "src/builtins/s390/builtins-s390.cc", ] } else if (v8_current_cpu == "riscv64") { sources += [ - ### gcmole(arch:riscv64) ### + ### gcmole(riscv64) ### "src/builtins/riscv/builtins-riscv.cc", ] } else if (v8_current_cpu == "riscv32") { sources += [ - ### gcmole(arch:riscv32) ### + ### gcmole(riscv32) ### "src/builtins/riscv/builtins-riscv.cc", ] } @@ -2928,25 +2988,40 @@ v8_header_set("v8_internal_headers") { "src/compiler/simplified-operator.h", "src/compiler/state-values-utils.h", "src/compiler/store-store-elimination.h", + "src/compiler/turbofan.h", "src/compiler/turboshaft/assembler.h", + "src/compiler/turboshaft/assert-types-reducer.h", + "src/compiler/turboshaft/branch-elimination-reducer.h", + "src/compiler/turboshaft/dead-code-elimination-reducer.h", "src/compiler/turboshaft/decompression-optimization.h", "src/compiler/turboshaft/deopt-data.h", "src/compiler/turboshaft/fast-hash.h", "src/compiler/turboshaft/graph-builder.h", "src/compiler/turboshaft/graph-visualizer.h", "src/compiler/turboshaft/graph.h", + "src/compiler/turboshaft/index.h", + "src/compiler/turboshaft/late-escape-analysis-reducer.h", + "src/compiler/turboshaft/layered-hash-map.h", "src/compiler/turboshaft/machine-optimization-reducer.h", + "src/compiler/turboshaft/memory-optimization.h", "src/compiler/turboshaft/operation-matching.h", "src/compiler/turboshaft/operations.h", "src/compiler/turboshaft/optimization-phase.h", "src/compiler/turboshaft/recreate-schedule.h", + "src/compiler/turboshaft/reducer-traits.h", "src/compiler/turboshaft/representations.h", "src/compiler/turboshaft/select-lowering-reducer.h", "src/compiler/turboshaft/sidetable.h", "src/compiler/turboshaft/simplify-tf-loops.h", "src/compiler/turboshaft/snapshot-table.h", + "src/compiler/turboshaft/type-inference-reducer.h", + "src/compiler/turboshaft/type-parser.h", + "src/compiler/turboshaft/typed-optimizations-reducer.h", + "src/compiler/turboshaft/types.h", + "src/compiler/turboshaft/uniform-reducer-adapater.h", "src/compiler/turboshaft/utils.h", "src/compiler/turboshaft/value-numbering-reducer.h", + "src/compiler/turboshaft/variable-reducer.h", "src/compiler/type-cache.h", "src/compiler/type-narrowing-reducer.h", "src/compiler/typed-optimization.h", @@ -3057,12 +3132,13 @@ v8_header_set("v8_internal_headers") { "src/heap/cppgc-js/cpp-marking-state-inl.h", "src/heap/cppgc-js/cpp-marking-state.h", "src/heap/cppgc-js/cpp-snapshot.h", + "src/heap/cppgc-js/cross-heap-remembered-set.h", "src/heap/cppgc-js/unified-heap-marking-state-inl.h", "src/heap/cppgc-js/unified-heap-marking-state.h", "src/heap/cppgc-js/unified-heap-marking-verifier.h", "src/heap/cppgc-js/unified-heap-marking-visitor.h", - "src/heap/embedder-tracing-inl.h", - "src/heap/embedder-tracing.h", + "src/heap/cppgc-js/wrappable-info-inl.h", + "src/heap/cppgc-js/wrappable-info.h", "src/heap/evacuation-allocator-inl.h", "src/heap/evacuation-allocator.h", "src/heap/evacuation-verifier-inl.h", @@ -3078,7 +3154,6 @@ v8_header_set("v8_internal_headers") { "src/heap/gc-idle-time-handler.h", "src/heap/gc-tracer-inl.h", "src/heap/gc-tracer.h", - "src/heap/global-handle-marking-visitor.h", "src/heap/heap-allocator-inl.h", "src/heap/heap-allocator.h", "src/heap/heap-controller.h", @@ -3145,6 +3220,7 @@ v8_header_set("v8_internal_headers") { "src/heap/stress-marking-observer.h", "src/heap/stress-scavenge-observer.h", "src/heap/sweeper.h", + "src/heap/traced-handles-marking-visitor.h", "src/heap/weak-object-worklists.h", "src/ic/call-optimization.h", "src/ic/handler-configuration-inl.h", @@ -3406,6 +3482,8 @@ v8_header_set("v8_internal_headers") { "src/objects/transitions.h", "src/objects/turbofan-types-inl.h", "src/objects/turbofan-types.h", + "src/objects/turboshaft-types-inl.h", + "src/objects/turboshaft-types.h", "src/objects/type-hints.h", "src/objects/value-serializer.h", "src/objects/visitors-inl.h", @@ -3473,6 +3551,7 @@ v8_header_set("v8_internal_headers") { "src/regexp/special-case.h", "src/roots/roots-inl.h", "src/roots/roots.h", + "src/roots/static-roots.h", "src/runtime/runtime-utils.h", "src/runtime/runtime.h", "src/sandbox/bounded-size-inl.h", @@ -3595,9 +3674,13 @@ v8_header_set("v8_internal_headers") { "src/maglev/maglev-regalloc-data.h", "src/maglev/maglev-regalloc.h", "src/maglev/maglev-register-frame-array.h", - "src/maglev/maglev-vreg-allocator.h", "src/maglev/maglev.h", ] + if (v8_current_cpu == "arm64") { + sources += [ "src/maglev/arm64/maglev-assembler-arm64-inl.h" ] + } else if (v8_current_cpu == "x64") { + sources += [ "src/maglev/x64/maglev-assembler-x64-inl.h" ] + } } if (v8_enable_webassembly) { @@ -3608,6 +3691,7 @@ v8_header_set("v8_internal_headers") { "src/asmjs/asm-scanner.h", "src/asmjs/asm-types.h", "src/compiler/int64-lowering.h", + "src/compiler/wasm-call-descriptors.h", "src/compiler/wasm-compiler-definitions.h", "src/compiler/wasm-compiler.h", "src/compiler/wasm-escape-analysis.h", @@ -3615,6 +3699,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/wasm-gc-operator-reducer.h", "src/compiler/wasm-graph-assembler.h", "src/compiler/wasm-inlining.h", + "src/compiler/wasm-load-elimination.h", "src/compiler/wasm-loop-peeling.h", "src/compiler/wasm-typer.h", "src/debug/debug-wasm-objects-inl.h", @@ -3684,7 +3769,10 @@ v8_header_set("v8_internal_headers") { } if (v8_enable_wasm_simd256_revec) { - sources += [ "src/compiler/linear-scheduler.h" ] + sources += [ + "src/compiler/linear-scheduler.h", + "src/compiler/revectorizer.h", + ] } if (!v8_enable_third_party_heap) { @@ -3758,7 +3846,8 @@ v8_header_set("v8_internal_headers") { } if (v8_current_cpu == "x86") { - sources += [ ### gcmole(arch:ia32) ### + sources += [ + ### gcmole(ia32) ### "src/baseline/ia32/baseline-assembler-ia32-inl.h", "src/baseline/ia32/baseline-compiler-ia32-inl.h", "src/codegen/ia32/assembler-ia32-inl.h", @@ -3776,7 +3865,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/ia32/liftoff-assembler-ia32.h", ] } else if (v8_current_cpu == "x64") { - sources += [ ### gcmole(arch:x64) ### + sources += [ + ### gcmole(x64) ### "src/baseline/x64/baseline-assembler-x64-inl.h", "src/baseline/x64/baseline-compiler-x64-inl.h", "src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.h", @@ -3812,7 +3902,8 @@ v8_header_set("v8_internal_headers") { } } } else if (v8_current_cpu == "arm") { - sources += [ ### gcmole(arch:arm) ### + sources += [ + ### gcmole(arm) ### "src/baseline/arm/baseline-assembler-arm-inl.h", "src/baseline/arm/baseline-compiler-arm-inl.h", "src/codegen/arm/assembler-arm-inl.h", @@ -3830,7 +3921,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/arm/liftoff-assembler-arm.h", ] } else if (v8_current_cpu == "arm64") { - sources += [ ### gcmole(arch:arm64) ### + sources += [ + ### gcmole(arm64) ### "src/baseline/arm64/baseline-assembler-arm64-inl.h", "src/baseline/arm64/baseline-compiler-arm64-inl.h", "src/codegen/arm64/assembler-arm64-inl.h", @@ -3872,7 +3964,8 @@ v8_header_set("v8_internal_headers") { sources += [ "src/diagnostics/unwinding-info-win64.h" ] } } else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { - sources += [ ### gcmole(arch:mips64el) ### + sources += [ + ### gcmole(mips64el) ### "src/baseline/mips64/baseline-assembler-mips64-inl.h", "src/baseline/mips64/baseline-compiler-mips64-inl.h", "src/codegen/mips64/assembler-mips64-inl.h", @@ -3888,7 +3981,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/mips64/liftoff-assembler-mips64.h", ] } else if (v8_current_cpu == "loong64") { - sources += [ ### gcmole(arch:loong64) ### + sources += [ + ### gcmole(loong64) ### "src/baseline/loong64/baseline-assembler-loong64-inl.h", "src/baseline/loong64/baseline-compiler-loong64-inl.h", "src/codegen/loong64/assembler-loong64-inl.h", @@ -3904,7 +3998,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/loong64/liftoff-assembler-loong64.h", ] } else if (v8_current_cpu == "ppc") { - sources += [ ### gcmole(arch:ppc) ### + sources += [ + ### gcmole(ppc) ### "src/codegen/ppc/assembler-ppc-inl.h", "src/codegen/ppc/assembler-ppc.h", "src/codegen/ppc/constants-ppc.h", @@ -3920,7 +4015,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/ppc/liftoff-assembler-ppc.h", ] } else if (v8_current_cpu == "ppc64") { - sources += [ ### gcmole(arch:ppc64) ### + sources += [ + ### gcmole(ppc64) ### "src/baseline/ppc/baseline-assembler-ppc-inl.h", "src/baseline/ppc/baseline-compiler-ppc-inl.h", "src/codegen/ppc/assembler-ppc-inl.h", @@ -3938,7 +4034,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/ppc/liftoff-assembler-ppc.h", ] } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { - sources += [ ### gcmole(arch:s390) ### + sources += [ + ### gcmole(s390) ### "src/baseline/s390/baseline-assembler-s390-inl.h", "src/baseline/s390/baseline-compiler-s390-inl.h", "src/codegen/s390/assembler-s390-inl.h", @@ -3956,7 +4053,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/s390/liftoff-assembler-s390.h", ] } else if (v8_current_cpu == "riscv64") { - sources += [ ### gcmole(arch:riscv64) ### + sources += [ + ### gcmole(riscv64) ### "src/baseline/riscv/baseline-assembler-riscv-inl.h", "src/baseline/riscv/baseline-compiler-riscv-inl.h", "src/codegen/riscv/assembler-riscv-inl.h", @@ -3995,7 +4093,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/riscv64/liftoff-assembler-riscv64.h", ] } else if (v8_current_cpu == "riscv32") { - sources += [ ### gcmole(arch:riscv32) ### + sources += [ + ### gcmole(riscv32) ### "src/baseline/riscv/baseline-assembler-riscv-inl.h", "src/baseline/riscv/baseline-compiler-riscv-inl.h", "src/codegen/riscv/assembler-riscv.h", @@ -4157,6 +4256,7 @@ v8_compiler_sources = [ "src/compiler/simplified-operator.cc", "src/compiler/state-values-utils.cc", "src/compiler/store-store-elimination.cc", + "src/compiler/turbofan-enabled.cc", "src/compiler/type-cache.cc", "src/compiler/type-narrowing-reducer.cc", "src/compiler/typed-optimization.cc", @@ -4165,30 +4265,122 @@ v8_compiler_sources = [ "src/compiler/value-numbering-reducer.cc", "src/compiler/verifier.cc", "src/compiler/zone-stats.cc", - "src/utils/hex-format.cc", - "src/utils/sha-256.cc", ] +if (v8_current_cpu == "x86") { + v8_compiler_sources += [ + ### gcmole(ia32) ### + "src/compiler/backend/ia32/code-generator-ia32.cc", + "src/compiler/backend/ia32/instruction-scheduler-ia32.cc", + "src/compiler/backend/ia32/instruction-selector-ia32.cc", + ] +} else if (v8_current_cpu == "x64") { + v8_compiler_sources += [ + ### gcmole(x64) ### + "src/compiler/backend/x64/code-generator-x64.cc", + "src/compiler/backend/x64/instruction-scheduler-x64.cc", + "src/compiler/backend/x64/instruction-selector-x64.cc", + "src/compiler/backend/x64/unwinding-info-writer-x64.cc", + ] +} else if (v8_current_cpu == "arm") { + v8_compiler_sources += [ + ### gcmole(arm) ### + "src/compiler/backend/arm/code-generator-arm.cc", + "src/compiler/backend/arm/instruction-scheduler-arm.cc", + "src/compiler/backend/arm/instruction-selector-arm.cc", + "src/compiler/backend/arm/unwinding-info-writer-arm.cc", + ] +} else if (v8_current_cpu == "arm64") { + v8_compiler_sources += [ + ### gcmole(arm64) ### + "src/compiler/backend/arm64/code-generator-arm64.cc", + "src/compiler/backend/arm64/instruction-scheduler-arm64.cc", + "src/compiler/backend/arm64/instruction-selector-arm64.cc", + "src/compiler/backend/arm64/unwinding-info-writer-arm64.cc", + ] +} else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { + v8_compiler_sources += [ + ### gcmole(mips64el) ### + "src/compiler/backend/mips64/code-generator-mips64.cc", + "src/compiler/backend/mips64/instruction-scheduler-mips64.cc", + "src/compiler/backend/mips64/instruction-selector-mips64.cc", + ] +} else if (v8_current_cpu == "loong64") { + v8_compiler_sources += [ + ### gcmole(loong64) ### + "src/compiler/backend/loong64/code-generator-loong64.cc", + "src/compiler/backend/loong64/instruction-scheduler-loong64.cc", + "src/compiler/backend/loong64/instruction-selector-loong64.cc", + ] +} else if (v8_current_cpu == "ppc") { + v8_compiler_sources += [ + ### gcmole(ppc) ### + "src/compiler/backend/ppc/code-generator-ppc.cc", + "src/compiler/backend/ppc/instruction-scheduler-ppc.cc", + "src/compiler/backend/ppc/instruction-selector-ppc.cc", + "src/compiler/backend/ppc/unwinding-info-writer-ppc.cc", + ] +} else if (v8_current_cpu == "ppc64") { + v8_compiler_sources += [ + ### gcmole(ppc64) ### + "src/compiler/backend/ppc/code-generator-ppc.cc", + "src/compiler/backend/ppc/instruction-scheduler-ppc.cc", + "src/compiler/backend/ppc/instruction-selector-ppc.cc", + "src/compiler/backend/ppc/unwinding-info-writer-ppc.cc", + ] +} else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { + v8_compiler_sources += [ + ### gcmole(s390) ### + "src/compiler/backend/s390/code-generator-s390.cc", + "src/compiler/backend/s390/instruction-scheduler-s390.cc", + "src/compiler/backend/s390/instruction-selector-s390.cc", + "src/compiler/backend/s390/unwinding-info-writer-s390.cc", + ] +} else if (v8_current_cpu == "riscv64") { + v8_compiler_sources += [ + ### gcmole(riscv64) ### + "src/compiler/backend/riscv/code-generator-riscv.cc", + "src/compiler/backend/riscv/instruction-scheduler-riscv.cc", + "src/compiler/backend/riscv/instruction-selector-riscv64.cc", + ] +} else if (v8_current_cpu == "riscv32") { + v8_compiler_sources += [ + ### gcmole(riscv32) ### + "src/compiler/backend/riscv/code-generator-riscv.cc", + "src/compiler/backend/riscv/instruction-scheduler-riscv.cc", + "src/compiler/backend/riscv/instruction-selector-riscv32.cc", + ] +} + if (v8_enable_webassembly) { v8_compiler_sources += [ "src/compiler/int64-lowering.cc", + "src/compiler/wasm-call-descriptors.cc", "src/compiler/wasm-compiler.cc", "src/compiler/wasm-escape-analysis.cc", "src/compiler/wasm-gc-lowering.cc", "src/compiler/wasm-gc-operator-reducer.cc", "src/compiler/wasm-graph-assembler.cc", "src/compiler/wasm-inlining.cc", + "src/compiler/wasm-load-elimination.cc", "src/compiler/wasm-loop-peeling.cc", "src/compiler/wasm-typer.cc", ] } if (v8_enable_wasm_simd256_revec) { - v8_compiler_sources += [ "src/compiler/linear-scheduler.cc" ] + v8_compiler_sources += [ + "src/compiler/linear-scheduler.cc", + "src/compiler/revectorizer.cc", + ] } -# The src/compiler files with optimizations. -v8_source_set("v8_compiler_opt") { +# The src/compiler files for use in mksnapshot. +# - These might be built with additional optimizations if +# v8_enable_fast_mksnapshot is set. +# - We always include Turbofan even if v8_enable_turbofan is unset s.t. +# builtins can be generated by mksnapshot. +v8_source_set("v8_compiler_for_mksnapshot_source_set") { visibility = [ ":*" ] # Only targets in this file can depend on this. sources = v8_compiler_sources @@ -4219,11 +4411,16 @@ v8_source_set("v8_compiler_opt") { } } -# The src/compiler files with default optimization behavior. +# The src/compiler files with default behavior. v8_source_set("v8_compiler") { visibility = [ ":*" ] # Only targets in this file can depend on this. - sources = v8_compiler_sources + if (v8_enable_turbofan) { + sources = v8_compiler_sources + } else { + # With Turbofan disabled, we only include the stubbed-out API. + sources = [ "src/compiler/turbofan-disabled.cc" ] + } public_deps = [ ":generate_bytecode_builtins_list", @@ -4247,15 +4444,20 @@ v8_source_set("v8_turboshaft") { visibility = [ ":*" ] # Only targets in this file can depend on this. sources = [ + "src/compiler/turboshaft/assembler.cc", "src/compiler/turboshaft/decompression-optimization.cc", "src/compiler/turboshaft/graph-builder.cc", "src/compiler/turboshaft/graph-visualizer.cc", "src/compiler/turboshaft/graph.cc", + "src/compiler/turboshaft/late-escape-analysis-reducer.cc", + "src/compiler/turboshaft/memory-optimization.cc", "src/compiler/turboshaft/operations.cc", "src/compiler/turboshaft/optimization-phase.cc", "src/compiler/turboshaft/recreate-schedule.cc", "src/compiler/turboshaft/representations.cc", "src/compiler/turboshaft/simplify-tf-loops.cc", + "src/compiler/turboshaft/type-parser.cc", + "src/compiler/turboshaft/types.cc", "src/compiler/turboshaft/utils.cc", ] @@ -4277,8 +4479,14 @@ v8_source_set("v8_turboshaft") { } group("v8_compiler_for_mksnapshot") { - if (is_debug && !v8_optimized_debug && v8_enable_fast_mksnapshot) { - deps = [ ":v8_compiler_opt" ] + if ((is_debug && !v8_optimized_debug && v8_enable_fast_mksnapshot) || + !v8_enable_turbofan) { + # mksnapshot needs its own version of the compiler, either because + # a) we're optimizing for mksnapshot execution speed and the compiler + # should be optimized even if the rest of V8 is not; or + # b) Turbofan is disabled and thus not compiled into the rest of V8, yet + # mksnapshot still needs TF to generate builtins. + deps = [ ":v8_compiler_for_mksnapshot_source_set" ] } else { deps = [ ":v8_compiler" ] } @@ -4297,7 +4505,11 @@ group("v8_tracing") { } v8_source_set("v8_base_without_compiler") { - visibility = [ ":*" ] # Only targets in this file can depend on this. + # Only targets in this file and gcmole can depend on this. + visibility = [ + ":*", + "tools/gcmole/:*", + ] # Split static libraries on windows into two. split_count = 2 @@ -4385,6 +4597,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/unoptimized-compilation-info.cc", "src/common/assert-scope.cc", "src/common/code-memory-access.cc", + "src/common/ptr-compr.cc", "src/compiler-dispatcher/lazy-compile-dispatcher.cc", "src/compiler-dispatcher/optimizing-compile-dispatcher.cc", "src/date/date.cc", @@ -4460,10 +4673,10 @@ v8_source_set("v8_base_without_compiler") { "src/heap/concurrent-marking.cc", "src/heap/cppgc-js/cpp-heap.cc", "src/heap/cppgc-js/cpp-snapshot.cc", + "src/heap/cppgc-js/cross-heap-remembered-set.cc", "src/heap/cppgc-js/unified-heap-marking-state.cc", "src/heap/cppgc-js/unified-heap-marking-verifier.cc", "src/heap/cppgc-js/unified-heap-marking-visitor.cc", - "src/heap/embedder-tracing.cc", "src/heap/evacuation-verifier.cc", "src/heap/factory-base.cc", "src/heap/factory.cc", @@ -4471,7 +4684,6 @@ v8_source_set("v8_base_without_compiler") { "src/heap/free-list.cc", "src/heap/gc-idle-time-handler.cc", "src/heap/gc-tracer.cc", - "src/heap/global-handle-marking-visitor.cc", "src/heap/heap-allocator.cc", "src/heap/heap-controller.cc", "src/heap/heap-layout-tracer.cc", @@ -4509,6 +4721,7 @@ v8_source_set("v8_base_without_compiler") { "src/heap/stress-marking-observer.cc", "src/heap/stress-scavenge-observer.cc", "src/heap/sweeper.cc", + "src/heap/traced-handles-marking-visitor.cc", "src/heap/weak-object-worklists.cc", "src/ic/call-optimization.cc", "src/ic/handler-configuration.cc", @@ -4736,9 +4949,11 @@ v8_source_set("v8_base_without_compiler") { "src/utils/allocation.cc", "src/utils/bit-vector.cc", "src/utils/detachable-vector.cc", + "src/utils/hex-format.cc", "src/utils/identity-map.cc", "src/utils/memcopy.cc", "src/utils/ostreams.cc", + "src/utils/sha-256.cc", "src/utils/utils.cc", "src/utils/version.cc", "src/web-snapshot/web-snapshot.cc", @@ -4768,10 +4983,22 @@ v8_source_set("v8_base_without_compiler") { "src/maglev/maglev-regalloc.cc", "src/maglev/maglev.cc", ] + if (v8_current_cpu == "arm64") { + sources += [ + "src/maglev/arm64/maglev-assembler-arm64.cc", + "src/maglev/arm64/maglev-ir-arm64.cc", + ] + } else if (v8_current_cpu == "x64") { + sources += [ + "src/maglev/x64/maglev-assembler-x64.cc", + "src/maglev/x64/maglev-ir-x64.cc", + ] + } } if (v8_enable_webassembly) { - sources += [ ### gcmole(all) ### + sources += [ + ### gcmole(all) ### "src/asmjs/asm-js.cc", "src/asmjs/asm-parser.cc", "src/asmjs/asm-scanner.cc", @@ -4853,14 +5080,12 @@ v8_source_set("v8_base_without_compiler") { } if (v8_current_cpu == "x86") { - sources += [ ### gcmole(arch:ia32) ### + sources += [ + ### gcmole(ia32) ### "src/codegen/ia32/assembler-ia32.cc", "src/codegen/ia32/cpu-ia32.cc", "src/codegen/ia32/macro-assembler-ia32.cc", "src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc", - "src/compiler/backend/ia32/code-generator-ia32.cc", - "src/compiler/backend/ia32/instruction-scheduler-ia32.cc", - "src/compiler/backend/ia32/instruction-selector-ia32.cc", "src/deoptimizer/ia32/deoptimizer-ia32.cc", "src/diagnostics/ia32/disasm-ia32.cc", "src/diagnostics/ia32/unwinder-ia32.cc", @@ -4868,15 +5093,12 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/ia32/regexp-macro-assembler-ia32.cc", ] } else if (v8_current_cpu == "x64") { - sources += [ ### gcmole(arch:x64) ### + sources += [ + ### gcmole(x64) ### "src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc", "src/codegen/x64/assembler-x64.cc", "src/codegen/x64/cpu-x64.cc", "src/codegen/x64/macro-assembler-x64.cc", - "src/compiler/backend/x64/code-generator-x64.cc", - "src/compiler/backend/x64/instruction-scheduler-x64.cc", - "src/compiler/backend/x64/instruction-selector-x64.cc", - "src/compiler/backend/x64/unwinding-info-writer-x64.cc", "src/deoptimizer/x64/deoptimizer-x64.cc", "src/diagnostics/x64/disasm-x64.cc", "src/diagnostics/x64/eh-frame-x64.cc", @@ -4906,15 +5128,12 @@ v8_source_set("v8_base_without_compiler") { } } } else if (v8_current_cpu == "arm") { - sources += [ ### gcmole(arch:arm) ### + sources += [ + ### gcmole(arm) ### "src/codegen/arm/assembler-arm.cc", "src/codegen/arm/constants-arm.cc", "src/codegen/arm/cpu-arm.cc", "src/codegen/arm/macro-assembler-arm.cc", - "src/compiler/backend/arm/code-generator-arm.cc", - "src/compiler/backend/arm/instruction-scheduler-arm.cc", - "src/compiler/backend/arm/instruction-selector-arm.cc", - "src/compiler/backend/arm/unwinding-info-writer-arm.cc", "src/deoptimizer/arm/deoptimizer-arm.cc", "src/diagnostics/arm/disasm-arm.cc", "src/diagnostics/arm/eh-frame-arm.cc", @@ -4924,7 +5143,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/arm/regexp-macro-assembler-arm.cc", ] } else if (v8_current_cpu == "arm64") { - sources += [ ### gcmole(arch:arm64) ### + sources += [ + ### gcmole(arm64) ### "src/codegen/arm64/assembler-arm64.cc", "src/codegen/arm64/cpu-arm64.cc", "src/codegen/arm64/decoder-arm64.cc", @@ -4933,10 +5153,6 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/arm64/macro-assembler-arm64.cc", "src/codegen/arm64/register-arm64.cc", "src/codegen/arm64/utils-arm64.cc", - "src/compiler/backend/arm64/code-generator-arm64.cc", - "src/compiler/backend/arm64/instruction-scheduler-arm64.cc", - "src/compiler/backend/arm64/instruction-selector-arm64.cc", - "src/compiler/backend/arm64/unwinding-info-writer-arm64.cc", "src/deoptimizer/arm64/deoptimizer-arm64.cc", "src/diagnostics/arm64/disasm-arm64.cc", "src/diagnostics/arm64/eh-frame-arm64.cc", @@ -4971,15 +5187,13 @@ v8_source_set("v8_base_without_compiler") { sources += [ "src/diagnostics/unwinding-info-win64.cc" ] } } else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { - sources += [ ### gcmole(arch:mips64el) ### + sources += [ + ### gcmole(mips64el) ### "src/codegen/mips64/assembler-mips64.cc", "src/codegen/mips64/constants-mips64.cc", "src/codegen/mips64/cpu-mips64.cc", "src/codegen/mips64/interface-descriptors-mips64-inl.h", "src/codegen/mips64/macro-assembler-mips64.cc", - "src/compiler/backend/mips64/code-generator-mips64.cc", - "src/compiler/backend/mips64/instruction-scheduler-mips64.cc", - "src/compiler/backend/mips64/instruction-selector-mips64.cc", "src/deoptimizer/mips64/deoptimizer-mips64.cc", "src/diagnostics/mips64/disasm-mips64.cc", "src/diagnostics/mips64/unwinder-mips64.cc", @@ -4988,15 +5202,13 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/mips64/regexp-macro-assembler-mips64.cc", ] } else if (v8_current_cpu == "loong64") { - sources += [ ### gcmole(arch:loong64) ### + sources += [ + ### gcmole(loong64) ### "src/codegen/loong64/assembler-loong64.cc", "src/codegen/loong64/constants-loong64.cc", "src/codegen/loong64/cpu-loong64.cc", "src/codegen/loong64/interface-descriptors-loong64-inl.h", "src/codegen/loong64/macro-assembler-loong64.cc", - "src/compiler/backend/loong64/code-generator-loong64.cc", - "src/compiler/backend/loong64/instruction-scheduler-loong64.cc", - "src/compiler/backend/loong64/instruction-selector-loong64.cc", "src/deoptimizer/loong64/deoptimizer-loong64.cc", "src/diagnostics/loong64/disasm-loong64.cc", "src/diagnostics/loong64/unwinder-loong64.cc", @@ -5005,15 +5217,12 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/loong64/regexp-macro-assembler-loong64.cc", ] } else if (v8_current_cpu == "ppc") { - sources += [ ### gcmole(arch:ppc) ### + sources += [ + ### gcmole(ppc) ### "src/codegen/ppc/assembler-ppc.cc", "src/codegen/ppc/constants-ppc.cc", "src/codegen/ppc/cpu-ppc.cc", "src/codegen/ppc/macro-assembler-ppc.cc", - "src/compiler/backend/ppc/code-generator-ppc.cc", - "src/compiler/backend/ppc/instruction-scheduler-ppc.cc", - "src/compiler/backend/ppc/instruction-selector-ppc.cc", - "src/compiler/backend/ppc/unwinding-info-writer-ppc.cc", "src/deoptimizer/ppc/deoptimizer-ppc.cc", "src/diagnostics/ppc/disasm-ppc.cc", "src/diagnostics/ppc/eh-frame-ppc.cc", @@ -5023,15 +5232,12 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/ppc/regexp-macro-assembler-ppc.cc", ] } else if (v8_current_cpu == "ppc64") { - sources += [ ### gcmole(arch:ppc64) ### + sources += [ + ### gcmole(ppc64) ### "src/codegen/ppc/assembler-ppc.cc", "src/codegen/ppc/constants-ppc.cc", "src/codegen/ppc/cpu-ppc.cc", "src/codegen/ppc/macro-assembler-ppc.cc", - "src/compiler/backend/ppc/code-generator-ppc.cc", - "src/compiler/backend/ppc/instruction-scheduler-ppc.cc", - "src/compiler/backend/ppc/instruction-selector-ppc.cc", - "src/compiler/backend/ppc/unwinding-info-writer-ppc.cc", "src/deoptimizer/ppc/deoptimizer-ppc.cc", "src/diagnostics/ppc/disasm-ppc.cc", "src/diagnostics/ppc/eh-frame-ppc.cc", @@ -5041,15 +5247,12 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/ppc/regexp-macro-assembler-ppc.cc", ] } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { - sources += [ ### gcmole(arch:s390) ### + sources += [ + ### gcmole(s390) ### "src/codegen/s390/assembler-s390.cc", "src/codegen/s390/constants-s390.cc", "src/codegen/s390/cpu-s390.cc", "src/codegen/s390/macro-assembler-s390.cc", - "src/compiler/backend/s390/code-generator-s390.cc", - "src/compiler/backend/s390/instruction-scheduler-s390.cc", - "src/compiler/backend/s390/instruction-selector-s390.cc", - "src/compiler/backend/s390/unwinding-info-writer-s390.cc", "src/deoptimizer/s390/deoptimizer-s390.cc", "src/diagnostics/s390/disasm-s390.cc", "src/diagnostics/s390/eh-frame-s390.cc", @@ -5059,7 +5262,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/s390/regexp-macro-assembler-s390.cc", ] } else if (v8_current_cpu == "riscv64") { - sources += [ ### gcmole(arch:riscv64) ### + sources += [ + ### gcmole(riscv64) ### "src/codegen/riscv/assembler-riscv.cc", "src/codegen/riscv/base-assembler-riscv.cc", "src/codegen/riscv/base-constants-riscv.cc", @@ -5074,9 +5278,6 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", "src/codegen/riscv/macro-assembler-riscv.cc", - "src/compiler/backend/riscv/code-generator-riscv.cc", - "src/compiler/backend/riscv/instruction-scheduler-riscv.cc", - "src/compiler/backend/riscv/instruction-selector-riscv64.cc", "src/deoptimizer/riscv/deoptimizer-riscv.cc", "src/diagnostics/riscv/disasm-riscv.cc", "src/diagnostics/riscv/unwinder-riscv.cc", @@ -5085,7 +5286,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/riscv/regexp-macro-assembler-riscv.cc", ] } else if (v8_current_cpu == "riscv32") { - sources += [ ### gcmole(arch:riscv32) ### + sources += [ + ### gcmole(riscv32) ### "src/codegen/riscv/assembler-riscv.cc", "src/codegen/riscv/base-assembler-riscv.cc", "src/codegen/riscv/base-constants-riscv.cc", @@ -5100,9 +5302,6 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", "src/codegen/riscv/macro-assembler-riscv.cc", - "src/compiler/backend/riscv/code-generator-riscv.cc", - "src/compiler/backend/riscv/instruction-scheduler-riscv.cc", - "src/compiler/backend/riscv/instruction-selector-riscv32.cc", "src/deoptimizer/riscv/deoptimizer-riscv.cc", "src/diagnostics/riscv/disasm-riscv.cc", "src/diagnostics/riscv/unwinder-riscv.cc", @@ -5223,8 +5422,11 @@ group("v8_base") { public_deps = [ ":v8_base_without_compiler", ":v8_compiler", - ":v8_turboshaft", ] + + if (v8_enable_turbofan) { + public_deps += [ ":v8_turboshaft" ] + } } v8_source_set("torque_base") { @@ -5612,9 +5814,35 @@ v8_component("v8_libbase") { [ "//build/config/clang:llvm-symbolizer_data($host_toolchain)" ] } + if (v8_use_libm_trig_functions) { + deps += [ ":libm" ] + } + # TODO(infra): Add support for qnx, freebsd, openbsd, netbsd, and solaris. } +if (v8_use_libm_trig_functions) { + source_set("libm") { + sources = [ + "third_party/glibc/src/sysdeps/ieee754/dbl-64/branred.c", + "third_party/glibc/src/sysdeps/ieee754/dbl-64/branred.h", + "third_party/glibc/src/sysdeps/ieee754/dbl-64/dla.h", + "third_party/glibc/src/sysdeps/ieee754/dbl-64/endian.h", + "third_party/glibc/src/sysdeps/ieee754/dbl-64/mydefs.h", + "third_party/glibc/src/sysdeps/ieee754/dbl-64/s_sin.c", + "third_party/glibc/src/sysdeps/ieee754/dbl-64/sincostab.c", + "third_party/glibc/src/sysdeps/ieee754/dbl-64/trig.h", + "third_party/glibc/src/sysdeps/ieee754/dbl-64/usncs.h", + ] + configs += [ "//build/config/compiler:no_chromium_code" ] + configs -= [ "//build/config/compiler:chromium_code" ] + if (!is_debug) { + # Build code using -O3, see: crbug.com/1084371. + configs += [ "//build/config/compiler:optimize_speed" ] + } + } +} + v8_component("v8_libplatform") { sources = [ "//base/trace_event/common/trace_event_common.h", @@ -5764,31 +5992,31 @@ v8_source_set("v8_heap_base") { if (is_clang || !is_win) { if (current_cpu == "x64") { - sources += [ "src/heap/base/asm/x64/save_registers_asm.cc" ] + sources += [ "src/heap/base/asm/x64/push_registers_asm.cc" ] } else if (current_cpu == "x86") { - sources += [ "src/heap/base/asm/ia32/save_registers_asm.cc" ] + sources += [ "src/heap/base/asm/ia32/push_registers_asm.cc" ] } else if (current_cpu == "arm") { - sources += [ "src/heap/base/asm/arm/save_registers_asm.cc" ] + sources += [ "src/heap/base/asm/arm/push_registers_asm.cc" ] } else if (current_cpu == "arm64") { - sources += [ "src/heap/base/asm/arm64/save_registers_asm.cc" ] + sources += [ "src/heap/base/asm/arm64/push_registers_asm.cc" ] } else if (current_cpu == "ppc64") { - sources += [ "src/heap/base/asm/ppc/save_registers_asm.cc" ] + sources += [ "src/heap/base/asm/ppc/push_registers_asm.cc" ] } else if (current_cpu == "s390x") { - sources += [ "src/heap/base/asm/s390/save_registers_asm.cc" ] + sources += [ "src/heap/base/asm/s390/push_registers_asm.cc" ] } else if (current_cpu == "mips64el") { - sources += [ "src/heap/base/asm/mips64/save_registers_asm.cc" ] + sources += [ "src/heap/base/asm/mips64/push_registers_asm.cc" ] } else if (current_cpu == "loong64") { - sources += [ "src/heap/base/asm/loong64/save_registers_asm.cc" ] + sources += [ "src/heap/base/asm/loong64/push_registers_asm.cc" ] } else if (current_cpu == "riscv64" || current_cpu == "riscv32") { - sources += [ "src/heap/base/asm/riscv/save_registers_asm.cc" ] + sources += [ "src/heap/base/asm/riscv/push_registers_asm.cc" ] } } else if (is_win) { if (current_cpu == "x64") { - sources += [ "src/heap/base/asm/x64/save_registers_masm.asm" ] + sources += [ "src/heap/base/asm/x64/push_registers_masm.asm" ] } else if (current_cpu == "x86") { - sources += [ "src/heap/base/asm/ia32/save_registers_masm.asm" ] + sources += [ "src/heap/base/asm/ia32/push_registers_masm.asm" ] } else if (current_cpu == "arm64") { - sources += [ "src/heap/base/asm/arm64/save_registers_masm.S" ] + sources += [ "src/heap/base/asm/arm64/push_registers_masm.S" ] } } @@ -6124,6 +6352,8 @@ if (current_toolchain == v8_snapshot_toolchain) { "src/snapshot/embedded/platform-embedded-file-writer-win.h", "src/snapshot/mksnapshot.cc", "src/snapshot/snapshot-empty.cc", + "src/snapshot/static-roots-gen.cc", + "src/snapshot/static-roots-gen.h", ] if (v8_control_flow_integrity) { @@ -6402,10 +6632,14 @@ if (is_component_build) { ":torque_ls_base", ":v8_base", ":v8_headers", - ":v8_initializers", ":v8_snapshot", ] + if (v8_enable_turbofan) { + # For cctest/test-serialize. + public_deps += [ ":v8_initializers" ] + } + configs = [ ":internal_config" ] public_configs = [ ":external_config" ] @@ -6458,10 +6692,14 @@ if (is_component_build) { ":torque_base", ":torque_ls_base", ":v8_base", - ":v8_initializers", ":v8_snapshot", ] + if (v8_enable_turbofan) { + # For cctest/test-serialize. + public_deps += [ ":v8_initializers" ] + } + public_configs = [ ":external_config" ] } diff --git a/deps/v8/DEPS b/deps/v8/DEPS index ab0a9bf5431112..e06c5b80d1e731 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -30,8 +30,18 @@ vars = { 'checkout_instrumented_libraries': False, 'checkout_ittapi': False, + + # Fetch the prebuilt binaries for llvm-cov and llvm-profdata. Needed to + # process the raw profiles produced by instrumented targets (built with + # the gn arg 'use_clang_coverage'). + 'checkout_clang_coverage_tools': False, + # Fetch clang-tidy into the same bin/ directory as our clang binary. 'checkout_clang_tidy': False, + + # Fetch and build V8 builtins with PGO profiles + 'checkout_v8_builtins_pgo_profiles': False, + 'chromium_url': 'https://chromium.googlesource.com', 'android_url': 'https://android.googlesource.com', 'download_gcmole': False, @@ -43,22 +53,22 @@ vars = { 'fuchsia_sdk_cipd_prefix': 'fuchsia/sdk/gn/', # reclient CIPD package version - 'reclient_version': 're_client_version:0.83.0.da55f4f-gomaip', + 'reclient_version': 're_client_version:0.93.0.9ed3cef-gomaip', # GN CIPD package version. - 'gn_version': 'git_revision:a4d67be044b42963de801001e7146f9657c7fad4', + 'gn_version': 'git_revision:5e19d2fb166fbd4f6f32147fbb2f497091a54ad8', # ninja CIPD package version # https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja - 'ninja_version': 'version:2@1.8.2.chromium.3', + 'ninja_version': 'version:2@1.11.1.chromium.6', # luci-go CIPD package version. - 'luci_go': 'git_revision:f8f64a8c560d2bf68a3ad1137979d17cffb36d30', + 'luci_go': 'git_revision:81e5cdad29bb4c7aaad98c843637513db3155b0d', # 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:10.20221109.1.1', + 'fuchsia_version': 'version:11.20230124.2.1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_build-tools_version @@ -91,18 +101,18 @@ vars = { # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_tools-lint_version # and whatever else without interference from each other. - 'android_sdk_cmdline-tools_version': 'IPzAG-uU5zVMxohpg9-7-N0tQC1TCSW1VbrBFw7Ld04C', + 'android_sdk_cmdline-tools_version': '3Yn5Sn7BMObm8gsoZCF0loJMKg9_PpgU07G9DObCLdQC', } deps = { 'base/trace_event/common': - Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '521ac34ebd795939c7e16b37d9d3ddb40e8ed556', + Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '68e6038b5350cba18c341cc7c572170af5c5b20c', 'build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + '875cb19167f2e0d7b1eca89a4d5b5693421424c6', + Var('chromium_url') + '/chromium/src/build.git' + '@' + '3ed59a96db823534faa93dbedce1891bef3e1ad5', 'buildtools': - Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '49ac7cf34ab2e59a10629a7a722cfb94348c4996', + Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '0cc02fb849280c9adf6aa939e35ec03636bed5b1', 'buildtools/clang_format/script': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/clang/tools/clang-format.git' + '@' + '8b525d2747f2584fc35d8c7e612e66f377858df7', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/clang/tools/clang-format.git' + '@' + 'f97059df7f8b205064625cdb5f97b56668a125ef', 'buildtools/linux64': { 'packages': [ { @@ -124,11 +134,11 @@ deps = { 'condition': 'host_os == "mac"', }, 'buildtools/third_party/libc++/trunk': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '4218f3525ad438b22b0e173d963515a09d143398', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '1dfd0022c4d7aa370a8572d4710558ff8684d7a3', 'buildtools/third_party/libc++abi/trunk': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '1a32724f721e1c3b6c590a07fe4a954344f15e48', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'd520d582aa710cc0a4635620c02c5dbc187deb4f', 'buildtools/third_party/libunwind/trunk': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + 'a318d6a4c283a9d342d2a1e20292c1496fe12997', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + 'bb5988e15c56d4742574fc880c51ae104d5421b7', 'buildtools/win': { 'packages': [ { @@ -147,14 +157,14 @@ deps = { } ], 'dep_type': 'cipd', - 'condition': '(host_os == "linux" or host_os == "mac" or host_os == "win") and host_cpu != "s390" and host_cpu != "ppc"', + 'condition': '(host_os == "linux" or host_os == "mac" or host_os == "win") and host_cpu != "s390" and host_cpu != "ppc" and host_cpu != "arm64"', }, 'test/benchmarks/data': Var('chromium_url') + '/v8/deps/third_party/benchmarks.git' + '@' + '05d7188267b4560491ff9155c5ee13e207ecd65f', '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' + '@' + 'ade328d530525333751e8a3b58f02e18624da085', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'f00d4118dba5d266d1611ba2cd4e995d3e4b523a', 'third_party/android_ndk': { 'url': Var('chromium_url') + '/android_ndk.git' + '@' + '8388a2be5421311dc75c5f937aae13d821a27f3d', 'condition': 'checkout_android', @@ -202,7 +212,7 @@ deps = { 'dep_type': 'cipd', }, 'third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + 'f0b11967c94cba8f7cca91d2da20c98d4420fc25', + 'url': Var('chromium_url') + '/catapult.git' + '@' + '45986b07facfe4cde512b52897ae413617896cc0', 'condition': 'checkout_android', }, 'third_party/colorama/src': { @@ -210,7 +220,7 @@ deps = { 'condition': 'checkout_android', }, 'third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + 'ae1a70891738fb14f64fbb884e00b87ac663aa15', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '00be3f079a1bd376c594d348ebf7d7021a9de245', 'third_party/fuchsia-sdk/sdk': { 'packages': [ { @@ -227,9 +237,9 @@ deps = { 'third_party/googletest/src': Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'af29db7ec28d6df1c7f0f745186884091e602e07', 'third_party/icu': - Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'da07448619763d1cde255b361324242646f5b268', + Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '2c51e5cc7e0a06cd4cd7cb2ddbac445af9b475ba', 'third_party/instrumented_libraries': - Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + '7bb87a375ffc3effd17a50f690099dcfb9ee280b', + Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + '09ba70cfb2c0d01c60684660e357ae200caf2968', 'third_party/ittapi': { # Force checkout ittapi libraries to pass v8 header includes check on # bots that has check_v8_header_includes enabled. @@ -237,7 +247,7 @@ deps = { 'condition': "checkout_ittapi or check_v8_header_includes", }, 'third_party/jinja2': - Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '4633bf431193690c3491244f5a0acbe9ac776233', + Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '264c07d7e64f2874434a3b8039e101ddf1b01e7e', 'third_party/jsoncpp/source': Var('chromium_url') + '/external/github.com/open-source-parsers/jsoncpp.git'+ '@' + '42e892d96e47b1f6e29844cc705e148ec4856448', 'third_party/logdog/logdog': @@ -263,9 +273,9 @@ deps = { 'condition': 'checkout_android', }, 'third_party/zlib': - Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '8bbd6c3129b5146489f2321f054e855c347857f4', + Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + 'dca2b915e29ee8d0bb25cd44a84b32e67c8cabd0', 'tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'd3df9cc5362e0af4cda798b0612dde39783b3dc0', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '41fd15ae6c7cbf8c5927f94936fb87e56f671bf4', 'tools/luci-go': { 'packages': [ { @@ -499,7 +509,7 @@ hooks = [ '--arch=x64'], }, { - 'name': 'msan_chained_origins', + 'name': 'msan_chained_origins_xenial', 'pattern': '.', 'condition': 'checkout_instrumented_libraries', 'action': [ 'python3', @@ -507,11 +517,11 @@ hooks = [ '--no_resume', '--no_auth', '--bucket', 'chromium-instrumented-libraries', - '-s', 'third_party/instrumented_libraries/binaries/msan-chained-origins.tgz.sha1', + '-s', 'third_party/instrumented_libraries/binaries/msan-chained-origins-xenial.tgz.sha1', ], }, { - 'name': 'msan_no_origins', + 'name': 'msan_no_origins_xenial', 'pattern': '.', 'condition': 'checkout_instrumented_libraries', 'action': [ 'python3', @@ -519,7 +529,7 @@ hooks = [ '--no_resume', '--no_auth', '--bucket', 'chromium-instrumented-libraries', - '-s', 'third_party/instrumented_libraries/binaries/msan-no-origins.tgz.sha1', + '-s', 'third_party/instrumented_libraries/binaries/msan-no-origins-xenial.tgz.sha1', ], }, { @@ -557,6 +567,14 @@ hooks = [ 'condition': 'host_os != "aix"', 'action': ['python3', 'tools/clang/scripts/update.py'], }, + { + # This is supposed to support the same set of platforms as 'clang' above. + 'name': 'clang_coverage', + 'pattern': '.', + 'condition': 'checkout_clang_coverage_tools', + 'action': ['python3', 'tools/clang/scripts/update.py', + '--package=coverage_tools'], + }, { 'name': 'clang_tidy', 'pattern': '.', @@ -606,6 +624,16 @@ hooks = [ 'tools/generate-header-include-checks.py', ], }, + { + 'name': 'checkout_v8_builtins_pgo_profiles', + 'pattern': '.', + 'condition': 'checkout_v8_builtins_pgo_profiles', + 'action': [ + 'python3', + 'tools/builtins-pgo/download_profiles.py', + 'download', + ], + }, { # Clean up build dirs for crbug.com/1337238. # After a libc++ roll and revert, .ninja_deps would get into a state diff --git a/deps/v8/PPC_OWNERS b/deps/v8/PPC_OWNERS index 02c2cd757c9cb7..6edd45a6ef2e04 100644 --- a/deps/v8/PPC_OWNERS +++ b/deps/v8/PPC_OWNERS @@ -2,4 +2,3 @@ junyan@redhat.com joransiu@ca.ibm.com midawson@redhat.com mfarazma@redhat.com -vasili.skurydzin@ibm.com diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index 03db4c126f346d..5c31d4dfabd776 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -85,6 +85,7 @@ def _V8PresubmitChecks(input_api, output_api): sys.path.append(input_api.os_path.join( input_api.PresubmitLocalPath(), 'tools')) from v8_presubmit import CppLintProcessor + from v8_presubmit import GCMoleProcessor from v8_presubmit import JSLintProcessor from v8_presubmit import TorqueLintProcessor from v8_presubmit import SourceProcessor @@ -126,6 +127,9 @@ def FilterJSFile(affected_file): if not StatusFilesProcessor().RunOnFiles( input_api.AffectedFiles(include_deletes=True)): results.append(output_api.PresubmitError("Status file check failed")) + if not GCMoleProcessor().RunOnFiles( + input_api.AffectedFiles(include_deletes=False)): + results.append(output_api.PresubmitError("GCMole pattern check failed")) results.extend(input_api.canned_checks.CheckAuthorizedAuthor( input_api, output_api, bot_allowlist=[ 'v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com' @@ -257,8 +261,9 @@ def FilterFile(affected_file): files_to_check=(file_inclusion_pattern, ), files_to_skip=files_to_skip) - leading_src_pattern = input_api.re.compile(r'^src/') - dash_dot_slash_pattern = input_api.re.compile(r'[-./]') + leading_src_pattern = input_api.re.compile(r'^src[\\\/]') + dash_dot_slash_pattern = input_api.re.compile(r'[-.\\\/]') + def PathToGuardMacro(path): """Guards should be of the form V8_PATH_TO_FILE_WITHOUT_SRC_H_.""" x = input_api.re.sub(leading_src_pattern, 'v8_', path) diff --git a/deps/v8/S390_OWNERS b/deps/v8/S390_OWNERS index 02c2cd757c9cb7..6edd45a6ef2e04 100644 --- a/deps/v8/S390_OWNERS +++ b/deps/v8/S390_OWNERS @@ -2,4 +2,3 @@ junyan@redhat.com joransiu@ca.ibm.com midawson@redhat.com mfarazma@redhat.com -vasili.skurydzin@ibm.com diff --git a/deps/v8/WATCHLISTS b/deps/v8/WATCHLISTS index a078c5568e4707..60b57eab251fbd 100644 --- a/deps/v8/WATCHLISTS +++ b/deps/v8/WATCHLISTS @@ -101,11 +101,13 @@ '|test/unittests/heap/cppgc/' \ '|test/unittests/heap/cppgc-js/', }, + 'trap-handler': { + 'filepath': 'src/trap-handler/', + }, }, 'WATCHLISTS': { 'maglev': [ - 'jgruber+watch@chromium.org', 'leszeks+watch@chromium.org', 'verwaest+watch@chromium.org', 'victorgomes+watch@chromium.org', @@ -168,5 +170,11 @@ 'cppgc': [ 'oilpan-reviews+v8@chromium.org', ], + 'trap-handler': [ + 'ahaas@chromium.org', + 'clemensb@chromium.org', + 'mark@chromium.org', + 'mseaborn@chromium.org', + ], }, } diff --git a/deps/v8/base/trace_event/common/trace_event_common.h b/deps/v8/base/trace_event/common/trace_event_common.h index f07f19b3095f57..df20cfd44e0653 100644 --- a/deps/v8/base/trace_event/common/trace_event_common.h +++ b/deps/v8/base/trace_event/common/trace_event_common.h @@ -224,11 +224,6 @@ // variable a unique name based on the line number to prevent name collisions. #define INTERNAL_TRACE_EVENT_UID(name_prefix) PERFETTO_UID(name_prefix) -// Special trace event macro to trace log messages. -// TODO(skyostil): Convert this into a regular typed trace event. -#define TRACE_LOG_MESSAGE(file, message, line) \ - INTERNAL_TRACE_LOG_MESSAGE(file, message, line) - // Declare debug annotation converters for base time types, so they can be // passed as trace event arguments. // TODO(skyostil): Serialize timestamps using perfetto::TracedValue instead. @@ -983,10 +978,6 @@ struct BASE_EXPORT TraceTimestampTraits<::base::TimeTicks> { category_group, name, id, \ TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val) -// Special trace event macro to trace log messages. -#define TRACE_LOG_MESSAGE(file, message, line) \ - INTERNAL_TRACE_LOG_MESSAGE(file, message, line) - // TRACE_EVENT_METADATA* events are information related to other // injected events, not events in their own right. #define TRACE_EVENT_METADATA1(category_group, name, arg1_name, arg1_val) \ diff --git a/deps/v8/bazel/config/BUILD.bazel b/deps/v8/bazel/config/BUILD.bazel index 448260de88465d..7af7ccb6067883 100644 --- a/deps/v8/bazel/config/BUILD.bazel +++ b/deps/v8/bazel/config/BUILD.bazel @@ -22,6 +22,13 @@ config_setting( }, ) +config_setting( + name = "is_opt", + values = { + "compilation_mode": "opt", + }, +) + config_setting( name = "is_debug", values = { diff --git a/deps/v8/bazel/defs.bzl b/deps/v8/bazel/defs.bzl index 77e86ef6f2e646..248add01dca312 100644 --- a/deps/v8/bazel/defs.bzl +++ b/deps/v8/bazel/defs.bzl @@ -152,6 +152,14 @@ def _default_args(): ], "//conditions:default": [], }), + cxxopts = select({ + "//third_party/v8/HEAD/google3/config:is_opt": [ + "-fvisibility=hidden", + "-fvisibility-inlines-hidden", + ], + "//conditions:default": [ + ], + }), includes = ["include"], linkopts = select({ "@v8//bazel/config:is_windows": [ @@ -525,7 +533,17 @@ def build_config_content(cpu, icu): ("v8_enable_single_generation", "false"), ("v8_enable_sandbox", "false"), ("v8_enable_shared_ro_heap", "false"), + ("v8_disable_write_barriers", "false"), ("v8_target_cpu", cpu), + ("v8_code_comments", "false"), + ("v8_enable_debug_code", "false"), + ("v8_enable_verify_heap", "false"), + ("v8_enable_slow_dchecks", "false"), + ("v8_enable_maglev", "false"), + ("v8_enable_turbofan", "true"), + ("v8_enable_disassembler", "false"), + ("is_DEBUG_defined", "false"), + ("v8_enable_gdbjit", "false"), ]) # TODO(victorgomes): Create a rule (instead of a macro), that can diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index 3f093597faccdc..b74013ceb7eec3 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -63,10 +63,19 @@ declare_args() { # Sets -DV8_LITE_MODE. v8_enable_lite_mode = false + # Enable the Turbofan compiler. + # Sets -dV8_ENABLE_TURBOFAN. + v8_enable_turbofan = "" + + # Enable the Maglev compiler. + # Sets -dV8_ENABLE_MAGLEV + v8_enable_maglev = "" + # Include support for WebAssembly. If disabled, the 'WebAssembly' global # will not be available, and embedder APIs to generate WebAssembly modules # will fail. Also, asm.js will not be translated to WebAssembly and will be # executed as standard JavaScript instead. + # Sets -dV8_ENABLE_WEBASSEMBLY. v8_enable_webassembly = "" # Enable 256-bit long vector re-vectorization pass in WASM compilation pipeline. @@ -97,6 +106,12 @@ declare_args() { # Enable young generation in cppgc. cppgc_enable_young_generation = false + # Enables a slim write barrier that only performs a single check in the fast + # path and delegates all further checks to a slow path call. This is fast + # in a setting with few slow-path checks, i.e., with disabled young generation + # GC. + cppgc_enable_slim_write_barrier = true + # Enable pointer compression in cppgc. cppgc_enable_pointer_compression = false @@ -107,6 +122,9 @@ declare_args() { # Enable advanced BigInt algorithms, costing about 10-30 KB binary size # depending on platform. Disabled on Android to save binary size. v8_advanced_bigint_algorithms = !is_android + + # TODO: macros for determining endian type are clang specific. + v8_use_libm_trig_functions = is_clang } if (v8_use_external_startup_data == "") { @@ -132,6 +150,13 @@ if (v8_enable_webassembly == "") { assert(!(v8_enable_webassembly && v8_enable_lite_mode), "Webassembly is not available in lite mode.") +# Turbofan is enabled by default, except in lite mode. +if (v8_enable_turbofan == "") { + v8_enable_turbofan = !v8_enable_lite_mode +} +assert(v8_enable_turbofan || !v8_enable_webassembly, + "Webassembly is not available when Turbofan is disabled.") + # Points to // in v8 stand-alone or to //v8/ in chromium. We need absolute # paths for all configs in templates as they are shared in different # subdirectories. diff --git a/deps/v8/include/cppgc/internal/gc-info.h b/deps/v8/include/cppgc/internal/gc-info.h index e8f90fed57109f..08ffd411a8efab 100644 --- a/deps/v8/include/cppgc/internal/gc-info.h +++ b/deps/v8/include/cppgc/internal/gc-info.h @@ -10,6 +10,7 @@ #include #include "cppgc/internal/finalizer-trait.h" +#include "cppgc/internal/logging.h" #include "cppgc/internal/name-trait.h" #include "cppgc/trace-trait.h" #include "v8config.h" // NOLINT(build/include_directory) @@ -20,12 +21,12 @@ namespace internal { using GCInfoIndex = uint16_t; struct V8_EXPORT EnsureGCInfoIndexTrait final { - // Acquires a new GC info object and returns the index. In addition, also - // updates `registered_index` atomically. + // Acquires a new GC info object and updates `registered_index` with the index + // that identifies that new info accordingly. template - V8_INLINE static GCInfoIndex EnsureIndex( + V8_INLINE static void EnsureIndex( std::atomic& registered_index) { - return EnsureGCInfoIndexTraitDispatch{}(registered_index); + EnsureGCInfoIndexTraitDispatch{}(registered_index); } private: @@ -34,38 +35,32 @@ struct V8_EXPORT EnsureGCInfoIndexTrait final { bool = NameTrait::HasNonHiddenName()> struct EnsureGCInfoIndexTraitDispatch; - static GCInfoIndex EnsureGCInfoIndexPolymorphic(std::atomic&, - TraceCallback, - FinalizationCallback, - NameCallback); - static GCInfoIndex EnsureGCInfoIndexPolymorphic(std::atomic&, - TraceCallback, - FinalizationCallback); - static GCInfoIndex EnsureGCInfoIndexPolymorphic(std::atomic&, - TraceCallback, NameCallback); - static GCInfoIndex EnsureGCInfoIndexPolymorphic(std::atomic&, - TraceCallback); - static GCInfoIndex EnsureGCInfoIndexNonPolymorphic(std::atomic&, - TraceCallback, - FinalizationCallback, - NameCallback); - static GCInfoIndex EnsureGCInfoIndexNonPolymorphic(std::atomic&, - TraceCallback, - FinalizationCallback); - static GCInfoIndex EnsureGCInfoIndexNonPolymorphic(std::atomic&, - TraceCallback, - NameCallback); - static GCInfoIndex EnsureGCInfoIndexNonPolymorphic(std::atomic&, - TraceCallback); + static void V8_PRESERVE_MOST + EnsureGCInfoIndexPolymorphic(std::atomic&, TraceCallback, + FinalizationCallback, NameCallback); + static void V8_PRESERVE_MOST EnsureGCInfoIndexPolymorphic( + std::atomic&, TraceCallback, FinalizationCallback); + static void V8_PRESERVE_MOST EnsureGCInfoIndexPolymorphic( + std::atomic&, TraceCallback, NameCallback); + static void V8_PRESERVE_MOST + EnsureGCInfoIndexPolymorphic(std::atomic&, TraceCallback); + static void V8_PRESERVE_MOST + EnsureGCInfoIndexNonPolymorphic(std::atomic&, TraceCallback, + FinalizationCallback, NameCallback); + static void V8_PRESERVE_MOST EnsureGCInfoIndexNonPolymorphic( + std::atomic&, TraceCallback, FinalizationCallback); + static void V8_PRESERVE_MOST EnsureGCInfoIndexNonPolymorphic( + std::atomic&, TraceCallback, NameCallback); + static void V8_PRESERVE_MOST + EnsureGCInfoIndexNonPolymorphic(std::atomic&, TraceCallback); }; #define DISPATCH(is_polymorphic, has_finalizer, has_non_hidden_name, function) \ template \ struct EnsureGCInfoIndexTrait::EnsureGCInfoIndexTraitDispatch< \ T, is_polymorphic, has_finalizer, has_non_hidden_name> { \ - V8_INLINE GCInfoIndex \ - operator()(std::atomic& registered_index) { \ - return function; \ + V8_INLINE void operator()(std::atomic& registered_index) { \ + function; \ } \ }; @@ -143,9 +138,16 @@ struct GCInfoTrait final { static_assert(sizeof(T), "T must be fully defined"); static std::atomic registered_index; // Uses zero initialization. - const GCInfoIndex index = registered_index.load(std::memory_order_acquire); - return index ? index - : EnsureGCInfoIndexTrait::EnsureIndex(registered_index); + GCInfoIndex index = registered_index.load(std::memory_order_acquire); + if (V8_UNLIKELY(!index)) { + EnsureGCInfoIndexTrait::EnsureIndex(registered_index); + // Slow path call uses V8_PRESERVE_MOST which does not support return + // values (also preserves RAX). Avoid out parameter by just reloading the + // value here which at this point is guaranteed to be set. + index = registered_index.load(std::memory_order_acquire); + CPPGC_DCHECK(index != 0); + } + return index; } }; diff --git a/deps/v8/include/cppgc/internal/pointer-policies.h b/deps/v8/include/cppgc/internal/pointer-policies.h index 8455b3df8196b4..e67da040db3b6f 100644 --- a/deps/v8/include/cppgc/internal/pointer-policies.h +++ b/deps/v8/include/cppgc/internal/pointer-policies.h @@ -34,18 +34,28 @@ struct DijkstraWriteBarrierPolicy { } V8_INLINE static void AssigningBarrier(const void* slot, const void* value) { +#ifdef CPPGC_SLIM_WRITE_BARRIER + if (V8_UNLIKELY(WriteBarrier::IsEnabled())) + WriteBarrier::CombinedWriteBarrierSlow(slot); +#else // !CPPGC_SLIM_WRITE_BARRIER WriteBarrier::Params params; const WriteBarrier::Type type = WriteBarrier::GetWriteBarrierType(slot, value, params); WriteBarrier(type, params, slot, value); +#endif // !CPPGC_SLIM_WRITE_BARRIER } V8_INLINE static void AssigningBarrier(const void* slot, MemberStorage storage) { +#ifdef CPPGC_SLIM_WRITE_BARRIER + if (V8_UNLIKELY(WriteBarrier::IsEnabled())) + WriteBarrier::CombinedWriteBarrierSlow(slot); +#else // !CPPGC_SLIM_WRITE_BARRIER WriteBarrier::Params params; const WriteBarrier::Type type = WriteBarrier::GetWriteBarrierType(slot, storage, params); WriteBarrier(type, params, slot, storage.Load()); +#endif // !CPPGC_SLIM_WRITE_BARRIER } private: diff --git a/deps/v8/include/cppgc/internal/write-barrier.h b/deps/v8/include/cppgc/internal/write-barrier.h index 37bc5c973ef995..80c6ee33b209c0 100644 --- a/deps/v8/include/cppgc/internal/write-barrier.h +++ b/deps/v8/include/cppgc/internal/write-barrier.h @@ -79,6 +79,14 @@ class V8_EXPORT WriteBarrier final { // Returns the required write barrier for a given `value`. static V8_INLINE Type GetWriteBarrierType(const void* value, Params& params); +#ifdef CPPGC_SLIM_WRITE_BARRIER + // A write barrier that combines `GenerationalBarrier()` and + // `DijkstraMarkingBarrier()`. We only pass a single parameter here to clobber + // as few registers as possible. + static V8_NOINLINE void V8_PRESERVE_MOST + CombinedWriteBarrierSlow(const void* slot); +#endif // CPPGC_SLIM_WRITE_BARRIER + static V8_INLINE void DijkstraMarkingBarrier(const Params& params, const void* object); static V8_INLINE void DijkstraMarkingBarrierRange( diff --git a/deps/v8/include/cppgc/visitor.h b/deps/v8/include/cppgc/visitor.h index f7ebc1d01f566e..704aabcdb08e38 100644 --- a/deps/v8/include/cppgc/visitor.h +++ b/deps/v8/include/cppgc/visitor.h @@ -229,7 +229,8 @@ class V8_EXPORT Visitor { } /** - * Trace method for retaining containers weakly. + * Trace method for retaining containers weakly. Note that weak containers + * should emit write barriers. * * \param object reference to the container. * \param callback to be invoked. diff --git a/deps/v8/include/js_protocol.pdl b/deps/v8/include/js_protocol.pdl index 6efcf787854dac..d4102f5c6cef79 100644 --- a/deps/v8/include/js_protocol.pdl +++ b/deps/v8/include/js_protocol.pdl @@ -1402,6 +1402,13 @@ domain Runtime optional string objectGroup # Whether to throw an exception if side effect cannot be ruled out during evaluation. experimental optional boolean throwOnSideEffect + # An alternative way to specify the execution context to call function on. + # Compared to contextId that may be reused across processes, this is guaranteed to be + # system-unique, so it can be used to prevent accidental function call + # in context different than intended (e.g. as a result of navigation across process + # boundaries). + # This is mutually exclusive with `executionContextId`. + experimental optional string uniqueContextId # Whether the result should contain `webDriverValue`, serialized according to # https://w3c.github.io/webdriver-bidi. This is mutually exclusive with `returnByValue`, but # resulting `objectId` is still provided. @@ -1734,7 +1741,9 @@ domain Runtime event executionContextDestroyed parameters # Id of the destroyed context - ExecutionContextId executionContextId + deprecated ExecutionContextId executionContextId + # Unique Id of the destroyed context + experimental string executionContextUniqueId # Issued when all executionContexts were cleared in browser event executionContextsCleared diff --git a/deps/v8/include/libplatform/v8-tracing.h b/deps/v8/include/libplatform/v8-tracing.h index 12489327c54210..6039a9c520b6a3 100644 --- a/deps/v8/include/libplatform/v8-tracing.h +++ b/deps/v8/include/libplatform/v8-tracing.h @@ -282,12 +282,12 @@ class V8_PLATFORM_EXPORT TracingController const char* name, uint64_t handle) override; static const char* GetCategoryGroupName(const uint8_t* category_enabled_flag); -#endif // !defined(V8_USE_PERFETTO) void AddTraceStateObserver( v8::TracingController::TraceStateObserver* observer) override; void RemoveTraceStateObserver( v8::TracingController::TraceStateObserver* observer) override; +#endif // !defined(V8_USE_PERFETTO) void StartTracing(TraceConfig* trace_config); void StopTracing(); @@ -307,7 +307,6 @@ class V8_PLATFORM_EXPORT TracingController std::unique_ptr mutex_; std::unique_ptr trace_config_; std::atomic_bool recording_{false}; - std::unordered_set observers_; #if defined(V8_USE_PERFETTO) std::ostream* output_stream_ = nullptr; @@ -316,6 +315,7 @@ class V8_PLATFORM_EXPORT TracingController TraceEventListener* listener_for_testing_ = nullptr; std::unique_ptr tracing_session_; #else // !defined(V8_USE_PERFETTO) + std::unordered_set observers_; std::unique_ptr trace_buffer_; #endif // !defined(V8_USE_PERFETTO) diff --git a/deps/v8/include/v8-array-buffer.h b/deps/v8/include/v8-array-buffer.h index 841bd02a793333..804fc42c4b56dd 100644 --- a/deps/v8/include/v8-array-buffer.h +++ b/deps/v8/include/v8-array-buffer.h @@ -53,12 +53,28 @@ class V8_EXPORT BackingStore : public v8::internal::BackingStoreBase { */ size_t ByteLength() const; + /** + * The maximum length (in bytes) that this backing store may grow to. + * + * If this backing store was created for a resizable ArrayBuffer or a growable + * SharedArrayBuffer, it is >= ByteLength(). Otherwise it is == + * ByteLength(). + */ + size_t MaxByteLength() const; + /** * Indicates whether the backing store was created for an ArrayBuffer or * a SharedArrayBuffer. */ bool IsShared() const; + /** + * Indicates whether the backing store was created for a resizable ArrayBuffer + * or a growable SharedArrayBuffer, and thus may be resized by user JavaScript + * code. + */ + bool IsResizableByUserJavaScript() const; + /** * Prevent implicit instantiation of operator delete with size_t argument. * The size_t argument would be incorrect because ptr points to the @@ -189,6 +205,11 @@ class V8_EXPORT ArrayBuffer : public Object { */ size_t ByteLength() const; + /** + * Maximum length in bytes. + */ + size_t MaxByteLength() const; + /** * Create a new ArrayBuffer. Allocate |byte_length| bytes. * Allocated memory will be owned by a created ArrayBuffer and @@ -235,6 +256,21 @@ class V8_EXPORT ArrayBuffer : public Object { void* data, size_t byte_length, v8::BackingStore::DeleterCallback deleter, void* deleter_data); + /** + * Returns a new resizable standalone BackingStore that is allocated using the + * array buffer allocator of the isolate. The result can be later passed to + * ArrayBuffer::New. + * + * |byte_length| must be <= |max_byte_length|. + * + * This function is usable without an isolate. Unlike |NewBackingStore| calls + * with an isolate, GCs cannot be triggered, and there are no + * retries. Allocation failure will cause the function to crash with an + * out-of-memory error. + */ + static std::unique_ptr NewResizableBackingStore( + size_t byte_length, size_t max_byte_length); + /** * Returns true if this ArrayBuffer may be detached. */ @@ -392,6 +428,11 @@ class V8_EXPORT SharedArrayBuffer : public Object { */ size_t ByteLength() const; + /** + * Maximum length in bytes. + */ + size_t MaxByteLength() const; + /** * Create a new SharedArrayBuffer. Allocate |byte_length| bytes. * Allocated memory will be owned by a created SharedArrayBuffer and diff --git a/deps/v8/include/v8-callbacks.h b/deps/v8/include/v8-callbacks.h index 0ffdfb6656fc64..f3e96c37066e9f 100644 --- a/deps/v8/include/v8-callbacks.h +++ b/deps/v8/include/v8-callbacks.h @@ -328,6 +328,10 @@ using WasmSimdEnabledCallback = bool (*)(Local context); // --- Callback for checking if WebAssembly exceptions are enabled --- using WasmExceptionsEnabledCallback = bool (*)(Local context); +// --- Callback for checking if WebAssembly GC is enabled --- +// If the callback returns true, it will also enable Wasm stringrefs. +using WasmGCEnabledCallback = bool (*)(Local context); + // --- Callback for checking if the SharedArrayBuffer constructor is enabled --- using SharedArrayBufferConstructorEnabledCallback = bool (*)(Local context); diff --git a/deps/v8/include/v8-cppgc.h b/deps/v8/include/v8-cppgc.h index 3a6582cd258496..4a457027c9f76b 100644 --- a/deps/v8/include/v8-cppgc.h +++ b/deps/v8/include/v8-cppgc.h @@ -77,6 +77,12 @@ struct WrapperDescriptor final { }; struct V8_EXPORT CppHeapCreateParams { + CppHeapCreateParams( + std::vector> custom_spaces, + WrapperDescriptor wrapper_descriptor) + : custom_spaces(std::move(custom_spaces)), + wrapper_descriptor(wrapper_descriptor) {} + CppHeapCreateParams(const CppHeapCreateParams&) = delete; CppHeapCreateParams& operator=(const CppHeapCreateParams&) = delete; diff --git a/deps/v8/include/v8-embedder-heap.h b/deps/v8/include/v8-embedder-heap.h index f994cdfdf34376..9e2e3ef58c4341 100644 --- a/deps/v8/include/v8-embedder-heap.h +++ b/deps/v8/include/v8-embedder-heap.h @@ -5,27 +5,14 @@ #ifndef INCLUDE_V8_EMBEDDER_HEAP_H_ #define INCLUDE_V8_EMBEDDER_HEAP_H_ -#include -#include - -#include -#include - -#include "cppgc/common.h" -#include "v8-local-handle.h" // NOLINT(build/include_directory) #include "v8-traced-handle.h" // NOLINT(build/include_directory) #include "v8config.h" // NOLINT(build/include_directory) namespace v8 { -class Data; class Isolate; class Value; -namespace internal { -class LocalEmbedderHeapTracer; -} // namespace internal - /** * Handler for embedder roots on non-unified heap garbage collections. */ @@ -62,162 +49,6 @@ class V8_EXPORT EmbedderRootsHandler { virtual void ResetRoot(const v8::TracedReference& handle) = 0; }; -/** - * Interface for tracing through the embedder heap. During a V8 garbage - * collection, V8 collects hidden fields of all potential wrappers, and at the - * end of its marking phase iterates the collection and asks the embedder to - * trace through its heap and use reporter to report each JavaScript object - * reachable from any of the given wrappers. - */ -class V8_EXPORT -// GCC doesn't like combining __attribute__(()) with [[deprecated]]. -#ifdef __clang__ -V8_DEPRECATED("Use CppHeap when working with v8::TracedReference.") -#endif // __clang__ - EmbedderHeapTracer { - public: - using EmbedderStackState = cppgc::EmbedderStackState; - - enum TraceFlags : uint64_t { - kNoFlags = 0, - kReduceMemory = 1 << 0, - kForced = 1 << 2, - }; - - /** - * Interface for iterating through |TracedReference| handles. - */ - class V8_EXPORT TracedGlobalHandleVisitor { - public: - virtual ~TracedGlobalHandleVisitor() = default; - virtual void VisitTracedReference(const TracedReference& handle) {} - }; - - /** - * Summary of a garbage collection cycle. See |TraceEpilogue| on how the - * summary is reported. - */ - struct TraceSummary { - /** - * Time spent managing the retained memory in milliseconds. This can e.g. - * include the time tracing through objects in the embedder. - */ - double time = 0.0; - - /** - * Memory retained by the embedder through the |EmbedderHeapTracer| - * mechanism in bytes. - */ - size_t allocated_size = 0; - }; - - virtual ~EmbedderHeapTracer() = default; - - /** - * Iterates all |TracedReference| handles created for the |v8::Isolate| the - * tracer is attached to. - */ - void IterateTracedGlobalHandles(TracedGlobalHandleVisitor* visitor); - - /** - * Called by the embedder to set the start of the stack which is e.g. used by - * V8 to determine whether handles are used from stack or heap. - */ - void SetStackStart(void* stack_start); - - /** - * Called by v8 to register internal fields of found wrappers. - * - * The embedder is expected to store them somewhere and trace reachable - * wrappers from them when called through |AdvanceTracing|. - */ - virtual void RegisterV8References( - const std::vector>& embedder_fields) = 0; - - void RegisterEmbedderReference(const BasicTracedReference& ref); - - /** - * Called at the beginning of a GC cycle. - */ - virtual void TracePrologue(TraceFlags flags) {} - - /** - * Called to advance tracing in the embedder. - * - * The embedder is expected to trace its heap starting from wrappers reported - * by RegisterV8References method, and report back all reachable wrappers. - * Furthermore, the embedder is expected to stop tracing by the given - * deadline. A deadline of infinity means that tracing should be finished. - * - * Returns |true| if tracing is done, and false otherwise. - */ - virtual bool AdvanceTracing(double deadline_in_ms) = 0; - - /* - * Returns true if there no more tracing work to be done (see AdvanceTracing) - * and false otherwise. - */ - virtual bool IsTracingDone() = 0; - - /** - * Called at the end of a GC cycle. - * - * Note that allocation is *not* allowed within |TraceEpilogue|. Can be - * overriden to fill a |TraceSummary| that is used by V8 to schedule future - * garbage collections. - */ - virtual void TraceEpilogue(TraceSummary* trace_summary) {} - - /** - * Called upon entering the final marking pause. No more incremental marking - * steps will follow this call. - */ - virtual void EnterFinalPause(EmbedderStackState stack_state) = 0; - - /* - * Called by the embedder to request immediate finalization of the currently - * running tracing phase that has been started with TracePrologue and not - * yet finished with TraceEpilogue. - * - * Will be a noop when currently not in tracing. - * - * This is an experimental feature. - */ - void FinalizeTracing(); - - /** - * See documentation on EmbedderRootsHandler. - */ - virtual bool IsRootForNonTracingGC( - const v8::TracedReference& handle); - - /** - * See documentation on EmbedderRootsHandler. - */ - virtual void ResetHandleInNonTracingGC( - const v8::TracedReference& handle); - - /* - * Called by the embedder to signal newly allocated or freed memory. Not bound - * to tracing phases. Embedders should trade off when increments are reported - * as V8 may consult global heuristics on whether to trigger garbage - * collection on this change. - */ - void IncreaseAllocatedSize(size_t bytes); - void DecreaseAllocatedSize(size_t bytes); - - /* - * Returns the v8::Isolate this tracer is attached too and |nullptr| if it - * is not attached to any v8::Isolate. - */ - v8::Isolate* isolate() const { return v8_isolate_; } - - protected: - v8::Isolate* v8_isolate_ = nullptr; - - friend class internal::LocalEmbedderHeapTracer; -}; - } // namespace v8 #endif // INCLUDE_V8_EMBEDDER_HEAP_H_ diff --git a/deps/v8/include/v8-fast-api-calls.h b/deps/v8/include/v8-fast-api-calls.h index 9ea43fe2535397..0fe7cd2489b05e 100644 --- a/deps/v8/include/v8-fast-api-calls.h +++ b/deps/v8/include/v8-fast-api-calls.h @@ -247,6 +247,7 @@ class CTypeInfo { kUint64, kFloat32, kFloat64, + kPointer, kV8Value, kSeqOneByteString, kApiObject, // This will be deprecated once all users have @@ -435,6 +436,7 @@ struct AnyCType { uint64_t uint64_value; float float_value; double double_value; + void* pointer_value; Local object_value; Local sequence_value; const FastApiTypedArray* uint8_ta_value; @@ -620,6 +622,7 @@ class CFunctionInfoImpl : public CFunctionInfo { kReturnType == CTypeInfo::Type::kUint32 || kReturnType == CTypeInfo::Type::kFloat32 || kReturnType == CTypeInfo::Type::kFloat64 || + kReturnType == CTypeInfo::Type::kPointer || kReturnType == CTypeInfo::Type::kAny, "64-bit int, string and api object values are not currently " "supported return types."); @@ -658,13 +661,14 @@ struct CTypeInfoTraits {}; #define PRIMITIVE_C_TYPES(V) \ V(bool, kBool) \ + V(uint8_t, kUint8) \ V(int32_t, kInt32) \ V(uint32_t, kUint32) \ V(int64_t, kInt64) \ V(uint64_t, kUint64) \ V(float, kFloat32) \ V(double, kFloat64) \ - V(uint8_t, kUint8) + V(void*, kPointer) // Same as above, but includes deprecated types for compatibility. #define ALL_C_TYPES(V) \ @@ -698,13 +702,13 @@ PRIMITIVE_C_TYPES(DEFINE_TYPE_INFO_TRAITS) }; #define TYPED_ARRAY_C_TYPES(V) \ + V(uint8_t, kUint8) \ V(int32_t, kInt32) \ V(uint32_t, kUint32) \ V(int64_t, kInt64) \ V(uint64_t, kUint64) \ V(float, kFloat32) \ - V(double, kFloat64) \ - V(uint8_t, kUint8) + V(double, kFloat64) TYPED_ARRAY_C_TYPES(SPECIALIZE_GET_TYPE_INFO_HELPER_FOR_TA) diff --git a/deps/v8/include/v8-inspector.h b/deps/v8/include/v8-inspector.h index aa5a044afb61c4..563ad196d6e607 100644 --- a/deps/v8/include/v8-inspector.h +++ b/deps/v8/include/v8-inspector.h @@ -32,19 +32,19 @@ namespace Debugger { namespace API { class SearchMatch; } -} +} // namespace Debugger namespace Runtime { namespace API { class RemoteObject; class StackTrace; class StackTraceId; -} -} +} // namespace API +} // namespace Runtime namespace Schema { namespace API { class Domain; } -} +} // namespace Schema } // namespace protocol class V8_EXPORT StringView { @@ -134,6 +134,13 @@ class V8_EXPORT V8DebuggerId { int64_t m_second = 0; }; +struct V8_EXPORT V8StackFrame { + StringView sourceURL; + StringView functionName; + int lineNumber; + int columnNumber; +}; + class V8_EXPORT V8StackTrace { public: virtual StringView firstNonEmptySourceURL() const = 0; @@ -151,6 +158,8 @@ class V8_EXPORT V8StackTrace { // Safe to pass between threads, drops async chain. virtual std::unique_ptr clone() = 0; + + virtual std::vector frames() const = 0; }; class V8_EXPORT V8InspectorSession { @@ -203,6 +212,9 @@ class V8_EXPORT V8InspectorSession { std::unique_ptr* objectGroup) = 0; virtual void releaseObjectGroup(StringView) = 0; virtual void triggerPreciseCoverageDeltaUpdate(StringView occasion) = 0; + + // Prepare for shutdown (disables debugger pausing, etc.). + virtual void stop() = 0; }; class V8_EXPORT WebDriverValue { @@ -365,9 +377,12 @@ class V8_EXPORT V8Inspector { virtual void flushProtocolNotifications() = 0; }; enum ClientTrustLevel { kUntrusted, kFullyTrusted }; + enum SessionPauseState { kWaitingForDebugger, kNotWaitingForDebugger }; + // TODO(chromium:1352175): remove default value once downstream change lands. virtual std::unique_ptr connect( int contextGroupId, Channel*, StringView state, - ClientTrustLevel client_trust_level) { + ClientTrustLevel client_trust_level, + SessionPauseState = kNotWaitingForDebugger) { return nullptr; } diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h index a4b8ee0824d81d..53837aa5855169 100644 --- a/deps/v8/include/v8-internal.h +++ b/deps/v8/include/v8-internal.h @@ -242,6 +242,7 @@ static_assert(1ULL << (64 - kBoundedSizeShift) == #ifdef V8_COMPRESS_POINTERS +#ifdef V8_TARGET_OS_ANDROID // The size of the virtual memory reservation for an external pointer table. // This determines the maximum number of entries in a table. Using a maximum // size allows omitting bounds checks on table accesses if the indices are @@ -249,14 +250,18 @@ static_assert(1ULL << (64 - kBoundedSizeShift) == // value must be a power of two. static const size_t kExternalPointerTableReservationSize = 512 * MB; -// The maximum number of entries in an external pointer table. -static const size_t kMaxExternalPointers = - kExternalPointerTableReservationSize / kApiSystemPointerSize; - // The external pointer table indices stored in HeapObjects as external // pointers are shifted to the left by this amount to guarantee that they are // smaller than the maximum table size. static const uint32_t kExternalPointerIndexShift = 6; +#else +static const size_t kExternalPointerTableReservationSize = 1024 * MB; +static const uint32_t kExternalPointerIndexShift = 5; +#endif // V8_TARGET_OS_ANDROID + +// The maximum number of entries in an external pointer table. +static const size_t kMaxExternalPointers = + kExternalPointerTableReservationSize / kApiSystemPointerSize; static_assert((1 << (32 - kExternalPointerIndexShift)) == kMaxExternalPointers, "kExternalPointerTableReservationSize and " "kExternalPointerIndexShift don't match"); @@ -345,6 +350,14 @@ using ExternalPointer_t = Address; // that the Embedder is not using this byte (really only this one bit) for any // other purpose. This bit also does not collide with the memory tagging // extension (MTE) which would use bits [56, 60). +// +// External pointer tables are also available even when the sandbox is off but +// pointer compression is on. In that case, the mechanism can be used to easy +// alignment requirements as it turns unaligned 64-bit raw pointers into +// aligned 32-bit indices. To "opt-in" to the external pointer table mechanism +// for this purpose, instead of using the ExternalPointer accessors one needs to +// use ExternalPointerHandles directly and use them to access the pointers in an +// ExternalPointerTable. constexpr uint64_t kExternalPointerMarkBit = 1ULL << 62; constexpr uint64_t kExternalPointerTagMask = 0x40ff000000000000; constexpr uint64_t kExternalPointerTagShift = 48; @@ -367,71 +380,58 @@ constexpr uint64_t kAllExternalPointerTypeTags[] = { 0b11001100, 0b11010001, 0b11010010, 0b11010100, 0b11011000, 0b11100001, 0b11100010, 0b11100100, 0b11101000, 0b11110000}; +#define TAG(i) \ + ((kAllExternalPointerTypeTags[i] << kExternalPointerTagShift) | \ + kExternalPointerMarkBit) + // clang-format off -// New entries should be added with state "sandboxed". + // When adding new tags, please ensure that the code using these tags is // "substitution-safe", i.e. still operate safely if external pointers of the // same type are swapped by an attacker. See comment above for more details. -#define TAG(i) (kAllExternalPointerTypeTags[i]) // Shared external pointers are owned by the shared Isolate and stored in the // shared external pointer table associated with that Isolate, where they can // be accessed from multiple threads at the same time. The objects referenced // in this way must therefore always be thread-safe. -#define SHARED_EXTERNAL_POINTER_TAGS(V) \ - V(kFirstSharedTag, sandboxed, TAG(0)) \ - V(kWaiterQueueNodeTag, sandboxed, TAG(0)) \ - V(kExternalStringResourceTag, sandboxed, TAG(1)) \ - V(kExternalStringResourceDataTag, sandboxed, TAG(2)) \ - V(kLastSharedTag, sandboxed, TAG(2)) +#define SHARED_EXTERNAL_POINTER_TAGS(V) \ + V(kFirstSharedTag, TAG(0)) \ + V(kWaiterQueueNodeTag, TAG(0)) \ + V(kExternalStringResourceTag, TAG(1)) \ + V(kExternalStringResourceDataTag, TAG(2)) \ + V(kLastSharedTag, TAG(2)) // External pointers using these tags are kept in a per-Isolate external // pointer table and can only be accessed when this Isolate is active. -#define PER_ISOLATE_EXTERNAL_POINTER_TAGS(V) \ - V(kForeignForeignAddressTag, sandboxed, TAG(10)) \ - V(kNativeContextMicrotaskQueueTag, sandboxed, TAG(11)) \ - V(kEmbedderDataSlotPayloadTag, sandboxed, TAG(12)) \ - V(kExternalObjectValueTag, sandboxed, TAG(13)) \ - V(kCallHandlerInfoCallbackTag, sandboxed, TAG(14)) \ - V(kAccessorInfoGetterTag, sandboxed, TAG(15)) \ - V(kAccessorInfoSetterTag, sandboxed, TAG(16)) \ - V(kWasmInternalFunctionCallTargetTag, sandboxed, TAG(17)) \ - V(kWasmTypeInfoNativeTypeTag, sandboxed, TAG(18)) \ - V(kWasmExportedFunctionDataSignatureTag, sandboxed, TAG(19)) \ - V(kWasmContinuationJmpbufTag, sandboxed, TAG(20)) \ - V(kArrayBufferExtensionTag, sandboxed, TAG(21)) +#define PER_ISOLATE_EXTERNAL_POINTER_TAGS(V) \ + V(kForeignForeignAddressTag, TAG(10)) \ + V(kNativeContextMicrotaskQueueTag, TAG(11)) \ + V(kEmbedderDataSlotPayloadTag, TAG(12)) \ +/* This tag essentially stands for a `void*` pointer in the V8 API, and */ \ +/* it is the Embedder's responsibility to ensure type safety (against */ \ +/* substitution) and lifetime validity of these objects. */ \ + V(kExternalObjectValueTag, TAG(13)) \ + V(kCallHandlerInfoCallbackTag, TAG(14)) \ + V(kAccessorInfoGetterTag, TAG(15)) \ + V(kAccessorInfoSetterTag, TAG(16)) \ + V(kWasmInternalFunctionCallTargetTag, TAG(17)) \ + V(kWasmTypeInfoNativeTypeTag, TAG(18)) \ + V(kWasmExportedFunctionDataSignatureTag, TAG(19)) \ + V(kWasmContinuationJmpbufTag, TAG(20)) \ + V(kArrayBufferExtensionTag, TAG(21)) // All external pointer tags. #define ALL_EXTERNAL_POINTER_TAGS(V) \ SHARED_EXTERNAL_POINTER_TAGS(V) \ PER_ISOLATE_EXTERNAL_POINTER_TAGS(V) -// When the sandbox is enabled, external pointers marked as "sandboxed" above -// use the external pointer table (i.e. are sandboxed). This allows a gradual -// rollout of external pointer sandboxing. If the sandbox is off, no external -// pointers are sandboxed. -// -// Sandboxed external pointer tags are available when compressing pointers even -// when the sandbox is off. Some tags (e.g. kWaiterQueueNodeTag) are used -// manually with the external pointer table even when the sandbox is off to ease -// alignment requirements. -#define sandboxed(X) (X << kExternalPointerTagShift) | kExternalPointerMarkBit -#define unsandboxed(X) kUnsandboxedExternalPointerTag -#if defined(V8_COMPRESS_POINTERS) -#define EXTERNAL_POINTER_TAG_ENUM(Name, State, Bits) Name = State(Bits), -#else -#define EXTERNAL_POINTER_TAG_ENUM(Name, State, Bits) Name = unsandboxed(Bits), -#endif - +#define EXTERNAL_POINTER_TAG_ENUM(Name, Tag) Name = Tag, #define MAKE_TAG(HasMarkBit, TypeTag) \ ((static_cast(TypeTag) << kExternalPointerTagShift) | \ (HasMarkBit ? kExternalPointerMarkBit : 0)) enum ExternalPointerTag : uint64_t { // Empty tag value. Mostly used as placeholder. kExternalPointerNullTag = MAKE_TAG(0, 0b00000000), - // Tag to use for unsandboxed external pointers, which are still stored as - // raw pointers on the heap. - kUnsandboxedExternalPointerTag = MAKE_TAG(0, 0b00000000), // External pointer tag that will match any external pointer. Use with care! kAnyExternalPointerTag = MAKE_TAG(1, 0b11111111), // The free entry tag has all type bits set so every type check with a @@ -445,20 +445,11 @@ enum ExternalPointerTag : uint64_t { }; #undef MAKE_TAG -#undef unsandboxed -#undef sandboxed #undef TAG #undef EXTERNAL_POINTER_TAG_ENUM // clang-format on -// True if the external pointer is sandboxed and so must be referenced through -// an external pointer table. -V8_INLINE static constexpr bool IsSandboxedExternalPointerType( - ExternalPointerTag tag) { - return tag != kUnsandboxedExternalPointerTag; -} - // True if the external pointer must be accessed from the shared isolate's // external pointer table. V8_INLINE static constexpr bool IsSharedExternalPointerType( @@ -467,12 +458,10 @@ V8_INLINE static constexpr bool IsSharedExternalPointerType( } // Sanity checks. -#define CHECK_SHARED_EXTERNAL_POINTER_TAGS(Tag, ...) \ - static_assert(!IsSandboxedExternalPointerType(Tag) || \ - IsSharedExternalPointerType(Tag)); +#define CHECK_SHARED_EXTERNAL_POINTER_TAGS(Tag, ...) \ + static_assert(IsSharedExternalPointerType(Tag)); #define CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS(Tag, ...) \ - static_assert(!IsSandboxedExternalPointerType(Tag) || \ - !IsSharedExternalPointerType(Tag)); + static_assert(!IsSharedExternalPointerType(Tag)); SHARED_EXTERNAL_POINTER_TAGS(CHECK_SHARED_EXTERNAL_POINTER_TAGS) PER_ISOLATE_EXTERNAL_POINTER_TAGS(CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS) @@ -545,7 +534,7 @@ class Internals { static const int kVariousBooleanFlagsOffset = kIsolateStackGuardOffset + kStackGuardSize; static const int kBuiltinTier0EntryTableOffset = - kVariousBooleanFlagsOffset + kApiSystemPointerSize; + kVariousBooleanFlagsOffset + 8; static const int kBuiltinTier0TableOffset = kBuiltinTier0EntryTableOffset + kBuiltinTier0EntryTableSize; static const int kIsolateEmbedderDataOffset = @@ -793,24 +782,23 @@ class Internals { V8_INLINE static internal::Address ReadExternalPointerField( v8::Isolate* isolate, internal::Address heap_object_ptr, int offset) { #ifdef V8_ENABLE_SANDBOX - if (IsSandboxedExternalPointerType(tag)) { - // See src/sandbox/external-pointer-table-inl.h. Logic duplicated here so - // it can be inlined and doesn't require an additional call. - internal::Address* table = - IsSharedExternalPointerType(tag) - ? GetSharedExternalPointerTableBase(isolate) - : GetExternalPointerTableBase(isolate); - internal::ExternalPointerHandle handle = - ReadRawField(heap_object_ptr, offset); - uint32_t index = handle >> kExternalPointerIndexShift; - std::atomic* ptr = - reinterpret_cast*>(&table[index]); - internal::Address entry = - std::atomic_load_explicit(ptr, std::memory_order_relaxed); - return entry & ~tag; - } -#endif + static_assert(tag != kExternalPointerNullTag); + // See src/sandbox/external-pointer-table-inl.h. Logic duplicated here so + // it can be inlined and doesn't require an additional call. + internal::Address* table = IsSharedExternalPointerType(tag) + ? GetSharedExternalPointerTableBase(isolate) + : GetExternalPointerTableBase(isolate); + internal::ExternalPointerHandle handle = + ReadRawField(heap_object_ptr, offset); + uint32_t index = handle >> kExternalPointerIndexShift; + std::atomic* ptr = + reinterpret_cast*>(&table[index]); + internal::Address entry = + std::atomic_load_explicit(ptr, std::memory_order_relaxed); + return entry & ~tag; +#else return ReadRawField
(heap_object_ptr, offset); +#endif // V8_ENABLE_SANDBOX } #ifdef V8_COMPRESS_POINTERS diff --git a/deps/v8/include/v8-isolate.h b/deps/v8/include/v8-isolate.h index e9f531973b2eef..4571b2c3b79acc 100644 --- a/deps/v8/include/v8-isolate.h +++ b/deps/v8/include/v8-isolate.h @@ -233,7 +233,7 @@ class V8_EXPORT Isolate { * Explicitly specify a startup snapshot blob. The embedder owns the blob. * The embedder *must* ensure that the snapshot is from a trusted source. */ - StartupData* snapshot_blob = nullptr; + const StartupData* snapshot_blob = nullptr; /** * Enables the host application to provide a mechanism for recording @@ -537,6 +537,7 @@ class V8_EXPORT Isolate { kTurboFanOsrCompileStarted = 115, kAsyncStackTaggingCreateTaskCall = 116, kDurationFormat = 117, + kInvalidatedNumberStringPrototypeNoReplaceProtector = 118, // If you add new values here, you'll also need to update Chromium's: // web_feature.mojom, use_counter_callback.cc, and enums.xml. V8 changes to @@ -924,27 +925,10 @@ class V8_EXPORT Isolate { void RemoveGCPrologueCallback(GCCallbackWithData, void* data = nullptr); void RemoveGCPrologueCallback(GCCallback callback); - START_ALLOW_USE_DEPRECATED() - /** - * Sets the embedder heap tracer for the isolate. - * SetEmbedderHeapTracer cannot be used simultaneously with AttachCppHeap. - */ - void SetEmbedderHeapTracer(EmbedderHeapTracer* tracer); - - /* - * Gets the currently active heap tracer for the isolate that was set with - * SetEmbedderHeapTracer. - */ - EmbedderHeapTracer* GetEmbedderHeapTracer(); - END_ALLOW_USE_DEPRECATED() - /** * Sets an embedder roots handle that V8 should consider when performing - * non-unified heap garbage collections. - * - * Using only EmbedderHeapTracer automatically sets up a default handler. - * The intended use case is for setting a custom handler after invoking - * `AttachCppHeap()`. + * non-unified heap garbage collections. The intended use case is for setting + * a custom handler after invoking `AttachCppHeap()`. * * V8 does not take ownership of the handler. */ @@ -955,8 +939,6 @@ class V8_EXPORT Isolate { * embedder maintains ownership of the CppHeap. At most one C++ heap can be * attached to V8. * - * AttachCppHeap cannot be used simultaneously with SetEmbedderHeapTracer. - * * Multi-threaded use requires the use of v8::Locker/v8::Unlocker, see * CppHeap. */ @@ -1346,11 +1328,13 @@ class V8_EXPORT Isolate { * V8 uses this notification to guide heuristics which may result in a * smaller memory footprint at the cost of reduced runtime performance. */ + V8_DEPRECATED("Use IsolateInBackgroundNotification() instead") void EnableMemorySavingsMode(); /** * Optional notification which will disable the memory savings mode. */ + V8_DEPRECATED("Use IsolateInBackgroundNotification() instead") void DisableMemorySavingsMode(); /** @@ -1530,6 +1514,13 @@ class V8_EXPORT Isolate { V8_DEPRECATED("Wasm exceptions are always enabled") void SetWasmExceptionsEnabledCallback(WasmExceptionsEnabledCallback callback); + /** + * Register callback to control whehter Wasm GC is enabled. + * The callback overwrites the value of the flag. + * If the callback returns true, it will also enable Wasm stringrefs. + */ + void SetWasmGCEnabledCallback(WasmGCEnabledCallback callback); + void SetSharedArrayBufferConstructorEnabledCallback( SharedArrayBufferConstructorEnabledCallback callback); diff --git a/deps/v8/include/v8-local-handle.h b/deps/v8/include/v8-local-handle.h index cbf87f949d09fa..633c5633c553d3 100644 --- a/deps/v8/include/v8-local-handle.h +++ b/deps/v8/include/v8-local-handle.h @@ -53,6 +53,7 @@ class Utils; namespace internal { template class CustomArguments; +class SamplingHeapProfiler; } // namespace internal namespace api_internal { @@ -313,6 +314,7 @@ class Local { friend class BasicTracedReference; template friend class TracedReference; + friend class v8::internal::SamplingHeapProfiler; explicit V8_INLINE Local(T* that) : val_(that) {} V8_INLINE static Local New(Isolate* isolate, T* that) { diff --git a/deps/v8/include/v8-metrics.h b/deps/v8/include/v8-metrics.h index 887012ac8c3a0b..418531e22b0b0f 100644 --- a/deps/v8/include/v8-metrics.h +++ b/deps/v8/include/v8-metrics.h @@ -12,6 +12,7 @@ #include "v8-internal.h" // NOLINT(build/include_directory) #include "v8-local-handle.h" // NOLINT(build/include_directory) +#include "v8config.h" // NOLINT(build/include_directory) namespace v8 { @@ -96,16 +97,88 @@ struct GarbageCollectionYoungCycle { }; struct WasmModuleDecoded { + WasmModuleDecoded() = default; + WasmModuleDecoded(bool async, bool streamed, bool success, + size_t module_size_in_bytes, size_t function_count, + int64_t wall_clock_duration_in_us) + : async(async), + streamed(streamed), + success(success), + module_size_in_bytes(module_size_in_bytes), + function_count(function_count), + wall_clock_duration_in_us(wall_clock_duration_in_us) {} + + V8_DEPRECATED("Use the version without cpu_duration_in_us") + WasmModuleDecoded(bool async, bool streamed, bool success, + size_t module_size_in_bytes, size_t function_count, + int64_t wall_clock_duration_in_us, + int64_t cpu_duration_in_us) + : async(async), + streamed(streamed), + success(success), + module_size_in_bytes(module_size_in_bytes), + function_count(function_count), + wall_clock_duration_in_us(wall_clock_duration_in_us), + cpu_duration_in_us(cpu_duration_in_us) {} + + START_ALLOW_USE_DEPRECATED() + // Copy constructor and copy assignment operator are allowed to copy the + // {cpu_duration_in_us} field. + WasmModuleDecoded(const WasmModuleDecoded&) = default; + WasmModuleDecoded& operator=(const WasmModuleDecoded&) = default; + END_ALLOW_USE_DEPRECATED() + bool async = false; bool streamed = false; bool success = false; size_t module_size_in_bytes = 0; size_t function_count = 0; int64_t wall_clock_duration_in_us = -1; + V8_DEPRECATED("We do not collect cpu times any more") int64_t cpu_duration_in_us = -1; }; struct WasmModuleCompiled { + WasmModuleCompiled() = default; + + WasmModuleCompiled(bool async, bool streamed, bool cached, bool deserialized, + bool lazy, bool success, size_t code_size_in_bytes, + size_t liftoff_bailout_count, + int64_t wall_clock_duration_in_us) + : async(async), + streamed(streamed), + cached(cached), + deserialized(deserialized), + lazy(lazy), + success(success), + code_size_in_bytes(code_size_in_bytes), + liftoff_bailout_count(liftoff_bailout_count), + wall_clock_duration_in_us(wall_clock_duration_in_us) {} + + V8_DEPRECATED("Use the version without cpu_duration_in_us") + WasmModuleCompiled(bool async, bool streamed, bool cached, bool deserialized, + bool lazy, bool success, size_t code_size_in_bytes, + size_t liftoff_bailout_count, + int64_t wall_clock_duration_in_us, + int64_t cpu_duration_in_us) + : async(async), + streamed(streamed), + cached(cached), + deserialized(deserialized), + lazy(lazy), + success(success), + code_size_in_bytes(code_size_in_bytes), + liftoff_bailout_count(liftoff_bailout_count), + wall_clock_duration_in_us(wall_clock_duration_in_us), + cpu_duration_in_us(cpu_duration_in_us) {} + + START_ALLOW_USE_DEPRECATED() + // Copy constructor and copy assignment operator are allowed to copy the + // {cpu_duration_in_us} field. + WasmModuleCompiled(const WasmModuleCompiled&) = default; + WasmModuleCompiled& operator=(const WasmModuleCompiled&) = default; + END_ALLOW_USE_DEPRECATED() + bool async = false; bool streamed = false; bool cached = false; @@ -115,6 +188,7 @@ struct WasmModuleCompiled { size_t code_size_in_bytes = 0; size_t liftoff_bailout_count = 0; int64_t wall_clock_duration_in_us = -1; + V8_DEPRECATED("We do not collect cpu times any more") int64_t cpu_duration_in_us = -1; }; diff --git a/deps/v8/include/v8-persistent-handle.h b/deps/v8/include/v8-persistent-handle.h index dbda4edb9baf4e..4fe79862e400f9 100644 --- a/deps/v8/include/v8-persistent-handle.h +++ b/deps/v8/include/v8-persistent-handle.h @@ -252,7 +252,7 @@ class NonCopyablePersistentTraits { * This will clone the contents of storage cell, but not any of the flags, etc. */ template -struct CopyablePersistentTraits { +struct V8_DEPRECATED("Use v8::Global instead") CopyablePersistentTraits { using CopyablePersistent = Persistent>; static const bool kResetInDestructor = true; template diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 32a82f881e7f93..32898e7ef92079 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -285,6 +285,8 @@ class ConvertableToTraceFormat { * V8 Tracing controller. * * Can be implemented by an embedder to record trace events from V8. + * + * Will become obsolete in Perfetto SDK build (v8_use_perfetto = true). */ class TracingController { public: @@ -348,10 +350,16 @@ class TracingController { virtual void OnTraceDisabled() = 0; }; - /** Adds tracing state change observer. */ + /** + * Adds tracing state change observer. + * Does nothing in Perfetto SDK build (v8_use_perfetto = true). + */ virtual void AddTraceStateObserver(TraceStateObserver*) {} - /** Removes tracing state change observer. */ + /** + * Removes tracing state change observer. + * Does nothing in Perfetto SDK build (v8_use_perfetto = true). + */ virtual void RemoveTraceStateObserver(TraceStateObserver*) {} }; diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 6b73fc60bf2c21..d3941512218342 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -596,6 +596,7 @@ class V8_EXPORT HeapGraphNode { kBigInt = 13, // BigInt. kObjectShape = 14, // Internal data used for tracking the shapes (or // "hidden classes") of JS objects. + kWasmObject = 15, // A WasmGC struct or array. }; /** Returns node type (see HeapGraphNode::Type). */ diff --git a/deps/v8/include/v8-script.h b/deps/v8/include/v8-script.h index e2ba845268d921..ea4933dc44ab72 100644 --- a/deps/v8/include/v8-script.h +++ b/deps/v8/include/v8-script.h @@ -347,6 +347,12 @@ class V8_EXPORT Script { * ScriptOrigin. This can be either a v8::String or v8::Undefined. */ Local GetResourceName(); + + /** + * If the script was compiled, returns the positions of lazy functions which + * were eventually compiled and executed. + */ + std::vector GetProducedCompileHints() const; }; enum class ScriptType { kClassic, kModule }; @@ -562,7 +568,8 @@ class V8_EXPORT ScriptCompiler { enum CompileOptions { kNoCompileOptions = 0, kConsumeCodeCache, - kEagerCompile + kEagerCompile, + kProduceCompileHints }; /** diff --git a/deps/v8/include/v8-snapshot.h b/deps/v8/include/v8-snapshot.h index 2400357cf6e069..b15a2b19220f10 100644 --- a/deps/v8/include/v8-snapshot.h +++ b/deps/v8/include/v8-snapshot.h @@ -91,7 +91,7 @@ class V8_EXPORT SnapshotCreator { */ SnapshotCreator(Isolate* isolate, const intptr_t* external_references = nullptr, - StartupData* existing_blob = nullptr); + const StartupData* existing_blob = nullptr); /** * Create and enter an isolate, and set it up for serialization. @@ -102,7 +102,7 @@ class V8_EXPORT SnapshotCreator { * that must be equivalent to CreateParams::external_references. */ SnapshotCreator(const intptr_t* external_references = nullptr, - StartupData* existing_blob = nullptr); + const StartupData* existing_blob = nullptr); /** * Destroy the snapshot creator, and exit and dispose of the Isolate diff --git a/deps/v8/include/v8-template.h b/deps/v8/include/v8-template.h index 669012a9814465..11296cd48896dd 100644 --- a/deps/v8/include/v8-template.h +++ b/deps/v8/include/v8-template.h @@ -30,7 +30,9 @@ class Signature; F(AsyncIteratorPrototype, initial_async_iterator_prototype) \ F(ErrorPrototype, initial_error_prototype) \ F(IteratorPrototype, initial_iterator_prototype) \ - F(ObjProto_valueOf, object_value_of_function) + F(MapIteratorPrototype, initial_map_iterator_prototype) \ + F(ObjProto_valueOf, object_value_of_function) \ + F(SetIteratorPrototype, initial_set_iterator_prototype) enum Intrinsic { #define V8_DECL_INTRINSIC(name, iname) k##name, diff --git a/deps/v8/include/v8-traced-handle.h b/deps/v8/include/v8-traced-handle.h index e0fd57c49d4c55..784016b37c93a4 100644 --- a/deps/v8/include/v8-traced-handle.h +++ b/deps/v8/include/v8-traced-handle.h @@ -117,11 +117,11 @@ class TracedReferenceBase { /** * A traced handle with copy and move semantics. The handle is to be used - * together with |v8::EmbedderHeapTracer| or as part of GarbageCollected objects - * (see v8-cppgc.h) and specifies edges from C++ objects to JavaScript. + * together as part of GarbageCollected objects (see v8-cppgc.h) or from stack + * and specifies edges from C++ objects to JavaScript. * * The exact semantics are: - * - Tracing garbage collections use |v8::EmbedderHeapTracer| or cppgc. + * - Tracing garbage collections using CppHeap. * - Non-tracing garbage collections refer to * |v8::EmbedderRootsHandler::IsRoot()| whether the handle should * be treated as root or not. @@ -166,7 +166,6 @@ class BasicTracedReference : public TracedReferenceBase { Isolate* isolate, T* that, void* slot, internal::GlobalHandleStoreMode store_mode); - friend class EmbedderHeapTracer; template friend class Local; friend class Object; @@ -181,13 +180,7 @@ class BasicTracedReference : public TracedReferenceBase { /** * A traced handle without destructor that clears the handle. The embedder needs * to ensure that the handle is not accessed once the V8 object has been - * reclaimed. This can happen when the handle is not passed through the - * EmbedderHeapTracer. For more details see BasicTracedReference. - * - * The reference assumes the embedder has precise knowledge about references at - * all times. In case V8 needs to separately handle on-stack references, the - * embedder is required to set the stack start through - * |EmbedderHeapTracer::SetStackStart|. + * reclaimed. For more details see BasicTracedReference. */ template class TracedReference : public BasicTracedReference { diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index a9d6f92aff4599..99855d6cf3a0ff 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -8,10 +8,10 @@ // These macros define the version number for the current version. // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. -#define V8_MAJOR_VERSION 10 -#define V8_MINOR_VERSION 9 -#define V8_BUILD_NUMBER 194 -#define V8_PATCH_LEVEL 9 +#define V8_MAJOR_VERSION 11 +#define V8_MINOR_VERSION 1 +#define V8_BUILD_NUMBER 277 +#define V8_PATCH_LEVEL 3 // 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 2ac27b36b47ee3..a967d92c39c151 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -308,6 +308,9 @@ path. Add it with -I to the command line // V8_HAS_BUILTIN_EXPECT - __builtin_expect() supported // V8_HAS_BUILTIN_FRAME_ADDRESS - __builtin_frame_address() supported // V8_HAS_BUILTIN_POPCOUNT - __builtin_popcount() supported +// V8_HAS_BUILTIN_ADD_OVERFLOW - __builtin_add_overflow() supported +// V8_HAS_BUILTIN_SUB_OVERFLOW - __builtin_sub_overflow() supported +// V8_HAS_BUILTIN_MUL_OVERFLOW - __builtin_mul_overflow() supported // V8_HAS_BUILTIN_SADD_OVERFLOW - __builtin_sadd_overflow() supported // V8_HAS_BUILTIN_SSUB_OVERFLOW - __builtin_ssub_overflow() supported // V8_HAS_BUILTIN_UADD_OVERFLOW - __builtin_uadd_overflow() supported @@ -339,9 +342,18 @@ path. Add it with -I to the command line # define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (__has_attribute(always_inline)) # define V8_HAS_ATTRIBUTE_CONSTINIT \ (__has_attribute(require_constant_initialization)) +# define V8_HAS_ATTRIBUTE_CONST (__has_attribute(const)) # define V8_HAS_ATTRIBUTE_NONNULL (__has_attribute(nonnull)) # define V8_HAS_ATTRIBUTE_NOINLINE (__has_attribute(noinline)) # define V8_HAS_ATTRIBUTE_UNUSED (__has_attribute(unused)) +// Support for the "preserve_most" attribute is incomplete on 32-bit, and we see +// failures in component builds. Thus only use it in 64-bit non-component builds +// for now. +#if (defined(_M_X64) || defined(__x86_64__) || defined(__AARCH64EL__) || \ + defined(_M_ARM64)) /* x64 or arm64 */ \ + && !defined(COMPONENT_BUILD) +# define V8_HAS_ATTRIBUTE_PRESERVE_MOST (__has_attribute(preserve_most)) +#endif # define V8_HAS_ATTRIBUTE_VISIBILITY (__has_attribute(visibility)) # define V8_HAS_ATTRIBUTE_WARN_UNUSED_RESULT \ (__has_attribute(warn_unused_result)) @@ -360,6 +372,9 @@ path. Add it with -I to the command line # define V8_HAS_BUILTIN_EXPECT (__has_builtin(__builtin_expect)) # define V8_HAS_BUILTIN_FRAME_ADDRESS (__has_builtin(__builtin_frame_address)) # define V8_HAS_BUILTIN_POPCOUNT (__has_builtin(__builtin_popcount)) +# define V8_HAS_BUILTIN_ADD_OVERFLOW (__has_builtin(__builtin_add_overflow)) +# define V8_HAS_BUILTIN_SUB_OVERFLOW (__has_builtin(__builtin_sub_overflow)) +# define V8_HAS_BUILTIN_MUL_OVERFLOW (__has_builtin(__builtin_mul_overflow)) # define V8_HAS_BUILTIN_SADD_OVERFLOW (__has_builtin(__builtin_sadd_overflow)) # define V8_HAS_BUILTIN_SSUB_OVERFLOW (__has_builtin(__builtin_ssub_overflow)) # define V8_HAS_BUILTIN_UADD_OVERFLOW (__has_builtin(__builtin_uadd_overflow)) @@ -455,6 +470,16 @@ path. Add it with -I to the command line #endif +// A macro to mark functions whose values don't change (e.g. across calls) +// and thereby compiler is free to hoist and fold multiple calls together. +// Use like: +// V8_CONST int foo() { ... } +#if V8_HAS_ATTRIBUTE_CONST +# define V8_CONST __attribute__((const)) +#else +# define V8_CONST +#endif + // A macro to mark a declaration as requiring constant initialization. // Use like: // int* foo V8_CONSTINIT; @@ -487,6 +512,21 @@ path. Add it with -I to the command line #endif +// A macro used to change the calling conventions to preserve all registers (no +// caller-saved registers). Use this for cold functions called from hot +// functions. +// Note: The attribute is considered experimental, so apply with care. Also, +// "preserve_most" is currently not handling the return value correctly, so only +// use it for functions returning void (see https://reviews.llvm.org/D141020). +// Use like: +// V8_NOINLINE V8_PRESERVE_MOST void UnlikelyMethod(); +#if V8_HAS_ATTRIBUTE_PRESERVE_MOST +# define V8_PRESERVE_MOST __attribute__((preserve_most)) +#else +# define V8_PRESERVE_MOST /* NOT SUPPORTED */ +#endif + + // A macro (V8_DEPRECATED) to mark classes or functions as deprecated. #if defined(V8_DEPRECATION_WARNINGS) # define V8_DEPRECATED(message) [[deprecated(message)]] diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index b5d6231600488a..f14a81b238a080 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -52,6 +52,10 @@ 'linux-v8-dr': 'release_x64', }, 'client.v8': { + # PGO + 'V8 Linux PGO instrumentation - builder' : 'builtins_profiling_x86', + 'V8 Linux64 PGO instrumentation - builder' : 'builtins_profiling_x64', + # Linux. 'V8 Linux - builder': 'release_x86_gcmole', 'V8 Linux - debug builder': 'debug_x86', @@ -59,14 +63,13 @@ 'V8 Linux - noi18n - debug builder': 'debug_x86_no_i18n', 'V8 Linux - verify csa - builder': 'release_x86_verify_csa', # Linux64. - 'V8 Linux64 - builder': 'release_x64', + 'V8 Linux64 - builder': 'release_x64_gcmole', 'V8 Linux64 - builder (goma cache silo)': 'release_x64', 'V8 Linux64 - builder (reclient)': 'release_x64_reclient', 'V8 Linux64 - builder (reclient compare)': 'release_x64_reclient', 'V8 Linux64 - debug builder': 'debug_x64', 'V8 Linux64 - external code space - debug - builder': 'debug_x64_external_code_space', 'V8 Linux64 - custom snapshot - debug builder': 'debug_x64_custom', - 'V8 Linux64 - heap sandbox - debug - builder': 'debug_x64_heap_sandbox', 'V8 Linux64 - internal snapshot - builder': 'release_x64_internal', 'V8 Linux64 - debug - header includes - builder': 'debug_x64_header_includes', 'V8 Linux64 - no sandbox - debug builder': 'debug_x64_no_sandbox', @@ -103,14 +106,15 @@ # Sanitizers. 'V8 Linux64 ASAN - builder': 'release_x64_asan', 'V8 Linux64 TSAN - builder': 'release_x64_tsan', + 'V8 Linux64 TSAN - debug builder': 'debug_x64_tsan_minimal_symbols', 'V8 Linux64 TSAN - no-concurrent-marking - builder': 'release_x64_tsan_no_cm', 'V8 Linux - arm64 - sim - CFI - builder': 'release_simulate_arm64_cfi', 'V8 Linux - arm64 - sim - MSAN - builder': 'release_simulate_arm64_msan', # FYI. 'V8 iOS - sim - builder': 'release_x64_ios_simulator', - 'V8 Linux64 - arm64 - sim - heap sandbox - debug - builder': 'debug_x64_heap_sandbox_arm64_sim', 'V8 Linux64 - arm64 - sim - no pointer compression - builder': 'release_simulate_arm64_no_pointer_compression', + 'V8 Linux64 - coverage': 'release_x64_coverage', 'V8 Linux64 - cppgc-non-default - debug - builder': 'debug_x64_non_default_cppgc', 'V8 Linux64 - debug - perfetto - builder': 'debug_x64_perfetto', 'V8 Linux64 - disable runtime call stats - builder': 'release_x64_disable_runtime_call_stats', @@ -168,7 +172,7 @@ 'V8 Clusterfuzz Linux64 UBSan - release builder': 'release_x64_ubsan_recover', 'V8 Clusterfuzz Linux64 ASAN sandbox testing - release builder': - 'release_x64_asan_sandbox_testing', + 'release_x64_asan_symbolized_expose_memory_corruption', }, 'client.v8.perf' : { 'V8 Arm - builder - perf': 'official_arm', @@ -183,7 +187,7 @@ 'V8 Arm - builder': 'release_arm', 'V8 Arm - debug builder': 'debug_arm', 'V8 Android Arm - builder': 'release_android_arm', - 'V8 Linux - arm - sim - builder': 'release_simulate_arm', + 'V8 Linux - arm - sim - builder': 'release_simulate_arm_gcmole', 'V8 Linux - arm - sim - debug builder': 'debug_simulate_arm', 'V8 Linux - arm - sim - lite - builder': 'release_simulate_arm_lite', 'V8 Linux - arm - sim - lite - debug builder': 'debug_simulate_arm_lite', @@ -191,7 +195,7 @@ 'V8 Android Arm64 - builder': 'release_android_arm64', 'V8 Android Arm64 - debug builder': 'debug_android_arm64', 'V8 Arm64 - builder': 'release_arm64_hard_float', - 'V8 Linux - arm64 - sim - builder': 'release_simulate_arm64', + 'V8 Linux - arm64 - sim - builder': 'release_simulate_arm64_gcmole', 'V8 Linux - arm64 - sim - debug builder': 'debug_simulate_arm64', 'V8 Linux - arm64 - sim - gc stress - builder': 'debug_simulate_arm64', # Mips. @@ -225,6 +229,7 @@ 'release_simulate_arm64_no_pointer_compression', 'v8_linux64_cppgc_non_default_compile_dbg': 'debug_x64_non_default_cppgc', 'v8_linux64_compile_dbg': 'debug_x64_trybot', + 'v8_linux64_coverage': 'release_x64_coverage', 'v8_linux64_no_sandbox_compile_dbg': 'debug_x64_no_sandbox', 'v8_linux64_dict_tracking_compile_dbg': 'debug_x64_dict_tracking_trybot', 'v8_linux64_disable_runtime_call_stats_compile_rel': 'release_x64_disable_runtime_call_stats', @@ -237,14 +242,12 @@ 'v8_linux64_gcc_compile_rel': 'release_x64_gcc', 'v8_linux64_gcov_coverage': 'release_x64_gcc_coverage', 'v8_linux64_header_includes_dbg': 'debug_x64_header_includes', - 'v8_linux64_heap_sandbox_compile_dbg': 'debug_x64_heap_sandbox', 'v8_linux64_minor_mc_compile_dbg': 'debug_x64_trybot', - 'v8_linux_arm64_sim_heap_sandbox_compile_dbg': 'debug_x64_heap_sandbox_arm64_sim', 'v8_linux64_fyi_compile_rel': 'release_x64_test_features_trybot', 'v8_linux64_nodcheck_compile_rel': 'release_x64', 'v8_linux64_perfetto_compile_dbg': 'debug_x64_perfetto', 'v8_linux64_no_pointer_compression_compile_rel': 'release_x64_no_pointer_compression', - 'v8_linux64_compile_rel': 'release_x64_test_features_trybot', + 'v8_linux64_compile_rel': 'release_x64_test_features_gcmole_trybot', 'v8_linux64_no_sandbox_compile_rel': 'release_x64_no_sandbox', 'v8_linux64_predictable_compile_rel': 'release_x64_predictable', 'v8_linux64_shared_compile_rel': 'release_x64_shared_verify_heap', @@ -259,6 +262,7 @@ 'v8_linux_riscv32_compile_rel': 'release_simulate_riscv32', 'v8_linux64_riscv64_compile_rel': 'release_simulate_riscv64', 'v8_linux64_tsan_compile_rel': 'release_x64_tsan_minimal_symbols', + 'v8_linux64_tsan_compile_dbg': 'debug_x64_tsan_minimal_symbols', 'v8_linux64_tsan_no_cm_compile_rel': 'release_x64_tsan_no_cm', 'v8_linux64_tsan_isolates_compile_rel': 'release_x64_tsan_minimal_symbols', @@ -284,15 +288,15 @@ 'v8_mac64_compile_rel': 'release_x64_trybot', 'v8_mac64_dbg': 'debug_x64', 'v8_mac64_compile_dbg': 'debug_x64', - 'v8_mac64_compile_full_compile_dbg': 'full_debug_x64', + 'v8_mac64_noopt_compile_dbg': 'full_debug_x64', 'v8_mac64_asan_compile_rel': 'release_x64_asan_no_lsan', - 'v8_linux_arm_compile_rel': 'release_simulate_arm_trybot', + 'v8_linux_arm_compile_rel': 'release_simulate_arm_gcmole_trybot', 'v8_linux_arm_lite_compile_dbg': 'debug_simulate_arm_lite', 'v8_linux_arm_lite_compile_rel': 'release_simulate_arm_lite_trybot', 'v8_linux_arm_compile_dbg': 'debug_simulate_arm', 'v8_linux_arm_armv8a_rel': 'release_simulate_arm_trybot', 'v8_linux_arm_armv8a_dbg': 'debug_simulate_arm', - 'v8_linux_arm64_compile_rel': 'release_simulate_arm64_trybot', + 'v8_linux_arm64_compile_rel': 'release_simulate_arm64_gcmole_trybot', 'v8_linux_arm64_cfi_compile_rel' : 'release_simulate_arm64_cfi', 'v8_linux_arm64_compile_dbg': 'debug_simulate_arm64', 'v8_linux_arm64_gc_stress_compile_dbg': 'debug_simulate_arm64', @@ -399,20 +403,26 @@ 'debug_bot', 'simulate_arm64', 'asan', 'lsan'], # Release configs for simulators. - 'release_simulate_arm': [ - 'release_bot', 'simulate_arm'], + 'release_simulate_arm_gcmole': [ + 'release_bot', 'simulate_arm', 'gcmole'], 'release_simulate_arm_lite': [ 'release_bot', 'simulate_arm', 'v8_enable_lite_mode'], - 'release_simulate_arm_trybot': [ - 'release_trybot', 'simulate_arm'], + 'release_simulate_arm_gcmole_trybot': [ + 'release_trybot', 'simulate_arm', 'gcmole'], 'release_simulate_arm_lite_trybot': [ 'release_trybot', 'simulate_arm', 'v8_enable_lite_mode'], + 'release_simulate_arm_trybot': [ + 'release_trybot', 'simulate_arm'], 'release_simulate_arm64': [ 'release_bot', 'simulate_arm64'], 'release_simulate_arm64_cfi': [ 'release_bot', 'simulate_arm64', 'v8_control_flow_integrity'], + 'release_simulate_arm64_gcmole': [ + 'release_bot', 'simulate_arm64', 'gcmole'], + 'release_simulate_arm64_gcmole_trybot': [ + 'release_trybot', 'simulate_arm64', 'gcmole'], 'release_simulate_arm64_no_pointer_compression': [ - 'release_bot', 'simulate_arm64_no_sandbox', 'dcheck_always_on', + 'release_bot', 'simulate_arm64', 'no_sandbox', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_disable_pointer_compression'], 'release_simulate_arm64_msan': [ 'release_bot', 'simulate_arm64', 'msan'], @@ -445,7 +455,7 @@ 'debug_arm64': [ 'debug_bot', 'arm64'], 'debug_arm64_no_pointer_compression': [ - 'debug_bot', 'arm64_no_sandbox', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_enable_javascript_promise_hooks', + 'debug_bot', 'arm64', 'no_sandbox', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_enable_javascript_promise_hooks', 'v8_disable_pointer_compression'], 'full_debug_arm64': [ 'debug_bot', 'arm64', 'v8_full_debug'], @@ -492,6 +502,9 @@ 'release_x64_asan_no_lsan_verify_heap_dchecks': [ 'release_bot', 'x64', 'asan', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_heap'], + 'release_x64_asan_symbolized_expose_memory_corruption': [ + 'release_bot', 'x64', 'asan', 'symbolized', + 'v8_expose_memory_corruption_api'], 'release_x64_asan_symbolized_verify_heap': [ 'release_bot', 'x64', 'asan', 'lsan', 'symbolized', 'v8_verify_heap'], @@ -499,9 +512,13 @@ 'release_bot', 'x64', 'cfi'], 'release_x64_cfi_clusterfuzz': [ 'release_bot', 'x64', 'cfi_clusterfuzz'], + 'release_x64_coverage': [ + 'release_bot', 'x64', 'clang_coverage'], 'release_x64_fuzzilli': [ 'release_bot', 'x64', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_heap', 'v8_verify_csa', 'fuzzilli'], + 'release_x64_gcmole': [ + 'release_bot', 'x64', 'gcmole'], 'release_x64_msvc': [ 'release_bot_no_goma', 'x64', 'minimal_symbols', 'msvc'], 'release_x64_correctness_fuzzer' : [ @@ -526,14 +543,16 @@ 'release_x64_minimal_symbols_reclient': [ 'release_bot_reclient', 'x64', 'minimal_symbols'], 'release_x64_no_pointer_compression': [ - 'release_bot', 'x64_no_sandbox', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_enable_javascript_promise_hooks', - 'v8_disable_pointer_compression'], + 'release_bot', 'x64', 'no_sandbox', 'dcheck_always_on', 'v8_enable_slow_dchecks', + 'v8_enable_javascript_promise_hooks', 'v8_disable_pointer_compression'], 'release_x64_reclient': [ 'release_bot_reclient', 'x64'], 'release_x64_no_sandbox': [ - 'release_bot', 'x64_no_sandbox'], + 'release_bot', 'x64', 'no_sandbox'], 'release_x64_trybot': [ 'release_trybot', 'x64'], + 'release_x64_test_features_gcmole_trybot': [ + 'release_trybot', 'x64', 'v8_enable_test_features', 'gcmole'], 'release_x64_test_features_trybot': [ 'release_trybot', 'x64', 'v8_enable_test_features'], 'release_x64_tsan': [ @@ -555,9 +574,6 @@ 'v8_enable_slow_dchecks', 'v8_verify_csa'], 'release_x64_webassembly_disabled': [ 'release_bot', 'x64', 'webassembly_disabled'], - 'release_x64_asan_sandbox_testing': [ - 'release_bot', 'x64', 'asan', 'symbolized', 'v8_enable_sandbox_future', - 'v8_expose_memory_corruption_api'], # Official configs for x64. 'official_x64': [ @@ -583,10 +599,6 @@ 'debug_bot_no_goma', 'x64', 'gcc', 'lld', 'no_custom_libcxx'], 'debug_x64_header_includes': [ 'debug_bot', 'x64', 'v8_check_header_includes'], - 'debug_x64_heap_sandbox': [ - 'debug_bot', 'x64', 'v8_enable_sandbox_future', 'v8_expose_memory_corruption_api'], - 'debug_x64_heap_sandbox_arm64_sim': [ - 'debug_bot', 'simulate_arm64', 'v8_enable_sandbox_future', 'v8_expose_memory_corruption_api'], 'debug_x64_minimal_symbols': [ 'debug_bot', 'x64', 'minimal_symbols'], 'debug_x64_non_default_cppgc': [ @@ -594,7 +606,7 @@ 'debug_x64_perfetto': [ 'debug_bot', 'x64', 'perfetto'], 'debug_x64_no_sandbox': [ - 'debug_bot', 'x64_no_sandbox'], + 'debug_bot', 'x64', 'no_sandbox'], 'debug_x64_single_generation': [ 'debug_bot', 'x64', 'v8_enable_single_generation'], 'debug_x64_trybot': [ @@ -603,6 +615,9 @@ 'debug_trybot', 'x64', 'v8_enable_dict_property_const_tracking'], 'debug_x64_trybot_custom': [ 'debug_trybot', 'x64', 'v8_snapshot_custom'], + 'debug_x64_tsan_minimal_symbols': [ + 'debug_bot_no_slow_dchecks', 'minimal_symbols', 'x64', 'dcheck_always_on', + 'tsan', 'v8_disable_verify_heap', 'v8_fast_mksnapshot'], 'full_debug_x64': [ 'debug_bot', 'x64', 'v8_full_debug'], @@ -654,7 +669,11 @@ # Torque compare test 'torque_compare': [ - 'release_bot', 'verify_torque'] + 'release_bot', 'verify_torque'], + + # PGO + 'builtins_profiling_x86': ['builtins_profiling', 'x86'], + 'builtins_profiling_x64': ['builtins_profiling', 'x64'], }, 'mixins': { @@ -671,11 +690,7 @@ }, 'arm64': { - 'gn_args': 'target_cpu="arm64" v8_enable_sandbox=true', - }, - - 'arm64_no_sandbox': { - 'gn_args': 'target_cpu="arm64" v8_enable_sandbox=false', + 'gn_args': 'target_cpu="arm64"', }, 'asan': { @@ -683,6 +698,11 @@ 'gn_args': 'is_asan=true', }, + 'builtins_profiling': { + 'mixins' : ['release_bot_reclient'], + 'gn_args': 'v8_enable_builtins_profiling=true', + }, + 'cfi': { 'mixins': ['v8_enable_test_features'], 'gn_args': ('is_cfi=true use_cfi_cast=true use_cfi_icall=true ' @@ -699,6 +719,10 @@ 'gn_args': 'is_clang=true', }, + 'clang_coverage': { + 'gn_args': 'use_clang_coverage=true', + }, + 'conservative_stack_scanning': { 'gn_args': 'v8_enable_conservative_stack_scanning=true ' 'v8_enable_inner_pointer_resolution_mb=true', @@ -716,6 +740,12 @@ 'gn_args': 'is_debug=true v8_enable_backtrace=true', }, + 'debug_bot_no_slow_dchecks': { + 'mixins': [ + 'debug', 'shared', 'goma', 'v8_disable_slow_dchecks', + 'v8_optimized_debug', 'v8_enable_google_benchmark'], + }, + 'debug_bot': { 'mixins': [ 'debug', 'shared', 'goma', 'v8_enable_slow_dchecks', @@ -793,12 +823,12 @@ 'msan': { 'mixins': ['v8_enable_test_features'], - 'gn_args': 'is_msan=true msan_track_origins=2', + 'gn_args': 'is_msan=true msan_track_origins=2 instrumented_libraries_release="xenial"', }, 'msan_no_origins': { 'mixins': ['v8_enable_test_features'], - 'gn_args': 'is_msan=true msan_track_origins=0', + 'gn_args': 'is_msan=true msan_track_origins=0 instrumented_libraries_release="xenial"', }, 'msvc': { @@ -813,6 +843,10 @@ 'gn_args': 'use_goma=false', }, + 'no_sandbox': { + 'gn_args': 'v8_enable_sandbox=false', + }, + 'no_sysroot': { 'gn_args': 'use_sysroot=false', }, @@ -862,11 +896,7 @@ }, 'simulate_arm64': { - 'gn_args': 'target_cpu="x64" v8_target_cpu="arm64" v8_enable_sandbox=true', - }, - - 'simulate_arm64_no_sandbox': { - 'gn_args': 'target_cpu="x64" v8_target_cpu="arm64" v8_enable_sandbox=false', + 'gn_args': 'target_cpu="x64" v8_target_cpu="arm64"', }, 'simulate_loong64': { @@ -938,8 +968,8 @@ 'gn_args': 'v8_enable_runtime_call_stats=false', }, - 'v8_enable_sandbox_future': { - 'gn_args': 'v8_enable_sandbox_future=true', + 'v8_disable_verify_heap': { + 'gn_args': 'v8_enable_verify_heap=false', }, 'v8_expose_memory_corruption_api': { @@ -954,6 +984,10 @@ 'gn_args': 'v8_enable_slow_dchecks=true', }, + 'v8_disable_slow_dchecks': { + 'gn_args': 'v8_enable_slow_dchecks=false', + }, + 'v8_enable_javascript_promise_hooks': { 'gn_args': 'v8_enable_javascript_promise_hooks=true', }, @@ -989,6 +1023,10 @@ 'gn_args': 'v8_enable_vtunejit=true v8_enable_vtunetracemark=true', }, + 'v8_fast_mksnapshot': { + 'gn_args': 'v8_enable_fast_mksnapshot=true', + }, + 'v8_full_debug': { 'gn_args': 'v8_optimized_debug=false', }, @@ -1031,11 +1069,7 @@ }, 'x64': { - 'gn_args': 'target_cpu="x64" v8_enable_sandbox=true', - }, - - 'x64_no_sandbox': { - 'gn_args': 'target_cpu="x64" v8_enable_sandbox=false', + 'gn_args': 'target_cpu="x64"', }, 'x86': { diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl index 19d5e1845249ec..d63fff9b4f7668 100644 --- a/deps/v8/infra/testing/builders.pyl +++ b/deps/v8/infra/testing/builders.pyl @@ -89,7 +89,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -149,7 +150,7 @@ }, 'tests': [ {'name': 'mozilla', 'variant': 'default'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'variant': 'default', 'shards': 2}, ], }, @@ -179,7 +180,7 @@ ], 'shards': 4, }, - {'name': 'gcmole'}, + {'name': 'gcmole_v3', 'variant': 'ia32', 'shards': 4}, ], }, 'v8_linux_optional_rel': { @@ -210,6 +211,7 @@ '--extra-flags', '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx', ], + 'shards': 2, }, { 'name': 'v8testing', @@ -237,6 +239,7 @@ '--extra-flags', '--noenable-ssse3 --noenable-sse4-1 --noenable-avx', ], + 'shards': 2, }, { 'name': 'v8testing', @@ -258,6 +261,7 @@ 'suffix': 'nosse4', 'variant': 'default', 'test_args': ['--extra-flags', '--noenable-sse4-1 --noenable-avx'], + 'shards': 2, }, { 'name': 'v8testing', @@ -275,7 +279,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2, }, { 'name': 'v8testing', @@ -325,6 +330,7 @@ {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 10}, {'name': 'v8testing', 'variant': 'extra', 'shards': 10}, + {'name': 'gcmole_v3', 'variant': 'arm', 'shards': 4}, ], }, ############################################################################## @@ -348,10 +354,22 @@ {'name': 'benchmarks'}, {'name': 'mozilla'}, {'name': 'optimize_for_size'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 3}, ], }, + 'v8_linux64_coverage': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-18.04', + }, + 'tests': [ + # TODO(https://crbug.com/1265931): Speed things up for now. Later replace + # mjsunit and unittests with full v8testing. + # {'name': 'v8testing'}, + {'name': 'mjsunit', 'variant': 'default'}, + {'name': 'unittests', 'variant': 'default'}, + ], + }, 'v8_linux64_cppgc_non_default_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64-avx2', @@ -361,6 +379,14 @@ {'name': 'v8testing', 'shards': 3}, ], }, + 'v8_linux64_css_dbg': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-18.04', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 5}, + ], + }, 'v8_linux64_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64-avx2', @@ -430,14 +456,10 @@ {'name': 'webkit', 'variant': 'stress_sampling'}, # Stress snapshot. {'name': 'mjsunit', 'variant': 'stress_snapshot'}, - # Maglev. - {'name': 'mjsunit', 'variant': 'maglev'}, # Stress maglev. {'name': 'mjsunit', 'variant': 'stress_maglev'}, # Experimental regexp engine. {'name': 'mjsunit', 'variant': 'experimental_regexp'}, - # Wasm write protect code space. - {'name': 'mjsunit', 'variant': 'wasm_write_protect_code'}, ], }, 'v8_linux64_gc_stress_custom_snapshot_dbg': { @@ -489,14 +511,6 @@ {'name': 'v8testing'}, ], }, - 'v8_linux64_heap_sandbox_dbg': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-18.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 4}, - ], - }, 'v8_linux64_minor_mc_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64-avx2', @@ -599,6 +613,20 @@ {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, # Maglev -- move to extra once more architectures are supported. {'name': 'mjsunit', 'variant': 'maglev'}, + # GCMole. + {'name': 'gcmole_v3', 'variant': 'x64', 'shards': 4}, + { + 'name': 'gcmole_v2', + 'variant': 'x64', + 'suffix': 'test single host', + 'test_args': ['--test-run'], + }, + { + 'name': 'gcmole_v3', + 'variant': 'x64', + 'suffix': 'test multi host', + 'test_args': ['--test-run'], + }, ], }, 'v8_linux64_predictable_rel': { @@ -635,6 +663,18 @@ {'name': 'v8testing', 'variant': 'stress_concurrent_allocation', 'shards': 2}, ], }, + 'v8_linux64_tsan_dbg': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-18.04', + }, + 'tests': [ + {'name': 'benchmarks', 'shards': 2}, + {'name': 'mozilla', 'shards': 4}, + {'name': 'test262', 'variant': 'default', 'shards': 5}, + {'name': 'v8testing', 'shards': 12}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 10}, + ], + }, 'v8_linux64_tsan_no_cm_rel': { 'swarming_dimensions' : { 'os': 'Ubuntu-18.04', @@ -699,14 +739,6 @@ {'name': 'd8testing', 'test_args': ['--gc-stress'], 'shards': 12}, ], }, - 'v8_linux_arm64_sim_heap_sandbox_dbg': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-18.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 14}, - ], - }, 'v8_linux_arm64_rel': { 'swarming_dimensions' : { 'os': 'Ubuntu-18.04', @@ -717,6 +749,7 @@ {'name': 'test262', 'variant': 'default', 'shards': 4}, {'name': 'v8testing', 'shards': 14}, {'name': 'v8testing', 'variant': 'extra', 'shards': 14}, + {'name': 'gcmole_v3', 'variant': 'arm64', 'shards': 4}, ], }, 'v8_linux_arm64_cfi_rel': { @@ -809,7 +842,7 @@ # Win64 'v8_win64_asan_rel': { 'swarming_dimensions' : { - 'os': 'Windows-10-19042', + 'os': 'Windows-10-19045', }, 'tests': [ {'name': 'v8testing', 'shards': 5}, @@ -818,7 +851,7 @@ 'v8_win64_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Windows-10-19042', + 'os': 'Windows-10-19045', }, 'tests': [ {'name': 'mozilla'}, @@ -830,7 +863,7 @@ 'v8_win64_msvc_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Windows-10-19042', + 'os': 'Windows-10-19045', }, 'tests': [ {'name': 'mozilla'}, @@ -841,7 +874,7 @@ 'v8_win64_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Windows-10-19042', + 'os': 'Windows-10-19045', }, 'tests': [ {'name': 'mozilla'}, @@ -855,7 +888,7 @@ 'v8_mac64_asan_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 8}, @@ -864,7 +897,7 @@ 'v8_mac64_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'mozilla'}, @@ -876,16 +909,25 @@ 'v8_mac64_gc_stress_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'd8testing', 'test_args': ['--gc-stress'], 'shards': 6}, ], }, + 'v8_mac64_noopt_dbg': { + 'swarming_dimensions' : { + 'cpu': 'x86-64', + 'os': 'Mac-12', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 6}, + ], + }, 'v8_mac64_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'mozilla'}, @@ -902,6 +944,8 @@ }, 'tests': [ {'name': 'v8testing'}, + # Maglev -- move to extra once more architectures are supported. + {'name': 'mjsunit', 'variant': 'maglev'}, ], }, 'v8_mac_arm64_dbg': { @@ -912,6 +956,8 @@ }, 'tests': [ {'name': 'v8testing'}, + # Maglev -- move to extra once more architectures are supported. + {'name': 'mjsunit', 'variant': 'maglev'}, ], }, 'v8_mac_arm64_full_dbg': { @@ -922,6 +968,8 @@ }, 'tests': [ {'name': 'v8testing'}, + # Maglev -- move to extra once more architectures are supported. + {'name': 'mjsunit', 'variant': 'maglev'}, ], }, 'v8_mac_arm64_no_pointer_compression_dbg': { @@ -937,7 +985,7 @@ 'v8_mac_arm64_sim_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 8}, @@ -947,7 +995,7 @@ 'v8_mac_arm64_sim_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 8}, @@ -957,7 +1005,7 @@ 'v8_mac_arm64_sim_nodcheck_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 8}, @@ -1042,7 +1090,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1050,7 +1099,7 @@ 'test_args': ['--extra-flags', '--noenable-avx'], 'shards': 2 }, - {'name': 'gcmole'}, + {'name': 'gcmole_v3', 'variant': 'ia32', 'shards': 4}, ], }, 'V8 Linux - arm64 - sim - CFI': { @@ -1086,9 +1135,9 @@ {'name': 'mozilla', 'variant': 'code_serializer', 'shards': 1}, {'name': 'mozilla', 'variant': 'extra'}, {'name': 'optimize_for_size'}, - {'name': 'test262', 'shards': 6}, + {'name': 'test262', 'shards': 12}, {'name': 'test262', 'variant': 'code_serializer', 'shards': 2}, - {'name': 'test262', 'variant': 'extra', 'shards': 5}, + {'name': 'test262', 'variant': 'extra', 'shards': 10}, {'name': 'v8testing', 'shards': 3}, { 'name': 'v8testing', @@ -1096,7 +1145,7 @@ 'test_args': ['--isolates'], 'shards': 4 }, - {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, # Nosse3. { 'name': 'mozilla', @@ -1107,7 +1156,8 @@ 'name': 'test262', 'suffix': 'nosse3', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1125,7 +1175,8 @@ 'name': 'test262', 'suffix': 'nossse3', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-ssse3 --noenable-sse4-1 --noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-ssse3 --noenable-sse4-1 --noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1143,7 +1194,8 @@ 'name': 'test262', 'suffix': 'nosse4', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-sse4-1 --noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-sse4-1 --noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1161,7 +1213,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1203,7 +1256,7 @@ }, 'tests': [ {'name': 'mozilla', 'variant': 'default'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'variant': 'default'}, ], }, @@ -1224,7 +1277,7 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing'}, ], }, @@ -1253,7 +1306,7 @@ {'name': 'optimize_for_size'}, {'name': 'perf_integration'}, {'name': 'test262', 'shards': 2}, - {'name': 'test262', 'variant': 'assert_types'}, + {'name': 'test262', 'variant': 'assert_types', 'shards': 2}, {'name': 'test262', 'variant': 'extra', 'shards': 2}, {'name': 'v8initializers'}, {'name': 'v8testing'}, @@ -1274,13 +1327,28 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', 'suffix': 'noavx', 'test_args': ['--extra-flags', '--noenable-avx'] }, + # GCMole. + {'name': 'gcmole_v3', 'variant': 'x64', 'shards': 4}, + { + 'name': 'gcmole_v2', + 'variant': 'x64', + 'suffix': 'test single host', + 'test_args': ['--test-run'], + }, + { + 'name': 'gcmole_v3', + 'variant': 'x64', + 'suffix': 'test multi host', + 'test_args': ['--test-run'], + }, ], }, 'V8 Linux64 - cfi': { @@ -1291,10 +1359,22 @@ {'name': 'benchmarks'}, {'name': 'mozilla'}, {'name': 'optimize_for_size'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 2}, ], }, + 'V8 Linux64 - coverage': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-18.04', + }, + 'tests': [ + # TODO(https://crbug.com/1265931): Speed things up for now. Later replace + # mjsunit and unittests with full v8testing. + # {'name': 'v8testing'}, + {'name': 'mjsunit', 'variant': 'default'}, + {'name': 'unittests', 'variant': 'default'}, + ], + }, 'V8 Linux64 - custom snapshot - debug': { 'swarming_dimensions' : { 'os': 'Ubuntu-18.04', @@ -1318,13 +1398,13 @@ {'name': 'test262', 'shards': 7}, {'name': 'test262', 'variant': 'extra', 'shards': 5}, {'name': 'v8testing', 'shards': 2}, - {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, {'name': 'v8testing', 'variant': 'minor_mc'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'slow_path'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, {'name': 'v8testing', 'variant': 'stress_concurrent_allocation'}, - {'name': 'v8testing', 'variant': 'stress_concurrent_inlining'}, + {'name': 'v8testing', 'variant': 'stress_concurrent_inlining', 'shards': 2}, # Maglev -- move to extra once more architectures are supported. {'name': 'mjsunit', 'variant': 'maglev'}, # Noavx. @@ -1337,7 +1417,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1380,14 +1461,10 @@ {'name': 'webkit', 'variant': 'stress_sampling'}, # Stress snapshot. {'name': 'mjsunit', 'variant': 'stress_snapshot'}, - # Maglev. - {'name': 'mjsunit', 'variant': 'maglev'}, # Stress maglev. {'name': 'mjsunit', 'variant': 'stress_maglev'}, # Experimental regexp engine. {'name': 'mjsunit', 'variant': 'experimental_regexp'}, - # Wasm write protect code space. - {'name': 'mjsunit', 'variant': 'wasm_write_protect_code'}, ], }, 'V8 Linux64 - cppgc-non-default - debug': { @@ -1446,14 +1523,10 @@ {'name': 'webkit', 'variant': 'stress_sampling'}, # Stress snapshot. {'name': 'mjsunit', 'variant': 'stress_snapshot'}, - # Maglev. - {'name': 'mjsunit', 'variant': 'maglev'}, # Stress maglev. {'name': 'mjsunit', 'variant': 'stress_maglev'}, # Experimental regexp engine. {'name': 'mjsunit', 'variant': 'experimental_regexp'}, - # Wasm write protect code space. - {'name': 'mjsunit', 'variant': 'wasm_write_protect_code'}, ], }, 'V8 Linux64 gcc': { @@ -1497,14 +1570,6 @@ {'name': 'v8testing'}, ], }, - 'V8 Linux64 - heap sandbox - debug': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-18.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 2}, - ], - }, 'V8 Linux64 - internal snapshot': { 'swarming_dimensions' : { 'os': 'Ubuntu-18.04', @@ -1545,7 +1610,7 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing'}, ], }, @@ -1568,6 +1633,14 @@ {'name': 'v8testing', 'variant': 'slow_path', 'shards': 1}, ], }, + 'V8 Linux64 css - debug': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-18.04', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 5}, + ], + }, 'V8 Linux64 GC Stress - custom snapshot': { 'swarming_dimensions' : { 'os': 'Ubuntu-18.04', @@ -1594,6 +1667,18 @@ {'name': 'v8testing', 'variant': 'stress_concurrent_allocation', 'shards': 2}, ], }, + 'V8 Linux64 TSAN - debug': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-18.04', + }, + 'tests': [ + {'name': 'benchmarks', 'shards': 2}, + {'name': 'mozilla', 'shards': 4}, + {'name': 'test262', 'variant': 'default', 'shards': 5}, + {'name': 'v8testing', 'shards': 12}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 10}, + ], + }, 'V8 Linux64 TSAN - stress-incremental-marking': { 'swarming_dimensions' : { 'os': 'Ubuntu-18.04', @@ -1667,7 +1752,7 @@ 'V8 Mac64': { 'swarming_dimensions': { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'mozilla'}, @@ -1679,7 +1764,7 @@ 'V8 Mac64 - debug': { 'swarming_dimensions': { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'mozilla'}, @@ -1691,7 +1776,7 @@ 'V8 Mac64 ASAN': { 'swarming_dimensions': { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 10}, @@ -1700,7 +1785,7 @@ 'V8 Mac64 GC Stress': { 'swarming_dimensions': { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'd8testing', 'test_args': ['--gc-stress'], 'shards': 6}, @@ -1720,6 +1805,8 @@ 'tests': [ {'name': 'v8testing'}, {'name': 'v8testing', 'variant': 'extra'}, + # Maglev -- move to extra once more architectures are supported. + {'name': 'mjsunit', 'variant': 'maglev'}, ], }, 'V8 Mac - arm64 - debug': { @@ -1736,6 +1823,8 @@ 'tests': [ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, + # Maglev -- move to extra once more architectures are supported. + {'name': 'mjsunit', 'variant': 'maglev'}, ], }, 'V8 Mac - arm64 - no pointer compression debug': { @@ -1751,7 +1840,7 @@ 'V8 Mac - arm64 - sim - debug': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'swarming_task_attrs': { 'expiration': 14400, @@ -1766,7 +1855,7 @@ 'V8 Mac - arm64 - sim - release': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'swarming_task_attrs': { 'expiration': 14400, @@ -1785,7 +1874,7 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing'}, ], }, @@ -1796,24 +1885,24 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 5}, ], }, 'V8 Win64': { 'swarming_dimensions': { - 'os': 'Windows-10-19042', + 'os': 'Windows-10-19045', }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, ], }, 'V8 Win64 - debug': { 'swarming_dimensions': { - 'os': 'Windows-10-19042', + 'os': 'Windows-10-19045', }, 'tests': [ {'name': 'mozilla'}, @@ -1824,17 +1913,17 @@ }, 'V8 Win64 - msvc': { 'swarming_dimensions': { - 'os': 'Windows-10-19042', + 'os': 'Windows-10-19045', }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 2}, ], }, 'V8 Win64 ASAN': { 'swarming_dimensions': { - 'os': 'Windows-10-19042', + 'os': 'Windows-10-19045', }, 'tests': [ {'name': 'v8testing', 'shards': 5}, @@ -1951,7 +2040,8 @@ 'name': 'test262', 'suffix': 'armv8-a', 'variant': 'default', - 'test_args': ['--extra-flags', '--enable-armv8'] + 'test_args': ['--extra-flags', '--enable-armv8'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1970,6 +2060,7 @@ 'suffix': 'novfp3', 'variant': 'default', 'test_args': ['--novfp3'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1977,6 +2068,8 @@ 'test_args': ['--novfp3'], 'shards': 6 }, + # GCMole. + {'name': 'gcmole_v3', 'variant': 'arm', 'shards': 4}, ], }, 'V8 Linux - arm - sim - debug': { @@ -2055,9 +2148,10 @@ 'tests': [ {'name': 'mjsunit_sp_frame_access'}, {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, + {'name': 'gcmole_v3', 'variant': 'arm64', 'shards': 4}, ], }, 'V8 Linux - arm64 - sim - debug': { @@ -2093,19 +2187,6 @@ }, ], }, - 'V8 Linux64 - arm64 - sim - heap sandbox - debug': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-18.04', - }, - 'swarming_task_attrs': { - 'expiration': 14400, - 'hard_timeout': 7200, - 'priority': 35, - }, - 'tests': [ - {'name': 'v8testing', 'shards': 14}, - ], - }, 'V8 Linux - loong64 - sim': { 'swarming_dimensions': { 'os': 'Ubuntu-18.04', @@ -2129,7 +2210,7 @@ 'priority': 35, }, 'tests': [ - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 4}, ], }, diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS index 8912d7fb25186c..082745b7f0f8e6 100644 --- a/deps/v8/src/DEPS +++ b/deps/v8/src/DEPS @@ -10,15 +10,14 @@ include_rules = [ "-src/bigint", "+src/bigint/bigint.h", "-src/compiler", - "+src/compiler/pipeline.h", "+src/compiler/code-assembler.h", + "+src/compiler/turbofan.h", "+src/compiler/wasm-compiler-definitions.h", "+src/compiler/wasm-compiler.h", "-src/heap", "+src/heap/basic-memory-chunk.h", "+src/heap/code-range.h", "+src/heap/combined-heap.h", - "+src/heap/embedder-tracing.h", "+src/heap/factory.h", "+src/heap/factory-inl.h", # TODO(v8:10496): Don't expose so much (through transitive includes) outside @@ -76,6 +75,7 @@ include_rules = [ "+starboard", # Using cppgc inside v8 is not (yet) allowed. "-include/cppgc", + "+include/cppgc/common.h", "+include/cppgc/platform.h", "+include/cppgc/source-location.h", ] diff --git a/deps/v8/src/api/api-arguments-inl.h b/deps/v8/src/api/api-arguments-inl.h index 470ab95e181e84..0a54c6c86af110 100644 --- a/deps/v8/src/api/api-arguments-inl.h +++ b/deps/v8/src/api/api-arguments-inl.h @@ -11,21 +11,21 @@ #include "src/execution/vm-state-inl.h" #include "src/logging/runtime-call-stats-scope.h" #include "src/objects/api-callbacks.h" +#include "src/objects/instance-type.h" #include "src/objects/slots-inl.h" +#include "v8-isolate.h" namespace v8 { namespace internal { -void Object::VerifyApiCallResultType() { #if DEBUG - if (IsSmi()) return; +bool Object::IsApiCallResultType() const { + if (IsSmi()) return true; DCHECK(IsHeapObject()); - if (!(IsString() || IsSymbol() || IsJSReceiver() || IsHeapNumber() || - IsBigInt() || IsUndefined() || IsTrue() || IsFalse() || IsNull())) { - FATAL("API call returned invalid object"); - } -#endif // DEBUG + return (IsString() || IsSymbol() || IsJSReceiver() || IsHeapNumber() || + IsBigInt() || IsUndefined() || IsTrue() || IsFalse() || IsNull()); } +#endif // DEBUG CustomArgumentsBase::CustomArgumentsBase(Isolate* isolate) : Relocatable(isolate) {} @@ -37,25 +37,25 @@ CustomArguments::~CustomArguments() { template template -Handle CustomArguments::GetReturnValue(Isolate* isolate) { +Handle CustomArguments::GetReturnValue(Isolate* isolate) const { // Check the ReturnValue. FullObjectSlot slot = slot_at(kReturnValueOffset); // Nothing was set, return empty handle as per previous behaviour. - if ((*slot).IsTheHole(isolate)) return Handle(); - Handle result = Handle::cast(Handle(slot.location())); - result->VerifyApiCallResultType(); - return result; + Object raw_object = *slot; + if (raw_object.IsTheHole(isolate)) return Handle(); + DCHECK(raw_object.IsApiCallResultType()); + return Handle::cast(Handle(slot.location())); } -inline JSObject PropertyCallbackArguments::holder() { +inline JSObject PropertyCallbackArguments::holder() const { return JSObject::cast(*slot_at(T::kHolderIndex)); } -inline Object PropertyCallbackArguments::receiver() { +inline Object PropertyCallbackArguments::receiver() const { return *slot_at(T::kThisIndex); } -inline JSReceiver FunctionCallbackArguments::holder() { +inline JSReceiver FunctionCallbackArguments::holder() const { return JSReceiver::cast(*slot_at(T::kHolderIndex)); } diff --git a/deps/v8/src/api/api-arguments.h b/deps/v8/src/api/api-arguments.h index 39958964fd4233..baa4a394f7d812 100644 --- a/deps/v8/src/api/api-arguments.h +++ b/deps/v8/src/api/api-arguments.h @@ -38,13 +38,13 @@ class CustomArguments : public CustomArgumentsBase { : CustomArgumentsBase(isolate) {} template - Handle GetReturnValue(Isolate* isolate); + Handle GetReturnValue(Isolate* isolate) const; - inline Isolate* isolate() { + inline Isolate* isolate() const { return reinterpret_cast((*slot_at(T::kIsolateIndex)).ptr()); } - inline FullObjectSlot slot_at(int index) { + inline FullObjectSlot slot_at(int index) const { // This allows index == T::kArgsLength so "one past the end" slots // can be retrieved for iterating purposes. DCHECK_LE(static_cast(index), @@ -161,8 +161,8 @@ class PropertyCallbackArguments final GenericNamedPropertyGetterCallback f, Handle name, Handle info, Handle receiver = Handle()); - inline JSObject holder(); - inline Object receiver(); + inline JSObject holder() const; + inline Object receiver() const; #ifdef DEBUG // This stores current value of Isolate::javascript_execution_counter(). @@ -199,10 +199,10 @@ class FunctionCallbackArguments inline Handle Call(CallHandlerInfo handler); private: - inline JSReceiver holder(); + inline JSReceiver holder() const; internal::Address* argv_; - int argc_; + int const argc_; }; } // namespace internal diff --git a/deps/v8/src/api/api-natives.cc b/deps/v8/src/api/api-natives.cc index d0b298723423e9..05a883f2d560e3 100644 --- a/deps/v8/src/api/api-natives.cc +++ b/deps/v8/src/api/api-natives.cc @@ -83,7 +83,7 @@ MaybeHandle DefineAccessorProperty(Isolate* isolate, InstantiateFunction(isolate, Handle::cast(getter)), Object); - Handle trampoline = BUILTIN_CODE(isolate, DebugBreakTrampoline); + Handle trampoline = BUILTIN_CODE(isolate, DebugBreakTrampoline); Handle::cast(getter)->set_code(*trampoline); } if (setter->IsFunctionTemplateInfo() && @@ -93,7 +93,7 @@ MaybeHandle DefineAccessorProperty(Isolate* isolate, InstantiateFunction(isolate, Handle::cast(setter)), Object); - Handle trampoline = BUILTIN_CODE(isolate, DebugBreakTrampoline); + Handle trampoline = BUILTIN_CODE(isolate, DebugBreakTrampoline); Handle::cast(setter)->set_code(*trampoline); } RETURN_ON_EXCEPTION( diff --git a/deps/v8/src/api/api.cc b/deps/v8/src/api/api.cc index da75db119baf10..81c7d1e3f9b29a 100644 --- a/deps/v8/src/api/api.cc +++ b/deps/v8/src/api/api.cc @@ -38,6 +38,7 @@ #include "src/baseline/baseline-batch-compiler.h" #include "src/builtins/accessors.h" #include "src/builtins/builtins-utils.h" +#include "src/codegen/compilation-cache.h" #include "src/codegen/compiler.h" #include "src/codegen/cpu-features.h" #include "src/codegen/script-details.h" @@ -64,7 +65,6 @@ #include "src/handles/persistent-handles.h" #include "src/handles/shared-object-conveyor-handles.h" #include "src/handles/traced-handles.h" -#include "src/heap/embedder-tracing.h" #include "src/heap/heap-inl.h" #include "src/heap/heap-write-barrier.h" #include "src/heap/safepoint.h" @@ -358,19 +358,12 @@ void V8::SetSnapshotDataBlob(StartupData* snapshot_blob) { namespace { #ifdef V8_ENABLE_SANDBOX -// ArrayBufferAllocator to use when sandboxed pointers are used in which case -// all ArrayBuffer backing stores need to be allocated inside the sandbox. -// Note, the current implementation is extremely inefficient as it uses the -// BoundedPageAllocator. In the future, we'll need a proper allocator -// implementation. +// ArrayBufferAllocator to use when the sandbox is enabled in which case all +// ArrayBuffer backing stores need to be allocated inside the sandbox. class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { public: - ArrayBufferAllocator() { CHECK(page_allocator_); } - void* Allocate(size_t length) override { - return page_allocator_->AllocatePages(nullptr, RoundUp(length, page_size_), - page_size_, - PageAllocator::kReadWrite); + return allocator_->Allocate(length); } void* AllocateUninitialized(size_t length) override { @@ -378,12 +371,136 @@ class ArrayBufferAllocator : public v8::ArrayBuffer::Allocator { } void Free(void* data, size_t length) override { - page_allocator_->FreePages(data, RoundUp(length, page_size_)); + return allocator_->Free(data); } private: - PageAllocator* page_allocator_ = internal::GetArrayBufferPageAllocator(); - const size_t page_size_ = page_allocator_->AllocatePageSize(); + // Backend allocator shared by all ArrayBufferAllocator instances. This way, + // there is a single region of virtual addres space reserved inside the + // sandbox from which all ArrayBufferAllocators allocate their memory, + // instead of each allocator creating their own region, which may cause + // address space exhaustion inside the sandbox. + // TODO(chromium:1340224): replace this with a more efficient allocator. + class BackendAllocator { + public: + BackendAllocator() { + CHECK(i::GetProcessWideSandbox()->is_initialized()); + VirtualAddressSpace* vas = i::GetProcessWideSandbox()->address_space(); + constexpr size_t max_backing_memory_size = 8ULL * i::GB; + constexpr size_t min_backing_memory_size = 1ULL * i::GB; + size_t backing_memory_size = max_backing_memory_size; + i::Address backing_memory_base = 0; + while (!backing_memory_base && + backing_memory_size >= min_backing_memory_size) { + backing_memory_base = vas->AllocatePages( + VirtualAddressSpace::kNoHint, backing_memory_size, kChunkSize, + PagePermissions::kNoAccess); + if (!backing_memory_base) { + backing_memory_size /= 2; + } + } + if (!backing_memory_base) { + i::V8::FatalProcessOutOfMemory( + nullptr, + "Could not reserve backing memory for ArrayBufferAllocators"); + } + DCHECK(IsAligned(backing_memory_base, kChunkSize)); + + region_alloc_ = std::make_unique( + backing_memory_base, backing_memory_size, kAllocationGranularity); + end_of_accessible_region_ = region_alloc_->begin(); + + // Install a on-merge callback to discard or decommit unused pages. + region_alloc_->set_on_merge_callback([this](i::Address start, + size_t size) { + mutex_.AssertHeld(); + VirtualAddressSpace* vas = i::GetProcessWideSandbox()->address_space(); + i::Address end = start + size; + if (end == region_alloc_->end() && + start <= end_of_accessible_region_ - kChunkSize) { + // Can shrink the accessible region. + i::Address new_end_of_accessible_region = RoundUp(start, kChunkSize); + size_t size = + end_of_accessible_region_ - new_end_of_accessible_region; + CHECK(vas->DecommitPages(new_end_of_accessible_region, size)); + end_of_accessible_region_ = new_end_of_accessible_region; + } else if (size >= 2 * kChunkSize) { + // Can discard pages. The pages stay accessible, so the size of the + // accessible region doesn't change. + i::Address chunk_start = RoundUp(start, kChunkSize); + i::Address chunk_end = RoundDown(start + size, kChunkSize); + CHECK(vas->DiscardSystemPages(chunk_start, chunk_end - chunk_start)); + } + }); + } + + ~BackendAllocator() { + // The sandbox may already have been torn down, in which case there's no + // need to free any memory. + if (i::GetProcessWideSandbox()->is_initialized()) { + VirtualAddressSpace* vas = i::GetProcessWideSandbox()->address_space(); + vas->FreePages(region_alloc_->begin(), region_alloc_->size()); + } + } + + BackendAllocator(const BackendAllocator&) = delete; + BackendAllocator& operator=(const BackendAllocator&) = delete; + + void* Allocate(size_t length) { + base::MutexGuard guard(&mutex_); + + length = RoundUp(length, kAllocationGranularity); + i::Address region = region_alloc_->AllocateRegion(length); + if (region == base::RegionAllocator::kAllocationFailure) return nullptr; + + // Check if the memory is inside the accessible region. If not, grow it. + i::Address end = region + length; + size_t length_to_memset = length; + if (end > end_of_accessible_region_) { + VirtualAddressSpace* vas = i::GetProcessWideSandbox()->address_space(); + i::Address new_end_of_accessible_region = RoundUp(end, kChunkSize); + size_t size = new_end_of_accessible_region - end_of_accessible_region_; + if (!vas->SetPagePermissions(end_of_accessible_region_, size, + PagePermissions::kReadWrite)) { + CHECK(region_alloc_->FreeRegion(region)); + return nullptr; + } + + // The pages that were inaccessible are guaranteed to be zeroed, so only + // memset until the previous end of the accessible region. + length_to_memset = end_of_accessible_region_ - region; + end_of_accessible_region_ = new_end_of_accessible_region; + } + + void* mem = reinterpret_cast(region); + memset(mem, 0, length_to_memset); + return mem; + } + + void Free(void* data) { + base::MutexGuard guard(&mutex_); + region_alloc_->FreeRegion(reinterpret_cast(data)); + } + + static BackendAllocator* SharedInstance() { + static base::LeakyObject instance; + return instance.get(); + } + + private: + // Use a region allocator with a "page size" of 128 bytes as a reasonable + // compromise between the number of regions it has to manage and the amount + // of memory wasted due to rounding allocation sizes up to the page size. + static constexpr size_t kAllocationGranularity = 128; + // The backing memory's accessible region is grown in chunks of this size. + static constexpr size_t kChunkSize = 1 * i::MB; + + std::unique_ptr region_alloc_; + size_t end_of_accessible_region_; + base::Mutex mutex_; + }; + + BackendAllocator* allocator_ = BackendAllocator::SharedInstance(); }; #else @@ -429,7 +546,7 @@ struct SnapshotCreatorData { SnapshotCreator::SnapshotCreator(Isolate* v8_isolate, const intptr_t* external_references, - StartupData* existing_snapshot) { + const StartupData* existing_snapshot) { SnapshotCreatorData* data = new SnapshotCreatorData(v8_isolate); i::Isolate* i_isolate = reinterpret_cast(v8_isolate); i_isolate->set_array_buffer_allocator(&data->allocator_); @@ -451,7 +568,7 @@ SnapshotCreator::SnapshotCreator(Isolate* v8_isolate, } SnapshotCreator::SnapshotCreator(const intptr_t* external_references, - StartupData* existing_snapshot) + const StartupData* existing_snapshot) : SnapshotCreator(Isolate::Allocate(), external_references, existing_snapshot) {} @@ -2200,6 +2317,31 @@ Local Script::GetResourceName() { i::handle(i::Script::cast(sfi.script()).name(), i_isolate)); } +std::vector Script::GetProducedCompileHints() const { + i::DisallowGarbageCollection no_gc; + i::Handle func = Utils::OpenHandle(this); + i::Isolate* i_isolate = func->GetIsolate(); + i::SharedFunctionInfo sfi = (*func).shared(); + CHECK(sfi.script().IsScript()); + i::Script script = i::Script::cast(sfi.script()); + i::Object maybe_array_list = script.compiled_lazy_function_positions(); + std::vector result; + if (!maybe_array_list.IsUndefined(i_isolate)) { + i::ArrayList array_list = i::ArrayList::cast(maybe_array_list); + result.reserve(array_list.Length()); + for (int i = 0; i < array_list.Length(); ++i) { + i::Object item = array_list.Get(i); + CHECK(item.IsSmi()); + result.push_back(i::Smi::ToInt(item)); + } + // Clear the data; the embedder can still request more data later, but it'll + // have to keep track of the original data itself. + script.set_compiled_lazy_function_positions( + i::ReadOnlyRoots(i_isolate).undefined_value()); + } + return result; +} + // static Local PrimitiveArray::New(Isolate* v8_isolate, int length) { i::Isolate* i_isolate = reinterpret_cast(v8_isolate); @@ -2606,9 +2748,10 @@ MaybeLocal