diff --git a/common.gypi b/common.gypi index 9fcee7f066e202..42a76de6ca3562 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,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.7', + 'v8_embedder_string': '-node.4', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/.ycm_extra_conf.py b/deps/v8/.ycm_extra_conf.py index 6d79c46245eb4e..793beda7955990 100644 --- a/deps/v8/.ycm_extra_conf.py +++ b/deps/v8/.ycm_extra_conf.py @@ -42,7 +42,6 @@ # Flags from YCM's default config. flags = [ '-DUSE_CLANG_COMPLETER', -'-std=gnu++14', '-x', 'c++', ] @@ -143,25 +142,27 @@ def GetClangCommandFromNinjaForFilename(v8_root, filename): # Parse flags that are important for YCM's purposes. for flag in clang_line.split(' '): if flag.startswith('-I'): - # Relative paths need to be resolved, because they're relative to the - # output dir, not the source. - if flag[2] == '/': - v8_flags.append(flag) - else: - abs_path = os.path.normpath(os.path.join(out_dir, flag[2:])) - v8_flags.append('-I' + abs_path) - elif flag.startswith('-std'): + v8_flags.append(MakeIncludePathAbsolute(flag, "-I", out_dir)) + elif flag.startswith('-isystem'): + v8_flags.append(MakeIncludePathAbsolute(flag, "-isystem", out_dir)) + elif flag.startswith('-std') or flag.startswith( + '-pthread') or flag.startswith('-no'): v8_flags.append(flag) - elif flag.startswith('-') and flag[1] in 'DWFfmO': - if flag == '-Wno-deprecated-register' or flag == '-Wno-header-guard': - # These flags causes libclang (3.3) to crash. Remove it until things - # are fixed. - continue + elif flag.startswith('-') and flag[1] in 'DWFfmgOX': v8_flags.append(flag) - return v8_flags +def MakeIncludePathAbsolute(flag, prefix, out_dir): + # Relative paths need to be resolved, because they're relative to the + # output dir, not the source. + if flag[len(prefix)] == '/': + return flag + else: + abs_path = os.path.normpath(os.path.join(out_dir, flag[len(prefix):])) + return prefix + abs_path + + def FlagsForFile(filename): """This is the main entry point for YCM. Its interface is fixed. @@ -180,3 +181,9 @@ def FlagsForFile(filename): 'flags': final_flags, 'do_cache': True } + + +def Settings(**kwargs): + if kwargs['language'] == 'cfamily': + return FlagsForFile(kwargs['filename']) + return {} diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index af37f8db25121e..b8f3d78fcb4851 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -114,6 +114,7 @@ Fedor Indutny Felix Geisendörfer Feng Yu Filipe David Manana +Frank Lemanschik Franziska Hinkelmann Gao Sheng Geoffrey Garside @@ -152,6 +153,7 @@ Jiaxun Yang Joel Stanley Johan Bergström Jonathan Liu +Juan Arboleda Julien Brianceau JunHo Seo Junha Park @@ -283,3 +285,4 @@ Zheng Liu Zhongping Wang 柳荣一 Yang Xiang +Kotaro Ohsugi diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel index f216a1811da852..c9c15377dfc7a1 100644 --- a/deps/v8/BUILD.bazel +++ b/deps/v8/BUILD.bazel @@ -39,6 +39,7 @@ load(":bazel/v8-non-pointer-compression.bzl", "v8_binary_non_pointer_compression # v8_enable_trace_baseline_exec # v8_enable_trace_feedback_updates # v8_enable_atomic_object_field_writes +# v8_enable_conservative_stack_scanning # v8_enable_concurrent_marking # v8_enable_ignition_dispatch_counting # v8_enable_builtins_profiling @@ -1381,6 +1382,8 @@ filegroup( "src/handles/global-handles-inl.h", "src/handles/global-handles.cc", "src/handles/global-handles.h", + "src/handles/traced-handles.cc", + "src/handles/traced-handles.h", "src/handles/handles-inl.h", "src/handles/handles.cc", "src/handles/handles.h", @@ -1426,6 +1429,8 @@ filegroup( "src/heap/cppgc-js/cpp-marking-state-inl.h", "src/heap/cppgc-js/cpp-snapshot.cc", "src/heap/cppgc-js/cpp-snapshot.h", + "src/heap/cppgc-js/cross-heap-remembered-set.cc", + "src/heap/cppgc-js/cross-heap-remembered-set.h", "src/heap/cppgc-js/unified-heap-marking-state.cc", "src/heap/cppgc-js/unified-heap-marking-state.h", "src/heap/cppgc-js/unified-heap-marking-state-inl.h", @@ -1456,8 +1461,6 @@ filegroup( "src/heap/gc-tracer.cc", "src/heap/gc-tracer-inl.h", "src/heap/gc-tracer.h", - "src/heap/global-handle-marking-visitor.cc", - "src/heap/global-handle-marking-visitor.h", "src/heap/heap-allocator-inl.h", "src/heap/heap-allocator.cc", "src/heap/heap-allocator.h", @@ -1564,6 +1567,8 @@ filegroup( "src/heap/stress-scavenge-observer.h", "src/heap/sweeper.cc", "src/heap/sweeper.h", + "src/heap/traced-handles-marking-visitor.cc", + "src/heap/traced-handles-marking-visitor.h", "src/heap/weak-object-worklists.cc", "src/heap/weak-object-worklists.h", "src/ic/call-optimization.cc", @@ -1963,6 +1968,7 @@ filegroup( "src/profiler/heap-snapshot-generator-inl.h", "src/profiler/heap-snapshot-generator.cc", "src/profiler/heap-snapshot-generator.h", + "src/profiler/output-stream-writer.h", "src/profiler/profile-generator-inl.h", "src/profiler/profile-generator.cc", "src/profiler/profile-generator.h", @@ -2664,6 +2670,8 @@ filegroup( "src/compiler/all-nodes.h", "src/compiler/allocation-builder.h", "src/compiler/allocation-builder-inl.h", + "src/compiler/backend/bitcast-elider.cc", + "src/compiler/backend/bitcast-elider.h", "src/compiler/backend/code-generator.cc", "src/compiler/backend/code-generator.h", "src/compiler/backend/code-generator-impl.h", @@ -2877,6 +2885,7 @@ filegroup( "src/compiler/store-store-elimination.cc", "src/compiler/store-store-elimination.h", "src/compiler/turboshaft/assembler.h", + "src/compiler/turboshaft/branch-elimination-reducer.h", "src/compiler/turboshaft/decompression-optimization.cc", "src/compiler/turboshaft/decompression-optimization.h", "src/compiler/turboshaft/deopt-data.h", @@ -2885,9 +2894,11 @@ filegroup( "src/compiler/turboshaft/graph-builder.h", "src/compiler/turboshaft/graph.cc", "src/compiler/turboshaft/graph.h", + "src/compiler/turboshaft/index.h", "src/compiler/turboshaft/graph-visualizer.cc", "src/compiler/turboshaft/graph-visualizer.h", - "src/compiler/turboshaft/machine-optimization-assembler.h", + "src/compiler/turboshaft/layered-hash-map.h", + "src/compiler/turboshaft/machine-optimization-reducer.h", "src/compiler/turboshaft/operations.cc", "src/compiler/turboshaft/operations.h", "src/compiler/turboshaft/operation-matching.h", @@ -2897,12 +2908,15 @@ filegroup( "src/compiler/turboshaft/recreate-schedule.h", "src/compiler/turboshaft/representations.cc", "src/compiler/turboshaft/representations.h", + "src/compiler/turboshaft/select-lowering-reducer.h", "src/compiler/turboshaft/sidetable.h", "src/compiler/turboshaft/simplify-tf-loops.cc", "src/compiler/turboshaft/simplify-tf-loops.h", + "src/compiler/turboshaft/snapshot-table.h", "src/compiler/turboshaft/utils.cc", "src/compiler/turboshaft/utils.h", - "src/compiler/turboshaft/value-numbering-assembler.h", + "src/compiler/turboshaft/value-numbering-reducer.h", + "src/compiler/turboshaft/variable-reducer.h", "src/compiler/type-cache.cc", "src/compiler/type-cache.h", "src/compiler/type-narrowing-reducer.cc", @@ -3152,16 +3166,16 @@ filegroup( # Note these cannot be v8_target_is_* selects because these contain # inline assembly that runs inside the executable. Since these are # linked directly into mksnapshot, they must use the actual target cpu. - "@v8//bazel/config:is_inline_asm_ia32": ["src/heap/base/asm/ia32/push_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_x64": ["src/heap/base/asm/x64/push_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_arm": ["src/heap/base/asm/arm/push_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_arm64": ["src/heap/base/asm/arm64/push_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_s390x": ["src/heap/base/asm/s390/push_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_riscv64": ["src/heap/base/asm/riscv64/push_registers_asm.cc"], - "@v8//bazel/config:is_inline_asm_ppc64le": ["src/heap/base/asm/ppc/push_registers_asm.cc"], - "@v8//bazel/config:is_msvc_asm_ia32": ["src/heap/base/asm/ia32/push_registers_masm.asm"], - "@v8//bazel/config:is_msvc_asm_x64": ["src/heap/base/asm/x64/push_registers_masm.asm"], - "@v8//bazel/config:is_msvc_asm_arm64": ["src/heap/base/asm/arm64/push_registers_masm.S"], + "@v8//bazel/config:is_inline_asm_ia32": ["src/heap/base/asm/ia32/save_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_x64": ["src/heap/base/asm/x64/save_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_arm": ["src/heap/base/asm/arm/save_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_arm64": ["src/heap/base/asm/arm64/save_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_s390x": ["src/heap/base/asm/s390/save_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_riscv64": ["src/heap/base/asm/riscv64/save_registers_asm.cc"], + "@v8//bazel/config:is_inline_asm_ppc64le": ["src/heap/base/asm/ppc/save_registers_asm.cc"], + "@v8//bazel/config:is_msvc_asm_ia32": ["src/heap/base/asm/ia32/save_registers_masm.asm"], + "@v8//bazel/config:is_msvc_asm_x64": ["src/heap/base/asm/x64/save_registers_masm.asm"], + "@v8//bazel/config:is_msvc_asm_arm64": ["src/heap/base/asm/arm64/save_registers_masm.S"], }), ) @@ -3241,6 +3255,8 @@ filegroup( "src/inspector/v8-debugger.h", "src/inspector/v8-debugger-agent-impl.cc", "src/inspector/v8-debugger-agent-impl.h", + "src/inspector/v8-debugger-barrier.cc", + "src/inspector/v8-debugger-barrier.h", "src/inspector/v8-debugger-id.cc", "src/inspector/v8-debugger-id.h", "src/inspector/v8-debugger-script.cc", @@ -3541,12 +3557,14 @@ v8_mksnapshot( cc_library( name = "icu/generated_torque_headers", hdrs = [":icu/generated_torque_files"], + copts = ["-Wno-implicit-fallthrough"], strip_include_prefix = "icu", ) cc_library( name = "noicu/generated_torque_headers", hdrs = [":noicu/generated_torque_files"], + copts = ["-Wno-implicit-fallthrough"], strip_include_prefix = "noicu", ) @@ -3556,6 +3574,7 @@ v8_library( ":v8_libbase_files", ":v8_shared_internal_headers", ], + copts = ["-Wno-implicit-fallthrough"], ) cc_library( @@ -3564,6 +3583,7 @@ cc_library( "src/torque/kythe-data.h", "src/torque/torque-compiler.h", ], + copts = ["-Wno-implicit-fallthrough"], include_prefix = "third_party/v8", includes = ["."], ) @@ -3573,7 +3593,7 @@ cc_library( srcs = [ ":torque_base_files", ], - copts = select({ + copts = ["-Wno-implicit-fallthrough"] + select({ "@v8//bazel/config:is_posix": ["-fexceptions"], "//conditions:default": [], }), @@ -3590,6 +3610,7 @@ v8_library( ":v8_base_without_compiler_files", ":v8_common_libshared_files", ], + copts = ["-Wno-implicit-fallthrough"], icu_deps = [ ":icu/generated_torque_headers", "//external:icu", @@ -3615,6 +3636,7 @@ v8_library( name = "v8", srcs = [":v8_inspector_files"], hdrs = [":public_header_files"], + copts = ["-Wno-implicit-fallthrough"], icu_deps = [":icu/v8_libshared"], icu_srcs = [":icu/snapshot_files"], noicu_deps = [":noicu/v8_libshared"], @@ -3627,6 +3649,7 @@ v8_library( name = "wee8", srcs = [":wee8_files"], hdrs = [":public_wasm_c_api_header_files"], + copts = ["-Wno-implicit-fallthrough"], strip_include_prefix = "third_party", visibility = ["//visibility:public"], deps = [":noicu/v8"], @@ -3656,6 +3679,7 @@ v8_binary( "src/interpreter/bytecodes.cc", "src/interpreter/bytecodes.h", ], + copts = ["-Wno-implicit-fallthrough"], deps = ["v8_libbase"], ) @@ -3667,6 +3691,7 @@ v8_binary( ":v8_libbase_files", ":v8_shared_internal_headers", ], + copts = ["-Wno-implicit-fallthrough"], defines = [ "V8_INTL_SUPPORT", "ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC", @@ -3685,7 +3710,7 @@ v8_binary( "src/torque/torque.cc", ":torque_base_files", ], - copts = select({ + copts = ["-Wno-implicit-fallthrough"] + select({ "@v8//bazel/config:is_posix": ["-fexceptions"], "//conditions:default": [], }), @@ -3700,6 +3725,7 @@ v8_binary( v8_binary( name = "mksnapshot", srcs = [":mksnapshot_files"], + copts = ["-Wno-implicit-fallthrough"], icu_deps = [":icu/v8_libshared"], linkopts = select({ "@v8//bazel/config:is_android": ["-llog"], @@ -3711,6 +3737,7 @@ v8_binary( v8_binary( name = "d8", srcs = [":d8_files"], + copts = ["-Wno-implicit-fallthrough"], icu_deps = [":icu/v8"], noicu_deps = [":noicu/v8"], ) diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 61187af3053a02..4106177e74d0a3 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -376,6 +376,9 @@ declare_args() { # Compile V8 using zlib as dependency. # Sets -DV8_USE_ZLIB v8_use_zlib = true + + # Make ValueDeserializer crash if the data to deserialize is invalid. + v8_value_deserializer_hard_fail = false } # Derived defaults. @@ -1055,6 +1058,9 @@ config("features") { if (v8_use_zlib) { defines += [ "V8_USE_ZLIB" ] } + if (v8_value_deserializer_hard_fail) { + defines += [ "V8_VALUE_DESERIALIZER_HARD_FAIL" ] + } } config("toolchain") { @@ -1460,6 +1466,10 @@ config("toolchain") { "/wd4715", # 'function' : not all control paths return a value' # MSVC does not analyze switch (enum) for completeness. ] + + # TODO(https://crbug.com/1377771): Keep MSVC on C++17 until source code is + # made compatible with C++20. + cflags_cc = [ "/std:c++17" ] } if (!is_clang && !is_win) { @@ -1476,6 +1486,11 @@ config("toolchain") { # Disable gcc warnings for using enum constant in boolean context. # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97266 "-Wno-int-in-bool-context", + + # Disable gcc deprecation warnings, which are firing on implicit capture + # of `this` in capture-by-value lambdas and preventing a build roll which + # enables C++20 (see https://crbug.com/1374227). + "-Wno-deprecated", ] } @@ -2268,6 +2283,8 @@ action("v8_dump_build_config") { "v8_current_cpu=\"$v8_current_cpu\"", "v8_enable_atomic_object_field_writes=" + "$v8_enable_atomic_object_field_writes", + "v8_enable_conservative_stack_scanning=" + + "$v8_enable_conservative_stack_scanning", "v8_enable_concurrent_marking=$v8_enable_concurrent_marking", "v8_enable_single_generation=$v8_enable_single_generation", "v8_enable_i18n_support=$v8_enable_i18n_support", @@ -2443,57 +2460,57 @@ v8_source_set("v8_initializers") { if (v8_current_cpu == "x86") { sources += [ - ### gcmole(arch:ia32) ### + ### gcmole(ia32) ### "src/builtins/ia32/builtins-ia32.cc", ] } else if (v8_current_cpu == "x64") { sources += [ - ### gcmole(arch:x64) ### + ### gcmole(x64) ### "src/builtins/x64/builtins-x64.cc", ] } else if (v8_current_cpu == "arm") { sources += [ - ### gcmole(arch:arm) ### + ### gcmole(arm) ### "src/builtins/arm/builtins-arm.cc", ] } else if (v8_current_cpu == "arm64") { sources += [ - ### gcmole(arch:arm64) ### + ### gcmole(arm64) ### "src/builtins/arm64/builtins-arm64.cc", ] } else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { sources += [ - ### gcmole(arch:mips64el) ### + ### gcmole(mips64el) ### "src/builtins/mips64/builtins-mips64.cc", ] } else if (v8_current_cpu == "loong64") { sources += [ - ### gcmole(arch:loong64) ### + ### gcmole(loong64) ### "src/builtins/loong64/builtins-loong64.cc", ] } else if (v8_current_cpu == "ppc") { sources += [ - ### gcmole(arch:ppc) ### + ### gcmole(ppc) ### "src/builtins/ppc/builtins-ppc.cc", ] } else if (v8_current_cpu == "ppc64") { sources += [ - ### gcmole(arch:ppc64) ### + ### gcmole(ppc64) ### "src/builtins/ppc/builtins-ppc.cc", ] } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { sources += [ - ### gcmole(arch:s390) ### + ### gcmole(s390) ### "src/builtins/s390/builtins-s390.cc", ] } else if (v8_current_cpu == "riscv64") { sources += [ - ### gcmole(arch:riscv64) ### + ### gcmole(riscv64) ### "src/builtins/riscv/builtins-riscv.cc", ] } else if (v8_current_cpu == "riscv32") { sources += [ - ### gcmole(arch:riscv32) ### + ### gcmole(riscv32) ### "src/builtins/riscv/builtins-riscv.cc", ] } @@ -2803,6 +2820,7 @@ v8_header_set("v8_internal_headers") { "src/compiler/all-nodes.h", "src/compiler/allocation-builder-inl.h", "src/compiler/allocation-builder.h", + "src/compiler/backend/bitcast-elider.h", "src/compiler/backend/code-generator-impl.h", "src/compiler/backend/code-generator.h", "src/compiler/backend/frame-elider.h", @@ -2917,22 +2935,28 @@ v8_header_set("v8_internal_headers") { "src/compiler/state-values-utils.h", "src/compiler/store-store-elimination.h", "src/compiler/turboshaft/assembler.h", + "src/compiler/turboshaft/branch-elimination-reducer.h", "src/compiler/turboshaft/decompression-optimization.h", "src/compiler/turboshaft/deopt-data.h", "src/compiler/turboshaft/fast-hash.h", "src/compiler/turboshaft/graph-builder.h", "src/compiler/turboshaft/graph-visualizer.h", "src/compiler/turboshaft/graph.h", - "src/compiler/turboshaft/machine-optimization-assembler.h", + "src/compiler/turboshaft/index.h", + "src/compiler/turboshaft/layered-hash-map.h", + "src/compiler/turboshaft/machine-optimization-reducer.h", "src/compiler/turboshaft/operation-matching.h", "src/compiler/turboshaft/operations.h", "src/compiler/turboshaft/optimization-phase.h", "src/compiler/turboshaft/recreate-schedule.h", "src/compiler/turboshaft/representations.h", + "src/compiler/turboshaft/select-lowering-reducer.h", "src/compiler/turboshaft/sidetable.h", "src/compiler/turboshaft/simplify-tf-loops.h", + "src/compiler/turboshaft/snapshot-table.h", "src/compiler/turboshaft/utils.h", - "src/compiler/turboshaft/value-numbering-assembler.h", + "src/compiler/turboshaft/value-numbering-reducer.h", + "src/compiler/turboshaft/variable-reducer.h", "src/compiler/type-cache.h", "src/compiler/type-narrowing-reducer.h", "src/compiler/typed-optimization.h", @@ -3024,6 +3048,7 @@ v8_header_set("v8_internal_headers") { "src/handles/maybe-handles.h", "src/handles/persistent-handles.h", "src/handles/shared-object-conveyor-handles.h", + "src/handles/traced-handles.h", "src/heap/allocation-observer.h", "src/heap/allocation-result.h", "src/heap/allocation-stats.h", @@ -3042,6 +3067,7 @@ v8_header_set("v8_internal_headers") { "src/heap/cppgc-js/cpp-marking-state-inl.h", "src/heap/cppgc-js/cpp-marking-state.h", "src/heap/cppgc-js/cpp-snapshot.h", + "src/heap/cppgc-js/cross-heap-remembered-set.h", "src/heap/cppgc-js/unified-heap-marking-state-inl.h", "src/heap/cppgc-js/unified-heap-marking-state.h", "src/heap/cppgc-js/unified-heap-marking-verifier.h", @@ -3063,7 +3089,6 @@ v8_header_set("v8_internal_headers") { "src/heap/gc-idle-time-handler.h", "src/heap/gc-tracer-inl.h", "src/heap/gc-tracer.h", - "src/heap/global-handle-marking-visitor.h", "src/heap/heap-allocator-inl.h", "src/heap/heap-allocator.h", "src/heap/heap-controller.h", @@ -3130,6 +3155,7 @@ v8_header_set("v8_internal_headers") { "src/heap/stress-marking-observer.h", "src/heap/stress-scavenge-observer.h", "src/heap/sweeper.h", + "src/heap/traced-handles-marking-visitor.h", "src/heap/weak-object-worklists.h", "src/ic/call-optimization.h", "src/ic/handler-configuration-inl.h", @@ -3422,6 +3448,7 @@ v8_header_set("v8_internal_headers") { "src/profiler/heap-profiler.h", "src/profiler/heap-snapshot-generator-inl.h", "src/profiler/heap-snapshot-generator.h", + "src/profiler/output-stream-writer.h", "src/profiler/profile-generator-inl.h", "src/profiler/profile-generator.h", "src/profiler/profiler-listener.h", @@ -3742,7 +3769,8 @@ v8_header_set("v8_internal_headers") { } if (v8_current_cpu == "x86") { - sources += [ ### gcmole(arch:ia32) ### + sources += [ + ### gcmole(ia32) ### "src/baseline/ia32/baseline-assembler-ia32-inl.h", "src/baseline/ia32/baseline-compiler-ia32-inl.h", "src/codegen/ia32/assembler-ia32-inl.h", @@ -3760,7 +3788,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/ia32/liftoff-assembler-ia32.h", ] } else if (v8_current_cpu == "x64") { - sources += [ ### gcmole(arch:x64) ### + sources += [ + ### gcmole(x64) ### "src/baseline/x64/baseline-assembler-x64-inl.h", "src/baseline/x64/baseline-compiler-x64-inl.h", "src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.h", @@ -3796,7 +3825,8 @@ v8_header_set("v8_internal_headers") { } } } else if (v8_current_cpu == "arm") { - sources += [ ### gcmole(arch:arm) ### + sources += [ + ### gcmole(arm) ### "src/baseline/arm/baseline-assembler-arm-inl.h", "src/baseline/arm/baseline-compiler-arm-inl.h", "src/codegen/arm/assembler-arm-inl.h", @@ -3814,7 +3844,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/arm/liftoff-assembler-arm.h", ] } else if (v8_current_cpu == "arm64") { - sources += [ ### gcmole(arch:arm64) ### + sources += [ + ### gcmole(arm64) ### "src/baseline/arm64/baseline-assembler-arm64-inl.h", "src/baseline/arm64/baseline-compiler-arm64-inl.h", "src/codegen/arm64/assembler-arm64-inl.h", @@ -3856,7 +3887,8 @@ v8_header_set("v8_internal_headers") { sources += [ "src/diagnostics/unwinding-info-win64.h" ] } } else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { - sources += [ ### gcmole(arch:mips64el) ### + sources += [ + ### gcmole(mips64el) ### "src/baseline/mips64/baseline-assembler-mips64-inl.h", "src/baseline/mips64/baseline-compiler-mips64-inl.h", "src/codegen/mips64/assembler-mips64-inl.h", @@ -3872,7 +3904,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/mips64/liftoff-assembler-mips64.h", ] } else if (v8_current_cpu == "loong64") { - sources += [ ### gcmole(arch:loong64) ### + sources += [ + ### gcmole(loong64) ### "src/baseline/loong64/baseline-assembler-loong64-inl.h", "src/baseline/loong64/baseline-compiler-loong64-inl.h", "src/codegen/loong64/assembler-loong64-inl.h", @@ -3888,7 +3921,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/loong64/liftoff-assembler-loong64.h", ] } else if (v8_current_cpu == "ppc") { - sources += [ ### gcmole(arch:ppc) ### + sources += [ + ### gcmole(ppc) ### "src/codegen/ppc/assembler-ppc-inl.h", "src/codegen/ppc/assembler-ppc.h", "src/codegen/ppc/constants-ppc.h", @@ -3904,7 +3938,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/ppc/liftoff-assembler-ppc.h", ] } else if (v8_current_cpu == "ppc64") { - sources += [ ### gcmole(arch:ppc64) ### + sources += [ + ### gcmole(ppc64) ### "src/baseline/ppc/baseline-assembler-ppc-inl.h", "src/baseline/ppc/baseline-compiler-ppc-inl.h", "src/codegen/ppc/assembler-ppc-inl.h", @@ -3922,7 +3957,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/ppc/liftoff-assembler-ppc.h", ] } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { - sources += [ ### gcmole(arch:s390) ### + sources += [ + ### gcmole(s390) ### "src/baseline/s390/baseline-assembler-s390-inl.h", "src/baseline/s390/baseline-compiler-s390-inl.h", "src/codegen/s390/assembler-s390-inl.h", @@ -3940,7 +3976,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/s390/liftoff-assembler-s390.h", ] } else if (v8_current_cpu == "riscv64") { - sources += [ ### gcmole(arch:riscv64) ### + sources += [ + ### gcmole(riscv64) ### "src/baseline/riscv/baseline-assembler-riscv-inl.h", "src/baseline/riscv/baseline-compiler-riscv-inl.h", "src/codegen/riscv/assembler-riscv-inl.h", @@ -3979,7 +4016,8 @@ v8_header_set("v8_internal_headers") { "src/wasm/baseline/riscv64/liftoff-assembler-riscv64.h", ] } else if (v8_current_cpu == "riscv32") { - sources += [ ### gcmole(arch:riscv32) ### + sources += [ + ### gcmole(riscv32) ### "src/baseline/riscv/baseline-assembler-riscv-inl.h", "src/baseline/riscv/baseline-compiler-riscv-inl.h", "src/codegen/riscv/assembler-riscv.h", @@ -4041,6 +4079,7 @@ v8_compiler_sources = [ "src/compiler/access-info.cc", "src/compiler/add-type-assertions-reducer.cc", "src/compiler/all-nodes.cc", + "src/compiler/backend/bitcast-elider.cc", "src/compiler/backend/code-generator.cc", "src/compiler/backend/frame-elider.cc", "src/compiler/backend/gap-resolver.cc", @@ -4429,6 +4468,7 @@ v8_source_set("v8_base_without_compiler") { "src/handles/local-handles.cc", "src/handles/persistent-handles.cc", "src/handles/shared-object-conveyor-handles.cc", + "src/handles/traced-handles.cc", "src/heap/allocation-observer.cc", "src/heap/array-buffer-sweeper.cc", "src/heap/base-space.cc", @@ -4442,6 +4482,7 @@ v8_source_set("v8_base_without_compiler") { "src/heap/concurrent-marking.cc", "src/heap/cppgc-js/cpp-heap.cc", "src/heap/cppgc-js/cpp-snapshot.cc", + "src/heap/cppgc-js/cross-heap-remembered-set.cc", "src/heap/cppgc-js/unified-heap-marking-state.cc", "src/heap/cppgc-js/unified-heap-marking-verifier.cc", "src/heap/cppgc-js/unified-heap-marking-visitor.cc", @@ -4453,7 +4494,6 @@ v8_source_set("v8_base_without_compiler") { "src/heap/free-list.cc", "src/heap/gc-idle-time-handler.cc", "src/heap/gc-tracer.cc", - "src/heap/global-handle-marking-visitor.cc", "src/heap/heap-allocator.cc", "src/heap/heap-controller.cc", "src/heap/heap-layout-tracer.cc", @@ -4491,6 +4531,7 @@ v8_source_set("v8_base_without_compiler") { "src/heap/stress-marking-observer.cc", "src/heap/stress-scavenge-observer.cc", "src/heap/sweeper.cc", + "src/heap/traced-handles-marking-visitor.cc", "src/heap/weak-object-worklists.cc", "src/ic/call-optimization.cc", "src/ic/handler-configuration.cc", @@ -4737,6 +4778,7 @@ v8_source_set("v8_base_without_compiler") { if (v8_enable_maglev) { sources += [ + "src/maglev/maglev-assembler.cc", "src/maglev/maglev-code-generator.cc", "src/maglev/maglev-compilation-info.cc", "src/maglev/maglev-compilation-unit.cc", @@ -4752,7 +4794,8 @@ v8_source_set("v8_base_without_compiler") { } if (v8_enable_webassembly) { - sources += [ ### gcmole(all) ### + sources += [ + ### gcmole(all) ### "src/asmjs/asm-js.cc", "src/asmjs/asm-parser.cc", "src/asmjs/asm-scanner.cc", @@ -4834,7 +4877,8 @@ v8_source_set("v8_base_without_compiler") { } if (v8_current_cpu == "x86") { - sources += [ ### gcmole(arch:ia32) ### + sources += [ + ### gcmole(ia32) ### "src/codegen/ia32/assembler-ia32.cc", "src/codegen/ia32/cpu-ia32.cc", "src/codegen/ia32/macro-assembler-ia32.cc", @@ -4849,7 +4893,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/ia32/regexp-macro-assembler-ia32.cc", ] } else if (v8_current_cpu == "x64") { - sources += [ ### gcmole(arch:x64) ### + sources += [ + ### gcmole(x64) ### "src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.cc", "src/codegen/x64/assembler-x64.cc", "src/codegen/x64/cpu-x64.cc", @@ -4887,7 +4932,8 @@ v8_source_set("v8_base_without_compiler") { } } } else if (v8_current_cpu == "arm") { - sources += [ ### gcmole(arch:arm) ### + sources += [ + ### gcmole(arm) ### "src/codegen/arm/assembler-arm.cc", "src/codegen/arm/constants-arm.cc", "src/codegen/arm/cpu-arm.cc", @@ -4905,7 +4951,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/arm/regexp-macro-assembler-arm.cc", ] } else if (v8_current_cpu == "arm64") { - sources += [ ### gcmole(arch:arm64) ### + sources += [ + ### gcmole(arm64) ### "src/codegen/arm64/assembler-arm64.cc", "src/codegen/arm64/cpu-arm64.cc", "src/codegen/arm64/decoder-arm64.cc", @@ -4952,7 +4999,8 @@ v8_source_set("v8_base_without_compiler") { sources += [ "src/diagnostics/unwinding-info-win64.cc" ] } } else if (v8_current_cpu == "mips64" || v8_current_cpu == "mips64el") { - sources += [ ### gcmole(arch:mips64el) ### + sources += [ + ### gcmole(mips64el) ### "src/codegen/mips64/assembler-mips64.cc", "src/codegen/mips64/constants-mips64.cc", "src/codegen/mips64/cpu-mips64.cc", @@ -4969,7 +5017,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/mips64/regexp-macro-assembler-mips64.cc", ] } else if (v8_current_cpu == "loong64") { - sources += [ ### gcmole(arch:loong64) ### + sources += [ + ### gcmole(loong64) ### "src/codegen/loong64/assembler-loong64.cc", "src/codegen/loong64/constants-loong64.cc", "src/codegen/loong64/cpu-loong64.cc", @@ -4986,7 +5035,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/loong64/regexp-macro-assembler-loong64.cc", ] } else if (v8_current_cpu == "ppc") { - sources += [ ### gcmole(arch:ppc) ### + sources += [ + ### gcmole(ppc) ### "src/codegen/ppc/assembler-ppc.cc", "src/codegen/ppc/constants-ppc.cc", "src/codegen/ppc/cpu-ppc.cc", @@ -5004,7 +5054,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/ppc/regexp-macro-assembler-ppc.cc", ] } else if (v8_current_cpu == "ppc64") { - sources += [ ### gcmole(arch:ppc64) ### + sources += [ + ### gcmole(ppc64) ### "src/codegen/ppc/assembler-ppc.cc", "src/codegen/ppc/constants-ppc.cc", "src/codegen/ppc/cpu-ppc.cc", @@ -5022,7 +5073,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/ppc/regexp-macro-assembler-ppc.cc", ] } else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") { - sources += [ ### gcmole(arch:s390) ### + sources += [ + ### gcmole(s390) ### "src/codegen/s390/assembler-s390.cc", "src/codegen/s390/constants-s390.cc", "src/codegen/s390/cpu-s390.cc", @@ -5040,7 +5092,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/s390/regexp-macro-assembler-s390.cc", ] } else if (v8_current_cpu == "riscv64") { - sources += [ ### gcmole(arch:riscv64) ### + sources += [ + ### gcmole(riscv64) ### "src/codegen/riscv/assembler-riscv.cc", "src/codegen/riscv/base-assembler-riscv.cc", "src/codegen/riscv/base-constants-riscv.cc", @@ -5066,7 +5119,8 @@ v8_source_set("v8_base_without_compiler") { "src/regexp/riscv/regexp-macro-assembler-riscv.cc", ] } else if (v8_current_cpu == "riscv32") { - sources += [ ### gcmole(arch:riscv32) ### + sources += [ + ### gcmole(riscv32) ### "src/codegen/riscv/assembler-riscv.cc", "src/codegen/riscv/base-assembler-riscv.cc", "src/codegen/riscv/base-constants-riscv.cc", @@ -5745,31 +5799,31 @@ v8_source_set("v8_heap_base") { if (is_clang || !is_win) { if (current_cpu == "x64") { - sources += [ "src/heap/base/asm/x64/push_registers_asm.cc" ] + sources += [ "src/heap/base/asm/x64/save_registers_asm.cc" ] } else if (current_cpu == "x86") { - sources += [ "src/heap/base/asm/ia32/push_registers_asm.cc" ] + sources += [ "src/heap/base/asm/ia32/save_registers_asm.cc" ] } else if (current_cpu == "arm") { - sources += [ "src/heap/base/asm/arm/push_registers_asm.cc" ] + sources += [ "src/heap/base/asm/arm/save_registers_asm.cc" ] } else if (current_cpu == "arm64") { - sources += [ "src/heap/base/asm/arm64/push_registers_asm.cc" ] + sources += [ "src/heap/base/asm/arm64/save_registers_asm.cc" ] } else if (current_cpu == "ppc64") { - sources += [ "src/heap/base/asm/ppc/push_registers_asm.cc" ] + sources += [ "src/heap/base/asm/ppc/save_registers_asm.cc" ] } else if (current_cpu == "s390x") { - sources += [ "src/heap/base/asm/s390/push_registers_asm.cc" ] + sources += [ "src/heap/base/asm/s390/save_registers_asm.cc" ] } else if (current_cpu == "mips64el") { - sources += [ "src/heap/base/asm/mips64/push_registers_asm.cc" ] + sources += [ "src/heap/base/asm/mips64/save_registers_asm.cc" ] } else if (current_cpu == "loong64") { - sources += [ "src/heap/base/asm/loong64/push_registers_asm.cc" ] + sources += [ "src/heap/base/asm/loong64/save_registers_asm.cc" ] } else if (current_cpu == "riscv64" || current_cpu == "riscv32") { - sources += [ "src/heap/base/asm/riscv/push_registers_asm.cc" ] + sources += [ "src/heap/base/asm/riscv/save_registers_asm.cc" ] } } else if (is_win) { if (current_cpu == "x64") { - sources += [ "src/heap/base/asm/x64/push_registers_masm.asm" ] + sources += [ "src/heap/base/asm/x64/save_registers_masm.asm" ] } else if (current_cpu == "x86") { - sources += [ "src/heap/base/asm/ia32/push_registers_masm.asm" ] + sources += [ "src/heap/base/asm/ia32/save_registers_masm.asm" ] } else if (current_cpu == "arm64") { - sources += [ "src/heap/base/asm/arm64/push_registers_masm.S" ] + sources += [ "src/heap/base/asm/arm64/save_registers_masm.S" ] } } diff --git a/deps/v8/DEPS b/deps/v8/DEPS index 6304c386414450..ad4c9f561102ab 100644 --- a/deps/v8/DEPS +++ b/deps/v8/DEPS @@ -26,11 +26,19 @@ vars = { # most commonly useful for developers. Bots and developers that need to use # other images (e.g., qemu.arm64) can override this with additional images. 'checkout_fuchsia_boot_images': "qemu.x64", + 'checkout_fuchsia_product_bundles': '"{checkout_fuchsia_boot_images}" != ""', 'checkout_instrumented_libraries': False, 'checkout_ittapi': False, + + # Fetch the prebuilt binaries for llvm-cov and llvm-profdata. Needed to + # process the raw profiles produced by instrumented targets (built with + # the gn arg 'use_clang_coverage'). + 'checkout_clang_coverage_tools': False, + # Fetch clang-tidy into the same bin/ directory as our clang binary. 'checkout_clang_tidy': False, + 'chromium_url': 'https://chromium.googlesource.com', 'android_url': 'https://android.googlesource.com', 'download_gcmole': False, @@ -42,22 +50,22 @@ vars = { 'fuchsia_sdk_cipd_prefix': 'fuchsia/sdk/gn/', # reclient CIPD package version - 'reclient_version': 're_client_version:0.69.0.458df98-gomaip', + 'reclient_version': 're_client_version:0.86.0.25feac0-gomaip', # GN CIPD package version. - 'gn_version': 'git_revision:cc28efe62ef0c2fb32455f414a29c4a55bb7fbc4', + 'gn_version': 'git_revision:1c4151ff5c1d6fbf7fa800b8d4bb34d3abc03a41', # ninja CIPD package version # https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja 'ninja_version': 'version:2@1.8.2.chromium.3', # luci-go CIPD package version. - 'luci_go': 'git_revision:20c50aa39686d91330c2daceccaa4ef1a0a72ee4', + 'luci_go': 'git_revision:f8f64a8c560d2bf68a3ad1137979d17cffb36d30', # 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:9.20220919.2.1', + 'fuchsia_version': 'version:10.20221117.0.1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_build-tools_version @@ -90,16 +98,16 @@ vars = { # Three lines of non-changing comments so that # the commit queue can handle CLs rolling android_sdk_tools-lint_version # and whatever else without interference from each other. - 'android_sdk_cmdline-tools_version': 'IPzAG-uU5zVMxohpg9-7-N0tQC1TCSW1VbrBFw7Ld04C', + 'android_sdk_cmdline-tools_version': 'oWlET2yQhaPKQ66tYNuSPaueU78Z9VlxpyxOoUjwRuIC', } deps = { 'base/trace_event/common': Var('chromium_url') + '/chromium/src/base/trace_event/common.git' + '@' + '521ac34ebd795939c7e16b37d9d3ddb40e8ed556', 'build': - Var('chromium_url') + '/chromium/src/build.git' + '@' + '7e7c21a9ac34c4fc2b255aa44d639efec9c33b90', + Var('chromium_url') + '/chromium/src/build.git' + '@' + 'bd893617b2052b7fbe0d81d843a716af300c1d36', 'buildtools': - Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '9174abb6ac087b46f22248dc713b6c0328b8f774', + Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '09154d65c32661a2586ca376d2c06185851b8541', 'buildtools/clang_format/script': Var('chromium_url') + '/external/github.com/llvm/llvm-project/clang/tools/clang-format.git' + '@' + '8b525d2747f2584fc35d8c7e612e66f377858df7', 'buildtools/linux64': { @@ -123,11 +131,11 @@ deps = { 'condition': 'host_os == "mac"', }, 'buildtools/third_party/libc++/trunk': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '2e919977e0030ce61bd19c40cefe31b995f1e2d4', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + 'cd0a05047451dfbdef5ba85f97ac4888e432a377', 'buildtools/third_party/libc++abi/trunk': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'db2a783a7d1ef0f0ef31da4b6e3de0c31fcfd93f', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '1a32724f721e1c3b6c590a07fe4a954344f15e48', 'buildtools/third_party/libunwind/trunk': - Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '08ebcbe7b672a04e341cb3a88d8bf4276f96ac6e', + Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '5870472fdd17f33d923b02e3e0acb9cbb18dbc9a', 'buildtools/win': { 'packages': [ { @@ -153,13 +161,13 @@ 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' + '@' + '58b7a2358286b918efd38eac4b2facbc8ada1206', + Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'ec752ebaaba706d6b388ea2c2b8df729d419b1c4', 'third_party/android_ndk': { 'url': Var('chromium_url') + '/android_ndk.git' + '@' + '8388a2be5421311dc75c5f937aae13d821a27f3d', 'condition': 'checkout_android', }, 'third_party/android_platform': { - 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + '04b33506bfd9d0e866bd8bd62f4cbf323d84dc79', + 'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + '1bf9b932433ebb78828bf3c8cd0ccc86b9ef4787', 'condition': 'checkout_android', }, 'third_party/android_sdk/public': { @@ -201,7 +209,7 @@ deps = { 'dep_type': 'cipd', }, 'third_party/catapult': { - 'url': Var('chromium_url') + '/catapult.git' + '@' + 'ff03621a71c01a6f2b0f3bf2677cf815291a9e85', + 'url': Var('chromium_url') + '/catapult.git' + '@' + 'b898eb3e06f5f67172dfbdc19e1451d52638dbd4', 'condition': 'checkout_android', }, 'third_party/colorama/src': { @@ -209,7 +217,7 @@ deps = { 'condition': 'checkout_android', }, 'third_party/depot_tools': - Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + 'a724859f7a9b3531c0373d86886a42314e772532', + Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + 'd06e475934f6496819f88ae0ab6a3a9d3e77ae6d', 'third_party/fuchsia-sdk/sdk': { 'packages': [ { @@ -226,9 +234,9 @@ deps = { 'third_party/googletest/src': Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'af29db7ec28d6df1c7f0f745186884091e602e07', 'third_party/icu': - Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '20f8ac695af59b6c830def7d4e95bfeb13dd7be5', + Var('chromium_url') + '/chromium/deps/icu.git' + '@' + '1b7d391f0528fb3a4976b7541b387ee04f915f83', 'third_party/instrumented_libraries': - Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + 'e09c4b66b6e87116eb190651421f1a6e2f3b9c52', + Var('chromium_url') + '/chromium/src/third_party/instrumented_libraries.git' + '@' + 'ecd3bd896f01982c2358bccbe8922c03d3b457f3', 'third_party/ittapi': { # Force checkout ittapi libraries to pass v8 header includes check on # bots that has check_v8_header_includes enabled. @@ -236,13 +244,13 @@ deps = { 'condition': "checkout_ittapi or check_v8_header_includes", }, 'third_party/jinja2': - Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + 'ee69aa00ee8536f61db6a451f3858745cf587de6', + Var('chromium_url') + '/chromium/src/third_party/jinja2.git' + '@' + '4633bf431193690c3491244f5a0acbe9ac776233', 'third_party/jsoncpp/source': Var('chromium_url') + '/external/github.com/open-source-parsers/jsoncpp.git'+ '@' + '42e892d96e47b1f6e29844cc705e148ec4856448', 'third_party/logdog/logdog': Var('chromium_url') + '/infra/luci/luci-py/client/libs/logdog' + '@' + '0b2078a90f7a638d576b3a7c407d136f2fb62399', 'third_party/markupsafe': - Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '1b882ef6372b58bfd55a3285f37ed801be9137cd', + Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '13f4e8c9e206567eeb13bf585406ddc574005748', 'third_party/ninja': { 'packages': [ { @@ -262,9 +270,9 @@ deps = { 'condition': 'checkout_android', }, 'third_party/zlib': - Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + 'd689fca54d7b43154f7cf77f785d19f2628fa133', + Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + 'd866d41e168ec04545bb17031fa911007a0581f4', 'tools/clang': - Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'a5e0d72349d028a4023927d6d166a8478355fac3', + Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'ed5ed0ecabbf9b12b336a01a70f64aedf1a02a09', 'tools/luci-go': { 'packages': [ { @@ -498,7 +506,7 @@ hooks = [ '--arch=x64'], }, { - 'name': 'msan_chained_origins', + 'name': 'msan_chained_origins_xenial', 'pattern': '.', 'condition': 'checkout_instrumented_libraries', 'action': [ 'python3', @@ -506,11 +514,11 @@ hooks = [ '--no_resume', '--no_auth', '--bucket', 'chromium-instrumented-libraries', - '-s', 'third_party/instrumented_libraries/binaries/msan-chained-origins.tgz.sha1', + '-s', 'third_party/instrumented_libraries/binaries/msan-chained-origins-xenial.tgz.sha1', ], }, { - 'name': 'msan_no_origins', + 'name': 'msan_no_origins_xenial', 'pattern': '.', 'condition': 'checkout_instrumented_libraries', 'action': [ 'python3', @@ -518,7 +526,7 @@ hooks = [ '--no_resume', '--no_auth', '--bucket', 'chromium-instrumented-libraries', - '-s', 'third_party/instrumented_libraries/binaries/msan-no-origins.tgz.sha1', + '-s', 'third_party/instrumented_libraries/binaries/msan-no-origins-xenial.tgz.sha1', ], }, { @@ -556,6 +564,14 @@ hooks = [ 'condition': 'host_os != "aix"', 'action': ['python3', 'tools/clang/scripts/update.py'], }, + { + # This is supposed to support the same set of platforms as 'clang' above. + 'name': 'clang_coverage', + 'pattern': '.', + 'condition': 'checkout_clang_coverage_tools', + 'action': ['python3', 'tools/clang/scripts/update.py', + '--package=coverage_tools'], + }, { 'name': 'clang_tidy', 'pattern': '.', @@ -573,11 +589,11 @@ hooks = [ { 'name': 'Download Fuchsia system images', 'pattern': '.', - 'condition': 'checkout_fuchsia', + 'condition': 'checkout_fuchsia and checkout_fuchsia_product_bundles', 'action': [ 'python3', - 'build/fuchsia/update_images.py', - '--boot-images={checkout_fuchsia_boot_images}', + 'build/fuchsia/update_product_bundles.py', + '{checkout_fuchsia_boot_images}', ], }, { diff --git a/deps/v8/OWNERS b/deps/v8/OWNERS index db579fb0e6a2d3..cd95b48bac3eba 100644 --- a/deps/v8/OWNERS +++ b/deps/v8/OWNERS @@ -5,6 +5,7 @@ file:ENG_REVIEW_OWNERS per-file .*=file:INFRA_OWNERS per-file .bazelrc=file:COMMON_OWNERS per-file .mailmap=file:COMMON_OWNERS +per-file .ycm_extra_conf.py=file:COMMON_OWNERS per-file codereview.settings=file:INFRA_OWNERS per-file AUTHORS=file:COMMON_OWNERS per-file BUILD.bazel=file:COMMON_OWNERS diff --git a/deps/v8/PRESUBMIT.py b/deps/v8/PRESUBMIT.py index 03db4c126f346d..ec4e9942e11b27 100644 --- a/deps/v8/PRESUBMIT.py +++ b/deps/v8/PRESUBMIT.py @@ -85,6 +85,7 @@ def _V8PresubmitChecks(input_api, output_api): sys.path.append(input_api.os_path.join( input_api.PresubmitLocalPath(), 'tools')) from v8_presubmit import CppLintProcessor + from v8_presubmit import GCMoleProcessor from v8_presubmit import JSLintProcessor from v8_presubmit import TorqueLintProcessor from v8_presubmit import SourceProcessor @@ -126,6 +127,9 @@ def FilterJSFile(affected_file): if not StatusFilesProcessor().RunOnFiles( input_api.AffectedFiles(include_deletes=True)): results.append(output_api.PresubmitError("Status file check failed")) + if not GCMoleProcessor().RunOnFiles( + input_api.AffectedFiles(include_deletes=False)): + results.append(output_api.PresubmitError("GCMole pattern check failed")) results.extend(input_api.canned_checks.CheckAuthorizedAuthor( input_api, output_api, bot_allowlist=[ 'v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com' diff --git a/deps/v8/WATCHLISTS b/deps/v8/WATCHLISTS index a078c5568e4707..7be659ce458fc4 100644 --- a/deps/v8/WATCHLISTS +++ b/deps/v8/WATCHLISTS @@ -134,7 +134,7 @@ ], 'merges': [ # Only enabled on branches created with tools/release/create_release.py - 'v8-merges@googlegroups.com', + # 'v8-merges@googlegroups.com', ], 'wasm': [ 'wasm-v8@google.com', diff --git a/deps/v8/bazel/defs.bzl b/deps/v8/bazel/defs.bzl index d8db3fe8ba9a62..77e86ef6f2e646 100644 --- a/deps/v8/bazel/defs.bzl +++ b/deps/v8/bazel/defs.bzl @@ -151,14 +151,6 @@ def _default_args(): "-fno-integrated-as", ], "//conditions:default": [], - }) + select({ - "@v8//bazel/config:is_debug":[ - "-fvisibility=default", - ], - "//conditions:default": [ - "-fvisibility=hidden", - "-fvisibility-inlines-hidden", - ], }), includes = ["include"], linkopts = select({ @@ -518,6 +510,7 @@ def build_config_content(cpu, icu): ("v8_current_cpu", cpu), ("v8_dict_property_const_tracking", "false"), ("v8_enable_atomic_object_field_writes", "false"), + ("v8_enable_conservative_stack_scanning", "false"), ("v8_enable_concurrent_marking", "false"), ("v8_enable_i18n_support", icu), ("v8_enable_verify_predictable", "false"), diff --git a/deps/v8/gni/release_branch_toggle.gni b/deps/v8/gni/release_branch_toggle.gni index c502c8c62e5836..cfbf28dc5291de 100644 --- a/deps/v8/gni/release_branch_toggle.gni +++ b/deps/v8/gni/release_branch_toggle.gni @@ -3,5 +3,5 @@ # found in the LICENSE file. declare_args() { - is_on_release_branch = true + is_on_release_branch = false } \ No newline at end of file diff --git a/deps/v8/gni/snapshot_toolchain.gni b/deps/v8/gni/snapshot_toolchain.gni index 5f5e53a30d0789..99de816372bf9c 100644 --- a/deps/v8/gni/snapshot_toolchain.gni +++ b/deps/v8/gni/snapshot_toolchain.gni @@ -44,10 +44,6 @@ declare_args() { # # There are test cases for this code posted as an attachment to # https://crbug.com/625353. -# -# TODO(GYP): Currently only regular (non-cross) compiles, and cross-compiles -# from x64 hosts to Intel, ARM, or MIPS targets, are implemented. Add support -# for the other supported configurations. if (v8_snapshot_toolchain == "") { if (current_os == host_os && current_cpu == host_cpu) { @@ -69,22 +65,21 @@ if (v8_snapshot_toolchain == "") { # therefore snapshots will need to be built using native mksnapshot # in combination with qemu v8_snapshot_toolchain = current_toolchain + } else if (host_cpu == current_cpu) { + # Cross-build from same ISA on one OS to another. For example: + # * targeting win/x64 on a linux/x64 host + # * targeting win/arm64 on a mac/arm64 host + v8_snapshot_toolchain = host_toolchain } else if (host_cpu == "arm64" && current_cpu == "x64") { # Cross-build from arm64 to intel (likely on an Apple Silicon mac). v8_snapshot_toolchain = "//build/toolchain/${host_os}:clang_arm64_v8_$v8_current_cpu" } else if (host_cpu == "x64") { # This is a cross-compile from an x64 host to either a non-Intel target - # cpu or a different target OS. Clang will always be used by default on the - # host, unless this is a ChromeOS build, in which case the same toolchain - # (Clang or GCC) will be used for target and host by default. - if (is_chromeos && !is_clang) { - _clang = "" - } else { - _clang = "clang_" - } + # cpu or to 32-bit x86 on a different target OS. - if (v8_current_cpu == "x64" || v8_current_cpu == "x86") { + assert(v8_current_cpu != "x64", "handled by host_cpu == current_cpu branch") + if (v8_current_cpu == "x86") { _cpus = v8_current_cpu } else if (v8_current_cpu == "arm64" || v8_current_cpu == "mips64el" || v8_current_cpu == "riscv64" || v8_current_cpu == "loong64") { @@ -104,7 +99,7 @@ if (v8_snapshot_toolchain == "") { } if (_cpus != "") { - v8_snapshot_toolchain = "//build/toolchain/${host_os}:${_clang}${_cpus}" + v8_snapshot_toolchain = "//build/toolchain/${host_os}:clang_${_cpus}" } else if (is_win && v8_current_cpu == "arm64") { # cross compile Windows arm64 with host toolchain. v8_snapshot_toolchain = host_toolchain diff --git a/deps/v8/include/cppgc/README.md b/deps/v8/include/cppgc/README.md index a7d08f86b32a39..d825ea5bd5ba9b 100644 --- a/deps/v8/include/cppgc/README.md +++ b/deps/v8/include/cppgc/README.md @@ -26,6 +26,8 @@ This allows Oilpan to run garbage collection in parallel with mutators running i References to objects belonging to another thread's heap are modeled using cross-thread roots. This is even true for on-heap to on-heap references. +Oilpan heaps may generally not be accessed from different threads unless otherwise noted. + ## Heap partitioning Oilpan's heaps are partitioned into spaces. diff --git a/deps/v8/include/cppgc/heap-handle.h b/deps/v8/include/cppgc/heap-handle.h index 8d825133b065d6..0d1d21e65daafd 100644 --- a/deps/v8/include/cppgc/heap-handle.h +++ b/deps/v8/include/cppgc/heap-handle.h @@ -19,6 +19,11 @@ class WriteBarrierTypeForNonCagedHeapPolicy; * Opaque handle used for additional heap APIs. */ class HeapHandle { + public: + // Deleted copy ctor to avoid treating the type by value. + HeapHandle(const HeapHandle&) = delete; + HeapHandle& operator=(const HeapHandle&) = delete; + private: HeapHandle() = default; diff --git a/deps/v8/include/cppgc/platform.h b/deps/v8/include/cppgc/platform.h index d2fe7b124c99fb..5a0a40ec8c0eb0 100644 --- a/deps/v8/include/cppgc/platform.h +++ b/deps/v8/include/cppgc/platform.h @@ -33,8 +33,9 @@ class V8_EXPORT Platform { virtual ~Platform() = default; /** - * Returns the allocator used by cppgc to allocate its heap and various - * support structures. + * \returns the allocator used by cppgc to allocate its heap and various + * support structures. Returning nullptr results in using the `PageAllocator` + * provided by `cppgc::InitializeProcess()` instead. */ virtual PageAllocator* GetPageAllocator() = 0; @@ -133,9 +134,10 @@ class V8_EXPORT Platform { * Can be called multiple times when paired with `ShutdownProcess()`. * * \param page_allocator The allocator used for maintaining meta data. Must stay - * always alive and not change between multiple calls to InitializeProcess. + * always alive and not change between multiple calls to InitializeProcess. If + * no allocator is provided, a default internal version will be used. */ -V8_EXPORT void InitializeProcess(PageAllocator* page_allocator); +V8_EXPORT void InitializeProcess(PageAllocator* page_allocator = nullptr); /** * Must be called after destroying the last used heap. Some process-global diff --git a/deps/v8/include/js_protocol.pdl b/deps/v8/include/js_protocol.pdl index b3b97fa11768e6..6efcf787854dac 100644 --- a/deps/v8/include/js_protocol.pdl +++ b/deps/v8/include/js_protocol.pdl @@ -458,13 +458,14 @@ domain Debugger # New value for breakpoints active state. boolean active - # Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or - # no exceptions. Initial pause on exceptions state is `none`. + # Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions, + # or caught exceptions, no exceptions. Initial pause on exceptions state is `none`. command setPauseOnExceptions parameters # Pause on exceptions mode. enum state none + caught uncaught all diff --git a/deps/v8/include/v8-array-buffer.h b/deps/v8/include/v8-array-buffer.h index cc5d2d4323000a..841bd02a793333 100644 --- a/deps/v8/include/v8-array-buffer.h +++ b/deps/v8/include/v8-array-buffer.h @@ -251,8 +251,26 @@ class V8_EXPORT ArrayBuffer : public Object { * preventing JavaScript from ever accessing underlying backing store. * ArrayBuffer should have been externalized and must be detachable. */ + V8_DEPRECATE_SOON( + "Use the version which takes a key parameter (passing a null handle is " + "ok).") void Detach(); + /** + * Detaches this ArrayBuffer and all its views (typed arrays). + * Detaching sets the byte length of the buffer and all typed arrays to zero, + * preventing JavaScript from ever accessing underlying backing store. + * ArrayBuffer should have been externalized and must be detachable. Returns + * Nothing if the key didn't pass the [[ArrayBufferDetachKey]] check, + * Just(true) otherwise. + */ + V8_WARN_UNUSED_RESULT Maybe Detach(v8::Local key); + + /** + * Sets the ArrayBufferDetachKey. + */ + void SetDetachKey(v8::Local key); + /** * Get a shared pointer to the backing store of this array buffer. This * pointer coordinates the lifetime management of the internal storage diff --git a/deps/v8/include/v8-callbacks.h b/deps/v8/include/v8-callbacks.h index c02059a5891a74..0ffdfb6656fc64 100644 --- a/deps/v8/include/v8-callbacks.h +++ b/deps/v8/include/v8-callbacks.h @@ -237,7 +237,8 @@ using LogEventCallback = void (*)(const char* name, enum class CrashKeyId { kIsolateAddress, kReadonlySpaceFirstPageAddress, - kMapSpaceFirstPageAddress, + kMapSpaceFirstPageAddress V8_ENUM_DEPRECATE_SOON("Map space got removed"), + kOldSpaceFirstPageAddress, kCodeRangeBaseAddress, kCodeSpaceFirstPageAddress, kDumpType, diff --git a/deps/v8/include/v8-context.h b/deps/v8/include/v8-context.h index 427f3a738607bb..3ce0eb0af38c67 100644 --- a/deps/v8/include/v8-context.h +++ b/deps/v8/include/v8-context.h @@ -169,6 +169,9 @@ class V8_EXPORT Context : public Data { /** Returns the microtask queue associated with a current context. */ MicrotaskQueue* GetMicrotaskQueue(); + /** Sets the microtask queue associated with the current context. */ + void SetMicrotaskQueue(MicrotaskQueue* queue); + /** * The field at kDebugIdIndex used to be reserved for the inspector. * It now serves no purpose. diff --git a/deps/v8/include/v8-cppgc.h b/deps/v8/include/v8-cppgc.h index 00ea5c5ae502ef..3a6582cd258496 100644 --- a/deps/v8/include/v8-cppgc.h +++ b/deps/v8/include/v8-cppgc.h @@ -98,6 +98,10 @@ struct V8_EXPORT CppHeapCreateParams { /** * A heap for allocating managed C++ objects. + * + * Similar to v8::Isolate, the heap may only be accessed from one thread at a + * time. The heap may be used from different threads using the + * v8::Locker/v8::Unlocker APIs which is different from generic Oilpan. */ class V8_EXPORT CppHeap { public: diff --git a/deps/v8/include/v8-data.h b/deps/v8/include/v8-data.h index cc51fefe105bbe..fc4dea92f3d8cc 100644 --- a/deps/v8/include/v8-data.h +++ b/deps/v8/include/v8-data.h @@ -53,7 +53,7 @@ class V8_EXPORT Data { bool IsContext() const; private: - Data(); + Data() = delete; }; /** diff --git a/deps/v8/include/v8-embedder-heap.h b/deps/v8/include/v8-embedder-heap.h index d3920c5f3b5580..f994cdfdf34376 100644 --- a/deps/v8/include/v8-embedder-heap.h +++ b/deps/v8/include/v8-embedder-heap.h @@ -72,7 +72,7 @@ class V8_EXPORT EmbedderRootsHandler { class V8_EXPORT // GCC doesn't like combining __attribute__(()) with [[deprecated]]. #ifdef __clang__ -V8_DEPRECATE_SOON("Use CppHeap when working with v8::TracedReference.") +V8_DEPRECATED("Use CppHeap when working with v8::TracedReference.") #endif // __clang__ EmbedderHeapTracer { public: diff --git a/deps/v8/include/v8-inspector.h b/deps/v8/include/v8-inspector.h index aa5a044afb61c4..c88b307ef8b83c 100644 --- a/deps/v8/include/v8-inspector.h +++ b/deps/v8/include/v8-inspector.h @@ -365,9 +365,12 @@ class V8_EXPORT V8Inspector { virtual void flushProtocolNotifications() = 0; }; enum ClientTrustLevel { kUntrusted, kFullyTrusted }; + enum SessionPauseState { kWaitingForDebugger, kNotWaitingForDebugger }; + // TODO(chromium:1352175): remove default value once downstream change lands. virtual std::unique_ptr connect( int contextGroupId, Channel*, StringView state, - ClientTrustLevel client_trust_level) { + ClientTrustLevel client_trust_level, + SessionPauseState = kNotWaitingForDebugger) { return nullptr; } diff --git a/deps/v8/include/v8-internal.h b/deps/v8/include/v8-internal.h index a52d066c835e2d..171d7a3f565424 100644 --- a/deps/v8/include/v8-internal.h +++ b/deps/v8/include/v8-internal.h @@ -345,6 +345,14 @@ using ExternalPointer_t = Address; // that the Embedder is not using this byte (really only this one bit) for any // other purpose. This bit also does not collide with the memory tagging // extension (MTE) which would use bits [56, 60). +// +// External pointer tables are also available even when the sandbox is off but +// pointer compression is on. In that case, the mechanism can be used to easy +// alignment requirements as it turns unaligned 64-bit raw pointers into +// aligned 32-bit indices. To "opt-in" to the external pointer table mechanism +// for this purpose, instead of using the ExternalPointer accessors one needs to +// use ExternalPointerHandles directly and use them to access the pointers in an +// ExternalPointerTable. constexpr uint64_t kExternalPointerMarkBit = 1ULL << 62; constexpr uint64_t kExternalPointerTagMask = 0x40ff000000000000; constexpr uint64_t kExternalPointerTagShift = 48; @@ -367,70 +375,54 @@ constexpr uint64_t kAllExternalPointerTypeTags[] = { 0b11001100, 0b11010001, 0b11010010, 0b11010100, 0b11011000, 0b11100001, 0b11100010, 0b11100100, 0b11101000, 0b11110000}; +#define TAG(i) \ + ((kAllExternalPointerTypeTags[i] << kExternalPointerTagShift) | \ + kExternalPointerMarkBit) + // clang-format off -// New entries should be added with state "sandboxed". + // When adding new tags, please ensure that the code using these tags is // "substitution-safe", i.e. still operate safely if external pointers of the // same type are swapped by an attacker. See comment above for more details. -#define TAG(i) (kAllExternalPointerTypeTags[i]) // Shared external pointers are owned by the shared Isolate and stored in the // shared external pointer table associated with that Isolate, where they can // be accessed from multiple threads at the same time. The objects referenced // in this way must therefore always be thread-safe. -#define SHARED_EXTERNAL_POINTER_TAGS(V) \ - V(kFirstSharedTag, sandboxed, TAG(0)) \ - V(kWaiterQueueNodeTag, sandboxed, TAG(0)) \ - V(kExternalStringResourceTag, sandboxed, TAG(1)) \ - V(kExternalStringResourceDataTag, sandboxed, TAG(2)) \ - V(kLastSharedTag, sandboxed, TAG(2)) +#define SHARED_EXTERNAL_POINTER_TAGS(V) \ + V(kFirstSharedTag, TAG(0)) \ + V(kWaiterQueueNodeTag, TAG(0)) \ + V(kExternalStringResourceTag, TAG(1)) \ + V(kExternalStringResourceDataTag, TAG(2)) \ + V(kLastSharedTag, TAG(2)) // External pointers using these tags are kept in a per-Isolate external // pointer table and can only be accessed when this Isolate is active. -#define PER_ISOLATE_EXTERNAL_POINTER_TAGS(V) \ - V(kForeignForeignAddressTag, sandboxed, TAG(10)) \ - V(kNativeContextMicrotaskQueueTag, sandboxed, TAG(11)) \ - V(kEmbedderDataSlotPayloadTag, sandboxed, TAG(12)) \ - V(kExternalObjectValueTag, sandboxed, TAG(13)) \ - V(kCallHandlerInfoCallbackTag, sandboxed, TAG(14)) \ - V(kAccessorInfoGetterTag, sandboxed, TAG(15)) \ - V(kAccessorInfoSetterTag, sandboxed, TAG(16)) \ - V(kWasmInternalFunctionCallTargetTag, sandboxed, TAG(17)) \ - V(kWasmTypeInfoNativeTypeTag, sandboxed, TAG(18)) \ - V(kWasmExportedFunctionDataSignatureTag, sandboxed, TAG(19)) \ - V(kWasmContinuationJmpbufTag, sandboxed, TAG(20)) +#define PER_ISOLATE_EXTERNAL_POINTER_TAGS(V) \ + V(kForeignForeignAddressTag, TAG(10)) \ + V(kNativeContextMicrotaskQueueTag, TAG(11)) \ + V(kEmbedderDataSlotPayloadTag, TAG(12)) \ + V(kExternalObjectValueTag, TAG(13)) \ + V(kCallHandlerInfoCallbackTag, TAG(14)) \ + V(kAccessorInfoGetterTag, TAG(15)) \ + V(kAccessorInfoSetterTag, TAG(16)) \ + V(kWasmInternalFunctionCallTargetTag, TAG(17)) \ + V(kWasmTypeInfoNativeTypeTag, TAG(18)) \ + V(kWasmExportedFunctionDataSignatureTag, TAG(19)) \ + V(kWasmContinuationJmpbufTag, TAG(20)) // All external pointer tags. #define ALL_EXTERNAL_POINTER_TAGS(V) \ SHARED_EXTERNAL_POINTER_TAGS(V) \ PER_ISOLATE_EXTERNAL_POINTER_TAGS(V) -// When the sandbox is enabled, external pointers marked as "sandboxed" above -// use the external pointer table (i.e. are sandboxed). This allows a gradual -// rollout of external pointer sandboxing. If the sandbox is off, no external -// pointers are sandboxed. -// -// Sandboxed external pointer tags are available when compressing pointers even -// when the sandbox is off. Some tags (e.g. kWaiterQueueNodeTag) are used -// manually with the external pointer table even when the sandbox is off to ease -// alignment requirements. -#define sandboxed(X) (X << kExternalPointerTagShift) | kExternalPointerMarkBit -#define unsandboxed(X) kUnsandboxedExternalPointerTag -#if defined(V8_COMPRESS_POINTERS) -#define EXTERNAL_POINTER_TAG_ENUM(Name, State, Bits) Name = State(Bits), -#else -#define EXTERNAL_POINTER_TAG_ENUM(Name, State, Bits) Name = unsandboxed(Bits), -#endif - +#define EXTERNAL_POINTER_TAG_ENUM(Name, Tag) Name = Tag, #define MAKE_TAG(HasMarkBit, TypeTag) \ ((static_cast(TypeTag) << kExternalPointerTagShift) | \ (HasMarkBit ? kExternalPointerMarkBit : 0)) enum ExternalPointerTag : uint64_t { // Empty tag value. Mostly used as placeholder. kExternalPointerNullTag = MAKE_TAG(0, 0b00000000), - // Tag to use for unsandboxed external pointers, which are still stored as - // raw pointers on the heap. - kUnsandboxedExternalPointerTag = MAKE_TAG(0, 0b00000000), // External pointer tag that will match any external pointer. Use with care! kAnyExternalPointerTag = MAKE_TAG(1, 0b11111111), // The free entry tag has all type bits set so every type check with a @@ -444,20 +436,11 @@ enum ExternalPointerTag : uint64_t { }; #undef MAKE_TAG -#undef unsandboxed -#undef sandboxed #undef TAG #undef EXTERNAL_POINTER_TAG_ENUM // clang-format on -// True if the external pointer is sandboxed and so must be referenced through -// an external pointer table. -V8_INLINE static constexpr bool IsSandboxedExternalPointerType( - ExternalPointerTag tag) { - return tag != kUnsandboxedExternalPointerTag; -} - // True if the external pointer must be accessed from the shared isolate's // external pointer table. V8_INLINE static constexpr bool IsSharedExternalPointerType( @@ -466,12 +449,10 @@ V8_INLINE static constexpr bool IsSharedExternalPointerType( } // Sanity checks. -#define CHECK_SHARED_EXTERNAL_POINTER_TAGS(Tag, ...) \ - static_assert(!IsSandboxedExternalPointerType(Tag) || \ - IsSharedExternalPointerType(Tag)); +#define CHECK_SHARED_EXTERNAL_POINTER_TAGS(Tag, ...) \ + static_assert(IsSharedExternalPointerType(Tag)); #define CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS(Tag, ...) \ - static_assert(!IsSandboxedExternalPointerType(Tag) || \ - !IsSharedExternalPointerType(Tag)); + static_assert(!IsSharedExternalPointerType(Tag)); SHARED_EXTERNAL_POINTER_TAGS(CHECK_SHARED_EXTERNAL_POINTER_TAGS) PER_ISOLATE_EXTERNAL_POINTER_TAGS(CHECK_NON_SHARED_EXTERNAL_POINTER_TAGS) @@ -544,7 +525,7 @@ class Internals { static const int kVariousBooleanFlagsOffset = kIsolateStackGuardOffset + kStackGuardSize; static const int kBuiltinTier0EntryTableOffset = - kVariousBooleanFlagsOffset + kApiSystemPointerSize; + kVariousBooleanFlagsOffset + 8; static const int kBuiltinTier0TableOffset = kBuiltinTier0EntryTableOffset + kBuiltinTier0EntryTableSize; static const int kIsolateEmbedderDataOffset = @@ -581,6 +562,8 @@ class Internals { static const int kNodeStateMask = 0x3; static const int kNodeStateIsWeakValue = 2; + static const int kTracedNodeClassIdOffset = kApiSystemPointerSize; + static const int kFirstNonstringType = 0x80; static const int kOddballType = 0x83; static const int kForeignType = 0xcc; @@ -790,24 +773,23 @@ class Internals { V8_INLINE static internal::Address ReadExternalPointerField( v8::Isolate* isolate, internal::Address heap_object_ptr, int offset) { #ifdef V8_ENABLE_SANDBOX - if (IsSandboxedExternalPointerType(tag)) { - // See src/sandbox/external-pointer-table-inl.h. Logic duplicated here so - // it can be inlined and doesn't require an additional call. - internal::Address* table = - IsSharedExternalPointerType(tag) - ? GetSharedExternalPointerTableBase(isolate) - : GetExternalPointerTableBase(isolate); - internal::ExternalPointerHandle handle = - ReadRawField(heap_object_ptr, offset); - uint32_t index = handle >> kExternalPointerIndexShift; - std::atomic* ptr = - reinterpret_cast*>(&table[index]); - internal::Address entry = - std::atomic_load_explicit(ptr, std::memory_order_relaxed); - return entry & ~tag; - } -#endif + static_assert(tag != kExternalPointerNullTag); + // See src/sandbox/external-pointer-table-inl.h. Logic duplicated here so + // it can be inlined and doesn't require an additional call. + internal::Address* table = IsSharedExternalPointerType(tag) + ? GetSharedExternalPointerTableBase(isolate) + : GetExternalPointerTableBase(isolate); + internal::ExternalPointerHandle handle = + ReadRawField(heap_object_ptr, offset); + uint32_t index = handle >> kExternalPointerIndexShift; + std::atomic* ptr = + reinterpret_cast*>(&table[index]); + internal::Address entry = + std::atomic_load_explicit(ptr, std::memory_order_relaxed); + return entry & ~tag; +#else return ReadRawField
(heap_object_ptr, offset); +#endif // V8_ENABLE_SANDBOX } #ifdef V8_COMPRESS_POINTERS diff --git a/deps/v8/include/v8-isolate.h b/deps/v8/include/v8-isolate.h index 2f8acc88682e38..e9f531973b2eef 100644 --- a/deps/v8/include/v8-isolate.h +++ b/deps/v8/include/v8-isolate.h @@ -954,22 +954,20 @@ class V8_EXPORT Isolate { * Attaches a managed C++ heap as an extension to the JavaScript heap. The * embedder maintains ownership of the CppHeap. At most one C++ heap can be * attached to V8. + * * AttachCppHeap cannot be used simultaneously with SetEmbedderHeapTracer. * - * This is an experimental feature and may still change significantly. + * Multi-threaded use requires the use of v8::Locker/v8::Unlocker, see + * CppHeap. */ void AttachCppHeap(CppHeap*); /** * Detaches a managed C++ heap if one was attached using `AttachCppHeap()`. - * - * This is an experimental feature and may still change significantly. */ void DetachCppHeap(); /** - * This is an experimental feature and may still change significantly. - * \returns the C++ heap managed by V8. Only available if such a heap has been * attached using `AttachCppHeap()`. */ @@ -1526,8 +1524,10 @@ class V8_EXPORT Isolate { void SetWasmLoadSourceMapCallback(WasmLoadSourceMapCallback callback); + V8_DEPRECATED("Wasm SIMD is always enabled") void SetWasmSimdEnabledCallback(WasmSimdEnabledCallback callback); + V8_DEPRECATED("Wasm exceptions are always enabled") void SetWasmExceptionsEnabledCallback(WasmExceptionsEnabledCallback callback); void SetSharedArrayBufferConstructorEnabledCallback( diff --git a/deps/v8/include/v8-microtask-queue.h b/deps/v8/include/v8-microtask-queue.h index f1624b903b13c1..85d227fa3fdce6 100644 --- a/deps/v8/include/v8-microtask-queue.h +++ b/deps/v8/include/v8-microtask-queue.h @@ -118,7 +118,12 @@ class V8_EXPORT V8_NODISCARD MicrotasksScope { public: enum Type { kRunMicrotasks, kDoNotRunMicrotasks }; + V8_DEPRECATE_SOON( + "May be incorrect if context was created with non-default microtask " + "queue") MicrotasksScope(Isolate* isolate, Type type); + + MicrotasksScope(Local context, Type type); MicrotasksScope(Isolate* isolate, MicrotaskQueue* microtask_queue, Type type); ~MicrotasksScope(); diff --git a/deps/v8/include/v8-platform.h b/deps/v8/include/v8-platform.h index 7b2c81d136401c..32a82f881e7f93 100644 --- a/deps/v8/include/v8-platform.h +++ b/deps/v8/include/v8-platform.h @@ -923,6 +923,7 @@ class Platform { /** * Allows the embedder to manage memory page allocations. + * Returning nullptr will cause V8 to use the default page allocator. */ virtual PageAllocator* GetPageAllocator() = 0; diff --git a/deps/v8/include/v8-profiler.h b/deps/v8/include/v8-profiler.h index 6145a2257ad05b..6b73fc60bf2c21 100644 --- a/deps/v8/include/v8-profiler.h +++ b/deps/v8/include/v8-profiler.h @@ -175,6 +175,32 @@ class V8_EXPORT CpuProfileNode { static const int kNoColumnNumberInfo = Message::kNoColumnInfo; }; +/** + * An interface for exporting data from V8, using "push" model. + */ +class V8_EXPORT OutputStream { + public: + enum WriteResult { kContinue = 0, kAbort = 1 }; + virtual ~OutputStream() = default; + /** Notify about the end of stream. */ + virtual void EndOfStream() = 0; + /** Get preferred output chunk size. Called only once. */ + virtual int GetChunkSize() { return 1024; } + /** + * Writes the next chunk of snapshot data into the stream. Writing + * can be stopped by returning kAbort as function result. EndOfStream + * will not be called in case writing was aborted. + */ + virtual WriteResult WriteAsciiChunk(char* data, int size) = 0; + /** + * Writes the next chunk of heap stats data into the stream. Writing + * can be stopped by returning kAbort as function result. EndOfStream + * will not be called in case writing was aborted. + */ + virtual WriteResult WriteHeapStatsChunk(HeapStatsUpdate* data, int count) { + return kAbort; + } +}; /** * CpuProfile contains a CPU profile in a form of top-down call tree @@ -182,6 +208,9 @@ class V8_EXPORT CpuProfileNode { */ class V8_EXPORT CpuProfile { public: + enum SerializationFormat { + kJSON = 0 // See format description near 'Serialize' method. + }; /** Returns CPU profile title. */ Local GetTitle() const; @@ -235,6 +264,25 @@ class V8_EXPORT CpuProfile { * All pointers to nodes previously returned become invalid. */ void Delete(); + + /** + * Prepare a serialized representation of the profile. The result + * is written into the stream provided in chunks of specified size. + * + * For the JSON format, heap contents are represented as an object + * with the following structure: + * + * { + * nodes: [nodes array], + * startTime: number, + * endTime: number + * samples: [strings array] + * timeDeltas: [numbers array] + * } + * + */ + void Serialize(OutputStream* stream, + SerializationFormat format = kJSON) const; }; enum CpuProfilingMode { @@ -576,37 +624,6 @@ class V8_EXPORT HeapGraphNode { const HeapGraphEdge* GetChild(int index) const; }; - -/** - * An interface for exporting data from V8, using "push" model. - */ -class V8_EXPORT OutputStream { - public: - enum WriteResult { - kContinue = 0, - kAbort = 1 - }; - virtual ~OutputStream() = default; - /** Notify about the end of stream. */ - virtual void EndOfStream() = 0; - /** Get preferred output chunk size. Called only once. */ - virtual int GetChunkSize() { return 1024; } - /** - * Writes the next chunk of snapshot data into the stream. Writing - * can be stopped by returning kAbort as function result. EndOfStream - * will not be called in case writing was aborted. - */ - virtual WriteResult WriteAsciiChunk(char* data, int size) = 0; - /** - * Writes the next chunk of heap stats data into the stream. Writing - * can be stopped by returning kAbort as function result. EndOfStream - * will not be called in case writing was aborted. - */ - virtual WriteResult WriteHeapStatsChunk(HeapStatsUpdate* data, int count) { - return kAbort; - } -}; - /** * HeapSnapshots record the state of the JS heap at some moment. */ diff --git a/deps/v8/include/v8-template.h b/deps/v8/include/v8-template.h index 669012a9814465..11296cd48896dd 100644 --- a/deps/v8/include/v8-template.h +++ b/deps/v8/include/v8-template.h @@ -30,7 +30,9 @@ class Signature; F(AsyncIteratorPrototype, initial_async_iterator_prototype) \ F(ErrorPrototype, initial_error_prototype) \ F(IteratorPrototype, initial_iterator_prototype) \ - F(ObjProto_valueOf, object_value_of_function) + F(MapIteratorPrototype, initial_map_iterator_prototype) \ + F(ObjProto_valueOf, object_value_of_function) \ + F(SetIteratorPrototype, initial_set_iterator_prototype) enum Intrinsic { #define V8_DECL_INTRINSIC(name, iname) k##name, diff --git a/deps/v8/include/v8-traced-handle.h b/deps/v8/include/v8-traced-handle.h index 7719b9bc0167f2..e0fd57c49d4c55 100644 --- a/deps/v8/include/v8-traced-handle.h +++ b/deps/v8/include/v8-traced-handle.h @@ -403,7 +403,7 @@ void TracedReferenceBase::SetWrapperClassId(uint16_t class_id) { using I = internal::Internals; if (IsEmpty()) return; internal::Address* obj = reinterpret_cast(val_); - uint8_t* addr = reinterpret_cast(obj) + I::kNodeClassIdOffset; + uint8_t* addr = reinterpret_cast(obj) + I::kTracedNodeClassIdOffset; *reinterpret_cast(addr) = class_id; } @@ -411,7 +411,7 @@ uint16_t TracedReferenceBase::WrapperClassId() const { using I = internal::Internals; if (IsEmpty()) return 0; internal::Address* obj = reinterpret_cast(val_); - uint8_t* addr = reinterpret_cast(obj) + I::kNodeClassIdOffset; + uint8_t* addr = reinterpret_cast(obj) + I::kTracedNodeClassIdOffset; return *reinterpret_cast(addr); } diff --git a/deps/v8/include/v8-value.h b/deps/v8/include/v8-value.h index adca989e0022d1..866da201245877 100644 --- a/deps/v8/include/v8-value.h +++ b/deps/v8/include/v8-value.h @@ -244,6 +244,11 @@ class V8_EXPORT Value : public Data { */ bool IsWeakSet() const; + /** + * Returns true if this value is a WeakRef. + */ + bool IsWeakRef() const; + /** * Returns true if this value is an ArrayBuffer. */ diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 027a13a3b239bc..1203175d8edd26 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -8,13 +8,13 @@ // These macros define the version number for the current version. // NOTE these macros are used by some of the tool scripts and the build // system so their names cannot be changed without changing the scripts. -#define V8_MAJOR_VERSION 10 -#define V8_MINOR_VERSION 8 -#define V8_BUILD_NUMBER 168 -#define V8_PATCH_LEVEL 20 +#define V8_MAJOR_VERSION 11 +#define V8_MINOR_VERSION 0 +#define V8_BUILD_NUMBER 0 +#define V8_PATCH_LEVEL 0 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) -#define V8_IS_CANDIDATE_VERSION 0 +#define V8_IS_CANDIDATE_VERSION 1 #endif // V8_INCLUDE_VERSION_H_ diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h index a959be130d5319..2ac27b36b47ee3 100644 --- a/deps/v8/include/v8config.h +++ b/deps/v8/include/v8config.h @@ -288,6 +288,9 @@ path. Add it with -I to the command line // // V8_HAS_ATTRIBUTE_ALWAYS_INLINE - __attribute__((always_inline)) // supported +// V8_HAS_ATTRIBUTE_CONSTINIT - __attribute__((require_constant_ +// initialization)) +// supported // V8_HAS_ATTRIBUTE_NONNULL - __attribute__((nonnull)) supported // V8_HAS_ATTRIBUTE_NOINLINE - __attribute__((noinline)) supported // V8_HAS_ATTRIBUTE_UNUSED - __attribute__((unused)) supported @@ -334,6 +337,8 @@ path. Add it with -I to the command line #endif # define V8_HAS_ATTRIBUTE_ALWAYS_INLINE (__has_attribute(always_inline)) +# define V8_HAS_ATTRIBUTE_CONSTINIT \ + (__has_attribute(require_constant_initialization)) # define V8_HAS_ATTRIBUTE_NONNULL (__has_attribute(nonnull)) # define V8_HAS_ATTRIBUTE_NOINLINE (__has_attribute(noinline)) # define V8_HAS_ATTRIBUTE_UNUSED (__has_attribute(unused)) @@ -450,6 +455,16 @@ path. Add it with -I to the command line #endif +// A macro to mark a declaration as requiring constant initialization. +// Use like: +// int* foo V8_CONSTINIT; +#if V8_HAS_ATTRIBUTE_CONSTINIT +# define V8_CONSTINIT __attribute__((require_constant_initialization)) +#else +# define V8_CONSTINIT +#endif + + // A macro to mark specific arguments as non-null. // Use like: // int add(int* x, int y, int* z) V8_NONNULL(1, 3) { return *x + y + *z; } diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index b5d6231600488a..6689b61d34b899 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -66,7 +66,6 @@ 'V8 Linux64 - debug builder': 'debug_x64', 'V8 Linux64 - external code space - debug - builder': 'debug_x64_external_code_space', 'V8 Linux64 - custom snapshot - debug builder': 'debug_x64_custom', - 'V8 Linux64 - heap sandbox - debug - builder': 'debug_x64_heap_sandbox', 'V8 Linux64 - internal snapshot - builder': 'release_x64_internal', 'V8 Linux64 - debug - header includes - builder': 'debug_x64_header_includes', 'V8 Linux64 - no sandbox - debug builder': 'debug_x64_no_sandbox', @@ -108,9 +107,9 @@ 'V8 Linux - arm64 - sim - MSAN - builder': 'release_simulate_arm64_msan', # FYI. 'V8 iOS - sim - builder': 'release_x64_ios_simulator', - 'V8 Linux64 - arm64 - sim - heap sandbox - debug - builder': 'debug_x64_heap_sandbox_arm64_sim', 'V8 Linux64 - arm64 - sim - no pointer compression - builder': 'release_simulate_arm64_no_pointer_compression', + 'V8 Linux64 - coverage': 'release_x64_coverage', 'V8 Linux64 - cppgc-non-default - debug - builder': 'debug_x64_non_default_cppgc', 'V8 Linux64 - debug - perfetto - builder': 'debug_x64_perfetto', 'V8 Linux64 - disable runtime call stats - builder': 'release_x64_disable_runtime_call_stats', @@ -225,6 +224,7 @@ 'release_simulate_arm64_no_pointer_compression', 'v8_linux64_cppgc_non_default_compile_dbg': 'debug_x64_non_default_cppgc', 'v8_linux64_compile_dbg': 'debug_x64_trybot', + 'v8_linux64_coverage': 'release_x64_coverage', 'v8_linux64_no_sandbox_compile_dbg': 'debug_x64_no_sandbox', 'v8_linux64_dict_tracking_compile_dbg': 'debug_x64_dict_tracking_trybot', 'v8_linux64_disable_runtime_call_stats_compile_rel': 'release_x64_disable_runtime_call_stats', @@ -237,9 +237,7 @@ 'v8_linux64_gcc_compile_rel': 'release_x64_gcc', 'v8_linux64_gcov_coverage': 'release_x64_gcc_coverage', 'v8_linux64_header_includes_dbg': 'debug_x64_header_includes', - 'v8_linux64_heap_sandbox_compile_dbg': 'debug_x64_heap_sandbox', 'v8_linux64_minor_mc_compile_dbg': 'debug_x64_trybot', - 'v8_linux_arm64_sim_heap_sandbox_compile_dbg': 'debug_x64_heap_sandbox_arm64_sim', 'v8_linux64_fyi_compile_rel': 'release_x64_test_features_trybot', 'v8_linux64_nodcheck_compile_rel': 'release_x64', 'v8_linux64_perfetto_compile_dbg': 'debug_x64_perfetto', @@ -284,7 +282,7 @@ 'v8_mac64_compile_rel': 'release_x64_trybot', 'v8_mac64_dbg': 'debug_x64', 'v8_mac64_compile_dbg': 'debug_x64', - 'v8_mac64_compile_full_compile_dbg': 'full_debug_x64', + 'v8_mac64_noopt_compile_dbg': 'full_debug_x64', 'v8_mac64_asan_compile_rel': 'release_x64_asan_no_lsan', 'v8_linux_arm_compile_rel': 'release_simulate_arm_trybot', 'v8_linux_arm_lite_compile_dbg': 'debug_simulate_arm_lite', @@ -499,6 +497,8 @@ 'release_bot', 'x64', 'cfi'], 'release_x64_cfi_clusterfuzz': [ 'release_bot', 'x64', 'cfi_clusterfuzz'], + 'release_x64_coverage': [ + 'release_bot', 'x64', 'clang_coverage'], 'release_x64_fuzzilli': [ 'release_bot', 'x64', 'dcheck_always_on', 'v8_enable_slow_dchecks', 'v8_verify_heap', 'v8_verify_csa', 'fuzzilli'], @@ -556,8 +556,7 @@ 'release_x64_webassembly_disabled': [ 'release_bot', 'x64', 'webassembly_disabled'], 'release_x64_asan_sandbox_testing': [ - 'release_bot', 'x64', 'asan', 'symbolized', 'v8_enable_sandbox_future', - 'v8_expose_memory_corruption_api'], + 'release_bot', 'x64', 'asan', 'symbolized', 'v8_expose_memory_corruption_api'], # Official configs for x64. 'official_x64': [ @@ -583,10 +582,6 @@ 'debug_bot_no_goma', 'x64', 'gcc', 'lld', 'no_custom_libcxx'], 'debug_x64_header_includes': [ 'debug_bot', 'x64', 'v8_check_header_includes'], - 'debug_x64_heap_sandbox': [ - 'debug_bot', 'x64', 'v8_enable_sandbox_future', 'v8_expose_memory_corruption_api'], - 'debug_x64_heap_sandbox_arm64_sim': [ - 'debug_bot', 'simulate_arm64', 'v8_enable_sandbox_future', 'v8_expose_memory_corruption_api'], 'debug_x64_minimal_symbols': [ 'debug_bot', 'x64', 'minimal_symbols'], 'debug_x64_non_default_cppgc': [ @@ -699,6 +694,10 @@ 'gn_args': 'is_clang=true', }, + 'clang_coverage': { + 'gn_args': 'use_clang_coverage=true', + }, + 'conservative_stack_scanning': { 'gn_args': 'v8_enable_conservative_stack_scanning=true ' 'v8_enable_inner_pointer_resolution_mb=true', @@ -793,12 +792,12 @@ 'msan': { 'mixins': ['v8_enable_test_features'], - 'gn_args': 'is_msan=true msan_track_origins=2', + 'gn_args': 'is_msan=true msan_track_origins=2 instrumented_libraries_release="xenial"', }, 'msan_no_origins': { 'mixins': ['v8_enable_test_features'], - 'gn_args': 'is_msan=true msan_track_origins=0', + 'gn_args': 'is_msan=true msan_track_origins=0 instrumented_libraries_release="xenial"', }, 'msvc': { @@ -938,10 +937,6 @@ 'gn_args': 'v8_enable_runtime_call_stats=false', }, - 'v8_enable_sandbox_future': { - 'gn_args': 'v8_enable_sandbox_future=true', - }, - 'v8_expose_memory_corruption_api': { 'gn_args': 'v8_expose_memory_corruption_api=true', }, diff --git a/deps/v8/infra/testing/builders.pyl b/deps/v8/infra/testing/builders.pyl index 516905539cf72c..b02abc8fdafe1b 100644 --- a/deps/v8/infra/testing/builders.pyl +++ b/deps/v8/infra/testing/builders.pyl @@ -89,7 +89,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -149,7 +150,7 @@ }, 'tests': [ {'name': 'mozilla', 'variant': 'default'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'variant': 'default', 'shards': 2}, ], }, @@ -161,7 +162,6 @@ 'tests': [ {'name': 'benchmarks'}, {'name': 'benchmarks', 'variant': 'extra'}, - {'name': 'gcmole'}, {'name': 'mjsunit_sp_frame_access'}, {'name': 'mozilla'}, {'name': 'mozilla', 'variant': 'extra'}, @@ -180,6 +180,7 @@ ], 'shards': 4, }, + {'name': 'gcmole'}, ], }, 'v8_linux_optional_rel': { @@ -210,6 +211,7 @@ '--extra-flags', '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx', ], + 'shards': 2, }, { 'name': 'v8testing', @@ -237,6 +239,7 @@ '--extra-flags', '--noenable-ssse3 --noenable-sse4-1 --noenable-avx', ], + 'shards': 2, }, { 'name': 'v8testing', @@ -258,6 +261,7 @@ 'suffix': 'nosse4', 'variant': 'default', 'test_args': ['--extra-flags', '--noenable-sse4-1 --noenable-avx'], + 'shards': 2, }, { 'name': 'v8testing', @@ -275,7 +279,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2, }, { 'name': 'v8testing', @@ -348,10 +353,22 @@ {'name': 'benchmarks'}, {'name': 'mozilla'}, {'name': 'optimize_for_size'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 3}, ], }, + 'v8_linux64_coverage': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-18.04', + }, + 'tests': [ + # TODO(https://crbug.com/1265931): Speed things up for now. Later replace + # mjsunit and unittests with full v8testing. + # {'name': 'v8testing'}, + {'name': 'mjsunit', 'variant': 'default'}, + {'name': 'unittests', 'variant': 'default'}, + ], + }, 'v8_linux64_cppgc_non_default_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64-avx2', @@ -489,14 +506,6 @@ {'name': 'v8testing'}, ], }, - 'v8_linux64_heap_sandbox_dbg': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-18.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 4}, - ], - }, 'v8_linux64_minor_mc_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64-avx2', @@ -699,14 +708,6 @@ {'name': 'd8testing', 'test_args': ['--gc-stress'], 'shards': 12}, ], }, - 'v8_linux_arm64_sim_heap_sandbox_dbg': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-18.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 14}, - ], - }, 'v8_linux_arm64_rel': { 'swarming_dimensions' : { 'os': 'Ubuntu-18.04', @@ -847,7 +848,7 @@ {'name': 'mozilla'}, {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 2}, - {'name': 'v8testing', 'variant': 'extra'}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, ], }, ############################################################################## @@ -855,7 +856,7 @@ 'v8_mac64_asan_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 8}, @@ -864,7 +865,7 @@ 'v8_mac64_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'mozilla'}, @@ -876,16 +877,25 @@ 'v8_mac64_gc_stress_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'd8testing', 'test_args': ['--gc-stress'], 'shards': 6}, ], }, + 'v8_mac64_noopt_dbg': { + 'swarming_dimensions' : { + 'cpu': 'x86-64', + 'os': 'Mac-12', + }, + 'tests': [ + {'name': 'v8testing', 'shards': 6}, + ], + }, 'v8_mac64_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'mozilla'}, @@ -937,7 +947,7 @@ 'v8_mac_arm64_sim_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 8}, @@ -947,7 +957,7 @@ 'v8_mac_arm64_sim_dbg': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 8}, @@ -957,7 +967,7 @@ 'v8_mac_arm64_sim_nodcheck_rel': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 8}, @@ -989,7 +999,6 @@ 'tests': [ {'name': 'benchmarks'}, {'name': 'benchmarks', 'variant': 'extra'}, - {'name': 'gcmole'}, {'name': 'mjsunit_sp_frame_access'}, {'name': 'mozilla'}, {'name': 'mozilla', 'variant': 'extra'}, @@ -1043,7 +1052,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1051,6 +1061,7 @@ 'test_args': ['--extra-flags', '--noenable-avx'], 'shards': 2 }, + {'name': 'gcmole'}, ], }, 'V8 Linux - arm64 - sim - CFI': { @@ -1107,7 +1118,8 @@ 'name': 'test262', 'suffix': 'nosse3', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-sse3 --noenable-ssse3 --noenable-sse4-1 --noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1125,7 +1137,8 @@ 'name': 'test262', 'suffix': 'nossse3', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-ssse3 --noenable-sse4-1 --noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-ssse3 --noenable-sse4-1 --noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1143,7 +1156,8 @@ 'name': 'test262', 'suffix': 'nosse4', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-sse4-1 --noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-sse4-1 --noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1161,7 +1175,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1203,7 +1218,7 @@ }, 'tests': [ {'name': 'mozilla', 'variant': 'default'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'variant': 'default'}, ], }, @@ -1224,7 +1239,7 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing'}, ], }, @@ -1253,7 +1268,7 @@ {'name': 'optimize_for_size'}, {'name': 'perf_integration'}, {'name': 'test262', 'shards': 2}, - {'name': 'test262', 'variant': 'assert_types'}, + {'name': 'test262', 'variant': 'assert_types', 'shards': 2}, {'name': 'test262', 'variant': 'extra', 'shards': 2}, {'name': 'v8initializers'}, {'name': 'v8testing'}, @@ -1274,7 +1289,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1291,10 +1307,22 @@ {'name': 'benchmarks'}, {'name': 'mozilla'}, {'name': 'optimize_for_size'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 2}, ], }, + 'V8 Linux64 - coverage': { + 'swarming_dimensions' : { + 'os': 'Ubuntu-18.04', + }, + 'tests': [ + # TODO(https://crbug.com/1265931): Speed things up for now. Later replace + # mjsunit and unittests with full v8testing. + # {'name': 'v8testing'}, + {'name': 'mjsunit', 'variant': 'default'}, + {'name': 'unittests', 'variant': 'default'}, + ], + }, 'V8 Linux64 - custom snapshot - debug': { 'swarming_dimensions' : { 'os': 'Ubuntu-18.04', @@ -1337,7 +1365,8 @@ 'name': 'test262', 'suffix': 'noavx', 'variant': 'default', - 'test_args': ['--extra-flags', '--noenable-avx'] + 'test_args': ['--extra-flags', '--noenable-avx'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1497,14 +1526,6 @@ {'name': 'v8testing'}, ], }, - 'V8 Linux64 - heap sandbox - debug': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-18.04', - }, - 'tests': [ - {'name': 'v8testing', 'shards': 2}, - ], - }, 'V8 Linux64 - internal snapshot': { 'swarming_dimensions' : { 'os': 'Ubuntu-18.04', @@ -1545,7 +1566,7 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing'}, ], }, @@ -1667,7 +1688,7 @@ 'V8 Mac64': { 'swarming_dimensions': { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'mozilla'}, @@ -1679,7 +1700,7 @@ 'V8 Mac64 - debug': { 'swarming_dimensions': { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'mozilla'}, @@ -1691,7 +1712,7 @@ 'V8 Mac64 ASAN': { 'swarming_dimensions': { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'v8testing', 'shards': 10}, @@ -1700,7 +1721,7 @@ 'V8 Mac64 GC Stress': { 'swarming_dimensions': { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'tests': [ {'name': 'd8testing', 'test_args': ['--gc-stress'], 'shards': 6}, @@ -1751,7 +1772,7 @@ 'V8 Mac - arm64 - sim - debug': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'swarming_task_attrs': { 'expiration': 14400, @@ -1766,7 +1787,7 @@ 'V8 Mac - arm64 - sim - release': { 'swarming_dimensions' : { 'cpu': 'x86-64', - 'os': 'Mac-10.15', + 'os': 'Mac-12', }, 'swarming_task_attrs': { 'expiration': 14400, @@ -1785,7 +1806,7 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing'}, ], }, @@ -1796,7 +1817,7 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 5}, ], }, @@ -1806,9 +1827,9 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, - {'name': 'v8testing'}, - {'name': 'v8testing', 'variant': 'extra'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, + {'name': 'v8testing', 'shards': 2}, + {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, ], }, 'V8 Win64 - debug': { @@ -1828,8 +1849,8 @@ }, 'tests': [ {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, - {'name': 'v8testing'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, + {'name': 'v8testing', 'shards': 2}, ], }, 'V8 Win64 ASAN': { @@ -1951,7 +1972,8 @@ 'name': 'test262', 'suffix': 'armv8-a', 'variant': 'default', - 'test_args': ['--extra-flags', '--enable-armv8'] + 'test_args': ['--extra-flags', '--enable-armv8'], + 'shards': 2 }, { 'name': 'v8testing', @@ -1970,6 +1992,7 @@ 'suffix': 'novfp3', 'variant': 'default', 'test_args': ['--novfp3'], + 'shards': 2 }, { 'name': 'v8testing', @@ -2055,7 +2078,7 @@ 'tests': [ {'name': 'mjsunit_sp_frame_access'}, {'name': 'mozilla'}, - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 3}, {'name': 'v8testing', 'variant': 'extra', 'shards': 2}, ], @@ -2093,19 +2116,6 @@ }, ], }, - 'V8 Linux64 - arm64 - sim - heap sandbox - debug': { - 'swarming_dimensions' : { - 'os': 'Ubuntu-18.04', - }, - 'swarming_task_attrs': { - 'expiration': 14400, - 'hard_timeout': 7200, - 'priority': 35, - }, - 'tests': [ - {'name': 'v8testing', 'shards': 14}, - ], - }, 'V8 Linux - loong64 - sim': { 'swarming_dimensions': { 'os': 'Ubuntu-18.04', @@ -2129,7 +2139,7 @@ 'priority': 35, }, 'tests': [ - {'name': 'test262', 'variant': 'default'}, + {'name': 'test262', 'variant': 'default', 'shards': 2}, {'name': 'v8testing', 'shards': 4}, ], }, diff --git a/deps/v8/src/api/api-natives.cc b/deps/v8/src/api/api-natives.cc index 8624c279d66e4f..d0b298723423e9 100644 --- a/deps/v8/src/api/api-natives.cc +++ b/deps/v8/src/api/api-natives.cc @@ -83,6 +83,8 @@ MaybeHandle DefineAccessorProperty(Isolate* isolate, InstantiateFunction(isolate, Handle::cast(getter)), Object); + Handle trampoline = BUILTIN_CODE(isolate, DebugBreakTrampoline); + Handle::cast(getter)->set_code(*trampoline); } if (setter->IsFunctionTemplateInfo() && FunctionTemplateInfo::cast(*setter).BreakAtEntry()) { @@ -91,6 +93,8 @@ MaybeHandle DefineAccessorProperty(Isolate* isolate, InstantiateFunction(isolate, Handle::cast(setter)), Object); + Handle trampoline = BUILTIN_CODE(isolate, DebugBreakTrampoline); + Handle::cast(setter)->set_code(*trampoline); } RETURN_ON_EXCEPTION( isolate, diff --git a/deps/v8/src/api/api.cc b/deps/v8/src/api/api.cc index a4a4381614e1fd..c05297cac024fb 100644 --- a/deps/v8/src/api/api.cc +++ b/deps/v8/src/api/api.cc @@ -63,6 +63,7 @@ #include "src/handles/global-handles.h" #include "src/handles/persistent-handles.h" #include "src/handles/shared-object-conveyor-handles.h" +#include "src/handles/traced-handles.h" #include "src/heap/embedder-tracing.h" #include "src/heap/heap-inl.h" #include "src/heap/heap-write-barrier.h" @@ -616,7 +617,10 @@ StartupData SnapshotCreator::CreateBlob( i::Snapshot::ClearReconstructableDataForSerialization( i_isolate, function_code_handling == FunctionCodeHandling::kClear); - i::GlobalSafepointScope global_safepoint(i_isolate); + i::SafepointKind safepoint_kind = i_isolate->has_shared_heap() + ? i::SafepointKind::kGlobal + : i::SafepointKind::kIsolate; + i::SafepointScope safepoint_scope(i_isolate, safepoint_kind); i::DisallowGarbageCollection no_gc_from_here_on; // Create a vector with all contexts and clear associated Persistent fields. @@ -654,7 +658,7 @@ StartupData SnapshotCreator::CreateBlob( data->created_ = true; return i::Snapshot::Create(i_isolate, &contexts, embedder_fields_serializers, - global_safepoint, no_gc_from_here_on); + safepoint_scope, no_gc_from_here_on); } bool StartupData::CanBeRehashed() const { @@ -792,8 +796,7 @@ i::Address* GlobalizeTracedReference(i::Isolate* i_isolate, i::Address* obj, Utils::ApiCheck((slot != nullptr), "v8::GlobalizeTracedReference", "the address slot must be not null"); #endif - i::Handle result = - i_isolate->global_handles()->CreateTraced(*obj, slot, store_mode); + auto result = i_isolate->traced_handles()->Create(*obj, slot, store_mode); #ifdef VERIFY_HEAP if (i::v8_flags.verify_heap) { i::Object(*obj).ObjectVerify(i_isolate); @@ -803,16 +806,16 @@ i::Address* GlobalizeTracedReference(i::Isolate* i_isolate, i::Address* obj, } void MoveTracedReference(internal::Address** from, internal::Address** to) { - GlobalHandles::MoveTracedReference(from, to); + TracedHandles::Move(from, to); } void CopyTracedReference(const internal::Address* const* from, internal::Address** to) { - GlobalHandles::CopyTracedReference(from, to); + TracedHandles::Copy(from, to); } void DisposeTracedReference(internal::Address* location) { - GlobalHandles::DestroyTracedReference(location); + TracedHandles::Destroy(location); } } // namespace internal @@ -3732,6 +3735,7 @@ bool Value::IsWasmModuleObject() const { return false; } #endif // V8_ENABLE_WEBASSEMBLY VALUE_IS_SPECIFIC_TYPE(WeakMap, JSWeakMap) VALUE_IS_SPECIFIC_TYPE(WeakSet, JSWeakSet) +VALUE_IS_SPECIFIC_TYPE(WeakRef, JSWeakRef) #undef VALUE_IS_SPECIFIC_TYPE @@ -6140,7 +6144,8 @@ void v8::Object::SetAlignedPointerInInternalField(int index, void* value) { .store_aligned_pointer(obj->GetIsolate(), value), location, "Unaligned pointer"); DCHECK_EQ(value, GetAlignedPointerFromInternalField(index)); - internal::WriteBarrier::MarkingFromInternalFields(i::JSObject::cast(*obj)); + internal::WriteBarrier::CombinedBarrierFromInternalFields( + i::JSObject::cast(*obj), value); } void v8::Object::SetAlignedPointerInInternalFields(int argc, int indices[], @@ -6163,7 +6168,8 @@ void v8::Object::SetAlignedPointerInInternalFields(int argc, int indices[], location, "Unaligned pointer"); DCHECK_EQ(value, GetAlignedPointerFromInternalField(index)); } - internal::WriteBarrier::MarkingFromInternalFields(js_obj); + internal::WriteBarrier::CombinedBarrierFromInternalFields(js_obj, argc, + values); } // --- E n v i r o n m e n t --- @@ -6611,10 +6617,31 @@ v8::Isolate* Context::GetIsolate() { v8::MicrotaskQueue* Context::GetMicrotaskQueue() { i::Handle env = Utils::OpenHandle(this); Utils::ApiCheck(env->IsNativeContext(), "v8::Context::GetMicrotaskQueue", - "Must be calld on a native context"); + "Must be called on a native context"); return i::Handle::cast(env)->microtask_queue(); } +void Context::SetMicrotaskQueue(v8::MicrotaskQueue* queue) { + i::Handle context = Utils::OpenHandle(this); + i::Isolate* i_isolate = context->GetIsolate(); + Utils::ApiCheck(context->IsNativeContext(), "v8::Context::SetMicrotaskQueue", + "Must be called on a native context"); + i::Handle native_context = + i::Handle::cast(context); + i::HandleScopeImplementer* impl = i_isolate->handle_scope_implementer(); + Utils::ApiCheck(!native_context->microtask_queue()->IsRunningMicrotasks(), + "v8::Context::SetMicrotaskQueue", + "Must not be running microtasks"); + Utils::ApiCheck( + native_context->microtask_queue()->GetMicrotasksScopeDepth() == 0, + "v8::Context::SetMicrotaskQueue", "Must not have microtask scope pushed"); + Utils::ApiCheck(impl->EnteredContextCount() == 0, + "v8::Context::SetMicrotaskQueue()", + "Cannot set Microtask Queue with an entered context"); + native_context->set_microtask_queue( + i_isolate, static_cast(queue)); +} + v8::Local Context::Global() { i::Handle context = Utils::OpenHandle(this); i::Isolate* i_isolate = context->GetIsolate(); @@ -8086,14 +8113,32 @@ std::shared_ptr ToInternal( } } // namespace -void v8::ArrayBuffer::Detach() { +Maybe v8::ArrayBuffer::Detach(v8::Local key) { i::Handle obj = Utils::OpenHandle(this); i::Isolate* i_isolate = obj->GetIsolate(); Utils::ApiCheck(obj->is_detachable(), "v8::ArrayBuffer::Detach", "Only detachable ArrayBuffers can be detached"); - API_RCS_SCOPE(i_isolate, ArrayBuffer, Detach); - ENTER_V8_NO_SCRIPT_NO_EXCEPTION(i_isolate); - obj->Detach(); + ENTER_V8_NO_SCRIPT( + i_isolate, reinterpret_cast(i_isolate)->GetCurrentContext(), + ArrayBuffer, Detach, Nothing(), i::HandleScope); + if (!key.IsEmpty()) { + i::Handle i_key = Utils::OpenHandle(*key); + constexpr bool kForceForWasmMemory = false; + has_pending_exception = + i::JSArrayBuffer::Detach(obj, kForceForWasmMemory, i_key).IsNothing(); + } else { + has_pending_exception = i::JSArrayBuffer::Detach(obj).IsNothing(); + } + RETURN_ON_FAILED_EXECUTION_PRIMITIVE(bool); + return Just(true); +} + +void v8::ArrayBuffer::Detach() { Detach(Local()).Check(); } + +void v8::ArrayBuffer::SetDetachKey(v8::Local key) { + i::Handle obj = Utils::OpenHandle(this); + i::Handle i_key = Utils::OpenHandle(*key); + obj->set_detach_key(*i_key); } size_t v8::ArrayBuffer::ByteLength() const { @@ -9557,16 +9602,19 @@ CALLBACK_SETTER(WasmAsyncResolvePromiseCallback, CALLBACK_SETTER(WasmLoadSourceMapCallback, WasmLoadSourceMapCallback, wasm_load_source_map_callback) -CALLBACK_SETTER(WasmSimdEnabledCallback, WasmSimdEnabledCallback, - wasm_simd_enabled_callback) - -CALLBACK_SETTER(WasmExceptionsEnabledCallback, WasmExceptionsEnabledCallback, - wasm_exceptions_enabled_callback) - CALLBACK_SETTER(SharedArrayBufferConstructorEnabledCallback, SharedArrayBufferConstructorEnabledCallback, sharedarraybuffer_constructor_enabled_callback) +void Isolate::SetWasmExceptionsEnabledCallback( + WasmExceptionsEnabledCallback callback) { + // Exceptions are always enabled +} + +void Isolate::SetWasmSimdEnabledCallback(WasmSimdEnabledCallback callback) { + // SIMD is always enabled +} + void Isolate::InstallConditionalFeatures(Local context) { v8::HandleScope handle_scope(this); v8::Context::Scope context_scope(context); @@ -9725,6 +9773,11 @@ MicrotasksScope::MicrotasksScope(Isolate* v8_isolate, MicrotasksScope::Type type) : MicrotasksScope(v8_isolate, nullptr, type) {} +MicrotasksScope::MicrotasksScope(Local v8_context, + MicrotasksScope::Type type) + : MicrotasksScope(v8_context->GetIsolate(), v8_context->GetMicrotaskQueue(), + type) {} + MicrotasksScope::MicrotasksScope(Isolate* v8_isolate, MicrotaskQueue* microtask_queue, MicrotasksScope::Type type) @@ -10046,6 +10099,21 @@ int64_t CpuProfile::GetEndTime() const { return profile->end_time().since_origin().InMicroseconds(); } +static i::CpuProfile* ToInternal(const CpuProfile* profile) { + return const_cast( + reinterpret_cast(profile)); +} + +void CpuProfile::Serialize(OutputStream* stream, + CpuProfile::SerializationFormat format) const { + Utils::ApiCheck(format == kJSON, "v8::CpuProfile::Serialize", + "Unknown serialization format"); + Utils::ApiCheck(stream->GetChunkSize() > 0, "v8::CpuProfile::Serialize", + "Invalid stream chunk size"); + i::CpuProfileJSONSerializer serializer(ToInternal(this)); + serializer.Serialize(stream); +} + int CpuProfile::GetSamplesCount() const { return reinterpret_cast(this)->samples_count(); } @@ -10508,7 +10576,7 @@ void EmbedderHeapTracer::IterateTracedGlobalHandles( TracedGlobalHandleVisitor* visitor) { i::Isolate* i_isolate = reinterpret_cast(v8_isolate_); i::DisallowGarbageCollection no_gc; - i_isolate->global_handles()->IterateTracedNodes(visitor); + i_isolate->traced_handles()->Iterate(visitor); } bool EmbedderHeapTracer::IsRootForNonTracingGC( diff --git a/deps/v8/src/asmjs/asm-js.cc b/deps/v8/src/asmjs/asm-js.cc index a6973bd385c682..cb904a0be0db9a 100644 --- a/deps/v8/src/asmjs/asm-js.cc +++ b/deps/v8/src/asmjs/asm-js.cc @@ -133,7 +133,7 @@ void Report(Handle