diff --git a/common.gypi b/common.gypi index cbe454d9bb0bed..481228051b4361 100644 --- a/common.gypi +++ b/common.gypi @@ -38,7 +38,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.13', + 'v8_embedder_string': '-node.7', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore index 423eaa77fae43c..95320469518045 100644 --- a/deps/v8/.gitignore +++ b/deps/v8/.gitignore @@ -68,6 +68,9 @@ /third_party/colorama/src !/third_party/cpu_features /third_party/cpu_features/src +!/third_party/dragonbox +/third_party/dragonbox/src/* +!/third_party/dragonbox/src/include !/third_party/fast_float /third_party/fast_float/src/* !/third_party/fast_float/src/include diff --git a/deps/v8/.ycm_extra_conf.py b/deps/v8/.ycm_extra_conf.py index 793beda7955990..382abaea15d114 100644 --- a/deps/v8/.ycm_extra_conf.py +++ b/deps/v8/.ycm_extra_conf.py @@ -132,7 +132,11 @@ def GetClangCommandFromNinjaForFilename(v8_root, filename): # Ninja might execute several commands to build something. We want the last # clang command. clang_line = None - for line in reversed(stdout.decode('utf-8').splitlines()): + for line in reversed(stdout.splitlines()): + try: + line = line.decode('utf-8') + except UnicodeDecodeError: + continue if 'clang' in line: clang_line = line break diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index 280e33e6841cc1..e4a53207d6ed25 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -189,6 +189,7 @@ Keyhan Vakil Kris Selden Kyounga Ra Levi Zim +LN Liberda Loo Rong Jie Lu Yahan Ludovic Mermod @@ -335,3 +336,4 @@ Jing Peiyang magic-akari Ryuhei Shima Domagoj Stolfa +Zhijin Zeng diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index 920ed94829fdb8..3f5a87d054e1f1 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -1176,7 +1176,8 @@ filegroup( "src/objects/js-shadow-realm.tq", "src/objects/js-shared-array.tq", "src/objects/js-struct.tq", - "src/objects/js-temporal-objects.tq", + # Temporal is currently gn-only + # "src/objects/js-temporal-objects.tq", "src/objects/js-weak-refs.tq", "src/objects/literal-objects.tq", "src/objects/map.tq", @@ -1318,8 +1319,6 @@ filegroup( "src/api/api-arguments.h", "src/api/api-arguments-inl.h", "src/api/api-inl.h", - "src/api/api-macros.h", - "src/api/api-macros-undef.h", "src/api/api-natives.cc", "src/api/api-natives.h", "src/asmjs/asm-js.h", @@ -1381,6 +1380,8 @@ filegroup( "src/builtins/builtins-definitions.h", "src/builtins/builtins-descriptors.h", "src/builtins/builtins-disposable-stack.cc", + "src/builtins/builtins-effects-analyzer.cc", + "src/builtins/builtins-effects-analyzer.h", "src/builtins/builtins-error.cc", "src/builtins/builtins-function.cc", "src/builtins/builtins-global.cc", @@ -1397,7 +1398,8 @@ filegroup( "src/builtins/builtins-string.cc", "src/builtins/builtins-struct.cc", "src/builtins/builtins-symbol.cc", - "src/builtins/builtins-temporal.cc", + # Temporal is currently gn-only + # "src/builtins/builtins-temporal.cc", "src/builtins/builtins-trace.cc", "src/builtins/builtins-typed-array.cc", "src/builtins/builtins-utils.h", @@ -1718,6 +1720,7 @@ filegroup( "src/heap/free-list.h", "src/heap/free-list-inl.h", "src/heap/gc-callbacks.h", + "src/heap/gc-callbacks-inl.h", "src/heap/gc-tracer.cc", "src/heap/gc-tracer.h", "src/heap/gc-tracer-inl.h", @@ -2105,9 +2108,12 @@ filegroup( "src/objects/js-struct.cc", "src/objects/js-struct.h", "src/objects/js-struct-inl.h", - "src/objects/js-temporal-objects.cc", - "src/objects/js-temporal-objects.h", - "src/objects/js-temporal-objects-inl.h", + # Temporal is currently gn-only + # "src/objects/js-temporal-objects.cc", + # "src/objects/js-temporal-objects.h", + # "src/objects/js-temporal-objects-inl.h", + "src/objects/js-temporal-helpers.h", + "src/objects/js-temporal-helpers.cc", "src/objects/js-weak-refs.cc", "src/objects/js-weak-refs.h", "src/objects/js-weak-refs-inl.h", @@ -2141,6 +2147,9 @@ filegroup( "src/objects/module-inl.h", "src/objects/name.h", "src/objects/name-inl.h", + "src/objects/number-string-cache.cc", + "src/objects/number-string-cache.h", + "src/objects/number-string-cache-inl.h", "src/objects/object-list-macros.h", "src/objects/object-macros.h", "src/objects/object-macros-undef.h", @@ -2303,6 +2312,7 @@ filegroup( "src/profiler/cpu-profiler-inl.h", "src/profiler/heap-profiler.cc", "src/profiler/heap-profiler.h", + "src/profiler/heap-snapshot-common.h", "src/profiler/heap-snapshot-generator.cc", "src/profiler/heap-snapshot-generator.h", "src/profiler/heap-snapshot-generator-inl.h", @@ -2401,7 +2411,6 @@ filegroup( "src/runtime/runtime-shadow-realm.cc", "src/runtime/runtime-strings.cc", "src/runtime/runtime-symbol.cc", - "src/runtime/runtime-temporal.cc", "src/runtime/runtime-test.cc", "src/runtime/runtime-trace.cc", "src/runtime/runtime-typedarray.cc", @@ -2453,6 +2462,7 @@ filegroup( "src/sandbox/tagged-payload.h", "src/sandbox/testing.cc", "src/sandbox/testing.h", + "src/snapshot/builtins-effects-dummy.cc", "src/snapshot/code-serializer.cc", "src/snapshot/code-serializer.h", "src/snapshot/context-deserializer.cc", @@ -2526,8 +2536,9 @@ filegroup( "src/tasks/operations-barrier.h", "src/tasks/task-utils.cc", "src/tasks/task-utils.h", - "src/temporal/temporal-parser.cc", - "src/temporal/temporal-parser.h", + # Temporal is currently gn-only + # "src/temporal/temporal-parser.cc", + # "src/temporal/temporal-parser.h", "src/torque/runtime-macro-shims.h", "src/tracing/trace-event.cc", "src/tracing/trace-event.h", @@ -2554,6 +2565,8 @@ filegroup( "src/utils/locked-queue-inl.h", "src/utils/memcopy.cc", "src/utils/memcopy.h", + "src/utils/output-stream.cc", + "src/utils/output-stream.h", "src/utils/ostreams.cc", "src/utils/ostreams.h", "src/utils/scoped-list.h", @@ -2939,6 +2952,8 @@ filegroup( "src/wasm/baseline/parallel-move.cc", "src/wasm/baseline/parallel-move.h", "src/wasm/baseline/parallel-move-inl.h", + "src/wasm/basic-block-calculator.cc", + "src/wasm/basic-block-calculator.h", "src/wasm/branch-hint-map.h", "src/wasm/canonical-types.cc", "src/wasm/canonical-types.h", @@ -2995,6 +3010,7 @@ filegroup( "src/wasm/value-type.h", "src/wasm/wasm-arguments.h", "src/wasm/wasm-builtin-list.h", + "src/wasm/wasm-code-coverage.h", "src/wasm/wasm-code-manager.cc", "src/wasm/wasm-code-manager.h", "src/wasm/wasm-code-pointer-table.cc", @@ -3009,6 +3025,8 @@ filegroup( "src/wasm/wasm-disassembler-impl.h", "src/wasm/wasm-engine.cc", "src/wasm/wasm-engine.h", + "src/wasm/wasm-export-wrapper-cache.cc", + "src/wasm/wasm-export-wrapper-cache.h", "src/wasm/wasm-external-refs.cc", "src/wasm/wasm-external-refs.h", "src/wasm/wasm-features.cc", @@ -3364,8 +3382,18 @@ filegroup( "src/compiler/turboshaft/build-graph-phase.h", "src/compiler/turboshaft/builtin-call-descriptors.h", "src/compiler/turboshaft/builtin-compiler.h", - "src/compiler/turboshaft/csa-optimize-phase.cc", - "src/compiler/turboshaft/csa-optimize-phase.h", + "src/compiler/turboshaft/csa-branch-elimination-phase.cc", + "src/compiler/turboshaft/csa-branch-elimination-phase.h", + "src/compiler/turboshaft/csa-early-machine-optimization-phase.cc", + "src/compiler/turboshaft/csa-early-machine-optimization-phase.h", + "src/compiler/turboshaft/csa-effects-computation.cc", + "src/compiler/turboshaft/csa-effects-computation.h", + "src/compiler/turboshaft/csa-late-escape-analysis-phase.cc", + "src/compiler/turboshaft/csa-late-escape-analysis-phase.h", + "src/compiler/turboshaft/csa-load-elimination-phase.cc", + "src/compiler/turboshaft/csa-load-elimination-phase.h", + "src/compiler/turboshaft/csa-memory-optimization-phase.cc", + "src/compiler/turboshaft/csa-memory-optimization-phase.h", "src/compiler/turboshaft/dataview-lowering-reducer.h", "src/compiler/turboshaft/code-elimination-and-simplification-phase.cc", "src/compiler/turboshaft/code-elimination-and-simplification-phase.h", @@ -3683,7 +3711,8 @@ filegroup( "src/builtins/builtins-string-gen.cc", "src/builtins/builtins-string-gen.h", "src/builtins/builtins-string-tsa.cc", - "src/builtins/builtins-temporal-gen.cc", + # Temporal is currently gn-only + # "src/builtins/builtins-temporal-gen.cc", "src/builtins/builtins-typed-array-gen.cc", "src/builtins/builtins-typed-array-gen.h", "src/builtins/builtins-utils-gen.h", @@ -3885,6 +3914,17 @@ filegroup( }), ) +v8_library( + name = "lib_dragonbox", + srcs = ["third_party/dragonbox/src/include/dragonbox/dragonbox.h"], + hdrs = [ + "third_party/dragonbox/src/include/dragonbox/dragonbox.h", + ], + includes = [ + "third_party/dragonbox/src/include", + ], +) + v8_library( name = "lib_fp16", srcs = ["third_party/fp16/src/include/fp16.h"], @@ -4361,6 +4401,12 @@ cc_library( name = "simdutf", srcs = ["third_party/simdutf/simdutf.cpp"], hdrs = ["third_party/simdutf/simdutf.h"], + copts = select({ + "@v8//bazel/config:is_clang": ["-std=c++20"], + "@v8//bazel/config:is_gcc": ["-std=gnu++2a"], + "@v8//bazel/config:is_windows": ["/std:c++20"], + "//conditions:default": [], + }), ) v8_library( @@ -4391,6 +4437,7 @@ v8_library( ":noicu/generated_torque_definitions", ], deps = [ + ":lib_dragonbox", "//third_party/fast_float/src:fast_float", ":lib_fp16", ":simdutf", diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 818f13802c6660..f2f72a02c61d64 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -342,6 +342,10 @@ declare_args() { # Sets -DV8_ENABLE_SANDBOX. v8_enable_sandbox = "" + # Enable experimental hardware support for the V8 sandbox if available. + # Sets -DV8_ENABLE_SANDBOX_HARDWARE_SUPPORT + v8_enable_sandbox_hardware_support = false + # Enable leaptiering v8_enable_leaptiering = true @@ -457,7 +461,8 @@ declare_args() { v8_enable_slow_tracing = is_debug # Enable jump table switch for built-in. - v8_enable_builtin_jump_table_switch = v8_current_cpu == "x64" + v8_enable_builtin_jump_table_switch = + v8_current_cpu == "x64" || v8_current_cpu == "arm64" v8_shortcut_strings_in_minor_ms = false @@ -514,6 +519,9 @@ declare_args() { # Deinterleaving load support. v8_enable_wasm_deinterleaved_mem_ops = false + + # Expose F.p.caller and .arguments as own properties. + v8_function_arguments_caller_are_own_props = false } # Derived defaults. @@ -768,12 +776,16 @@ assert(!v8_enable_pointer_compression_8gb || v8_enable_pointer_compression, assert(!v8_enable_sandbox || v8_enable_external_code_space, "The sandbox requires the external code space") -assert(v8_enable_leaptiering || !v8_enable_sandbox, - "the sandbox requires leaptiering to be enabled") +assert( + v8_enable_leaptiering, + "non-leaptiering is deprecated (see https://groups.google.com/g/v8-dev/c/PYk2_GGP2Wk)") assert(!v8_enable_memory_corruption_api || v8_enable_sandbox, "The Memory Corruption API requires the sandbox") +assert(!v8_enable_sandbox_hardware_support || v8_enable_sandbox, + "The sandbox must be enabled to enable sandbox hardware support") + assert( !v8_enable_pointer_compression_shared_cage || v8_enable_pointer_compression, "Can't share a pointer compression cage if pointers aren't compressed") @@ -839,6 +851,8 @@ assert( v8_random_seed = "314159265" v8_toolset_for_shell = "host" +is_DEBUG_defined = v8_enable_debugging_features || v8_dcheck_always_on + ############################################################################### # Configurations # @@ -853,6 +867,7 @@ config("internal_config_base") { ".", "include", "$target_gen_dir", + "$target_gen_dir/include", ] } @@ -1245,6 +1260,9 @@ config("features") { if (v8_enable_i18n_support) { defines += [ "V8_INTL_SUPPORT" ] } + if (v8_enable_temporal_support) { + defines += [ "V8_TEMPORAL_SUPPORT" ] + } if (v8_enable_local_handle_zapping) { defines += [ "ENABLE_LOCAL_HANDLE_ZAPPING" ] } @@ -1384,6 +1402,9 @@ config("features") { defines += [ "V8_DRUMBRAKE_BOUNDS_CHECKS" ] } } + if (v8_enable_sandbox_hardware_support) { + defines += [ "V8_ENABLE_SANDBOX_HARDWARE_SUPPORT" ] + } if (v8_enable_memory_corruption_api) { defines += [ "V8_ENABLE_MEMORY_CORRUPTION_API" ] } @@ -1450,6 +1471,9 @@ config("features") { if (v8_target_is_simulator) { defines += [ "USE_SIMULATOR" ] } + if (v8_function_arguments_caller_are_own_props) { + defines += [ "V8_FUNCTION_ARGUMENTS_CALLER_ARE_OWN_PROPS" ] + } } config("toolchain") { @@ -1874,6 +1898,8 @@ if (v8_postmortem_support) { "src/objects/megadom-handler-inl.h", "src/objects/name.h", "src/objects/name-inl.h", + "src/objects/number-string-cache.h", + "src/objects/number-string-cache-inl.h", "src/objects/objects.h", "src/objects/objects-inl.h", "src/objects/oddball.h", @@ -2098,7 +2124,6 @@ torque_files = [ "src/objects/js-shadow-realm.tq", "src/objects/js-shared-array.tq", "src/objects/js-struct.tq", - "src/objects/js-temporal-objects.tq", "src/objects/js-weak-refs.tq", "src/objects/literal-objects.tq", "src/objects/map.tq", @@ -2154,6 +2179,10 @@ if (v8_enable_i18n_support) { ] } +if (v8_enable_temporal_support) { + torque_files += [ "src/objects/js-temporal-objects.tq" ] +} + if (v8_enable_webassembly) { torque_files += [ "src/builtins/js-to-js.tq", @@ -2291,6 +2320,16 @@ group("v8_maybe_icu") { } } +group("v8_maybe_temporal") { + if (v8_enable_temporal_support) { + deps = [ "//third_party/rust/temporal_capi/v0_0:lib" ] + + # Only needs to be depended on by targets that wish to use TEMPORAL_CAPI_VERSION_* + public_configs = + [ "//third_party/rust/temporal_capi:temporal_capi_versioning_defines" ] + } +} + group("v8_abseil") { public_deps = [ "//third_party/abseil-cpp:absl" ] @@ -2321,6 +2360,7 @@ v8_source_set("torque_generated_initializers") { ":generate_bytecode_builtins_list", ":run_torque", ":v8_base_without_compiler", + ":v8_maybe_temporal", ":v8_tracing", ] @@ -2367,6 +2407,7 @@ v8_source_set("torque_generated_definitions") { ":run_torque", ":v8_internal_headers", ":v8_libbase", + ":v8_maybe_temporal", ":v8_tracing", ] @@ -2456,6 +2497,10 @@ template("run_mksnapshot") { outputs = [] + if (is_DEBUG_defined && name == "default") { + outputs += [ "$target_gen_dir/src/builtins/builtins-effects.cc" ] + } + data = [] if (current_os != "zos") { @@ -2507,6 +2552,14 @@ template("run_mksnapshot") { "--no-use-ic", ] + if (is_DEBUG_defined && name == "default") { + args += [ + "--builtins-effects-src", + rebase_path("$target_gen_dir/src/builtins/builtins-effects.cc", + root_build_dir), + ] + } + if (v8_verify_deterministic_mksnapshot) { # Flags that help debugging snapshot determinism. args += [ "--trace-read-only-promotion" ] @@ -2752,7 +2805,6 @@ if (v8_verify_builtins_compatibility) { action("v8_dump_build_config") { script = "tools/testrunner/utils/dump_build_config.py" outputs = [ "$root_out_dir/v8_build_config.json" ] - is_DEBUG_defined = v8_enable_debugging_features || v8_dcheck_always_on is_full_debug = v8_enable_debugging_features && !v8_optimized_debug arch = v8_target_cpu @@ -2812,6 +2864,7 @@ action("v8_dump_build_config") { "has_webassembly=$v8_enable_webassembly", "has_wasm_interpreter=$v8_enable_drumbrake", "i18n=$v8_enable_i18n_support", + "temporal=$v8_enable_temporal_support", "is_android=$is_android", "is_ios=$is_ios", "js_shared_memory=$js_shared_memory", @@ -2866,6 +2919,7 @@ generated_file("v8_generate_features_json") { v8_enable_gdbjit = v8_enable_gdbjit v8_enable_hugepage = v8_enable_hugepage v8_enable_i18n_support = v8_enable_i18n_support + v8_enable_temporal_support = v8_enable_temporal_support v8_enable_javascript_promise_hooks = v8_enable_javascript_promise_hooks v8_enable_lite_mode = v8_enable_lite_mode v8_enable_map_packing = v8_enable_map_packing @@ -2900,6 +2954,7 @@ v8_source_set("v8_snapshot") { deps = [ ":v8_internal_headers", ":v8_libbase", + ":v8_maybe_temporal", ":v8_tracing", ] public_deps = [ @@ -2922,6 +2977,9 @@ v8_source_set("v8_snapshot") { sources += [ "$target_gen_dir/embedded.s" ] } } + if (is_DEBUG_defined) { + sources += [ "$target_gen_dir/src/builtins/builtins-effects.cc" ] + } configs = [ ":internal_config" ] @@ -3002,7 +3060,6 @@ v8_source_set("v8_initializers") { "src/builtins/builtins-string-gen.cc", "src/builtins/builtins-string-gen.h", "src/builtins/builtins-string-tsa.cc", - "src/builtins/builtins-temporal-gen.cc", "src/builtins/builtins-typed-array-gen.cc", "src/builtins/builtins-typed-array-gen.h", "src/builtins/builtins-utils-gen.h", @@ -3060,6 +3117,10 @@ v8_source_set("v8_initializers") { } } + if (v8_enable_temporal_support) { + sources += [ "src/builtins/builtins-temporal-gen.cc" ] + } + if (v8_current_cpu == "x86") { sources += [ ### gcmole(ia32) ### @@ -3125,6 +3186,7 @@ v8_source_set("v8_init") { deps = [ ":v8_base_without_compiler", ":v8_initializers", + ":v8_maybe_temporal", ":v8_tracing", ] @@ -3292,6 +3354,7 @@ v8_header_set("v8_shared_internal_headers") { ] deps = [ + ":cppgc_headers", ":v8_headers", ":v8_libbase", ] @@ -3334,8 +3397,6 @@ v8_header_set("v8_internal_headers") { "src/api/api-arguments-inl.h", "src/api/api-arguments.h", "src/api/api-inl.h", - "src/api/api-macros-undef.h", - "src/api/api-macros.h", "src/api/api-natives.h", "src/api/api.h", "src/ast/ast-function-literal-id-reindexer.h", @@ -3354,6 +3415,7 @@ v8_header_set("v8_internal_headers") { "src/builtins/builtins-constructor.h", "src/builtins/builtins-definitions.h", "src/builtins/builtins-descriptors.h", + "src/builtins/builtins-effects-analyzer.h", "src/builtins/builtins-inl.h", "src/builtins/builtins-promise.h", "src/builtins/builtins-utils-inl.h", @@ -3563,7 +3625,12 @@ v8_header_set("v8_internal_headers") { "src/compiler/turboshaft/builtin-call-descriptors.h", "src/compiler/turboshaft/code-elimination-and-simplification-phase.h", "src/compiler/turboshaft/copying-phase.h", - "src/compiler/turboshaft/csa-optimize-phase.h", + "src/compiler/turboshaft/csa-branch-elimination-phase.h", + "src/compiler/turboshaft/csa-early-machine-optimization-phase.h", + "src/compiler/turboshaft/csa-effects-computation-phase.h", + "src/compiler/turboshaft/csa-late-escape-analysis-phase.h", + "src/compiler/turboshaft/csa-load-elimination-phase.h", + "src/compiler/turboshaft/csa-memory-optimization-phase.h", "src/compiler/turboshaft/dataview-lowering-reducer.h", "src/compiler/turboshaft/dead-code-elimination-reducer.h", "src/compiler/turboshaft/debug-feature-lowering-phase.h", @@ -3763,6 +3830,7 @@ v8_header_set("v8_internal_headers") { "src/heap/finalization-registry-cleanup-task.h", "src/heap/free-list-inl.h", "src/heap/free-list.h", + "src/heap/gc-callbacks-inl.h", "src/heap/gc-callbacks.h", "src/heap/gc-tracer-inl.h", "src/heap/gc-tracer.h", @@ -4027,8 +4095,7 @@ v8_header_set("v8_internal_headers") { "src/objects/js-shared-array.h", "src/objects/js-struct-inl.h", "src/objects/js-struct.h", - "src/objects/js-temporal-objects-inl.h", - "src/objects/js-temporal-objects.h", + "src/objects/js-temporal-helpers.h", "src/objects/js-weak-refs-inl.h", "src/objects/js-weak-refs.h", "src/objects/keys.h", @@ -4170,6 +4237,7 @@ v8_header_set("v8_internal_headers") { "src/profiler/cpu-profiler-inl.h", "src/profiler/cpu-profiler.h", "src/profiler/heap-profiler.h", + "src/profiler/heap-snapshot-common.h", "src/profiler/heap-snapshot-generator-inl.h", "src/profiler/heap-snapshot-generator.h", "src/profiler/output-stream-writer.h", @@ -4308,6 +4376,7 @@ v8_header_set("v8_internal_headers") { "src/utils/locked-queue.h", "src/utils/memcopy.h", "src/utils/ostreams.h", + "src/utils/output-stream.h", "src/utils/scoped-list.h", "src/utils/sha-256.h", "src/utils/sparse-bit-vector.h", @@ -4337,6 +4406,13 @@ v8_header_set("v8_internal_headers") { sources += [ "src/snapshot/snapshot-compression.h" ] } + if (v8_enable_temporal_support) { + sources += [ + "src/objects/js-temporal-objects-inl.h", + "src/objects/js-temporal-objects.h", + ] + } + if (v8_use_perfetto) { sources -= [ "src/tracing/trace-event-no-perfetto.h" ] sources += [ @@ -4449,6 +4525,7 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/liftoff-varstate.h", "src/wasm/baseline/parallel-move-inl.h", "src/wasm/baseline/parallel-move.h", + "src/wasm/basic-block-calculator.h", "src/wasm/canonical-types.h", "src/wasm/code-space-access.h", "src/wasm/compilation-environment-inl.h", @@ -4485,6 +4562,7 @@ v8_header_set("v8_internal_headers") { "src/wasm/value-type.h", "src/wasm/wasm-arguments.h", "src/wasm/wasm-builtin-list.h", + "src/wasm/wasm-code-coverage.h", "src/wasm/wasm-code-manager.h", "src/wasm/wasm-code-pointer-table-inl.h", "src/wasm/wasm-code-pointer-table.h", @@ -4493,6 +4571,7 @@ v8_header_set("v8_internal_headers") { "src/wasm/wasm-disassembler-impl.h", "src/wasm/wasm-disassembler.h", "src/wasm/wasm-engine.h", + "src/wasm/wasm-export-wrapper-cache.h", "src/wasm/wasm-external-refs.h", "src/wasm/wasm-feature-flags.h", "src/wasm/wasm-features.h", @@ -4959,6 +5038,8 @@ v8_header_set("v8_internal_headers") { ":v8_abseil", ":v8_heap_base_headers", ":v8_libbase", + ":v8_maybe_temporal", + "//third_party/simdutf:simdutf", ] } @@ -5074,7 +5155,12 @@ v8_compiler_sources = [ "src/compiler/turboshaft/build-graph-phase.cc", "src/compiler/turboshaft/code-elimination-and-simplification-phase.cc", "src/compiler/turboshaft/copying-phase.cc", - "src/compiler/turboshaft/csa-optimize-phase.cc", + "src/compiler/turboshaft/csa-branch-elimination-phase.cc", + "src/compiler/turboshaft/csa-early-machine-optimization-phase.cc", + "src/compiler/turboshaft/csa-effects-computation.cc", + "src/compiler/turboshaft/csa-late-escape-analysis-phase.cc", + "src/compiler/turboshaft/csa-load-elimination-phase.cc", + "src/compiler/turboshaft/csa-memory-optimization-phase.cc", "src/compiler/turboshaft/debug-feature-lowering-phase.cc", "src/compiler/turboshaft/decompression-optimization-phase.cc", "src/compiler/turboshaft/decompression-optimization.cc", @@ -5264,6 +5350,7 @@ v8_source_set("v8_compiler_for_mksnapshot_source_set") { ":v8_base_without_compiler", ":v8_internal_headers", ":v8_libbase", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ] @@ -5302,6 +5389,7 @@ v8_source_set("v8_compiler") { deps = [ ":v8_base_without_compiler", ":v8_libbase", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ] @@ -5374,6 +5462,7 @@ v8_source_set("v8_base_without_compiler") { "src/builtins/builtins-dataview.cc", "src/builtins/builtins-date.cc", "src/builtins/builtins-disposable-stack.cc", + "src/builtins/builtins-effects-analyzer.cc", "src/builtins/builtins-error.cc", "src/builtins/builtins-function.cc", "src/builtins/builtins-global.cc", @@ -5390,7 +5479,6 @@ v8_source_set("v8_base_without_compiler") { "src/builtins/builtins-string.cc", "src/builtins/builtins-struct.cc", "src/builtins/builtins-symbol.cc", - "src/builtins/builtins-temporal.cc", "src/builtins/builtins-trace.cc", "src/builtins/builtins-typed-array.cc", "src/builtins/builtins-weak-refs.cc", @@ -5645,7 +5733,7 @@ v8_source_set("v8_base_without_compiler") { "src/objects/js-segmenter.cc", "src/objects/js-segments.cc", "src/objects/js-struct.cc", - "src/objects/js-temporal-objects.cc", + "src/objects/js-temporal-helpers.cc", "src/objects/js-weak-refs.cc", "src/objects/keys.cc", "src/objects/literal-objects.cc", @@ -5655,6 +5743,7 @@ v8_source_set("v8_base_without_compiler") { "src/objects/map-updater.cc", "src/objects/map.cc", "src/objects/module.cc", + "src/objects/number-string-cache.cc", "src/objects/object-type.cc", "src/objects/objects.cc", "src/objects/option-utils.cc", @@ -5754,7 +5843,6 @@ v8_source_set("v8_base_without_compiler") { "src/runtime/runtime-shadow-realm.cc", "src/runtime/runtime-strings.cc", "src/runtime/runtime-symbol.cc", - "src/runtime/runtime-temporal.cc", "src/runtime/runtime-test.cc", "src/runtime/runtime-trace.cc", "src/runtime/runtime-typedarray.cc", @@ -5813,6 +5901,7 @@ v8_source_set("v8_base_without_compiler") { "src/utils/identity-map.cc", "src/utils/memcopy.cc", "src/utils/ostreams.cc", + "src/utils/output-stream.cc", "src/utils/sha-256.cc", "src/utils/utils.cc", "src/utils/version.cc", @@ -5827,6 +5916,13 @@ v8_source_set("v8_base_without_compiler") { sources += [ "src/snapshot/snapshot-compression.cc" ] } + if (v8_enable_temporal_support) { + sources += [ + "src/builtins/builtins-temporal.cc", + "src/objects/js-temporal-objects.cc", + ] + } + if (v8_enable_sparkplug) { sources += [ "src/baseline/baseline-batch-compiler.cc", @@ -5904,6 +6000,7 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/baseline/liftoff-assembler.cc", "src/wasm/baseline/liftoff-compiler.cc", "src/wasm/baseline/parallel-move.cc", + "src/wasm/basic-block-calculator.cc", "src/wasm/canonical-types.cc", "src/wasm/code-space-access.cc", "src/wasm/constant-expression-interface.cc", @@ -5929,6 +6026,7 @@ v8_source_set("v8_base_without_compiler") { "src/wasm/wasm-deopt-data.cc", "src/wasm/wasm-disassembler.cc", "src/wasm/wasm-engine.cc", + "src/wasm/wasm-export-wrapper-cache.cc", "src/wasm/wasm-external-refs.cc", "src/wasm/wasm-features.cc", "src/wasm/wasm-import-wrapper-cache.cc", @@ -6173,6 +6271,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-f.cc", "src/codegen/riscv/extension-riscv-m.cc", "src/codegen/riscv/extension-riscv-v.cc", + "src/codegen/riscv/extension-riscv-zfh.cc", "src/codegen/riscv/extension-riscv-zicond.cc", "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", @@ -6213,6 +6312,7 @@ v8_source_set("v8_base_without_compiler") { "src/codegen/riscv/extension-riscv-f.cc", "src/codegen/riscv/extension-riscv-m.cc", "src/codegen/riscv/extension-riscv-v.cc", + "src/codegen/riscv/extension-riscv-zfh.cc", "src/codegen/riscv/extension-riscv-zicond.cc", "src/codegen/riscv/extension-riscv-zicsr.cc", "src/codegen/riscv/extension-riscv-zifencei.cc", @@ -6257,10 +6357,12 @@ v8_source_set("v8_base_without_compiler") { ":v8_headers", ":v8_heap_base", ":v8_libbase", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ":v8_tracing", ":v8_version", "src/inspector:inspector", + "//third_party/dragonbox", "//third_party/fast_float", "//third_party/highway:libhwy", ] @@ -6772,8 +6874,13 @@ v8_component("v8_libbase") { } if (using_sanitizer && !build_with_chromium) { - data_deps += - [ "//build/config/clang:llvm-symbolizer_data($host_toolchain)" ] + if (is_linux && target_cpu == "arm64") { + # TODO(https://crbug.com/396446140): Switch to the symbolizer from our + # bundled toolchain as soon as one is available for linux-arm64. + data += [ "tools/sanitizers/linux/arm64/llvm-symbolizer" ] + } else { + data_deps += [ "//build/config/clang:llvm-symbolizer_data" ] + } } if (v8_use_libm_trig_functions) { @@ -6896,6 +7003,7 @@ v8_source_set("fuzzer_support") { ":v8_libplatform", ":v8_maybe_icu", ] + deps = [ ":v8_maybe_temporal" ] } v8_source_set("v8_bigint") { @@ -7221,6 +7329,7 @@ if (v8_check_header_includes) { ":v8_internal_headers", ":v8_libbase", ":v8_maybe_icu", + ":v8_maybe_temporal", ":v8_version", ":wee8", "src/inspector:inspector", @@ -7312,6 +7421,7 @@ if (current_toolchain == v8_generator_toolchain) { if (current_toolchain == v8_snapshot_toolchain) { v8_executable("mksnapshot") { sources = [ + "src/snapshot/builtins-effects-dummy.cc", "src/snapshot/embedded/embedded-empty.cc", "src/snapshot/embedded/embedded-file-writer.cc", "src/snapshot/embedded/embedded-file-writer.h", @@ -7345,6 +7455,7 @@ if (current_toolchain == v8_snapshot_toolchain) { ":v8_libbase", ":v8_libplatform", ":v8_maybe_icu", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ":v8_tracing", "//build/win:default_exe_manifest", @@ -7584,6 +7695,7 @@ group("v8_fuzzers") { data_deps += [ ":v8_simple_wasm_compile_all_fuzzer", ":v8_simple_wasm_compile_fuzzer", + ":v8_simple_wasm_compile_revec_fuzzer", ":v8_simple_wasm_compile_simd_fuzzer", ":v8_simple_wasm_compile_wasmgc_fuzzer", ":v8_simple_wasm_deopt_fuzzer", @@ -8013,6 +8125,7 @@ if (v8_enable_webassembly) { ":run_torque", ":v8_internal_headers", ":v8_libbase", + ":v8_maybe_temporal", ":v8_shared_internal_headers", ":v8_tracing", ] @@ -8040,6 +8153,7 @@ if (v8_enable_webassembly) { ":generate_bytecode_builtins_list", ":run_torque", ":v8_internal_headers", + ":v8_maybe_temporal", ":v8_tracing", ":wasm_test_common", ] @@ -8106,6 +8220,13 @@ if (v8_enable_webassembly) { ] } + v8_wasm_fuzzer("wasm_compile_revec_fuzzer") { + sources = [ + "test/common/wasm/test-signatures.h", + "test/fuzzer/wasm/compile-revec.cc", + ] + } + v8_wasm_fuzzer("wasm_compile_wasmgc_fuzzer") { sources = [ "test/common/wasm/test-signatures.h", diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 9d240951e47b47..6249e03057d2db 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -49,6 +49,7 @@ vars = { 'download_gcmole': False, 'download_jsfunfuzz': False, 'download_prebuilt_bazel': False, + 'download_prebuilt_arm64_llvm_symbolizer': False, 'check_v8_header_includes': False, # By default, download the fuchsia sdk from the public sdk directory. @@ -58,7 +59,7 @@ vars = { 'checkout_fuchsia_no_hooks': False, # reclient CIPD package version - 'reclient_version': 're_client_version:0.177.1.e58c0145-gomaip', + 'reclient_version': 're_client_version:0.178.0.5ee9d3e8-gomaip', # Fetch configuration files required for the 'use_remoteexec' gn arg 'download_remoteexec_cfg': False, @@ -74,24 +75,24 @@ vars = { 'build_with_chromium': False, # GN CIPD package version. - 'gn_version': 'git_revision:90478db6b59b9bebf7ca4cf912d860cf868e724c', + 'gn_version': 'git_revision:ebc8f16ca7b0d36a3e532ee90896f9eb48e5423b', # ninja CIPD package version # https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja 'ninja_version': 'version:3@1.12.1.chromium.4', # siso CIPD package version - 'siso_version': 'git_revision:70e1167e0e6dad10c8388cace8fd9d9376c43316', + 'siso_version': 'git_revision:d9393c2115244b6e4a797189055e4a2b6769a64d', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Fuchsia sdk # and whatever else without interference from each other. - 'fuchsia_version': 'version:27.20250424.2.1', + 'fuchsia_version': 'version:28.20250522.3.1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling partition_alloc_version # and whatever else without interference from each other. - 'partition_alloc_version': '862506deb382f3f8a8fa9689c8d5136a48e9b778', + 'partition_alloc_version': 'c858ce950cf900f168772e5e7c8f7cfa3e66ce96', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_build-tools_version @@ -129,9 +130,9 @@ vars = { deps = { 'build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + '88030b320338e0706b6b93336c4b35e6bbaf467e', + Var('chromium_url') + '/chromium/src/build.git' + '@' + '74c1cea4320f6744444fff7ceeff2e6b0370eb2d', 'buildtools': - Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '0f32cb9025766951122d4ed19aba87a94ded3f43', + Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '813bee86eeb7d00fa170b81e221120576a18517a', 'buildtools/linux64': { 'packages': [ { @@ -177,7 +178,7 @@ deps = { 'test/mozilla/data': Var('chromium_url') + '/v8/deps/third_party/mozilla-tests.git' + '@' + 'f6c578a10ea707b1a8ab0b88943fe5115ce2b9be', 'test/test262/data': - Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'c5257e6119f83f856602f2ccbc46547a8fef0960', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + '3316c0aaf676d657f5a6b33364fa7e579c78ac7f', 'third_party/android_platform': { 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + '98aee46efb1cc4e09fa0e3ecaa6b19dc258645fa', 'condition': 'checkout_android', @@ -231,7 +232,7 @@ deps = { 'dep_type': 'cipd', }, 'third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + '000f47cfa393d7f9557025a252862e2a61a60d44', + 'url': Var('chromium_url') + '/catapult.git' + '@' + '938fc9953b4159851a52022b4f2a90cddedba2fc', 'condition': 'checkout_android', }, 'third_party/clang-format/script': @@ -245,17 +246,19 @@ deps = { 'condition': 'checkout_android', }, 'third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '1fcc527019d786502b02f71b8b764ee674a40953', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + 'e0ece52cfb4faaf6d4468a94068265452ef6de13', + 'third_party/dragonbox/src': + Var('chromium_url') + '/external/github.com/jk-jeon/dragonbox.git' + '@' + '6c7c925b571d54486b9ffae8d9d18a822801cbda', 'third_party/fp16/src': Var('chromium_url') + '/external/github.com/Maratyszcza/FP16.git' + '@' + '0a92994d729ff76a58f692d3028ca1b64b145d91', 'third_party/fast_float/src': Var('chromium_url') + '/external/github.com/fastfloat/fast_float.git' + '@' + 'cb1d42aaa1e14b09e1452cfdef373d051b8c02a4', 'third_party/fuchsia-gn-sdk': { - 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + 'e678aca1bad7a1c9a38620b2e328281bc68f6357', + 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + '60c9c3eb8b143553218641fe5c8bca92a89e67e7', 'condition': 'checkout_fuchsia', }, 'third_party/simdutf': - Var('chromium_url') + '/chromium/src/third_party/simdutf' + '@' + '62d1cfb62967c0076c997a10d54d50f9571fb8e9', + Var('chromium_url') + '/chromium/src/third_party/simdutf' + '@' + '9d3e4d7c1afb30ed528443d73afab23f22443434', # Exists for rolling the Fuchsia SDK. Check out of the SDK should always # rely on the hook running |update_sdk.py| script below. 'third_party/fuchsia-sdk/sdk': { @@ -269,21 +272,21 @@ deps = { 'dep_type': 'cipd', }, 'third_party/google_benchmark_chrome': { - 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + '29e4389fdc1eeb9137eb464b7f34e07c01c2731e', + 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + 'd6e7f141ed7c93a66890f3750ab634b8b52057a5', }, 'third_party/google_benchmark_chrome/src': { 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '761305ec3b33abf30e08d50eb829e19a802581cc', }, 'third_party/fuzztest': - Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + '4a7e9c055e63f4d67e04229ab491eaefe409addf', + Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + '113b15091c49d9d3d49ef42b6c5e9edc865a67a6', 'third_party/fuzztest/src': - Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + 'b10387fdbbca18192f85eaa5323a59f44bf9c468', + Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + 'f03aafb7516050ea73f617bf969f03eac641aefc', 'third_party/googletest/src': - Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'cd430b47a54841ec45d64d2377d7cabaf0eba610', + Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '09ffd0015395354774c059a17d9f5bee36177ff9', 'third_party/highway/src': Var('chromium_url') + '/external/github.com/google/highway.git' + '@' + '00fe003dac355b979f36157f9407c7c46448958e', 'third_party/icu': - Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '4c8cc4b365a505ce35be1e0bd488476c5f79805d', + Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'b929596baebf0ab4ac7ec07f38365db4c50a559d', 'third_party/instrumented_libs': { 'url': Var('chromium_url') + '/chromium/third_party/instrumented_libraries.git' + '@' + '69015643b3f68dbd438c010439c59adc52cac808', 'condition': 'checkout_instrumented_libraries', @@ -299,155 +302,155 @@ deps = { 'third_party/jsoncpp/source': Var('chromium_url') + '/external/github.com/open-source-parsers/jsoncpp.git'+ '@' + '42e892d96e47b1f6e29844cc705e148ec4856448', 'third_party/libc++/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '917609c669e43edc850eeb192a342434a54e1dfd', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + 'a01c02c9d4acbdae3b7e8a2f3ee58579a9c29f96', 'third_party/libc++abi/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'f2a7f2987f9dcdf8b04c2d8cd4dcb186641a7c3e', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '9810fb23f6ba666f017c2b67c67de2bcac2b44bd', 'third_party/libunwind/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '81e2cb40a70de2b6978e6d8658891ded9a77f7e3', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '8575f4ae4fcf8892938bd9766cf1a5c90a0ed04e', 'third_party/llvm-libc/src': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + '912274164f0877ca917c06e8484ad3be1784833a', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + '9c3ae3120fe83b998d0498dcc9ad3a56c29fad0c', 'third_party/llvm-build/Release+Asserts': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/clang-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '2cccd3a5b04461f17a2e78d2f8bd18b448443a9dd4d6dfac50e8e84b4d5176f1', - 'size_bytes': 54914604, - 'generation': 1745271343199398, + 'object_name': 'Linux_x64/clang-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '5f69279b3697166facfc354634157e0a8a32fa6e36864200ad8a8f85add3f3f6', + 'size_bytes': 55654416, + 'generation': 1747138963230938, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Linux_x64/clang-tidy-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'f0e7dae567266055c9cfa2fba5b3dafa311dc86955f5a3f7a4047ce3096e7b27', - 'size_bytes': 13559360, - 'generation': 1745271343282399, + 'object_name': 'Linux_x64/clang-tidy-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '9c9cd089b46f36232d7553d03a0b30cf509f5e42b2113fe8172ba14f905b91df', + 'size_bytes': 13597708, + 'generation': 1747138963497696, 'condition': 'host_os == "linux" and checkout_clang_tidy', }, { - 'object_name': 'Linux_x64/clangd-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'd87ec8e9cd959cf5d12e0de2970f4a88a67f9884467dac5285813d02bbe50bcb', - 'size_bytes': 13767836, - 'generation': 1745271343386108, + 'object_name': 'Linux_x64/clangd-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': 'cf580450a46e262d899c2d48fff2b6ea8f6691a6bcfc0c280f87d8b6da088e5f', + 'size_bytes': 13854788, + 'generation': 1747138963598582, 'condition': 'host_os == "linux" and checkout_clangd', }, { - 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '08f9cdbdc1e3f78dfb11aa9815727e8af0cf8f2b9c9a0e3749ceb4d3584fc900', - 'size_bytes': 2293720, - 'generation': 1745271343569971, + 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '1a3488e55d62bda48d09b69fb4e5267ac64247258dc51fd9dabdb7fe5d66da4c', + 'size_bytes': 2297996, + 'generation': 1747138964068040, 'condition': 'host_os == "linux" and checkout_clang_coverage_tools', }, { - 'object_name': 'Linux_x64/llvmobjdump-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '4b9c20478c015a03a44842d0bc24a9bd01a87890c76c4496577843ea31a21ed1', - 'size_bytes': 5702536, - 'generation': 1745271343407073, + 'object_name': 'Linux_x64/llvmobjdump-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': 'efb127c69ac198284ff3622cd173e9dc4839d0bed33dbcaa96501db169607a2e', + 'size_bytes': 5701128, + 'generation': 1747138963789285, 'condition': '(checkout_linux or checkout_mac or checkout_android and host_os != "mac")', }, { - 'object_name': 'Mac/clang-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '159cc811ee2882098086a426e83cb6744ff59d422d005a54630bc519e782d154', - 'size_bytes': 51986012, - 'generation': 1745271345031799, + 'object_name': 'Mac/clang-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '3d83bd33ae0a0331ba8e23340023ae05174128503d94116cd8a855913fca88c7', + 'size_bytes': 52212572, + 'generation': 1747138966013176, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'ef380bc751dc8b137e294ac1aca295f3e49eb57b938ab011c38c70271d8582fc', - 'size_bytes': 988872, - 'generation': 1745271352425938, + 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '809b6f72718d9bcbf25ad6ab80517f215ed2526435a095ee9bceb5ed40f989a2', + 'size_bytes': 993800, + 'generation': 1747138984414942, 'condition': 'checkout_mac and not host_os == "mac"', }, { - 'object_name': 'Mac/clang-tidy-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '75907ac8d2ab310fd7272715c5d98cd4382dbd0b867872aa9216cede48c274d5', - 'size_bytes': 13609872, - 'generation': 1745271345094426, + 'object_name': 'Mac/clang-tidy-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': 'c1fd7930eadede03470cbc8d38697669c6254069da2f6bd58328a8654d68f70d', + 'size_bytes': 13699584, + 'generation': 1747138966324770, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_tidy', }, { - 'object_name': 'Mac/clangd-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'e2bcab0b3961fdc7a63286cf7a98397026ff1b5143d34c8a50844b26a7b023c6', - 'size_bytes': 14998604, - 'generation': 1745271345196743, + 'object_name': 'Mac/clangd-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '3aa82177f6e03da693d93aa9f8052fa669af1bd897359a20eaf01379db0924b8', + 'size_bytes': 15136432, + 'generation': 1747138966446697, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clangd', }, { - 'object_name': 'Mac/llvm-code-coverage-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '6e4c8ed691948981d799f4af747288cdd5e90ae873dc36ada66726ad3e6caef1', - 'size_bytes': 2262400, - 'generation': 1745271345385127, + 'object_name': 'Mac/llvm-code-coverage-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '1f8d0d65f9d027707890c28433b0bfe29e32551008e9f3c1b9803318ede2bfc6', + 'size_bytes': 2272500, + 'generation': 1747138966854415, 'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Mac_arm64/clang-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '3d437a643cc5838963254a39ab0528f49f2b65cd4dba2c80e628ad88eb419536', - 'size_bytes': 43999512, - 'generation': 1745271353863965, + 'object_name': 'Mac_arm64/clang-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '2d5660c50637a7ee6e5501525e7588bb255cdfd48e792b12b86ae7113c31b8ae', + 'size_bytes': 44214476, + 'generation': 1747138986010150, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Mac_arm64/clang-tidy-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '0b4150c9e699e1e904495807aff48d2e5396527bf775d6597818dd4f73a9c38f', - 'size_bytes': 11776260, - 'generation': 1745271353927359, + 'object_name': 'Mac_arm64/clang-tidy-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': 'c17b6d7d112ff54699477d5fc7f5009e7b650d263d127cad4f8406f8df914996', + 'size_bytes': 11838956, + 'generation': 1747138986259606, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_tidy', }, { - 'object_name': 'Mac_arm64/clangd-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '9fcd151cfffa01e6befe3760b9bc91d645135c79449dc378af4cb2fe0187150c', - 'size_bytes': 12041956, - 'generation': 1745271354010497, + 'object_name': 'Mac_arm64/clangd-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': 'd6c134df8273fe9c4c2b5ff5786f2ceeb9ed5f251e223e55edbc0cd7aa772e83', + 'size_bytes': 12115024, + 'generation': 1747138986359326, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clangd', }, { - 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '1e62752ef5fd9d425699ed44098d5a0eec3be3f827990470aa9f9199d34a2fb8', - 'size_bytes': 1975116, - 'generation': 1745271354276821, + 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '82ca9187d1fd5ed14266612339b921d560b1008f92e1719255b755ff882d23e3', + 'size_bytes': 1982036, + 'generation': 1747138986831545, 'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/clang-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'd53230dbb7db57ddcda5a8377b5dd8388deee9ff2766617d54c6159c51e806be', - 'size_bytes': 47036964, - 'generation': 1745271363166454, + 'object_name': 'Win/clang-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '39e17b8282b9f1e3cbc6b22d3144696728c867f3ae66694b0125c3ed60755401', + 'size_bytes': 47250032, + 'generation': 1747139012194774, 'condition': 'host_os == "win"', }, { - 'object_name': 'Win/clang-tidy-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'c6022f5923be5afc1685723a2383fcd8f9334cc6ee097ce3c71963de6ded0764', - 'size_bytes': 13415856, - 'generation': 1745271363272778, + 'object_name': 'Win/clang-tidy-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '9dec82a917bd55947e39891137ba5c13663ca94d2c102d56eb52b9b176365910', + 'size_bytes': 13492960, + 'generation': 1747139012510054, 'condition': 'host_os == "win" and checkout_clang_tidy', }, { - 'object_name': 'Win/clang-win-runtime-library-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '555a34dd110a5fe3f7578745e9f0074cc341e550bed4ec5888accffb0200a7bb', - 'size_bytes': 2483656, - 'generation': 1745271370423782, + 'object_name': 'Win/clang-win-runtime-library-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '220abd9ce9a85446a2e7879aab3c1f2f5393665f6b13b067f8cec565ae7d36eb', + 'size_bytes': 2486856, + 'generation': 1747139033547001, 'condition': 'checkout_win and not host_os == "win"', }, { - 'object_name': 'Win/clangd-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '66aafde760608c4c0de94a3947a179db8c8f93c8e474e3081b4401287abe4ee4', - 'size_bytes': 13838692, - 'generation': 1745271363368641, + 'object_name': 'Win/clangd-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '81fa230b6311e3e50147cae3acd6d2c83c1bef13ff46df3df3d580ca911e9d15', + 'size_bytes': 13918432, + 'generation': 1747139013351355, 'condition': 'host_os == "win" and checkout_clangd', }, { - 'object_name': 'Win/llvm-code-coverage-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': '6944dc39b33dca3bb8f219ffb221e3f345fe56a5fa0447c60ea6a2894ae72687', - 'size_bytes': 2373032, - 'generation': 1745271363562596, + 'object_name': 'Win/llvm-code-coverage-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '611b9689c3d3e80ab7485e698f6b67e0df328b5407f30f177c29fe394b81a13e', + 'size_bytes': 2378584, + 'generation': 1747139013764369, 'condition': 'host_os == "win" and checkout_clang_coverage_tools', }, { - 'object_name': 'Win/llvmobjdump-llvmorg-21-init-9266-g09006611-1.tar.xz', - 'sha256sum': 'e8b3e9f7cd7512edc7c05a12e818386cdb8d43bea9affbf0bf4db83a553092a5', - 'size_bytes': 5684140, - 'generation': 1745271363450942, + 'object_name': 'Win/llvmobjdump-llvmorg-21-init-11777-gfd3fecfc-1.tar.xz', + 'sha256sum': '67a05210ee38b2f575df3cc1feb04ed36b4186748c2d769e2201572b413305fe', + 'size_bytes': 5698204, + 'generation': 1747139013159526, 'condition': 'checkout_linux or checkout_mac or checkout_android and host_os == "win"', }, ], @@ -473,7 +476,7 @@ deps = { 'third_party/perfetto': Var('android_url') + '/platform/external/perfetto.git' + '@' + '40b529923598b739b2892a536a7692eedbed5685', 'third_party/protobuf': - Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + '56b98941c7a305f54fc6c1c0a082fcb232f92954', + Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + '4a2ed4d61702b9e8894aa1c5b9bf52fd19907f6a', 'third_party/re2/src': Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + 'c84a140c93352cdabbfb547c531be34515b12228', 'third_party/requests': { @@ -481,39 +484,39 @@ deps = { 'condition': 'checkout_android', }, 'tools/rust': - Var('chromium_url') + '/chromium/src/tools/rust' + '@' + 'fa679ed68ee49fb99a7e924f57e4d2b6444103d6', + Var('chromium_url') + '/chromium/src/tools/rust' + '@' + '11d67ba3289de6ca73bc441794138a9d8cd9db6b', 'third_party/rust': - Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + '926ec544992cad0ac638f3594fe6195ed493ebff', + Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + 'f18bafac74bffec1f4e818592b2c7f916864ec91', 'third_party/rust-toolchain': { 'dep_type': 'gcs', 'bucket': 'chromium-browser-clang', 'objects': [ { - 'object_name': 'Linux_x64/rust-toolchain-c8f94230282a8e8c1148f3e657f0199aad909228-1-llvmorg-21-init-9266-g09006611.tar.xz', - 'sha256sum': '378c432f7739bb5da11aad7b3a2687f8252565eae5f0dcfc55c39a15382c519c', - 'size_bytes': 118598336, - 'generation': 1745271335898717, + 'object_name': 'Linux_x64/rust-toolchain-4a0969e06dbeaaa43914d2d00b2e843d49aa3886-1-llvmorg-21-init-11777-gfd3fecfc.tar.xz', + 'sha256sum': 'df1573701599cb7d00c1050b71636a436320b8ad47bb09cb46d6e96b3f8ac585', + 'size_bytes': 118529212, + 'generation': 1747160498430964, 'condition': 'host_os == "linux"', }, { - 'object_name': 'Mac/rust-toolchain-c8f94230282a8e8c1148f3e657f0199aad909228-1-llvmorg-21-init-9266-g09006611.tar.xz', - 'sha256sum': 'bf05c8b5e90d6904de02dca9b3e4cb5e45a1a56207e7af1fbb3a10707704a26a', - 'size_bytes': 111932536, - 'generation': 1745271337336068, + 'object_name': 'Mac/rust-toolchain-4a0969e06dbeaaa43914d2d00b2e843d49aa3886-1-llvmorg-21-init-11777-gfd3fecfc.tar.xz', + 'sha256sum': '83836493c8a81b212c20e16666c6b918bff28748f4d6685c5107eb7e9d16f6fe', + 'size_bytes': 111691772, + 'generation': 1747160500088595, 'condition': 'host_os == "mac" and host_cpu == "x64"', }, { - 'object_name': 'Mac_arm64/rust-toolchain-c8f94230282a8e8c1148f3e657f0199aad909228-1-llvmorg-21-init-9266-g09006611.tar.xz', - 'sha256sum': '1aec99f479ff28cefe44ed739844833e016a1da255cf3c17d79e59a273246615', - 'size_bytes': 101605468, - 'generation': 1745271339727037, + 'object_name': 'Mac_arm64/rust-toolchain-4a0969e06dbeaaa43914d2d00b2e843d49aa3886-1-llvmorg-21-init-11777-gfd3fecfc.tar.xz', + 'sha256sum': 'd975e322a2e5c680b54f27a6545c63c0de2c5367ca6ffefda04de491d6b76553', + 'size_bytes': 102206348, + 'generation': 1747160501743827, 'condition': 'host_os == "mac" and host_cpu == "arm64"', }, { - 'object_name': 'Win/rust-toolchain-c8f94230282a8e8c1148f3e657f0199aad909228-1-llvmorg-21-init-9266-g09006611.tar.xz', - 'sha256sum': 'b291520613a3ebc415e4576a7fa31d840a5ebf4ab9be6e9dc5d90062dc001c1e', - 'size_bytes': 193280372, - 'generation': 1745271341223097, + 'object_name': 'Win/rust-toolchain-4a0969e06dbeaaa43914d2d00b2e843d49aa3886-1-llvmorg-21-init-11777-gfd3fecfc.tar.xz', + 'sha256sum': '25c51b4c2e0e8b4e974973f0357b12ecb645a0a7a136f9e0a6604e87c21acc7a', + 'size_bytes': 193582440, + 'generation': 1747160503376785, 'condition': 'host_os == "win"', }, ], @@ -529,13 +532,13 @@ deps = { 'condition': 'not build_with_chromium and host_cpu != "s390" and host_os != "zos" and host_cpu != "ppc"', }, 'third_party/zlib': - Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '1e85c01b15363d11fab81c46fe2b5c2179113f70', + Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + 'a1f2fe223f55b6ec6dd3c20796727604ed5ec74a', 'tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '6c4f037a983abf14a4c8bf00e44db73cdf330a97', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '574d9487446043d2dd26d6f30fcb6757288e5d2e', 'tools/protoc_wrapper': - Var('chromium_url') + '/chromium/src/tools/protoc_wrapper.git' + '@' + '8ad6d21544b14c7f753852328d71861b363cc512', + Var('chromium_url') + '/chromium/src/tools/protoc_wrapper.git' + '@' + '502dcad5230ec1da544e7720b15d91782f040d9f', 'third_party/abseil-cpp': { - 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '91f1a3775e4c509c3eadd4870fc9929c0021e6e3', + 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '2401283880a451e9ea10787920117fb67695abb4', 'condition': 'not build_with_chromium', }, 'third_party/zoslib': { @@ -548,6 +551,7 @@ include_rules = [ # Everybody can use some things. '+include', '+unicode', + '+third_party/dragonbox/src/include', '+third_party/fast_float/src/include', '+third_party/fdlibm', '+third_party/fp16/src/include', @@ -624,7 +628,6 @@ hooks = [ 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '--bucket', 'chromium-browser-clang', '-s', 'tools/clang/dsymutil/bin/dsymutil.arm64.sha1', '-o', 'tools/clang/dsymutil/bin/dsymutil', @@ -637,7 +640,6 @@ hooks = [ 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '--bucket', 'chromium-browser-clang', '-s', 'tools/clang/dsymutil/bin/dsymutil.x64.sha1', '-o', 'tools/clang/dsymutil/bin/dsymutil', @@ -667,13 +669,24 @@ hooks = [ '--platform=linux*', ], }, + { + 'name': 'llvm_symbolizer', + 'pattern': '.', + 'condition': 'download_prebuilt_arm64_llvm_symbolizer', + 'action': [ 'python3', + 'third_party/depot_tools/download_from_google_storage.py', + '--bucket', 'chromium-v8/llvm/arm64', + '--no_resume', + '-s', 'tools/sanitizers/linux/arm64/llvm-symbolizer.sha1', + '--platform=linux*', + ], + }, { 'name': 'wasm_spec_tests', 'pattern': '.', 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '-u', '--bucket', 'v8-wasm-spec-tests', '-s', 'test/wasm-spec-tests/tests.tar.gz.sha1', @@ -685,7 +698,6 @@ hooks = [ 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '-u', '--bucket', 'v8-wasm-spec-tests', '-s', 'test/wasm-js/tests.tar.gz.sha1', @@ -699,7 +711,6 @@ hooks = [ 'action': [ 'python3', 'third_party/depot_tools/download_from_google_storage.py', '--no_resume', - '--no_auth', '--bucket', 'chromium-browser-clang/ciopfs', '-s', 'build/ciopfs.sha1', ] diff --git a/deps/v8/bazel/defs.bzl b/deps/v8/bazel/defs.bzl index fbd942ba765fe0..0539ea176ac1f9 100644 --- a/deps/v8/bazel/defs.bzl +++ b/deps/v8/bazel/defs.bzl @@ -549,7 +549,6 @@ def build_config_content(cpu, icu): ("code_comments", "false"), ("component_build", "false"), ("concurrent_marking", "false"), - ("conservative_stack_scanning", "false"), ("current_cpu", cpu), ("dcheck_always_on", "false"), ("debug_code", "false"), diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni index e137c84b00b5d5..bcebe933840213 100644 --- a/deps/v8/gni/v8.gni +++ b/deps/v8/gni/v8.gni @@ -52,6 +52,20 @@ declare_args() { # add a dependency on the ICU library. v8_enable_i18n_support = true + # Enable Temporal API. Enabling this feature will + # add a dependency on the temporal_rs library. + # + # We currently only want it enabled on d8 and chromium builds (Functionality + # is still not accessible unless --harmony-temporal is enabled at runtime) + # + # The Windows and Fuchsia builds for temporal_rs also currently fail, + # but won't once we vendor in https://github.com/boa-dev/temporal/pull/279 + # NOTE: we check target OS, not is_win/is_fuchsia, since those will be different + # when doing host codegen. + v8_enable_temporal_support = + !(defined(build_with_node) && build_with_node) && target_os != "win" && + target_os != "fuchsia" && target_cpu != "ppc64" && target_cpu != "s390x" + # Use static libraries instead of source_sets. v8_static_library = false diff --git a/deps/v8/include/cppgc/allocation.h b/deps/v8/include/cppgc/allocation.h index 3e70eff0ddf62c..a7955fd1016e8e 100644 --- a/deps/v8/include/cppgc/allocation.h +++ b/deps/v8/include/cppgc/allocation.h @@ -71,7 +71,7 @@ class MakeGarbageCollectedTraitInternal { template struct AllocationDispatcher final { static void* Invoke(AllocationHandle& handle, size_t size) { - static_assert(std::is_base_of::value, + static_assert(std::is_base_of_v, "Custom space must inherit from CustomSpaceBase."); static_assert( !CustomSpace::kSupportsCompaction, @@ -111,7 +111,7 @@ class MakeGarbageCollectedTraitInternal { api_constants::kDefaultAlignment> final { static void* Invoke(AllocationHandle& handle, size_t size) { - static_assert(std::is_base_of::value, + static_assert(std::is_base_of_v, "Custom space must inherit from CustomSpaceBase."); return MakeGarbageCollectedTraitInternal::Allocate( handle, size, internal::GCInfoTrait::Index(), @@ -164,7 +164,7 @@ class MakeGarbageCollectedTraitBase */ V8_INLINE static void* Allocate(AllocationHandle& handle, size_t size) { static_assert( - std::is_base_of::value, + std::is_base_of_v, "U of GarbageCollected must be a base of T. Check " "GarbageCollected base class inheritance."); static constexpr size_t kWantedAlignment = diff --git a/deps/v8/include/cppgc/cross-thread-persistent.h b/deps/v8/include/cppgc/cross-thread-persistent.h index a5f8bac0b1013e..df172b3a4921d3 100644 --- a/deps/v8/include/cppgc/cross-thread-persistent.h +++ b/deps/v8/include/cppgc/cross-thread-persistent.h @@ -149,7 +149,7 @@ class BasicCrossThreadPersistent final : public CrossThreadPersistentBase, template ::value>> + typename = std::enable_if_t>> BasicCrossThreadPersistent( internal::BasicMember @@ -168,7 +168,7 @@ class BasicCrossThreadPersistent final : public CrossThreadPersistentBase, // Heterogeneous ctor. template ::value>> + typename = std::enable_if_t>> BasicCrossThreadPersistent( const BasicCrossThreadPersistent::value>> + typename = std::enable_if_t>> BasicCrossThreadPersistent& operator=( const BasicCrossThreadPersistent::value>> + typename = std::enable_if_t>> BasicCrossThreadPersistent& operator=( internal::BasicMember @@ -338,8 +338,8 @@ class BasicCrossThreadPersistent final : public CrossThreadPersistentBase, } template ::IsStrongPersistent::value>::type> + typename = std::enable_if_t::IsStrongPersistent::value>> BasicCrossThreadPersistent Lock() const { return BasicCrossThreadPersistent< diff --git a/deps/v8/include/cppgc/internal/finalizer-trait.h b/deps/v8/include/cppgc/internal/finalizer-trait.h index ab49af870e0ba3..b62da059fa14d0 100644 --- a/deps/v8/include/cppgc/internal/finalizer-trait.h +++ b/deps/v8/include/cppgc/internal/finalizer-trait.h @@ -70,7 +70,7 @@ struct FinalizerTrait { // - a destructor. static constexpr bool kNonTrivialFinalizer = internal::HasFinalizeGarbageCollectedObject::value || - !std::is_trivially_destructible::type>::value; + !std::is_trivially_destructible_v>; static void Finalize(void* obj) { internal::FinalizerTraitImpl::Finalize(obj); diff --git a/deps/v8/include/cppgc/internal/gc-info.h b/deps/v8/include/cppgc/internal/gc-info.h index d52710b369dc28..b2fbd1fee1cbcf 100644 --- a/deps/v8/include/cppgc/internal/gc-info.h +++ b/deps/v8/include/cppgc/internal/gc-info.h @@ -108,10 +108,10 @@ struct GCInfoTrait final { template struct GCInfoFolding final { static constexpr bool kHasVirtualDestructorAtBase = - std::has_virtual_destructor::value; + std::has_virtual_destructor_v; static constexpr bool kBothTypesAreTriviallyDestructible = - std::is_trivially_destructible::value && - std::is_trivially_destructible::value; + std::is_trivially_destructible_v && + std::is_trivially_destructible_v; static constexpr bool kHasCustomFinalizerDispatchAtBase = internal::HasFinalizeGarbageCollectedObject< ParentMostGarbageCollectedType>::value; diff --git a/deps/v8/include/cppgc/internal/name-trait.h b/deps/v8/include/cppgc/internal/name-trait.h index 6be298557df44b..6e63a72821be76 100644 --- a/deps/v8/include/cppgc/internal/name-trait.h +++ b/deps/v8/include/cppgc/internal/name-trait.h @@ -80,7 +80,7 @@ class NameTrait final : public NameTraitBase { #elif CPPGC_SUPPORTS_OBJECT_NAMES return true; #else // !CPPGC_SUPPORTS_OBJECT_NAMES - return std::is_base_of::value; + return std::is_base_of_v; #endif // !CPPGC_SUPPORTS_OBJECT_NAMES } diff --git a/deps/v8/include/cppgc/member.h b/deps/v8/include/cppgc/member.h index c82688d582a8d8..c028bcd06881b2 100644 --- a/deps/v8/include/cppgc/member.h +++ b/deps/v8/include/cppgc/member.h @@ -20,6 +20,8 @@ namespace cppgc { namespace subtle { class HeapConsistency; +template +class TaggedUncompressedMember; } // namespace subtle class Visitor; @@ -163,7 +165,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, template ::value>> + typename = std::enable_if_t>> V8_INLINE BasicMember(const BasicPersistent& p) @@ -219,7 +221,7 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, template ::value>> + typename = std::enable_if_t>> V8_INLINE BasicMember& operator=( const BasicPersistent& @@ -296,8 +298,10 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, return *this; } - V8_INLINE const T* GetRawAtomic() const { - return static_cast(Base::GetRawAtomic()); + V8_INLINE const void* GetRawAtomic() const { return Base::GetRawAtomic(); } + + V8_INLINE const T* GetAtomic() const { + return static_cast(GetRawAtomic()); } V8_INLINE void InitializingWriteBarrier(T* value) const { @@ -328,6 +332,8 @@ class V8_TRIVIAL_ABI BasicMember final : private MemberBase, V8_INLINE T* GetFromGC() const { return Get(); } friend class cppgc::subtle::HeapConsistency; + template + friend class cppgc::subtle::TaggedUncompressedMember; friend class cppgc::Visitor; template friend struct cppgc::TraceTrait; diff --git a/deps/v8/include/cppgc/persistent.h b/deps/v8/include/cppgc/persistent.h index 6eb1c659267d96..b330e87fe6297d 100644 --- a/deps/v8/include/cppgc/persistent.h +++ b/deps/v8/include/cppgc/persistent.h @@ -91,7 +91,7 @@ class BasicPersistent final : public PersistentBase, // Heterogeneous ctor. template ::value>> + typename = std::enable_if_t>> // NOLINTNEXTLINE BasicPersistent( const BasicPersistent::value>> + typename = std::enable_if_t>> // NOLINTNEXTLINE BasicPersistent(const internal::BasicMember< U, MemberBarrierPolicy, MemberWeaknessTag, @@ -133,7 +133,7 @@ class BasicPersistent final : public PersistentBase, template ::value>> + typename = std::enable_if_t>> BasicPersistent& operator=( const BasicPersistent& other) { @@ -158,7 +158,7 @@ class BasicPersistent final : public PersistentBase, template ::value>> + typename = std::enable_if_t>> BasicPersistent& operator=( const internal::BasicMember& diff --git a/deps/v8/include/cppgc/tagged-member.h b/deps/v8/include/cppgc/tagged-member.h index 7a2dfbb4c790c0..2126b6bac78321 100644 --- a/deps/v8/include/cppgc/tagged-member.h +++ b/deps/v8/include/cppgc/tagged-member.h @@ -28,7 +28,7 @@ namespace cppgc::subtle { // TaggedUncompressedMember // m(ParentTag{}, parent); template -struct TaggedUncompressedMember final { +class TaggedUncompressedMember final { CPPGC_DISALLOW_NEW(); static constexpr uintptr_t kTagBit = 0b1; static_assert(kTagBit < internal::api_constants::kAllocationGranularity, @@ -98,7 +98,9 @@ struct TaggedUncompressedMember final { // Construct an untagged pointer and pass it to Visitor::Trace(). The plugin // would warn that ptr_ is untraced, which is why CPPGC_PLUGIN_IGNORE is // used. - UncompressedMember temp(GetUntagged()); + auto* untagged = reinterpret_cast( + reinterpret_cast(ptr_.GetRawAtomic()) & ~kTagBit); + UncompressedMember temp(untagged); v->Trace(temp); } diff --git a/deps/v8/include/cppgc/trace-trait.h b/deps/v8/include/cppgc/trace-trait.h index 5fc863d2ebbac5..9b768a15290fab 100644 --- a/deps/v8/include/cppgc/trace-trait.h +++ b/deps/v8/include/cppgc/trace-trait.h @@ -23,8 +23,7 @@ using TraceRootCallback = void (*)(RootVisitor&, const void* object); // Implementation of the default TraceTrait handling GarbageCollected and // GarbageCollectedMixin. template ::type>> + bool = IsGarbageCollectedMixinTypeV>> struct TraceTraitImpl; } // namespace internal diff --git a/deps/v8/include/cppgc/visitor.h b/deps/v8/include/cppgc/visitor.h index e0b1d19beb35ac..125e2768e2e35b 100644 --- a/deps/v8/include/cppgc/visitor.h +++ b/deps/v8/include/cppgc/visitor.h @@ -91,7 +91,7 @@ class V8_EXPORT Visitor { */ template void Trace(const Member& member) { - const T* value = member.GetRawAtomic(); + const T* value = member.GetAtomic(); CPPGC_DCHECK(value != kSentinelPointer); TraceImpl(value); } @@ -109,7 +109,7 @@ class V8_EXPORT Visitor { static_assert(!internal::IsAllocatedOnCompactableSpace::value, "Weak references to compactable objects are not allowed"); - const T* value = weak_member.GetRawAtomic(); + const T* value = weak_member.GetAtomic(); // Bailout assumes that WeakMember emits write barrier. if (!value) { @@ -129,7 +129,7 @@ class V8_EXPORT Visitor { */ template void Trace(const subtle::UncompressedMember& member) { - const T* value = member.GetRawAtomic(); + const T* value = member.GetAtomic(); CPPGC_DCHECK(value != kSentinelPointer); TraceImpl(value); } @@ -232,12 +232,12 @@ class V8_EXPORT Visitor { template void TraceEphemeron(const WeakMember& weak_member_key, const Member* member_value) { - const KeyType* key = weak_member_key.GetRawAtomic(); + const KeyType* key = weak_member_key.GetAtomic(); if (!key) return; // `value` must always be non-null. CPPGC_DCHECK(member_value); - const ValueType* value = member_value->GetRawAtomic(); + const ValueType* value = member_value->GetAtomic(); if (!value) return; // KeyType and ValueType may refer to GarbageCollectedMixin. @@ -267,7 +267,7 @@ class V8_EXPORT Visitor { const ValueType* value) { static_assert(!IsGarbageCollectedOrMixinTypeV, "garbage-collected types must use WeakMember and Member"); - const KeyType* key = weak_member_key.GetRawAtomic(); + const KeyType* key = weak_member_key.GetAtomic(); if (!key) return; // `value` must always be non-null. @@ -293,7 +293,7 @@ class V8_EXPORT Visitor { */ template void TraceStrongly(const WeakMember& weak_member) { - const T* value = weak_member.GetRawAtomic(); + const T* value = weak_member.GetAtomic(); CPPGC_DCHECK(value != kSentinelPointer); TraceImpl(value); } @@ -369,6 +369,11 @@ class V8_EXPORT Visitor { return false; } + /** + * Checks whether the visitor is running concurrently to the mutator or not. + */ + virtual bool IsConcurrent() const { return false; } + protected: virtual void Visit(const void* self, TraceDescriptor) {} virtual void VisitWeak(const void* self, TraceDescriptor, WeakCallback, diff --git a/deps/v8/include/v8-array-buffer.h b/deps/v8/include/v8-array-buffer.h index 1d93457628cf0c..3e64ece5debda3 100644 --- a/deps/v8/include/v8-array-buffer.h +++ b/deps/v8/include/v8-array-buffer.h @@ -198,7 +198,7 @@ class V8_EXPORT ArrayBuffer : public Object { * Convenience allocator. * * When the sandbox is enabled, this allocator will allocate its backing - * memory inside the sandbox that belongs to passed isolate group. + * memory inside the sandbox that belongs to the passed isolate group. * Otherwise, it will rely on malloc/free. * * Caller takes ownership, i.e. the returned object needs to be freed using diff --git a/deps/v8/include/v8-context.h b/deps/v8/include/v8-context.h index 43dadadeabff59..d35518705fea56 100644 --- a/deps/v8/include/v8-context.h +++ b/deps/v8/include/v8-context.h @@ -256,6 +256,9 @@ class V8_EXPORT Context : public Data { Maybe DeepFreeze(DeepFreezeDelegate* delegate = nullptr); /** Returns the isolate associated with a current context. */ + V8_DEPRECATE_SOON( + "Use Isolate::GetCurrent() instead, which is guaranteed to return the " + "same isolate since https://crrev.com/c/6458560.") Isolate* GetIsolate(); /** Returns the microtask queue associated with a current context. */ @@ -451,8 +454,7 @@ Local Context::GetEmbedderData(int index) { value = I::DecompressTaggedField(embedder_data, static_cast(value)); #endif - auto isolate = reinterpret_cast( - internal::IsolateFromNeverReadOnlySpaceObject(ctx)); + auto* isolate = I::GetCurrentIsolate(); return Local::New(isolate, value); #else return SlowGetEmbedderData(index); @@ -487,7 +489,7 @@ void* Context::GetAlignedPointerFromEmbedderData(int index) { int value_offset = I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; - Isolate* isolate = I::GetIsolateForSandbox(ctx); + Isolate* isolate = I::GetCurrentIsolateForSandbox(); return reinterpret_cast( I::ReadExternalPointerField( isolate, embedder_data, value_offset)); diff --git a/deps/v8/include/v8-fast-api-calls.h b/deps/v8/include/v8-fast-api-calls.h index 4ffaf2d44a50fd..c405940810762f 100644 --- a/deps/v8/include/v8-fast-api-calls.h +++ b/deps/v8/include/v8-fast-api-calls.h @@ -714,8 +714,7 @@ class CFunctionBuilderWithFunction { // Flags in the template parameter pack are ignored. template struct GetArgBuilder { - using type = - typename std::tuple_element>::type; + using type = std::tuple_element_t>; }; // Returns an ArgBuilder with the same base type as the one at index N, @@ -723,10 +722,8 @@ class CFunctionBuilderWithFunction { template struct GetArgBuilder { using type = CTypeInfoBuilder< - typename std::tuple_element>::type::BaseType, - std::tuple_element>::type::Build() - .GetFlags(), + typename std::tuple_element_t>::BaseType, + std::tuple_element_t>::Build().GetFlags(), Flags...>; }; diff --git a/deps/v8/include/v8-function-callback.h b/deps/v8/include/v8-function-callback.h index 09213431c9200d..9ba587daac2199 100644 --- a/deps/v8/include/v8-function-callback.h +++ b/deps/v8/include/v8-function-callback.h @@ -42,7 +42,7 @@ class ReturnValue { public: template V8_INLINE ReturnValue(const ReturnValue& that) : value_(that.value_) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); } // Handle-based setters. template @@ -66,12 +66,12 @@ class ReturnValue { V8_INLINE void Set(uint16_t i); V8_INLINE void Set(uint32_t i); V8_INLINE void Set(uint64_t i); - // Fast JS primitive setters + // Fast JS primitive setters. V8_INLINE void SetNull(); V8_INLINE void SetUndefined(); V8_INLINE void SetFalse(); V8_INLINE void SetEmptyString(); - // Convenience getter for Isolate + // Convenience getter for the Isolate. V8_INLINE Isolate* GetIsolate() const; // Pointer setter: Uncompilable to prevent inadvertent misuse. @@ -335,7 +335,7 @@ void ReturnValue::SetInternal(internal::Address value) { template template void ReturnValue::Set(const Global& handle) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (V8_UNLIKELY(handle.IsEmpty())) { SetDefaultValue(); } else { @@ -346,7 +346,7 @@ void ReturnValue::Set(const Global& handle) { template template void ReturnValue::SetNonEmpty(const Global& handle) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); #ifdef V8_ENABLE_CHECKS internal::VerifyHandleIsNonEmpty(handle.IsEmpty()); #endif // V8_ENABLE_CHECKS @@ -356,7 +356,7 @@ void ReturnValue::SetNonEmpty(const Global& handle) { template template void ReturnValue::Set(const BasicTracedReference& handle) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (V8_UNLIKELY(handle.IsEmpty())) { SetDefaultValue(); } else { @@ -367,7 +367,7 @@ void ReturnValue::Set(const BasicTracedReference& handle) { template template void ReturnValue::SetNonEmpty(const BasicTracedReference& handle) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); #ifdef V8_ENABLE_CHECKS internal::VerifyHandleIsNonEmpty(handle.IsEmpty()); #endif // V8_ENABLE_CHECKS @@ -380,16 +380,16 @@ void ReturnValue::Set(const Local handle) { // "V8_DEPRECATE_SOON" this method if |T| is |void|. #ifdef V8_IMMINENT_DEPRECATION_WARNINGS static constexpr bool is_allowed_void = false; - static_assert(!std::is_void::value, + static_assert(!std::is_void_v, "ReturnValue::Set(const Local) is deprecated. " "Do nothing to indicate that the operation succeeded or use " "SetFalse() to indicate that the operation failed (don't " "forget to handle info.ShouldThrowOnError()). " "See http://crbug.com/348660658 for details."); #else - static constexpr bool is_allowed_void = std::is_void::value; + static constexpr bool is_allowed_void = std::is_void_v; #endif // V8_IMMINENT_DEPRECATION_WARNINGS - static_assert(is_allowed_void || std::is_base_of::value, "type check"); + static_assert(is_allowed_void || std::is_base_of_v, "type check"); if (V8_UNLIKELY(handle.IsEmpty())) { SetDefaultValue(); } else if constexpr (is_allowed_void) { @@ -407,16 +407,16 @@ void ReturnValue::SetNonEmpty(const Local handle) { // "V8_DEPRECATE_SOON" this method if |T| is |void|. #ifdef V8_IMMINENT_DEPRECATION_WARNINGS static constexpr bool is_allowed_void = false; - static_assert(!std::is_void::value, + static_assert(!std::is_void_v, "ReturnValue::SetNonEmpty(const Local) is deprecated. " "Do nothing to indicate that the operation succeeded or use " "SetFalse() to indicate that the operation failed (don't " "forget to handle info.ShouldThrowOnError()). " "See http://crbug.com/348660658 for details."); #else - static constexpr bool is_allowed_void = std::is_void::value; + static constexpr bool is_allowed_void = std::is_void_v; #endif // V8_IMMINENT_DEPRECATION_WARNINGS - static_assert(is_allowed_void || std::is_base_of::value, "type check"); + static_assert(is_allowed_void || std::is_base_of_v, "type check"); #ifdef V8_ENABLE_CHECKS internal::VerifyHandleIsNonEmpty(handle.IsEmpty()); #endif // V8_ENABLE_CHECKS @@ -431,13 +431,13 @@ void ReturnValue::SetNonEmpty(const Local handle) { template void ReturnValue::Set(double i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); SetNonEmpty(Number::New(GetIsolate(), i)); } template void ReturnValue::Set(int16_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; static_assert(I::IsValidSmi(std::numeric_limits::min())); static_assert(I::IsValidSmi(std::numeric_limits::max())); @@ -446,7 +446,7 @@ void ReturnValue::Set(int16_t i) { template void ReturnValue::Set(int32_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (const auto result = internal::Internals::TryIntegralToSmi(i)) { SetInternal(*result); return; @@ -456,7 +456,7 @@ void ReturnValue::Set(int32_t i) { template void ReturnValue::Set(int64_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (const auto result = internal::Internals::TryIntegralToSmi(i)) { SetInternal(*result); return; @@ -466,7 +466,7 @@ void ReturnValue::Set(int64_t i) { template void ReturnValue::Set(uint16_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; static_assert(I::IsValidSmi(std::numeric_limits::min())); static_assert(I::IsValidSmi(std::numeric_limits::max())); @@ -475,7 +475,7 @@ void ReturnValue::Set(uint16_t i) { template void ReturnValue::Set(uint32_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (const auto result = internal::Internals::TryIntegralToSmi(i)) { SetInternal(*result); return; @@ -485,7 +485,7 @@ void ReturnValue::Set(uint32_t i) { template void ReturnValue::Set(uint64_t i) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (const auto result = internal::Internals::TryIntegralToSmi(i)) { SetInternal(*result); return; @@ -495,7 +495,7 @@ void ReturnValue::Set(uint64_t i) { template void ReturnValue::Set(bool value) { - static_assert(std::is_void::value || std::is_base_of::value, + static_assert(std::is_void_v || std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL @@ -535,7 +535,7 @@ void ReturnValue::SetDefaultValue() { template void ReturnValue::SetNull() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL #ifdef V8_ENABLE_CHECKS @@ -550,7 +550,7 @@ void ReturnValue::SetNull() { template void ReturnValue::SetUndefined() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL #ifdef V8_ENABLE_CHECKS @@ -565,7 +565,7 @@ void ReturnValue::SetUndefined() { template void ReturnValue::SetFalse() { - static_assert(std::is_void::value || std::is_base_of::value, + static_assert(std::is_void_v || std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL @@ -581,7 +581,7 @@ void ReturnValue::SetFalse() { template void ReturnValue::SetEmptyString() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); using I = internal::Internals; #if V8_STATIC_ROOTS_BOOL #ifdef V8_ENABLE_CHECKS diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h index 66bb4b7d233cc2..e91719e59a1142 100644 --- a/deps/v8/include/v8-internal.h +++ b/deps/v8/include/v8-internal.h @@ -237,6 +237,12 @@ using SandboxedPointer_t = Address; // virtual address space for userspace. As such, limit the sandbox to 128GB (a // quarter of the total available address space). constexpr size_t kSandboxSizeLog2 = 37; // 128 GB +#elif defined(V8_TARGET_OS_IOS) +// On iOS, we only get 64 GB of usable virtual address space even with the +// "jumbo" extended virtual addressing entitlement. Limit the sandbox size to +// 16 GB so that the base address + size for the emulated virtual address space +// lies within the 64 GB total virtual address space. +constexpr size_t kSandboxSizeLog2 = 34; // 16 GB #else // Everywhere else use a 1TB sandbox. constexpr size_t kSandboxSizeLog2 = 40; // 1 TB @@ -582,11 +588,7 @@ enum ExternalPointerTag : uint16_t { kLastMaybeReadOnlyExternalPointerTag = kLastInterceptorInfoExternalPointerTag, - kWasmInternalFunctionCallTargetTag, - kWasmTypeInfoNativeTypeTag, - kWasmExportedFunctionDataSignatureTag, kWasmStackMemoryTag, - kWasmIndirectFunctionTargetTag, // Foreigns kFirstForeignExternalPointerTag, @@ -620,6 +622,7 @@ enum ExternalPointerTag : uint16_t { kIcuLocalizedNumberFormatterTag, kIcuPluralRulesTag, kIcuCollatorTag, + kTemporalInstantTag, kDisplayNamesInternalTag, kD8WorkerTag, kD8ModuleEmbedderDataTag, @@ -815,6 +818,9 @@ constexpr bool kAllCodeObjectsLiveInTrustedSpace = // {obj} must be the raw tagged pointer representation of a HeapObject // that's guaranteed to never be in ReadOnlySpace. +V8_DEPRECATE_SOON( + "Use GetCurrentIsolate() instead, which is guaranteed to return the same " + "isolate since https://crrev.com/c/6458560.") V8_EXPORT internal::Isolate* IsolateFromNeverReadOnlySpaceObject(Address obj); // Returns if we need to throw when an error occurs. This infers the language @@ -880,8 +886,13 @@ class Internals { // ExternalPointerTable and TrustedPointerTable layout guarantees. static const int kExternalPointerTableBasePointerOffset = 0; - static const int kExternalPointerTableSize = 2 * kApiSystemPointerSize; - static const int kTrustedPointerTableSize = 2 * kApiSystemPointerSize; + static const int kSegmentedTableSegmentPoolSize = 4; + static const int kExternalPointerTableSize = + 4 * kApiSystemPointerSize + + kSegmentedTableSegmentPoolSize * sizeof(uint32_t); + static const int kTrustedPointerTableSize = + 4 * kApiSystemPointerSize + + kSegmentedTableSegmentPoolSize * sizeof(uint32_t); static const int kTrustedPointerTableBasePointerOffset = 0; // IsolateData layout guarantees. @@ -948,8 +959,10 @@ class Internals { static const int kIsolateApiCallbackThunkArgumentOffset = kIsolateEmbedderDataOffset + kNumIsolateDataSlots * kApiSystemPointerSize; #endif // V8_COMPRESS_POINTERS - static const int kIsolateRegexpExecVectorArgumentOffset = + static const int kJSDispatchTableOffset = kIsolateApiCallbackThunkArgumentOffset + kApiSystemPointerSize; + static const int kIsolateRegexpExecVectorArgumentOffset = + kJSDispatchTableOffset + kApiSystemPointerSize; static const int kContinuationPreservedEmbedderDataOffset = kIsolateRegexpExecVectorArgumentOffset + kApiSystemPointerSize; static const int kIsolateRootsOffset = @@ -968,7 +981,7 @@ class Internals { V(TrueValue, 0x71) \ V(FalseValue, 0x55) \ V(EmptyString, 0x49) \ - V(TheHoleValue, 0x761) + V(TheHoleValue, 0x7d9) using Tagged_t = uint32_t; struct StaticReadOnlyRoot { @@ -1256,10 +1269,25 @@ class Internals { #endif } + V8_DEPRECATE_SOON( + "Use GetCurrentIsolateForSandbox() instead, which is guaranteed to " + "return the same isolate since https://crrev.com/c/6458560.") V8_INLINE static v8::Isolate* GetIsolateForSandbox(Address obj) { #ifdef V8_ENABLE_SANDBOX - return reinterpret_cast( - internal::IsolateFromNeverReadOnlySpaceObject(obj)); + return GetCurrentIsolate(); +#else + // Not used in non-sandbox mode. + return nullptr; +#endif + } + + // Returns v8::Isolate::Current(), but without needing to include the + // v8-isolate.h header. + V8_EXPORT static v8::Isolate* GetCurrentIsolate(); + + V8_INLINE static v8::Isolate* GetCurrentIsolateForSandbox() { +#ifdef V8_ENABLE_SANDBOX + return GetCurrentIsolate(); #else // Not used in non-sandbox mode. return nullptr; @@ -1334,8 +1362,8 @@ void CastCheck::Perform(T* data) {} template V8_INLINE void PerformCastCheck(T* data) { - CastCheck::value && - !std::is_same>::value>::Perform(data); + CastCheck && + !std::is_same_v>>::Perform(data); } // A base class for backing stores, which is needed due to vagaries of diff --git a/deps/v8/include/v8-isolate.h b/deps/v8/include/v8-isolate.h index 280c09729f8cb4..99c21c30422397 100644 --- a/deps/v8/include/v8-isolate.h +++ b/deps/v8/include/v8-isolate.h @@ -253,6 +253,17 @@ class V8_EXPORT IsolateGroup { return !operator==(other); } +#ifdef V8_ENABLE_SANDBOX + /** + * Whether the sandbox of the isolate group contains a given pointer. + * Will always return true if the sandbox is not enabled. + */ + bool SandboxContains(void* pointer) const; + VirtualAddressSpace* GetSandboxAddressSpace(); +#else + V8_INLINE bool SandboxContains(void* pointer) const { return true; } +#endif + private: friend class Isolate; friend class ArrayBuffer::Allocator; @@ -634,6 +645,13 @@ class V8_EXPORT Isolate { kFloat16Array = 165, kExplicitResourceManagement = 166, kWasmBranchHinting = 167, + kWasmMultiValue = 168, + kUint8ArrayToFromBase64AndHex = 169, + kAtomicsPause = 170, + kTopLevelAwait = 171, + kLogicalAssignment = 172, + kNullishCoalescing = 173, + kInvalidatedNoDateTimeConfigurationChangeProtector = 174, // If you add new values here, you'll also need to update Chromium's: // web_feature.mojom, use_counter_callback.cc, and enums.xml. V8 changes to @@ -937,14 +955,31 @@ class V8_EXPORT Isolate { * Returns the value that was set or restored by * SetContinuationPreservedEmbedderData(), if any. */ + V8_DEPRECATE_SOON("Use GetContinuationPreservedEmbedderDataV2 instead") Local GetContinuationPreservedEmbedderData(); /** * Sets a value that will be stored on continuations and reset while the * continuation runs. */ + V8_DEPRECATE_SOON("Use SetContinuationPreservedEmbedderDataV2 instead") void SetContinuationPreservedEmbedderData(Local data); + /** + * Returns the value set by `SetContinuationPreservedEmbedderDataV2()` or + * restored during microtask execution for the currently running continuation, + * if any. Returns undefiend if no continuation preserved embedder data was + * set. + */ + Local GetContinuationPreservedEmbedderDataV2(); + + /** + * Sets a value that will be stored on continuations and restored while the + * continuation runs. If `data` is empty, the continuation preserved embedder + * data is set to undefined. + */ + void SetContinuationPreservedEmbedderDataV2(Local data); + /** * Get statistics about the heap memory usage. */ diff --git a/deps/v8/include/v8-local-handle.h b/deps/v8/include/v8-local-handle.h index dce757465c25be..b97eae979e7a1b 100644 --- a/deps/v8/include/v8-local-handle.h +++ b/deps/v8/include/v8-local-handle.h @@ -42,6 +42,7 @@ class BasicTracedReference; template class TracedReference; +class ArrayBuffer; class Boolean; class Context; class EscapableHandleScope; @@ -62,6 +63,8 @@ template class Traced; class TypecheckWitness; class Utils; +class Uint32; +class Value; namespace debug { class ConsoleCallArguments; @@ -78,6 +81,25 @@ class SamplingHeapProfiler; namespace api_internal { // Called when ToLocalChecked is called on an empty Local. V8_EXPORT void ToLocalEmpty(); + +#ifdef V8_ENABLE_CHECKS +template +void TypeCheckLocal(V* value) { + // If `T` does not provide a `Cast` method we cannot check anything. + if constexpr (requires { T::Cast(value); }) { + // TODO(419454582): Remove all these exceptions. + if (std::is_same_v && value->IsArgumentsObject()) return; + if (std::is_same_v && value->IsSharedArrayBuffer()) return; + if (std::is_same_v && value->IsNull()) return; + if (std::is_same_v && value->IsString()) return; + if (std::is_same_v && value->IsUndefined()) return; + if (std::is_same_v && value->IsInt32()) return; + if (std::is_same_v && value->IsNumber()) return; + // Execute the actual check (part of the cast). + T::Cast(value); + } +} +#endif } // namespace api_internal /** @@ -164,7 +186,11 @@ class LocalBase : public api_internal::DirectHandleBase { V8_INLINE LocalBase() = default; - V8_INLINE explicit LocalBase(internal::Address ptr) : DirectHandleBase(ptr) {} + V8_INLINE explicit LocalBase(internal::Address ptr) : DirectHandleBase(ptr) { +#ifdef V8_ENABLE_CHECKS + if (!IsEmpty()) api_internal::TypeCheckLocal(value()); +#endif + } template V8_INLINE LocalBase(const LocalBase& other) : DirectHandleBase(other) {} @@ -200,7 +226,11 @@ class LocalBase : public api_internal::IndirectHandleBase { V8_INLINE LocalBase() = default; V8_INLINE explicit LocalBase(internal::Address* location) - : IndirectHandleBase(location) {} + : IndirectHandleBase(location) { +#ifdef V8_ENABLE_CHECKS + if (!IsEmpty()) api_internal::TypeCheckLocal(value()); +#endif + } template V8_INLINE LocalBase(const LocalBase& other) : IndirectHandleBase(other) {} diff --git a/deps/v8/include/v8-maybe.h b/deps/v8/include/v8-maybe.h index c4d17453a279ab..167bb1b15b2c72 100644 --- a/deps/v8/include/v8-maybe.h +++ b/deps/v8/include/v8-maybe.h @@ -32,6 +32,8 @@ V8_EXPORT void FromJustIsNothing(); template class Maybe : public cppgc::internal::ConditionalStackAllocatedBase { public: + constexpr Maybe() = default; + V8_INLINE bool IsNothing() const { return !has_value_; } V8_INLINE bool IsJust() const { return has_value_; } @@ -93,15 +95,12 @@ class Maybe : public cppgc::internal::ConditionalStackAllocatedBase { } private: - Maybe() : has_value_(false) {} explicit Maybe(const T& t) : has_value_(true), value_(t) {} explicit Maybe(T&& t) : has_value_(true), value_(std::move(t)) {} - bool has_value_; + bool has_value_ = false; T value_; - template - friend Maybe Nothing(); template friend Maybe Just(const U& u); template >*> @@ -109,8 +108,8 @@ class Maybe : public cppgc::internal::ConditionalStackAllocatedBase { }; template -inline Maybe Nothing() { - return Maybe(); +inline constexpr Maybe Nothing() { + return {}; } template @@ -130,6 +129,8 @@ inline Maybe Just(T&& t) { template <> class Maybe { public: + constexpr Maybe() = default; + V8_INLINE bool IsNothing() const { return !is_valid_; } V8_INLINE bool IsJust() const { return is_valid_; } @@ -144,13 +145,10 @@ class Maybe { private: struct JustTag {}; - Maybe() : is_valid_(false) {} explicit Maybe(JustTag) : is_valid_(true) {} - bool is_valid_; + bool is_valid_ = false; - template - friend Maybe Nothing(); friend Maybe JustVoid(); }; diff --git a/deps/v8/include/v8-message.h b/deps/v8/include/v8-message.h index b50898530cf95e..b3abdb14d84f5a 100644 --- a/deps/v8/include/v8-message.h +++ b/deps/v8/include/v8-message.h @@ -111,6 +111,9 @@ class V8_EXPORT Message { /** * Return the isolate to which the Message belongs. */ + V8_DEPRECATE_SOON( + "Use Isolate::GetCurrent() instead, which is guaranteed to return the " + "same isolate since https://crrev.com/c/6458560.") Isolate* GetIsolate() const; V8_WARN_UNUSED_RESULT MaybeLocal GetSource( diff --git a/deps/v8/include/v8-object.h b/deps/v8/include/v8-object.h index 3e57ae8efe33f3..e81d734f00ab60 100644 --- a/deps/v8/include/v8-object.h +++ b/deps/v8/include/v8-object.h @@ -795,8 +795,14 @@ class V8_EXPORT Object : public Value { /** * Return the isolate to which the Object belongs to. */ + V8_DEPRECATE_SOON( + "Use Isolate::GetCurrent() instead, which is guaranteed to return the " + "same isolate since https://crrev.com/c/6458560.") Isolate* GetIsolate(); + V8_DEPRECATE_SOON( + "Use Isolate::GetCurrent() instead, which is guaranteed to return the " + "same isolate since https://crrev.com/c/6458560.") V8_INLINE static Isolate* GetIsolate(const TracedReference& handle) { return handle.template value()->GetIsolate(); } @@ -871,8 +877,7 @@ Local Object::GetInternalField(int index) { value = I::DecompressTaggedField(obj, static_cast(value)); #endif - auto isolate = reinterpret_cast( - internal::IsolateFromNeverReadOnlySpaceObject(obj)); + auto* isolate = I::GetCurrentIsolate(); return Local::New(isolate, value); } #endif @@ -913,7 +918,7 @@ void* Object::GetAlignedPointerFromInternalField(int index) { int offset = I::kJSAPIObjectWithEmbedderSlotsHeaderSize + (I::kEmbedderDataSlotSize * index) + I::kEmbedderDataSlotExternalPointerOffset; - Isolate* isolate = I::GetIsolateForSandbox(obj); + Isolate* isolate = I::GetCurrentIsolateForSandbox(); A value = I::ReadExternalPointerField( isolate, obj, offset); diff --git a/deps/v8/include/v8-persistent-handle.h b/deps/v8/include/v8-persistent-handle.h index 6abe29d4ab782f..8369e6aa71233b 100644 --- a/deps/v8/include/v8-persistent-handle.h +++ b/deps/v8/include/v8-persistent-handle.h @@ -431,7 +431,7 @@ internal::Address* PersistentBase::New(Isolate* isolate, T* that) { template template void Persistent::Copy(const Persistent& that) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); this->Reset(); if (that.IsEmpty()) return; this->slot() = api_internal::CopyGlobalReference(that.slot()); @@ -459,7 +459,7 @@ void PersistentBase::Reset() { template template void PersistentBase::Reset(Isolate* isolate, const Local& other) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); Reset(); if (other.IsEmpty()) return; this->slot() = New(isolate, *other); @@ -473,7 +473,7 @@ template template void PersistentBase::Reset(Isolate* isolate, const PersistentBase& other) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); Reset(); if (other.IsEmpty()) return; this->slot() = New(isolate, other.template value()); @@ -539,7 +539,7 @@ Global::Global(Global&& other) : PersistentBase(other.slot()) { template template Global& Global::operator=(Global&& rhs) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (this != &rhs) { this->Reset(); if (!rhs.IsEmpty()) { diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 43ffeb57d708d3..7f678811528970 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -499,12 +499,49 @@ class PageAllocator { kNoAccessWillJitLater }; + /** + * Optional hints for AllocatePages(). + */ + class AllocationHint final { + public: + AllocationHint() = default; + + V8_WARN_UNUSED_RESULT constexpr AllocationHint WithAddress( + void* address) const { + return AllocationHint(address, may_grow_); + } + + V8_WARN_UNUSED_RESULT constexpr AllocationHint WithMayGrow() const { + return AllocationHint(address_, true); + } + + bool MayGrow() const { return may_grow_; } + void* Address() const { return address_; } + + private: + constexpr AllocationHint(void* address, bool may_grow) + : address_(address), may_grow_(may_grow) {} + + void* address_ = nullptr; + bool may_grow_ = false; + }; + /** * Allocates memory in range with the given alignment and permission. */ virtual void* AllocatePages(void* address, size_t length, size_t alignment, Permission permissions) = 0; + /** + * Allocates memory in range with the given alignment and permission. In + * addition to AllocatePages it allows to pass in allocation hints. The + * underlying implementation may not make use of hints. + */ + virtual void* AllocatePages(size_t length, size_t alignment, + Permission permissions, AllocationHint hint) { + return AllocatePages(hint.Address(), length, alignment, permissions); + } + /** * Resizes the previously allocated memory at the given address. Returns true * if the allocation could be resized. Returns false if this operation is @@ -665,14 +702,6 @@ class ThreadIsolatedAllocator { * Return the pkey used to implement the thread isolation if Type == kPkey. */ virtual int Pkey() const { return -1; } - - /** - * Per-thread permissions can be reset on signal handler entry. Even reading - * ThreadIsolated memory will segfault in that case. - * Call this function on signal handler entry to ensure that read permissions - * are restored. - */ - static void SetDefaultPermissionsForSignalHandler(); }; // Opaque type representing a handle to a shared memory region. diff --git a/deps/v8/include/v8-primitive.h b/deps/v8/include/v8-primitive.h index 50b07d9c10a7bb..f87dc1727aea09 100644 --- a/deps/v8/include/v8-primitive.h +++ b/deps/v8/include/v8-primitive.h @@ -635,11 +635,10 @@ class V8_EXPORT String : public Name { bool StringEquals(Local str) const; /** - * Converts an object to a UTF-8-encoded character array. Useful if - * you want to print the object. If conversion to a string fails - * (e.g. due to an exception in the toString() method of the object) - * then the length() method returns 0 and the * operator returns - * NULL. + * Converts an object to a null-terminated UTF-8-encoded character array. + * Useful if you want to print the object. If conversion to a string fails + * (e.g. due to an exception in the toString() method of the object) then the + * length() method returns 0 and the * operator returns NULL. * * WARNING: This will unconditionally copy the contents of the JavaScript * string, and should be avoided in situations where performance is a concern. @@ -647,8 +646,7 @@ class V8_EXPORT String : public Name { */ class V8_EXPORT Utf8Value { public: - Utf8Value(Isolate* isolate, Local obj, - WriteOptions options = REPLACE_INVALID_UTF8); + Utf8Value(Isolate* isolate, Local obj); ~Utf8Value(); char* operator*() { return str_; } const char* operator*() const { return str_; } @@ -994,7 +992,7 @@ String::ExternalStringResource* String::GetExternalStringResource() const { ExternalStringResource* result; if (I::IsExternalTwoByteString(I::GetInstanceType(obj))) { - Isolate* isolate = I::GetIsolateForSandbox(obj); + Isolate* isolate = I::GetCurrentIsolateForSandbox(); A value = I::ReadExternalPointerField( isolate, obj, I::kStringResourceOffset); result = reinterpret_cast(value); @@ -1039,7 +1037,7 @@ String::ExternalStringResourceBase* String::GetExternalStringResourceBase( ExternalStringResourceBase* resource; if (type == I::kExternalOneByteRepresentationTag || type == I::kExternalTwoByteRepresentationTag) { - Isolate* isolate = I::GetIsolateForSandbox(obj); + Isolate* isolate = I::GetCurrentIsolateForSandbox(); A value = I::ReadExternalPointerField( isolate, obj, I::kStringResourceOffset); resource = reinterpret_cast(value); diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 9581cdb2dbe4ee..f7f88ba6c74969 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -71,6 +71,10 @@ class V8_EXPORT CpuProfileNode { /** The 1-based number of the source line where the function originates. */ int line; + /** The 1-based number of the source column where the function originates. + */ + int column; + /** The count of samples associated with the source line. */ unsigned int hit_count; }; diff --git a/deps/v8/include/v8-traced-handle.h b/deps/v8/include/v8-traced-handle.h index 28fe6cf5ae3ad0..3eb8e7835d74e7 100644 --- a/deps/v8/include/v8-traced-handle.h +++ b/deps/v8/include/v8-traced-handle.h @@ -181,7 +181,7 @@ class TracedReference : public BasicTracedReference { */ template TracedReference(Isolate* isolate, Local that) : BasicTracedReference() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (V8_UNLIKELY(that.IsEmpty())) { return; } @@ -202,7 +202,7 @@ class TracedReference : public BasicTracedReference { template TracedReference(Isolate* isolate, Local that, IsDroppable) : BasicTracedReference() { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); if (V8_UNLIKELY(that.IsEmpty())) { return; } @@ -351,7 +351,7 @@ V8_INLINE bool operator!=(const v8::Local& lhs, template template void TracedReference::Reset(Isolate* isolate, const Local& other) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); this->Reset(); if (V8_UNLIKELY(other.IsEmpty())) { return; @@ -366,7 +366,7 @@ template template void TracedReference::Reset(Isolate* isolate, const Local& other, IsDroppable) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); this->Reset(); if (V8_UNLIKELY(other.IsEmpty())) { return; @@ -381,7 +381,7 @@ template template TracedReference& TracedReference::operator=( TracedReference&& rhs) noexcept { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); *this = std::move(rhs.template As()); return *this; } @@ -390,7 +390,7 @@ template template TracedReference& TracedReference::operator=( const TracedReference& rhs) { - static_assert(std::is_base_of::value, "type check"); + static_assert(std::is_base_of_v, "type check"); *this = rhs.template As(); return *this; } diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index b39a02bd40fca4..7829b000cdc649 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -9,9 +9,9 @@ // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. #define V8_MAJOR_VERSION 13 -#define V8_MINOR_VERSION 7 -#define V8_BUILD_NUMBER 152 -#define V8_PATCH_LEVEL 13 +#define V8_MINOR_VERSION 8 +#define V8_BUILD_NUMBER 258 +#define V8_PATCH_LEVEL 14 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index 9581df67fd18c3..3fae9dbf839f3e 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -909,8 +909,6 @@ V8 shared library set USING_V8_SHARED. #define V8_TARGET_ARCH_32_BIT 1 #elif V8_TARGET_ARCH_ARM64 #define V8_TARGET_ARCH_64_BIT 1 -#elif V8_TARGET_ARCH_MIPS -#define V8_TARGET_ARCH_32_BIT 1 #elif V8_TARGET_ARCH_MIPS64 #define V8_TARGET_ARCH_64_BIT 1 #elif V8_TARGET_ARCH_LOONG64 diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index 6f6d3720b79dc6..03b2e9ca3fd47f 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -70,7 +70,6 @@ 'V8 Linux64 - builder (reclient compare)': 'release_x64_reclient', 'V8 Linux64 - official - builder': 'official_x64_on_release_branch', 'V8 Linux64 - debug builder': 'debug_x64', - 'V8 Linux64 - no leaptiering - debug builder': 'debug_x64_no_leaptiering', 'V8 Linux64 - no shared cage - debug builder': 'debug_x64_no_shared_cage', 'V8 Linux64 - custom snapshot - debug builder': 'debug_x64_custom', 'V8 Linux64 - internal snapshot - builder': 'release_x64_internal', @@ -80,6 +79,8 @@ 'V8 Linux64 - shared - builder': 'release_x64_shared_verify_heap', 'V8 Linux64 - verify csa - builder': 'release_x64_verify_csa', 'V8 Linux64 - no wasm - builder': 'release_x64_webassembly_disabled', + 'V8 Linux64 - PKU - debug builder': 'debug_x64_sandbox_hardware_support', + 'V8 Linux64 - PKU - builder': 'release_x64_sandbox_hardware_support', # Windows. 'V8 Win - arm64 - debug builder': 'debug_arm64', 'V8 Win32 - builder': 'release_x86_minimal_symbols', @@ -115,6 +116,7 @@ 'V8 Linux - arm64 - sim - MSAN - builder': 'release_simulate_arm64_msan', # FYI. 'V8 iOS - sim - builder': 'release_x64_ios_simulator', + 'V8 Linux64 - arm64 - ASAN - builder': 'release_arm64_asan', 'V8 Linux64 - arm64 - builder': 'release_arm64', 'V8 Linux64 - arm64 - debug builder': 'debug_arm64', 'V8 Linux64 - arm64 - sim - no pointer compression - builder': @@ -127,6 +129,7 @@ 'V8 Linux64 - debug - single generation - builder': 'debug_x64_single_generation', 'V8 Linux64 - no pointer compression - builder': 'release_x64_no_pointer_compression', 'V8 Linux64 - sticky mark bits - debug builder': 'debug_x64_sticky_mark_bits', + 'V8 Linux64 - undefined double - debug builder': 'debug_x64_undefined_double', 'V8 Linux64 css - debug builder': 'debug_x64_conservative_stack_scanning', 'V8 Linux64 gcc - builder': 'release_x64_gcc', 'V8 Linux64 - jammy - gcc - builder': 'release_x64_gcc', @@ -171,6 +174,7 @@ 'V8 Clusterfuzz Linux ASAN no inline - release builder': 'release_x86_asan_symbolized_verify_heap_turboshaft_csa', 'V8 Clusterfuzz Linux64 ASAN - debug builder': 'debug_x64_asan_turboshaft_csa', + 'V8 Clusterfuzz Linux64 ASAN - undefined double - debug builder': 'debug_x64_asan_undefined_double', 'V8 Clusterfuzz Linux ASAN - debug builder': 'debug_x86_asan_turboshaft_csa', 'V8 Clusterfuzz Linux64 ASAN arm64 - debug builder': 'debug_simulate_arm64_asan_turboshaft_csa', @@ -265,6 +269,7 @@ 'v8_linux_gc_stress_compile_dbg': 'debug_x86_trybot', 'v8_linux_shared_compile_rel': 'release_x86_shared_verify_heap', 'v8_linux_vtunejit': 'debug_x86_vtunejit', + 'v8_linux64_arm64_asan_compile_rel': 'release_arm64_asan', 'v8_linux64_arm64_compile_dbg': 'debug_arm64_trybot', 'v8_linux64_arm64_compile_rel': 'release_arm64_trybot', 'v8_linux64_native_arm64_no_pointer_compression_compile_rel': 'release_arm64_no_pointer_compression_trybot', @@ -272,9 +277,9 @@ 'release_simulate_arm64_no_pointer_compression', 'v8_linux64_asan_centipede_compile_dbg': 'debug_x64_asan_centipede', 'v8_linux64_asan_centipede_compile_rel': 'release_x64_asan_centipede', + 'v8_linux64_asan_undefined_double_compile_dbg': 'debug_x64_asan_undefined_double', 'v8_linux64_cppgc_non_default_compile_dbg': 'debug_x64_non_default_cppgc', 'v8_linux64_compile_dbg': 'debug_x64_trybot', - 'v8_linux64_no_leaptiering_compile_dbg': 'debug_x64_no_leaptiering', 'v8_linux64_no_shared_cage_compile_dbg': 'debug_x64_no_shared_cage', 'v8_linux64_coverage_dbg': 'debug_x64_coverage', 'v8_linux64_coverage_rel': 'release_x64_coverage', @@ -299,8 +304,8 @@ 'v8_linux64_no_sandbox_compile_rel': 'release_x64_no_sandbox', 'v8_linux64_official_compile_rel': 'official_x64_on_release_branch', 'v8_linux64_predictable_compile_rel': 'release_x64_predictable', - 'v8_linux64_pku_compile_dbg': 'debug_x64', - 'v8_linux64_pku_compile_rel': 'release_x64', + 'v8_linux64_pku_compile_dbg': 'debug_x64_sandbox_hardware_support', + 'v8_linux64_pku_compile_rel': 'release_x64_sandbox_hardware_support', 'v8_linux64_shared_compile_rel': 'release_x64_shared_verify_heap', 'v8_linux64_single_generation_compile_dbg': 'debug_x64_single_generation', 'v8_linux64_no_wasm_compile_rel': 'release_x64_webassembly_disabled', @@ -324,6 +329,7 @@ 'v8_linux64_tsan_isolates_compile_rel': 'release_x64_tsan_minimal_symbols', 'v8_linux64_ubsan_compile_rel': 'release_x64_ubsan_minimal_symbols', + 'v8_linux64_undefined_double_compile_dbg': 'debug_x64_undefined_double', 'v8_linux64_verify_builtins_rel': 'release_x64_verify_builtins', 'v8_linux64_verify_deterministic_rel': 'release_x64_verify_deterministic', 'v8_linux_torque_compare': 'torque_compare', @@ -535,6 +541,8 @@ 'release_bot', 'arm', 'hard_float'], 'release_arm64': [ 'release_bot', 'arm64'], + 'release_arm64_asan': [ + 'release_bot', 'arm64', 'asan'], 'release_arm64_no_pointer_compression': [ 'release_bot', 'arm64', 'v8_disable_pointer_compression'], 'release_arm64_trybot': [ @@ -603,7 +611,7 @@ 'release_bot', 'x64', 'asan', 'lsan', 'symbolized', 'v8_verify_heap', 'v8_enable_turboshaft_csa'], 'release_x64_cet_shadow_stack': [ - 'release_bot', 'x64', 'cet_shadow_stack'], + 'release_bot', 'x64', 'cet_shadow_stack', 'use_siso'], 'release_x64_cfi': [ 'release_bot', 'x64', 'cfi'], 'release_x64_cfi_clusterfuzz_turboshaft_csa': [ @@ -643,6 +651,8 @@ 'release_bot_reclient', 'x64'], 'release_x64_no_sandbox': [ 'release_bot', 'x64', 'no_sandbox'], + 'release_x64_sandbox_hardware_support': [ + 'release_bot', 'x64', 'sandbox_hardware_support'], 'release_x64_trybot': [ 'release_trybot', 'x64'], 'release_x64_test_features_gcmole_trybot': [ @@ -695,6 +705,8 @@ 'debug_x64_asan_no_lsan_static_turboshaft_csa': [ 'debug', 'static', 'reclient', 'v8_enable_slow_dchecks', 'v8_optimized_debug', 'x64', 'asan', 'v8_enable_turboshaft_csa'], + 'debug_x64_asan_undefined_double': [ + 'debug_bot', 'x64', 'asan', 'v8_enable_undefined_double'], 'debug_x64_conservative_stack_scanning': [ 'debug_bot', 'x64', 'conservative_stack_scanning'], 'debug_x64_coverage': [ @@ -709,8 +721,6 @@ 'debug_bot_no_reclient', 'x64', 'gcc', 'lld', 'no_custom_libcxx'], 'debug_x64_header_includes': [ 'debug_bot', 'x64', 'v8_check_header_includes'], - 'debug_x64_no_leaptiering': [ - 'debug_bot', 'x64', 'v8_disable_leaptiering'], 'debug_x64_no_shared_cage': [ 'debug_bot', 'x64', 'v8_disable_pointer_compression_shared_cage'], 'debug_x64_minimal_symbols': [ @@ -721,6 +731,8 @@ 'debug_bot', 'x64', 'perfetto'], 'debug_x64_no_sandbox': [ 'debug_bot', 'x64', 'no_sandbox'], + 'debug_x64_sandbox_hardware_support': [ + 'debug_bot', 'x64', 'sandbox_hardware_support'], 'debug_x64_single_generation': [ 'debug_bot', 'x64', 'v8_enable_single_generation'], 'debug_x64_sticky_mark_bits': [ @@ -736,6 +748,8 @@ 'debug_x64_tsan_minimal_symbols': [ 'debug_bot_no_slow_dchecks', 'minimal_symbols', 'x64', 'dcheck_always_on', 'tsan', 'v8_disable_verify_heap', 'v8_fast_mksnapshot'], + 'debug_x64_undefined_double': [ + 'debug_bot', 'x64', 'v8_enable_undefined_double'], 'full_debug_x64': [ 'debug_bot', 'x64', 'v8_full_debug'], @@ -960,6 +974,10 @@ 'gn_args': 'v8_enable_sandbox=false', }, + 'sandbox_hardware_support': { + 'gn_args': 'v8_enable_sandbox_hardware_support=true', + }, + 'non_default_cppgc': { 'gn_args': 'cppgc_enable_object_names=true cppgc_enable_young_generation=true', }, @@ -1071,6 +1089,10 @@ 'gn_args': 'use_centipede=true optimize_for_fuzzing = true', }, + 'use_siso': { + 'gn_args': 'use_siso=true', + }, + 'v8_check_header_includes': { 'gn_args': 'v8_check_header_includes=true', }, @@ -1084,10 +1106,6 @@ 'gn_args': 'v8_control_flow_integrity=true', }, - 'v8_disable_leaptiering': { - 'gn_args': 'v8_enable_leaptiering=false v8_enable_sandbox=false', - }, - 'v8_disable_runtime_call_stats': { 'gn_args': 'v8_enable_runtime_call_stats=false', }, @@ -1158,6 +1176,10 @@ 'gn_args': 'v8_enable_turboshaft_csa=true', }, + 'v8_enable_undefined_double': { + 'gn_args': 'v8_enable_experimental_undefined_double=true', + }, + 'v8_enable_verify_predictable': { 'gn_args': 'v8_enable_verify_predictable=true', }, diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl index 787c43b1d5f95b..b0fb6fac43c5ef 100644 --- a/deps/v8/infra/testing/builders.pyl +++ b/deps/v8/infra/testing/builders.pyl @@ -329,11 +329,21 @@ }, ############################################################################## # Linux64 + 'v8_linux64_arm64_asan_rel': { + 'swarming_dimensions': { + 'os': 'Linux', + 'cpu': 'arm64', + 'pool': 'v8.tests', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default'}, + ], + }, 'v8_linux64_arm64_dbg': { 'swarming_dimensions': { 'os': 'Linux', 'cpu': 'arm64', - 'pool': 'chromium.tests', + 'pool': 'v8.tests', }, 'tests': [ {'name': 'v8testing', 'variant': 'default'}, @@ -343,7 +353,7 @@ 'swarming_dimensions': { 'os': 'Linux', 'cpu': 'arm64', - 'pool': 'chromium.tests', + 'pool': 'v8.tests', }, 'tests': [ {'name': 'v8testing', 'variant': 'default'}, @@ -425,7 +435,7 @@ {'name': 'v8testing', 'shards': 5}, {'name': 'v8testing', 'variant': 'extra', 'shards': 5}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, @@ -539,7 +549,7 @@ }, { 'name': 'mjsunit', - 'variant': 'conservative_pinning', + 'variant': 'conservative_stack_scanning', 'test_args': ['--gc-stress'], 'shards': 2 }, @@ -627,7 +637,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -639,14 +649,6 @@ {'name': 'v8testing', 'shards': 3}, ], }, - 'v8_linux64_no_leaptiering_dbg': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-22.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 5}, - ], - }, 'v8_linux64_no_shared_cage_dbg': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -742,7 +744,7 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'slow_path'}, @@ -809,7 +811,7 @@ {'name': 'v8testing', 'variant': 'slow_path', 'shards': 2}, {'name': 'v8testing', 'variant': 'stress_concurrent_allocation', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms', 'shards': 2}, - {'name': 'v8testing', 'variant': 'conservative_pinning', 'shards': 2}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning', 'shards': 2}, {'name': 'v8testing', 'variant': 'precise_pinning', 'shards': 2}, ], }, @@ -853,6 +855,15 @@ {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, ], }, + 'v8_linux64_undefined_double_dbg': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + 'cpu': 'x86-64', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 3}, + ], + }, 'v8_linux64_verify_csa_rel': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -1001,7 +1012,7 @@ {'name': 'v8testing', 'shards': 4}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1026,7 +1037,7 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1041,7 +1052,7 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1067,7 +1078,7 @@ {'name': 'v8testing', 'shards': 6}, {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1100,7 +1111,7 @@ {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1121,7 +1132,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1142,7 +1153,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1163,7 +1174,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -1466,7 +1477,7 @@ {'name': 'v8testing', 'variant': 'assert_types'}, {'name': 'v8testing', 'variant': 'extra'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'stress_instruction_scheduling'}, @@ -1574,7 +1585,7 @@ {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 4}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, {'name': 'v8testing', 'variant': 'no_lfa'}, {'name': 'v8testing', 'variant': 'slow_path'}, @@ -1780,7 +1791,7 @@ }, { 'name': 'mjsunit', - 'variant': 'conservative_pinning', + 'variant': 'conservative_stack_scanning', 'test_args': ['--gc-stress'], 'shards': 2 }, @@ -1808,14 +1819,6 @@ {'name': 'v8testing'}, ], }, - 'V8 Linux64 - no leaptiering - debug': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-22.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 5}, - ], - }, 'V8 Linux64 - no shared cage - debug': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -1883,6 +1886,15 @@ {'name': 'v8testing', 'shards': 3}, ], }, + 'V8 Linux64 - undefined double - debug': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-22.04', + 'cpu': 'x86-64', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 3}, + ], + }, 'V8 Linux64 - verify csa': { 'swarming_dimensions' : { 'os': 'Ubuntu-22.04', @@ -1946,7 +1958,7 @@ {'name': 'v8testing', 'variant': 'slow_path', 'shards': 2}, {'name': 'v8testing', 'variant': 'stress_concurrent_allocation', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms', 'shards': 2}, - {'name': 'v8testing', 'variant': 'conservative_pinning', 'shards': 2}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning', 'shards': 2}, {'name': 'v8testing', 'variant': 'precise_pinning', 'shards': 2}, ], }, @@ -2034,7 +2046,7 @@ {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2049,7 +2061,7 @@ {'name': 'v8testing', 'shards': 6}, {'name': 'v8testing', 'variant': 'extra', 'shards': 6}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2089,7 +2101,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2111,7 +2123,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2133,7 +2145,7 @@ {'name': 'v8testing', 'variant': 'stress_maglev_future'}, {'name': 'v8testing', 'variant': 'turbolev'}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2188,7 +2200,7 @@ {'name': 'v8testing', 'shards': 2}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2212,7 +2224,7 @@ {'name': 'v8testing', 'shards': 4}, {'name': 'v8testing', 'variant': 'extra', 'shards': 3}, {'name': 'v8testing', 'variant': 'minor_ms'}, - {'name': 'v8testing', 'variant': 'conservative_pinning'}, + {'name': 'v8testing', 'variant': 'conservative_stack_scanning'}, {'name': 'v8testing', 'variant': 'precise_pinning'}, ], }, @@ -2530,11 +2542,21 @@ {'name': 'v8testing', 'shards': 3}, ], }, + 'V8 Linux64 - arm64 - ASAN': { + 'swarming_dimensions': { + 'os': 'Linux', + 'cpu': 'arm64', + 'pool': 'v8.tests', + }, + 'tests': [ + {'name': 'v8testing', 'variant': 'default'}, + ], + }, 'V8 Linux64 - arm64': { 'swarming_dimensions': { 'os': 'Linux', 'cpu': 'arm64', - 'pool': 'chromium.tests', + 'pool': 'v8.tests', }, 'tests': [ {'name': 'v8testing', 'variant': 'default'}, @@ -2544,7 +2566,7 @@ 'swarming_dimensions': { 'os': 'Linux', 'cpu': 'arm64', - 'pool': 'chromium.tests', + 'pool': 'v8.tests', }, 'tests': [ {'name': 'v8testing', 'variant': 'default'}, @@ -2598,6 +2620,15 @@ }, 'tests': [ {'name': 'd8testing_random_gc', 'shards': 2}, + { + 'name': 'numfuzz', + 'suffix': 'allocation', + 'test_args': [ + '--total-timeout-sec=2100', + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] + }, { 'name': 'numfuzz', 'suffix': 'marking', @@ -2628,6 +2659,7 @@ 'suffix': 'combined', 'test_args': [ '--total-timeout-sec=2100', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2653,41 +2685,51 @@ }, 'swarming_task_attrs': { 'expiration': 13800, - 'hard_timeout': 4200, + 'hard_timeout': 4800, 'priority': 35, }, 'tests': [ {'name': 'd8testing_random_gc', 'shards': 2}, + { + 'name': 'numfuzz', + 'suffix': 'allocation', + 'test_args': [ + '--total-timeout-sec=4200', + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] + }, { 'name': 'numfuzz', 'suffix': 'marking', - 'test_args': ['--total-timeout-sec=2100', '--stress-marking=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-marking=1'] }, { 'name': 'numfuzz', 'suffix': 'delay', - 'test_args': ['--total-timeout-sec=2100', '--stress-delay-tasks=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-delay-tasks=1'] }, { 'name': 'numfuzz', 'suffix': 'interrupt', - 'test_args': ['--total-timeout-sec=2100', '--stress-interrupt-budget=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-interrupt-budget=1'] }, { 'name': 'numfuzz', 'suffix': 'threads', - 'test_args': ['--total-timeout-sec=2100', '--stress-thread-pool-size=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-thread-pool-size=1'] }, { 'name': 'numfuzz', 'suffix': 'stack', - 'test_args': ['--total-timeout-sec=2100', '--stress-stack-size=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-stack-size=1'] }, { 'name': 'numfuzz', 'suffix': 'combined', 'test_args': [ - '--total-timeout-sec=2100', + '--total-timeout-sec=4200', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2703,7 +2745,7 @@ { 'name': 'numfuzz', 'suffix': 'scavenge', - 'test_args': ['--total-timeout-sec=2100', '--stress-scavenge=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-scavenge=1'] }, ], }, @@ -2713,42 +2755,52 @@ }, 'swarming_task_attrs': { 'expiration': 13800, - 'hard_timeout': 4200, + 'hard_timeout': 4800, 'priority': 35, }, 'tests': [ {'name': 'd8testing_random_gc'}, + { + 'name': 'numfuzz', + 'suffix': 'allocation', + 'test_args': [ + '--total-timeout-sec=4200', + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] + }, { 'name': 'numfuzz', 'suffix': 'marking', - 'test_args': ['--total-timeout-sec=2100', '--stress-marking=1'], + 'test_args': ['--total-timeout-sec=4200', '--stress-marking=1'], 'shards': 2 }, { 'name': 'numfuzz', 'suffix': 'delay', - 'test_args': ['--total-timeout-sec=2100', '--stress-delay-tasks=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-delay-tasks=1'] }, { 'name': 'numfuzz', 'suffix': 'interrupt', - 'test_args': ['--total-timeout-sec=2100', '--stress-interrupt-budget=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-interrupt-budget=1'] }, { 'name': 'numfuzz', 'suffix': 'threads', - 'test_args': ['--total-timeout-sec=2100', '--stress-thread-pool-size=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-thread-pool-size=1'] }, { 'name': 'numfuzz', 'suffix': 'stack', - 'test_args': ['--total-timeout-sec=2100', '--stress-stack-size=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-stack-size=1'] }, { 'name': 'numfuzz', 'suffix': 'combined', 'test_args': [ - '--total-timeout-sec=2100', + '--total-timeout-sec=4200', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2764,12 +2816,12 @@ { 'name': 'numfuzz', 'suffix': 'scavenge', - 'test_args': ['--total-timeout-sec=2100', '--stress-scavenge=1'] + 'test_args': ['--total-timeout-sec=4200', '--stress-scavenge=1'] }, { 'name': 'numfuzz', 'suffix': 'deopt', - 'test_args': ['--total-timeout-sec=2100', '--stress-deopt=1'], + 'test_args': ['--total-timeout-sec=4200', '--stress-deopt=1'], 'shards': 2 }, ], @@ -2796,6 +2848,15 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ + { + 'name': 'numfuzz', + 'suffix': 'allocation', + 'test_args': [ + '--total-timeout-sec=900', + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] + }, { 'name': 'numfuzz', 'suffix': 'marking', @@ -2826,6 +2887,7 @@ 'suffix': 'combined', 'test_args': [ '--total-timeout-sec=900', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2849,6 +2911,15 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ + { + 'name': 'numfuzz', + 'suffix': 'allocation', + 'test_args': [ + '--total-timeout-sec=900', + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] + }, { 'name': 'numfuzz', 'suffix': 'marking', @@ -2879,6 +2950,7 @@ 'suffix': 'combined', 'test_args': [ '--total-timeout-sec=900', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', @@ -2902,6 +2974,15 @@ 'os': 'Ubuntu-22.04', }, 'tests': [ + { + 'name': 'numfuzz', + 'suffix': 'allocation', + 'test_args': [ + '--total-timeout-sec=900', + '--allocation-offset=1', + '--extra-flags=--gc-interval=500', + ] + }, { 'name': 'numfuzz', 'suffix': 'marking', @@ -2932,6 +3013,7 @@ 'suffix': 'combined', 'test_args': [ '--total-timeout-sec=900', + '--allocation-offset=2', '--stress-delay-tasks=4', '--stress-deopt=2', '--stress-compaction=2', diff --git a/deps/v8/infra/whitespace.txt b/deps/v8/infra/whitespace.txt index 7692b0d582ff77..15ba92a9a75e82 100644 --- a/deps/v8/infra/whitespace.txt +++ b/deps/v8/infra/whitespace.txt @@ -1 +1 @@ -Some infra-owned whitespace to test the cherry-picker. \ No newline at end of file +Some infra-owned whitespace to test the cherry-picker. diff --git a/deps/v8/src/DEPS b/deps/v8/src/DEPS index b4ad130ef2e487..085b7622777477 100644 --- a/deps/v8/src/DEPS +++ b/deps/v8/src/DEPS @@ -26,6 +26,8 @@ include_rules = [ "+src/heap/factory-inl.h", # TODO(v8:10496): Don't expose so much (through transitive includes) outside # of heap/. + "+src/heap/gc-callbacks.h", + "+src/heap/gc-callbacks-inl.h", "+src/heap/gc-tracer.h", "+src/heap/gc-tracer-inl.h", "+src/heap/heap.h", diff --git a/deps/v8/src/api/api-inl.h b/deps/v8/src/api/api-inl.h index 965ded69be67b7..8fce7e0a3790f3 100644 --- a/deps/v8/src/api/api-inl.h +++ b/deps/v8/src/api/api-inl.h @@ -11,52 +11,49 @@ #include "include/v8-fast-api-calls.h" #include "src/common/assert-scope.h" #include "src/execution/microtask-queue.h" +#include "src/execution/vm-state-inl.h" #include "src/flags/flags.h" #include "src/handles/handles-inl.h" #include "src/heap/heap-inl.h" +#include "src/logging/runtime-call-stats.h" #include "src/objects/foreign-inl.h" #include "src/objects/objects-inl.h" namespace v8 { template -inline T ToCData(i::Isolate* isolate, - v8::internal::Tagged obj) { - static_assert(sizeof(T) == sizeof(v8::internal::Address)); - if (obj == v8::internal::Smi::zero()) return nullptr; +inline T ToCData(i::Isolate* isolate, i::Tagged obj) { + static_assert(sizeof(T) == sizeof(i::Address)); + if (obj == i::Smi::zero()) return nullptr; return reinterpret_cast( - v8::internal::Cast(obj)->foreign_address( - isolate)); + i::Cast(obj)->foreign_address(isolate)); } template -inline v8::internal::Address ToCData( - i::Isolate* isolate, v8::internal::Tagged obj) { - if (obj == v8::internal::Smi::zero()) return v8::internal::kNullAddress; - return v8::internal::Cast(obj)->foreign_address( - isolate); +inline i::Address ToCData(i::Isolate* isolate, i::Tagged obj) { + if (obj == i::Smi::zero()) return i::kNullAddress; + return i::Cast(obj)->foreign_address(isolate); } template -inline v8::internal::DirectHandle> FromCData( - v8::internal::Isolate* isolate, T obj) { - static_assert(sizeof(T) == sizeof(v8::internal::Address)); - if (obj == nullptr) return direct_handle(v8::internal::Smi::zero(), isolate); - return isolate->factory()->NewForeign( - reinterpret_cast(obj)); +inline i::DirectHandle> FromCData( + i::Isolate* isolate, T obj) { + static_assert(sizeof(T) == sizeof(i::Address)); + if (obj == nullptr) return direct_handle(i::Smi::zero(), isolate); + return isolate->factory()->NewForeign(reinterpret_cast(obj)); } template -inline v8::internal::DirectHandle> FromCData( - v8::internal::Isolate* isolate, v8::internal::Address obj) { - if (obj == v8::internal::kNullAddress) { - return direct_handle(v8::internal::Smi::zero(), isolate); +inline i::DirectHandle> FromCData( + i::Isolate* isolate, i::Address obj) { + if (obj == i::kNullAddress) { + return direct_handle(i::Smi::zero(), isolate); } return isolate->factory()->NewForeign(obj); } template -inline Local Utils::Convert(v8::internal::DirectHandle obj) { +inline Local Utils::Convert(i::DirectHandle obj) { DCHECK(obj.is_null() || IsSmi(*obj) || !IsTheHole(*obj)); #ifdef V8_ENABLE_DIRECT_HANDLE if (obj.is_null()) return Local(); @@ -70,66 +67,54 @@ inline Local Utils::Convert(v8::internal::DirectHandle obj) { // Implementations of ToLocal -#define MAKE_TO_LOCAL(Name) \ - template