+26.0.0
+ |
+
25.9.0
25.8.2
25.8.1
diff --git a/common.gypi b/common.gypi
index 183d8707682e8e..a27c0163a84491 100644
--- a/common.gypi
+++ b/common.gypi
@@ -38,7 +38,7 @@
# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
- 'v8_embedder_string': '-node.17',
+ 'v8_embedder_string': '-node.16',
##### V8 defaults for Node.js #####
diff --git a/deps/v8/.clang-format b/deps/v8/.clang-format
index d655b2039f8848..370034d67bba3a 100644
--- a/deps/v8/.clang-format
+++ b/deps/v8/.clang-format
@@ -14,6 +14,11 @@ Macros:
- CASE_=case
- FOR_WITH_HANDLE_SCOPE(isolate, init, loop_var, limit_check, increment)=for(init; loop_var; increment)
- WHILE_WITH_HANDLE_SCOPE(isolate, limit_check)=while(limit_check)
+ # Make clang-format parse conditions in flag implications as expressions, not type definitions.
+ - DEFINE_IMPLICATION(cond,flag,value)=if(cond) { flag; };
+ - DEFINE_WEAK_IMPLICATION(cond,flag,value)=if(cond) { flag; };
+ - DEFINE_VALUE_IMPLICATION(cond,flag,value)=if(cond) { flag = value; };
+ - DEFINE_WEAK_VALUE_IMPLICATION(cond,flag,value)=if(cond) { flag = value; };
StatementMacros:
- DECL_CAST
- DECL_VERIFIER
diff --git a/deps/v8/.gitignore b/deps/v8/.gitignore
index 388d39863d83cc..240c287763ca99 100644
--- a/deps/v8/.gitignore
+++ b/deps/v8/.gitignore
@@ -155,6 +155,7 @@ bazel-out
bazel-testlogs
bazel-v8
launch.json
+MODULE.bazel.lock
!/third_party/jinja2
!/third_party/markupsafe
!/third_party/zlib
diff --git a/deps/v8/.gn b/deps/v8/.gn
index e13ae6d5ec82da..6ead7196c515cf 100644
--- a/deps/v8/.gn
+++ b/deps/v8/.gn
@@ -36,6 +36,9 @@ default_args = {
# Use Siso instead of Ninja.
use_siso = true
+
+ # V8 should stay in C++20 for now.
+ use_cxx23 = false
}
# These are the list of GN files that run exec_script. This whitelist exists
diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS
index 96d5b843d2badf..c5ed884e128c21 100644
--- a/deps/v8/AUTHORS
+++ b/deps/v8/AUTHORS
@@ -272,6 +272,7 @@ Rong Wang
Ross Kirsling
Ruben Bridgewater
Ryan Dahl
+Sahil Shaikh
Sakthipriyan Vairamani (thefourtheye)
Sander Mathijs van Veen
Sandro Santilli
@@ -340,6 +341,7 @@ Zhao Jiazhong
Zhao Qin
Zhaojun Meng
Zheng Liu
+Zhongqi Wang
Zhongping Wang
柳荣一
Yang Xiang
diff --git a/deps/v8/BUILD.bazel b/deps/v8/BUILD.bazel
index 91da3cadbb526a..f28fea4e8aa162 100644
--- a/deps/v8/BUILD.bazel
+++ b/deps/v8/BUILD.bazel
@@ -163,6 +163,13 @@ v8_flag(
default = True,
)
+v8_flag(
+ name = "v8_enable_undefined_double",
+ default = True,
+)
+
+v8_flag(name = "v8_enable_experimental_tq_to_tsa")
+
# Default setting for v8_enable_maglev
selects.config_setting_group(
name = "maglev_by_default",
@@ -513,12 +520,12 @@ v8_config(
"v8_enable_seeded_array_index_hash": "V8_ENABLE_SEEDED_ARRAY_INDEX_HASH",
"v8_jitless": "V8_JITLESS",
"v8_enable_vtunejit": "ENABLE_VTUNE_JIT_INTERFACE",
+ "v8_enable_undefined_double": "V8_ENABLE_UNDEFINED_DOUBLE",
},
defines = [
"GOOGLE3",
"V8_ADVANCED_BIGINT_ALGORITHMS",
"V8_CONCURRENT_MARKING",
- "V8_ENABLE_LEAPTIERING",
"V8_ENABLE_SPARKPLUG",
"V8_ENABLE_EXTENSIBLE_RO_SNAPSHOT",
"V8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA",
@@ -529,6 +536,18 @@ v8_config(
"V8_ENABLE_CHECKS",
],
"//conditions:default": [],
+ }) + select({
+ "@v8//bazel/config:asan_enabled" : [ "V8_USE_ADDRESS_SANITIZER" ],
+ "//conditions:default": [],
+ }) + select({
+ "@v8//bazel/config:hwasan_enabled" : [ "V8_USE_HWADDRESS_SANITIZER" ],
+ "//conditions:default": [],
+ }) + select({
+ "@v8//bazel/config:msan_enabled" : [ "V8_USE_MEMORY_SANITIZER" ],
+ "//conditions:default": [],
+ }) + select({
+ "@v8//bazel/config:ubsan_enabled" : [ "V8_USE_UNDEFINED_BEHAVIOR_SANITIZER" ],
+ "//conditions:default": [],
}) + select(
{
"@v8//bazel/config:v8_target_ia32": ["V8_TARGET_ARCH_IA32"],
@@ -803,6 +822,7 @@ filegroup(
"src/base/abort-mode.cc",
"src/base/abort-mode.h",
"src/base/address-region.h",
+ "src/base/algorithm.h",
"src/base/atomic-utils.h",
"src/base/atomicops.h",
"src/base/base-export.h",
@@ -832,6 +852,7 @@ filegroup(
"src/base/file-utils.cc",
"src/base/file-utils.h",
"src/base/flags.h",
+ "src/base/float16.h",
"src/base/fpu.cc",
"src/base/fpu.h",
"src/base/functional/bind-internal.h",
@@ -849,6 +870,7 @@ filegroup(
"src/base/logging.cc",
"src/base/logging.h",
"src/base/macros.h",
+ "src/base/memcopy.h",
"src/base/memory.h",
"src/base/numbers/bignum.cc",
"src/base/numbers/bignum.h",
@@ -1337,7 +1359,14 @@ filegroup(
"src/torque/types.h",
"src/torque/utils.cc",
"src/torque/utils.h",
- ],
+ ] + select({
+ ":is_v8_enable_experimental_tq_to_tsa": [
+ "src/torque/ast-visitor.h",
+ "src/torque/tsa-generator.cc",
+ "src/torque/tsa-generator.h",
+ ],
+ "//conditions:default": [],
+ }),
)
filegroup(
@@ -1422,7 +1451,12 @@ filegroup(
"src/builtins/builtins-function.cc",
"src/builtins/builtins-global.cc",
"src/builtins/builtins-internal.cc",
+ "src/builtins/builtins-iterator.h",
+ "src/builtins/builtins-iterator-inl.h",
"src/builtins/builtins-json.cc",
+ "src/builtins/builtins-math.cc",
+ "src/builtins/builtins-math-xsum.h",
+ "src/builtins/builtins-math-xsum.cc",
"src/builtins/builtins-number.cc",
"src/builtins/builtins-object.cc",
"src/builtins/builtins-promise.h",
@@ -1631,6 +1665,7 @@ filegroup(
"src/execution/isolate.cc",
"src/execution/isolate.h",
"src/execution/isolate-data.h",
+ "src/execution/isolate-data-fields.h",
"src/execution/isolate-inl.h",
"src/execution/isolate-utils.h",
"src/execution/isolate-utils-inl.h",
@@ -1707,9 +1742,9 @@ filegroup(
"src/heap/base-space.h",
"src/heap/base/active-system-pages.cc",
"src/heap/base/active-system-pages.h",
- "src/heap/memory-chunk-metadata.cc",
- "src/heap/memory-chunk-metadata.h",
- "src/heap/memory-chunk-metadata-inl.h",
+ "src/heap/base-page.cc",
+ "src/heap/base-page.h",
+ "src/heap/base-page-inl.h",
"src/heap/code-range.cc",
"src/heap/code-range.h",
"src/heap/trusted-range.cc",
@@ -1789,9 +1824,9 @@ filegroup(
"src/heap/incremental-marking-job.h",
"src/heap/index-generator.cc",
"src/heap/index-generator.h",
- "src/heap/large-page-metadata.cc",
- "src/heap/large-page-metadata.h",
- "src/heap/large-page-metadata-inl.h",
+ "src/heap/large-page.cc",
+ "src/heap/large-page.h",
+ "src/heap/large-page-inl.h",
"src/heap/large-spaces.cc",
"src/heap/large-spaces.h",
"src/heap/linear-allocation-area.h",
@@ -1833,9 +1868,9 @@ filegroup(
"src/heap/memory-allocator.h",
"src/heap/memory-balancer.cc",
"src/heap/memory-balancer.h",
- "src/heap/mutable-page-metadata.cc",
- "src/heap/mutable-page-metadata.h",
- "src/heap/mutable-page-metadata-inl.h",
+ "src/heap/mutable-page.cc",
+ "src/heap/mutable-page.h",
+ "src/heap/mutable-page-inl.h",
"src/heap/memory-chunk.cc",
"src/heap/memory-chunk.h",
"src/heap/memory-chunk-constants.h",
@@ -1860,9 +1895,9 @@ filegroup(
"src/heap/heap-visitor.cc",
"src/heap/heap-visitor.h",
"src/heap/heap-visitor-inl.h",
- "src/heap/page-metadata.cc",
- "src/heap/page-metadata.h",
- "src/heap/page-metadata-inl.h",
+ "src/heap/normal-page.cc",
+ "src/heap/normal-page.h",
+ "src/heap/normal-page-inl.h",
"src/heap/paged-spaces.cc",
"src/heap/paged-spaces.h",
"src/heap/paged-spaces-inl.h",
@@ -2210,6 +2245,8 @@ filegroup(
"src/objects/hole.h",
"src/objects/trusted-object.h",
"src/objects/trusted-object-inl.h",
+ "src/objects/trusted-pointer.h",
+ "src/objects/trusted-pointer-inl.h",
"src/objects/option-utils.cc",
"src/objects/option-utils.h",
"src/objects/ordered-hash-table.cc",
@@ -2390,6 +2427,10 @@ filegroup(
"src/regexp/regexp.h",
"src/regexp/regexp-ast.cc",
"src/regexp/regexp-ast.h",
+ "src/regexp/regexp-ast-printer.cc",
+ "src/regexp/regexp-ast-printer.h",
+ "src/regexp/regexp-bytecode-analysis.cc",
+ "src/regexp/regexp-bytecode-analysis.h",
"src/regexp/regexp-bytecode-generator.cc",
"src/regexp/regexp-bytecode-generator.h",
"src/regexp/regexp-bytecode-generator-inl.h",
@@ -2411,6 +2452,8 @@ filegroup(
"src/regexp/regexp-error.cc",
"src/regexp/regexp-error.h",
"src/regexp/regexp-flags.h",
+ "src/regexp/regexp-graph-printer.cc",
+ "src/regexp/regexp-graph-printer.h",
"src/regexp/regexp-interpreter.cc",
"src/regexp/regexp-interpreter.h",
"src/regexp/regexp-macro-assembler.cc",
@@ -2419,8 +2462,12 @@ filegroup(
"src/regexp/regexp-macro-assembler-tracer.cc",
"src/regexp/regexp-macro-assembler-tracer.h",
"src/regexp/regexp-nodes.h",
+ "src/regexp/regexp-node-printer.cc",
+ "src/regexp/regexp-node-printer.h",
"src/regexp/regexp-parser.cc",
"src/regexp/regexp-parser.h",
+ "src/regexp/regexp-printer.cc",
+ "src/regexp/regexp-printer.h",
"src/regexp/regexp-result-vector.cc",
"src/regexp/regexp-result-vector.h",
"src/regexp/regexp-stack.cc",
@@ -2470,6 +2517,8 @@ filegroup(
"src/runtime/runtime-weak-refs.cc",
"src/sandbox/bounded-size.h",
"src/sandbox/bounded-size-inl.h",
+ "src/sandbox/bytecode-verifier.h",
+ "src/sandbox/bytecode-verifier.cc",
"src/sandbox/check.h",
"src/sandbox/external-pointer.h",
"src/sandbox/external-pointer-inl.h",
@@ -2497,6 +2546,8 @@ filegroup(
"src/sandbox/code-sandboxing-mode.h",
"src/sandbox/compactible-external-entity-table-inl.h",
"src/sandbox/compactible-external-entity-table.h",
+ "src/sandbox/external-strings-cage.cc",
+ "src/sandbox/external-strings-cage.h",
"src/sandbox/isolate.h",
"src/sandbox/isolate-inl.h",
"src/sandbox/indirect-pointer.h",
@@ -2509,6 +2560,8 @@ filegroup(
"src/sandbox/hardware-support.h",
"src/sandbox/sandbox.cc",
"src/sandbox/sandbox.h",
+ "src/sandbox/sandboxable-thread.cc",
+ "src/sandbox/sandboxable-thread.h",
"src/sandbox/sandbox-malloc.h",
"src/sandbox/sandboxed-pointer.h",
"src/sandbox/sandboxed-pointer-inl.h",
@@ -2565,6 +2618,7 @@ filegroup(
"src/snapshot/startup-serializer.h",
"src/strings/char-predicates.h",
"src/strings/char-predicates-inl.h",
+ "src/strings/owning-external-string-resource.h",
"src/strings/string-builder.cc",
"src/strings/string-builder.h",
"src/strings/string-builder-inl.h",
@@ -2590,6 +2644,7 @@ filegroup(
"src/tasks/task-utils.cc",
"src/tasks/task-utils.h",
"src/torque/runtime-macro-shims.h",
+ "src/tracing/perfetto-sdk.h",
"src/tracing/trace-event.cc",
"src/tracing/trace-event.h",
"src/tracing/trace-event-no-perfetto.h",
@@ -2613,7 +2668,6 @@ filegroup(
"src/utils/identity-map.h",
"src/utils/locked-queue.h",
"src/utils/locked-queue-inl.h",
- "src/utils/memcopy.cc",
"src/utils/memcopy.h",
"src/utils/output-stream.cc",
"src/utils/output-stream.h",
@@ -2902,6 +2956,7 @@ filegroup(
"//conditions:default": [],
}) + select({
":enable_maglev": [
+ "src/maglev/hamt.h",
"src/maglev/maglev-assembler-inl.h",
"src/maglev/maglev-assembler.h",
"src/maglev/maglev-basic-block.h",
@@ -2925,12 +2980,15 @@ filegroup(
"src/maglev/maglev-ir-inl.h",
"src/maglev/maglev-ir.h",
"src/maglev/maglev-kna-processor.h",
+ "src/maglev/maglev-node-type.h",
"src/maglev/maglev-phi-representation-selector.h",
"src/maglev/maglev-truncation.h",
"src/maglev/maglev-pipeline-statistics.h",
"src/maglev/maglev-post-hoc-optimizations-processors.h",
"src/maglev/maglev-pre-regalloc-codegen-processors.h",
+ "src/maglev/maglev-range.h",
"src/maglev/maglev-range-analysis.h",
+ "src/maglev/maglev-range-verification.h",
"src/maglev/maglev-reducer-inl.h",
"src/maglev/maglev-reducer.h",
"src/maglev/maglev-regalloc-data.h",
@@ -2954,9 +3012,11 @@ filegroup(
"src/maglev/maglev-inlining.cc",
"src/maglev/maglev-interpreter-frame-state.cc",
"src/maglev/maglev-ir.cc",
+ "src/maglev/maglev-node-type.cc",
"src/maglev/maglev-phi-representation-selector.cc",
"src/maglev/maglev-truncation.cc",
"src/maglev/maglev-pipeline-statistics.cc",
+ "src/maglev/maglev-range-verification.cc",
"src/maglev/maglev-regalloc.cc",
"src/maglev/maglev.cc",
],
@@ -3032,12 +3092,13 @@ filegroup(
"src/wasm/code-space-access.h",
"src/wasm/compilation-environment.h",
"src/wasm/compilation-environment-inl.h",
+ "src/wasm/compilation-hints-generation.cc",
+ "src/wasm/compilation-hints-generation.h",
"src/wasm/constant-expression.cc",
"src/wasm/constant-expression.h",
"src/wasm/constant-expression-interface.cc",
"src/wasm/constant-expression-interface.h",
"src/wasm/decoder.h",
- "src/wasm/float16.h",
"src/wasm/function-body-decoder.cc",
"src/wasm/function-body-decoder.h",
"src/wasm/function-body-decoder-impl.h",
@@ -3103,7 +3164,11 @@ filegroup(
"src/wasm/wasm-features.cc",
"src/wasm/wasm-features.h",
"src/wasm/wasm-import-wrapper-cache.cc",
+ "src/wasm/wasm-stack-wrapper-cache.cc",
+ "src/wasm/wasm-wrapper-cache.cc",
"src/wasm/wasm-import-wrapper-cache.h",
+ "src/wasm/wasm-stack-wrapper-cache.h",
+ "src/wasm/wasm-wrapper-cache.h",
"src/wasm/wasm-init-expr.h",
"src/wasm/wasm-js.cc",
"src/wasm/wasm-js.h",
@@ -3135,6 +3200,7 @@ filegroup(
"src/wasm/wrappers.cc",
"src/wasm/wrappers.h",
"src/wasm/wrappers-inl.h",
+ "src/wasm/wasm-wrapper-cache-inl.h",
"third_party/utf8-decoder/generalized-utf8-decoder.h",
],
"//conditions:default": [],
@@ -3254,8 +3320,8 @@ filegroup(
"src/compiler/backend/spill-placer.cc",
"src/compiler/backend/spill-placer.h",
"src/compiler/backend/unwinding-info-writer.h",
- "src/compiler/basic-block-instrumentor.cc",
- "src/compiler/basic-block-instrumentor.h",
+ "src/compiler/basic-block-call-graph-profiler.cc",
+ "src/compiler/basic-block-call-graph-profiler.h",
"src/compiler/branch-elimination.cc",
"src/compiler/branch-elimination.h",
"src/compiler/bytecode-analysis.cc",
@@ -3509,6 +3575,7 @@ filegroup(
"src/compiler/turboshaft/late-load-elimination-reducer.h",
"src/compiler/turboshaft/layered-hash-map.h",
"src/compiler/turboshaft/load-store-simplification-reducer.h",
+ "src/compiler/turboshaft/load-store-verification-reducer.h",
"src/compiler/turboshaft/loop-finder.cc",
"src/compiler/turboshaft/loop-finder.h",
"src/compiler/turboshaft/loop-peeling-phase.cc",
@@ -3521,6 +3588,7 @@ filegroup(
"src/compiler/turboshaft/machine-lowering-phase.cc",
"src/compiler/turboshaft/machine-lowering-phase.h",
"src/compiler/turboshaft/machine-lowering-reducer-inl.h",
+ "src/compiler/turboshaft/maglev-assert-types-reducer.h",
"src/compiler/turboshaft/turbolev-early-lowering-reducer-inl.h",
"src/compiler/turboshaft/turbolev-frontend-pipeline.cc",
"src/compiler/turboshaft/turbolev-frontend-pipeline.h",
@@ -3714,6 +3782,7 @@ filegroup(
# include them explicitely when Maglev is disabled.
":enable_maglev": [],
"//conditions:default": [
+ "src/maglev/hamt.h",
"src/maglev/maglev-basic-block.h",
"src/maglev/maglev-code-gen-state.h",
"src/maglev/maglev-code-gen-state-inl.h",
@@ -3744,7 +3813,12 @@ filegroup(
"src/maglev/maglev-ir.h",
"src/maglev/maglev-ir-inl.h",
"src/maglev/maglev-kna-processor.h",
+ "src/maglev/maglev-node-type.cc",
+ "src/maglev/maglev-node-type.h",
+ "src/maglev/maglev-range.h",
"src/maglev/maglev-range-analysis.h",
+ "src/maglev/maglev-range-verification.cc",
+ "src/maglev/maglev-range-verification.h",
"src/maglev/maglev-reducer-inl.h",
"src/maglev/maglev-reducer.h",
"src/maglev/maglev-register-frame-array.h",
@@ -3806,6 +3880,7 @@ filegroup(
"src/builtins/builtins-string-gen.cc",
"src/builtins/builtins-string-gen.h",
"src/builtins/builtins-string-tsa.cc",
+ "src/builtins/builtins-string-tsa-inl.h",
"src/builtins/builtins-typed-array-gen.cc",
"src/builtins/builtins-typed-array-gen.h",
"src/builtins/builtins-utils-gen.h",
@@ -4394,6 +4469,8 @@ filegroup(
"src/d8/d8-platforms.h",
"src/d8/d8-posix.cc",
"src/d8/d8-test.cc",
+ "src/d8/hardware-watchpoints.cc",
+ "src/d8/hardware-watchpoints.h",
],
)
diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn
index 6432f7342e26a5..e81430fbc39392 100644
--- a/deps/v8/BUILD.gn
+++ b/deps/v8/BUILD.gn
@@ -9,7 +9,6 @@ import("//build/config/dcheck_always_on.gni")
import("//build/config/host_byteorder.gni")
import("//build/config/mips.gni")
import("//build/config/riscv.gni")
-import("//build/config/rust.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build_overrides/build.gni")
import("//third_party/icu/config.gni")
@@ -21,6 +20,10 @@ if (is_clang) {
import("//build/config/clang/clang.gni")
}
+if (v8_enable_temporal_support) {
+ import("//build/config/rust.gni")
+}
+
if (is_ios) {
import("//build/config/apple/mobile_config.gni") # For `target_platform`.
}
@@ -68,6 +71,9 @@ declare_args() {
# Sets -DENABLE_DISASSEMBLER.
v8_enable_disassembler = ""
+ # Sets -DV8_ENABLE_REGEXP_DIAGNOSTICS.
+ v8_enable_regexp_diagnostics = !build_with_chromium
+
# Sets the number of internal fields on promise objects.
v8_promise_internal_field_count = 0
@@ -83,6 +89,9 @@ declare_args() {
# Sets -DENABLE_VTUNE_TRACEMARK.
v8_enable_vtunetracemark = false
+ # Sets -DV8_ENABLE_APX_F.
+ v8_enable_apx_f = false
+
# Sets -DENABLE_HUGEPAGE
v8_enable_hugepage = false
@@ -456,8 +465,11 @@ declare_args() {
# Use the experimental TSA-based definition for some builtins.
v8_enable_experimental_tsa_builtins = false
+ # Use the experimental TSA backend for Torque.
+ v8_enable_experimental_tq_to_tsa = false
+
# Use the encoding of undefined in double values.
- v8_enable_undefined_double = false
+ v8_enable_undefined_double = true
v8_dcheck_always_on = dcheck_always_on
@@ -481,9 +493,6 @@ declare_args() {
# usages. The plugin is not exhaustive but covers most common known pitfalls.
use_cppgc_clang_plugin = true
- # Deinterleaving load support.
- v8_enable_wasm_deinterleaved_mem_ops = false
-
# Expose F.p.caller and .arguments as own properties.
v8_function_arguments_caller_are_own_props = false
@@ -492,6 +501,12 @@ declare_args() {
# Enable seeded array index hash.
v8_enable_seeded_array_index_hash = false
+
+ # add instrumentation for Dumpling differential fuzzing
+ v8_dumpling = false
+
+ # Enable compilation of riscv32.
+ v8_riscv_enable_deprecated_riscv32 = false
}
# Derived defaults.
@@ -564,7 +579,6 @@ if (v8_multi_arch_build &&
rebase_path(get_label_info(":d8", "root_out_dir"), root_build_dir) ==
"clang_x64_fuzzer_experiments") {
v8_enable_pointer_compression = !v8_enable_pointer_compression
- v8_enable_undefined_double = !v8_enable_undefined_double
v8_lower_limits_mode = !v8_lower_limits_mode
}
@@ -601,16 +615,18 @@ if (v8_enable_external_code_space == "") {
v8_enable_pointer_compression &&
v8_enable_pointer_compression_shared_cage &&
(v8_current_cpu == "x64" || v8_current_cpu == "arm64" ||
- v8_current_cpu == "loong64")
+ v8_current_cpu == "loong64" || v8_current_cpu == "riscv64")
}
if (v8_enable_sparkplug == "") {
v8_enable_sparkplug = !v8_jitless
}
if (v8_enable_maglev == "") {
- v8_enable_maglev = v8_enable_turbofan &&
- (v8_current_cpu == "arm" || v8_current_cpu == "x64" ||
- v8_current_cpu == "arm64" || v8_current_cpu == "s390x" ||
- v8_current_cpu == "ppc64" || v8_current_cpu == "riscv64")
+ v8_enable_maglev =
+ v8_enable_turbofan &&
+ (v8_current_cpu == "arm" || v8_current_cpu == "x64" ||
+ v8_current_cpu == "arm64" || v8_current_cpu == "s390x" ||
+ v8_current_cpu == "ppc64" || v8_current_cpu == "riscv64" ||
+ v8_current_cpu == "loong64")
}
assert(v8_enable_turbofan || !v8_enable_maglev,
"Maglev is not available when Turbofan is disabled.")
@@ -742,6 +758,10 @@ if (v8_enable_webassembly && v8_current_cpu == "arm64") {
v8_enable_wasm_deinterleaved_mem_ops = true
}
+if (v8_enable_experimental_tq_to_tsa) {
+ v8_enable_experimental_tsa_builtins = true
+}
+
assert(!v8_disable_write_barriers || v8_enable_single_generation,
"Disabling write barriers works only with single generation")
@@ -981,6 +1001,8 @@ external_v8_defines = [
"V8_DEPRECATION_WARNINGS",
"V8_IMMINENT_DEPRECATION_WARNINGS",
"V8_USE_PERFETTO",
+ "V8_USE_PERFETTO_JSON_EXPORT",
+ "V8_USE_PERFETTO_SDK",
"V8_MAP_PACKING",
"V8_IS_TSAN",
"V8_ENABLE_DIRECT_HANDLE",
@@ -993,6 +1015,8 @@ external_v8_defines = [
"V8_TARGET_OS_MACOS",
"V8_TARGET_OS_WIN",
"V8_TARGET_OS_CHROMEOS",
+ "V8_TARGET_ARCH_ARM64",
+ "V8_TARGET_ARCH_PPC64",
]
enabled_external_v8_defines = [
@@ -1029,6 +1053,12 @@ if (v8_imminent_deprecation_warnings) {
if (v8_use_perfetto) {
enabled_external_v8_defines += [ "V8_USE_PERFETTO" ]
}
+if (v8_use_perfetto_json_export) {
+ enabled_external_v8_defines += [ "V8_USE_PERFETTO_JSON_EXPORT" ]
+}
+if (v8_use_perfetto_sdk) {
+ enabled_external_v8_defines += [ "V8_USE_PERFETTO_SDK" ]
+}
if (v8_enable_map_packing) {
enabled_external_v8_defines += [ "V8_MAP_PACKING" ]
}
@@ -1069,6 +1099,18 @@ if (target_os == "android") {
enabled_external_v8_defines += [ "V8_TARGET_OS_CHROMEOS" ]
}
+# Some V8_TARGET_ARCH_ defines that affect Api constants (see usages of
+# V8_TARGET_ARCH_* in v8-internal.h).
+# The target architecture may differ from host one e.g. in mksnapshot or in
+# msan builds.
+# TODO(ishell): support all target archs and add V8_HAVE_TARGET_ARCH similar
+# to V8_TARGET_OS_* and V8_HAVE_TARGET_OS defines.
+if (v8_current_cpu == "arm64") {
+ enabled_external_v8_defines += [ "V8_TARGET_ARCH_ARM64" ]
+} else if (v8_current_cpu == "ppc64") {
+ enabled_external_v8_defines += [ "V8_TARGET_ARCH_PPC64" ]
+}
+
disabled_external_v8_defines = external_v8_defines - enabled_external_v8_defines
# Put defines that are used in public headers here; public headers are
@@ -1179,8 +1221,7 @@ config("features") {
if (v8_enable_pointer_compression) {
if (v8_enable_pointer_compression_shared_cage) {
defines += [
- # TODO(442942399): Re-enable after bug has been addressed.
- # "V8_CONTIGUOUS_COMPRESSED_RO_SPACE",
+ "V8_CONTIGUOUS_COMPRESSED_RO_SPACE",
"V8_CONTIGUOUS_COMPRESSED_RO_SPACE_SIZE_MB=${v8_contiguous_compressed_ro_space_size_mb}",
]
} else {
@@ -1215,6 +1256,9 @@ config("features") {
if (v8_enable_vtunetracemark) {
defines += [ "ENABLE_VTUNE_TRACEMARK" ]
}
+ if (v8_enable_apx_f) {
+ defines += [ "V8_ENABLE_APX_F" ]
+ }
if (v8_enable_hugepage) {
defines += [ "ENABLE_HUGEPAGE" ]
}
@@ -1245,6 +1289,9 @@ config("features") {
if (v8_enable_trace_feedback_updates) {
defines += [ "V8_TRACE_FEEDBACK_UPDATES" ]
}
+ if (v8_enable_regexp_diagnostics) {
+ defines += [ "V8_ENABLE_REGEXP_DIAGNOSTICS" ]
+ }
if (v8_enable_test_features) {
defines += [ "V8_ENABLE_ALLOCATION_TIMEOUT" ]
defines += [ "V8_ENABLE_FORCE_SLOW_PATH" ]
@@ -1332,6 +1379,12 @@ config("features") {
if (v8_fuzzilli) {
defines += [ "V8_FUZZILLI" ]
}
+ if (v8_dumpling) {
+ defines += [ "V8_DUMPLING" ]
+ }
+ if (v8_riscv_enable_deprecated_riscv32) {
+ defines += [ "V8_RISCV_ENABLE_DEPRECATED_RISCV32" ]
+ }
if (v8_enable_fuzztest) {
defines += [ "V8_ENABLE_FUZZTEST" ]
}
@@ -1435,9 +1488,6 @@ config("features") {
if (v8_enable_wasm_simd256_revec) {
defines += [ "V8_ENABLE_WASM_SIMD256_REVEC" ]
}
- if (v8_enable_wasm_deinterleaved_mem_ops) {
- defines += [ "V8_ENABLE_WASM_DEINTERLEAVED_MEM_OPS" ]
- }
if (v8_enable_maglev_graph_printer) {
defines += [ "V8_ENABLE_MAGLEV_GRAPH_PRINTER" ]
}
@@ -1462,10 +1512,12 @@ config("features") {
if (v8_enable_experimental_tsa_builtins) {
defines += [ "V8_ENABLE_EXPERIMENTAL_TSA_BUILTINS" ]
}
+ if (v8_enable_experimental_tq_to_tsa) {
+ defines += [ "V8_ENABLE_EXPERIMENTAL_TQ_TO_TSA" ]
+ }
if (v8_enable_undefined_double) {
defines += [ "V8_ENABLE_UNDEFINED_DOUBLE" ]
}
- defines += [ "V8_ENABLE_LEAPTIERING" ]
if (v8_enable_partition_alloc) {
defines += [ "V8_ENABLE_PARTITION_ALLOC" ]
}
@@ -1492,24 +1544,16 @@ config("toolchain") {
ldflags = []
if (v8_current_cpu == "arm") {
- defines += [ "V8_TARGET_ARCH_ARM" ]
- if (arm_version >= 7) {
- defines += [ "CAN_USE_ARMV7_INSTRUCTIONS" ]
- }
- if (arm_fpu == "vfpv3-d16") {
- defines += [ "CAN_USE_VFP3_INSTRUCTIONS" ]
- } else if (arm_fpu == "vfpv3") {
- defines += [
- "CAN_USE_VFP3_INSTRUCTIONS",
- "CAN_USE_VFP32DREGS",
- ]
- } else if (arm_fpu == "neon") {
- defines += [
- "CAN_USE_VFP3_INSTRUCTIONS",
- "CAN_USE_VFP32DREGS",
- "CAN_USE_NEON",
- ]
- }
+ defines += [
+ "V8_TARGET_ARCH_ARM",
+
+ # TODO(arm): Now that we always require v7+ and neon, we can simplify the
+ # code and then stop defining these.
+ "CAN_USE_ARMV7_INSTRUCTIONS",
+ "CAN_USE_VFP3_INSTRUCTIONS",
+ "CAN_USE_VFP32DREGS",
+ "CAN_USE_NEON",
+ ]
# TODO(infra): Add support for arm_test_noprobe.
@@ -1576,14 +1620,14 @@ config("toolchain") {
defines += [ "V8_TARGET_ARCH_S390X" ]
if (host_byteorder == "little") {
defines += [ "V8_TARGET_ARCH_S390X_LE_SIM" ]
- } else if (current_os != "zos") {
- cflags += [ "-march=z196" ]
+ } else if (!v8_target_is_simulator && current_os != "zos") {
+ cflags += [ "-march=z14" ]
}
}
if (v8_current_cpu == "ppc64") {
defines += [ "V8_TARGET_ARCH_PPC64" ]
cflags += [ "-ffp-contract=off" ]
- if (current_os == "aix") {
+ if (current_os == "aix" && !is_clang) {
cflags += [
# Work around AIX ceil, trunc and round oddities.
"-mcpu=power5+",
@@ -1592,18 +1636,26 @@ config("toolchain") {
# Work around AIX assembler popcntb bug.
"-mno-popcntb",
]
+ } else if (!v8_target_is_simulator) {
+ cflags += [ "-mcpu=pwr9" ]
}
}
- # Under simulator build, compiler will not provide __riscv_xlen. Define here
if (v8_current_cpu == "riscv64" || v8_current_cpu == "riscv32") {
if (v8_target_is_simulator) {
- defines += [ "_RISCV_TARGET_SIMULATOR" ]
+ defines += [ "RISCV_TARGET_SIMULATOR" ]
}
if (riscv_use_rvv || v8_target_is_simulator) {
defines += [ "CAN_USE_RVV_INSTRUCTIONS" ]
defines += [ "RVV_VLEN=${riscv_rvv_vlen}" ]
}
+
+ if (riscv_use_zicfiss) {
+ defines += [ "V8_ENABLE_RISCV_SHADOW_STACK" ]
+ }
+ if (riscv_use_zicond) {
+ defines += [ "__riscv_zicond" ]
+ }
if (riscv_use_zba) {
defines += [ "__riscv_zba" ]
}
@@ -1613,10 +1665,19 @@ config("toolchain") {
if (riscv_use_zbs) {
defines += [ "__riscv_zbs" ]
}
+ defines += [ "RISCV_CODE_ALIGNMENT=${riscv_code_alignment}" ]
+ defines +=
+ [ "RISCV_CONSTANT_POOL_ALIGNMENT=${riscv_constant_pool_alignment}" ]
}
+
if (v8_current_cpu == "riscv64") {
defines += [ "V8_TARGET_ARCH_RISCV64" ]
- defines += [ "__riscv_xlen=64" ]
+
+ # When building the simulator, the compiler does not provide __riscv_xlen,
+ # so we explicitly define it here.
+ if (v8_target_is_simulator) {
+ defines += [ "__riscv_xlen=64" ]
+ }
if (!is_clang) {
cflags += [ "-ffp-contract=off" ]
}
@@ -1627,7 +1688,12 @@ config("toolchain") {
if (v8_current_cpu == "riscv32") {
defines += [ "V8_TARGET_ARCH_RISCV32" ]
- defines += [ "__riscv_xlen=32" ]
+
+ # When building the simulator, the compiler does not provide __riscv_xlen,
+ # so we explicitly define it here.
+ if (v8_target_is_simulator) {
+ defines += [ "__riscv_xlen=32" ]
+ }
}
if (v8_current_cpu == "x86") {
@@ -2232,6 +2298,75 @@ if (v8_enable_webassembly) {
]
}
+if (v8_enable_experimental_tq_to_tsa) {
+ template("run_torque_to_tsa") {
+ if (target_name == "") {
+ suffix = ""
+ } else {
+ suffix = "_$target_name"
+ }
+
+ toolchain = invoker.toolchain
+
+ action("run_torque_to_tsa" + suffix) {
+ visibility = [
+ ":*",
+ "test/cctest/:*",
+ "tools/debug_helper/:*",
+ "tools/gcmole/:*",
+ ]
+
+ deps = [ ":torque($toolchain)" ]
+
+ if (is_msan) {
+ configs = [
+ "//third_party/instrumented_libs:msan_runtime_libs($host_toolchain)",
+ ]
+ deps += [ "//third_party/instrumented_libs:ld-linux($host_toolchain)" ]
+ }
+
+ script = "tools/run.py"
+
+ sources = torque_files
+
+ destination_folder = "$target_gen_dir/torque-generated$suffix"
+
+ outputs = []
+
+ foreach(file, torque_files) {
+ filetq = string_replace(file, ".tq", "-tq")
+ outputs += [
+ "$destination_folder/$filetq-tsa.cc",
+ "$destination_folder/$filetq-tsa.h",
+ ]
+ }
+
+ args = [
+ "./" + rebase_path(get_label_info(":torque($toolchain)",
+ "root_out_dir") + "/torque",
+ root_build_dir),
+ "-o",
+ rebase_path("$destination_folder", root_build_dir),
+ "-v8-root",
+ rebase_path(".", root_build_dir),
+ "-output-tsa",
+ ]
+ if (v8_annotate_torque_ir) {
+ args += [ "-annotate-ir" ]
+ }
+ if (defined(invoker.args)) {
+ args += invoker.args
+ }
+ args += torque_files
+ }
+ }
+
+ # Default run_torque_to_tsa action
+ run_torque_to_tsa("") {
+ toolchain = v8_generator_toolchain
+ }
+}
+
# Template for running torque
# When building with v8_verify_torque_generation_invariance=true we need
# to be able to run torque for both 32 and 64 bits in the same build
@@ -2396,6 +2531,9 @@ v8_source_set("torque_generated_initializers") {
":v8_maybe_temporal",
":v8_tracing",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ deps += [ ":run_torque_to_tsa" ]
+ }
public_deps = [
":torque_runtime_support",
@@ -2415,6 +2553,12 @@ v8_source_set("torque_generated_initializers") {
"$target_gen_dir/torque-generated/$filetq-csa.cc",
"$target_gen_dir/torque-generated/$filetq-csa.h",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ sources += [
+ "$target_gen_dir/torque-generated/$filetq-tsa.cc",
+ "$target_gen_dir/torque-generated/$filetq-tsa.h",
+ ]
+ }
}
configs = [ ":internal_config" ]
@@ -2443,6 +2587,9 @@ v8_source_set("torque_generated_definitions") {
":v8_maybe_temporal",
":v8_tracing",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ deps += [ ":run_torque_to_tsa" ]
+ }
public_deps = [
":v8_abseil",
@@ -2560,7 +2707,7 @@ template("run_mksnapshot") {
"root_out_dir") + "/mksnapshot",
root_build_dir),
"--turbo_instruction_scheduling",
- "--stress-turbo-late-spilling",
+ "--turbo-always-optimize-spills",
# In cross builds, the snapshot may be generated for both the host and
# target toolchains. The same host binary is used to generate both, so
@@ -3090,6 +3237,7 @@ v8_source_set("v8_initializers") {
"src/builtins/builtins-sharedarraybuffer-gen.cc",
"src/builtins/builtins-string-gen.cc",
"src/builtins/builtins-string-gen.h",
+ "src/builtins/builtins-string-tsa-inl.h",
"src/builtins/builtins-string-tsa.cc",
"src/builtins/builtins-typed-array-gen.cc",
"src/builtins/builtins-typed-array-gen.h",
@@ -3146,6 +3294,9 @@ v8_source_set("v8_initializers") {
} else if (v8_current_cpu == "arm64") {
sources +=
[ "src/wasm/interpreter/arm64/interpreter-builtins-arm64.cc" ]
+ } else if (v8_current_cpu == "riscv64") {
+ sources +=
+ [ "src/wasm/interpreter/riscv/interpreter-builtins-riscv.cc" ]
}
}
}
@@ -3463,6 +3614,9 @@ v8_header_set("v8_internal_headers") {
"src/builtins/builtins-descriptors.h",
"src/builtins/builtins-effects-analyzer.h",
"src/builtins/builtins-inl.h",
+ "src/builtins/builtins-iterator-inl.h",
+ "src/builtins/builtins-iterator.h",
+ "src/builtins/builtins-math-xsum.h",
"src/builtins/builtins-promise.h",
"src/builtins/builtins-utils-inl.h",
"src/builtins/builtins-utils.h",
@@ -3561,7 +3715,7 @@ v8_header_set("v8_internal_headers") {
"src/compiler/backend/register-allocator.h",
"src/compiler/backend/spill-placer.h",
"src/compiler/backend/unwinding-info-writer.h",
- "src/compiler/basic-block-instrumentor.h",
+ "src/compiler/basic-block-call-graph-profiler.h",
"src/compiler/branch-elimination.h",
"src/compiler/bytecode-analysis.h",
"src/compiler/bytecode-graph-builder.h",
@@ -3705,6 +3859,7 @@ v8_header_set("v8_internal_headers") {
"src/compiler/turboshaft/late-load-elimination-reducer.h",
"src/compiler/turboshaft/layered-hash-map.h",
"src/compiler/turboshaft/load-store-simplification-reducer.h",
+ "src/compiler/turboshaft/load-store-verification-reducer.h",
"src/compiler/turboshaft/loop-finder.h",
"src/compiler/turboshaft/loop-peeling-phase.h",
"src/compiler/turboshaft/loop-peeling-reducer.h",
@@ -3713,6 +3868,7 @@ v8_header_set("v8_internal_headers") {
"src/compiler/turboshaft/machine-lowering-phase.h",
"src/compiler/turboshaft/machine-lowering-reducer-inl.h",
"src/compiler/turboshaft/machine-optimization-reducer.h",
+ "src/compiler/turboshaft/maglev-assert-types-reducer.h",
"src/compiler/turboshaft/memory-optimization-reducer.h",
"src/compiler/turboshaft/operation-matcher.h",
"src/compiler/turboshaft/operations.h",
@@ -3810,6 +3966,7 @@ v8_header_set("v8_internal_headers") {
"src/execution/frames.h",
"src/execution/futex-emulation.h",
"src/execution/interrupts-scope.h",
+ "src/execution/isolate-data-fields.h",
"src/execution/isolate-data.h",
"src/execution/isolate-inl.h",
"src/execution/isolate-utils-inl.h",
@@ -3855,6 +4012,8 @@ v8_header_set("v8_internal_headers") {
"src/heap/allocation-result.h",
"src/heap/allocation-stats.h",
"src/heap/array-buffer-sweeper.h",
+ "src/heap/base-page-inl.h",
+ "src/heap/base-page.h",
"src/heap/base-space.h",
"src/heap/code-range.h",
"src/heap/code-stats.h",
@@ -3905,8 +4064,8 @@ v8_header_set("v8_internal_headers") {
"src/heap/incremental-marking-job.h",
"src/heap/incremental-marking.h",
"src/heap/index-generator.h",
- "src/heap/large-page-metadata-inl.h",
- "src/heap/large-page-metadata.h",
+ "src/heap/large-page-inl.h",
+ "src/heap/large-page.h",
"src/heap/large-spaces.h",
"src/heap/linear-allocation-area.h",
"src/heap/list.h",
@@ -3937,8 +4096,6 @@ v8_header_set("v8_internal_headers") {
"src/heap/memory-chunk-constants.h",
"src/heap/memory-chunk-inl.h",
"src/heap/memory-chunk-layout.h",
- "src/heap/memory-chunk-metadata-inl.h",
- "src/heap/memory-chunk-metadata.h",
"src/heap/memory-chunk.h",
"src/heap/memory-measurement-inl.h",
"src/heap/memory-measurement.h",
@@ -3947,14 +4104,15 @@ v8_header_set("v8_internal_headers") {
"src/heap/minor-gc-job.h",
"src/heap/minor-mark-sweep-inl.h",
"src/heap/minor-mark-sweep.h",
- "src/heap/mutable-page-metadata-inl.h",
- "src/heap/mutable-page-metadata.h",
+ "src/heap/mutable-page-inl.h",
+ "src/heap/mutable-page.h",
"src/heap/new-spaces-inl.h",
"src/heap/new-spaces.h",
+ "src/heap/normal-page-inl.h",
+ "src/heap/normal-page.h",
"src/heap/object-lock-inl.h",
"src/heap/object-lock.h",
"src/heap/object-stats.h",
- "src/heap/page-metadata.h",
"src/heap/paged-spaces-inl.h",
"src/heap/paged-spaces.h",
"src/heap/parallel-work-item.h",
@@ -4256,6 +4414,8 @@ v8_header_set("v8_internal_headers") {
"src/objects/transitions.h",
"src/objects/trusted-object-inl.h",
"src/objects/trusted-object.h",
+ "src/objects/trusted-pointer-inl.h",
+ "src/objects/trusted-pointer.h",
"src/objects/turbofan-types-inl.h",
"src/objects/turbofan-types.h",
"src/objects/turboshaft-types-inl.h",
@@ -4310,6 +4470,7 @@ v8_header_set("v8_internal_headers") {
"src/regexp/experimental/experimental-interpreter.h",
"src/regexp/experimental/experimental.h",
"src/regexp/regexp-ast.h",
+ "src/regexp/regexp-bytecode-analysis.h",
"src/regexp/regexp-bytecode-generator-inl.h",
"src/regexp/regexp-bytecode-generator.h",
"src/regexp/regexp-bytecode-iterator-inl.h",
@@ -4319,12 +4480,10 @@ v8_header_set("v8_internal_headers") {
"src/regexp/regexp-bytecodes.h",
"src/regexp/regexp-code-generator.h",
"src/regexp/regexp-compiler.h",
- "src/regexp/regexp-dotprinter.h",
"src/regexp/regexp-error.h",
"src/regexp/regexp-flags.h",
"src/regexp/regexp-interpreter.h",
"src/regexp/regexp-macro-assembler-arch.h",
- "src/regexp/regexp-macro-assembler-tracer.h",
"src/regexp/regexp-macro-assembler.h",
"src/regexp/regexp-nodes.h",
"src/regexp/regexp-parser.h",
@@ -4344,6 +4503,7 @@ v8_header_set("v8_internal_headers") {
"src/runtime/runtime.h",
"src/sandbox/bounded-size-inl.h",
"src/sandbox/bounded-size.h",
+ "src/sandbox/bytecode-verifier.h",
"src/sandbox/check.h",
"src/sandbox/code-entrypoint-tag.h",
"src/sandbox/code-pointer-inl.h",
@@ -4363,6 +4523,7 @@ v8_header_set("v8_internal_headers") {
"src/sandbox/external-pointer-table-inl.h",
"src/sandbox/external-pointer-table.h",
"src/sandbox/external-pointer.h",
+ "src/sandbox/external-strings-cage.h",
"src/sandbox/hardware-support.h",
"src/sandbox/indirect-pointer-inl.h",
"src/sandbox/indirect-pointer-tag.h",
@@ -4373,6 +4534,7 @@ v8_header_set("v8_internal_headers") {
"src/sandbox/js-dispatch-table.h",
"src/sandbox/sandbox-malloc.h",
"src/sandbox/sandbox.h",
+ "src/sandbox/sandboxable-thread.h",
"src/sandbox/sandboxed-pointer-inl.h",
"src/sandbox/sandboxed-pointer.h",
"src/sandbox/tagged-payload.h",
@@ -4407,6 +4569,7 @@ v8_header_set("v8_internal_headers") {
"src/snapshot/startup-serializer.h",
"src/strings/char-predicates-inl.h",
"src/strings/char-predicates.h",
+ "src/strings/owning-external-string-resource.h",
"src/strings/string-builder-inl.h",
"src/strings/string-builder.h",
"src/strings/string-case.h",
@@ -4468,6 +4631,17 @@ v8_header_set("v8_internal_headers") {
sources += [ "src/snapshot/snapshot-compression.h" ]
}
+ if (v8_enable_regexp_diagnostics) {
+ sources += [
+ "src/regexp/regexp-ast-printer.h",
+ "src/regexp/regexp-dotprinter.h",
+ "src/regexp/regexp-graph-printer.h",
+ "src/regexp/regexp-macro-assembler-tracer.h",
+ "src/regexp/regexp-node-printer.h",
+ "src/regexp/regexp-printer.h",
+ ]
+ }
+
if (v8_enable_temporal_support) {
sources += [
"src/objects/js-temporal-objects-inl.h",
@@ -4482,6 +4656,7 @@ v8_header_set("v8_internal_headers") {
"src/tracing/code-data-source.h",
"src/tracing/code-trace-context.h",
"src/tracing/perfetto-logger.h",
+ "src/tracing/perfetto-sdk.h",
"src/tracing/perfetto-utils.h",
]
}
@@ -4497,6 +4672,7 @@ v8_header_set("v8_internal_headers") {
if (v8_enable_maglev) {
sources += [
+ "src/maglev/hamt.h",
"src/maglev/maglev-assembler-inl.h",
"src/maglev/maglev-assembler.h",
"src/maglev/maglev-basic-block.h",
@@ -4521,10 +4697,14 @@ v8_header_set("v8_internal_headers") {
"src/maglev/maglev-ir.h",
"src/maglev/maglev-kna-processor.h",
"src/maglev/maglev-known-node-aspects.h",
+ "src/maglev/maglev-node-type.h",
"src/maglev/maglev-phi-representation-selector.h",
"src/maglev/maglev-pipeline-statistics.h",
"src/maglev/maglev-post-hoc-optimizations-processors.h",
"src/maglev/maglev-pre-regalloc-codegen-processors.h",
+ "src/maglev/maglev-range-analysis.h",
+ "src/maglev/maglev-range-verification.h",
+ "src/maglev/maglev-range.h",
"src/maglev/maglev-reducer-inl.h",
"src/maglev/maglev-reducer.h",
"src/maglev/maglev-regalloc-data.h",
@@ -4545,6 +4725,8 @@ v8_header_set("v8_internal_headers") {
sources += [ "src/maglev/s390/maglev-assembler-s390-inl.h" ]
} else if (v8_current_cpu == "ppc64") {
sources += [ "src/maglev/ppc/maglev-assembler-ppc-inl.h" ]
+ } else if (v8_current_cpu == "loong64") {
+ sources += [ "src/maglev/loong64/maglev-assembler-loong64-inl.h" ]
}
}
@@ -4601,10 +4783,10 @@ v8_header_set("v8_internal_headers") {
"src/wasm/code-space-access.h",
"src/wasm/compilation-environment-inl.h",
"src/wasm/compilation-environment.h",
+ "src/wasm/compilation-hints-generation.h",
"src/wasm/constant-expression-interface.h",
"src/wasm/constant-expression.h",
"src/wasm/decoder.h",
- "src/wasm/float16.h",
"src/wasm/function-body-decoder-impl.h",
"src/wasm/function-body-decoder.h",
"src/wasm/function-compiler.h",
@@ -4659,10 +4841,13 @@ v8_header_set("v8_internal_headers") {
"src/wasm/wasm-opcodes.h",
"src/wasm/wasm-result.h",
"src/wasm/wasm-serialization.h",
+ "src/wasm/wasm-stack-wrapper-cache.h",
"src/wasm/wasm-subtyping.h",
"src/wasm/wasm-tier.h",
"src/wasm/wasm-tracing.h",
"src/wasm/wasm-value.h",
+ "src/wasm/wasm-wrapper-cache-inl.h",
+ "src/wasm/wasm-wrapper-cache.h",
"src/wasm/well-known-imports.h",
"src/wasm/wrappers-inl.h",
"src/wasm/wrappers.h",
@@ -5034,6 +5219,11 @@ v8_header_set("v8_internal_headers") {
"src/baseline/riscv/baseline-compiler-riscv-inl.h",
]
}
+
+ if (riscv_use_zicfiss) {
+ sources += [ "src/execution/riscv/shadow-stack-riscv.h" ]
+ }
+
if (v8_enable_webassembly) {
# Trap handling is enabled on riscv64 Linux and in simulators on
# x64 on Linux.
@@ -5124,6 +5314,9 @@ v8_header_set("v8_internal_headers") {
":v8_maybe_temporal",
"//third_party/simdutf",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ deps += [ ":run_torque_to_tsa" ]
+ }
}
v8_compiler_sources = [
@@ -5144,7 +5337,7 @@ v8_compiler_sources = [
"src/compiler/backend/register-allocator-verifier.cc",
"src/compiler/backend/register-allocator.cc",
"src/compiler/backend/spill-placer.cc",
- "src/compiler/basic-block-instrumentor.cc",
+ "src/compiler/basic-block-call-graph-profiler.cc",
"src/compiler/branch-elimination.cc",
"src/compiler/bytecode-analysis.cc",
"src/compiler/bytecode-graph-builder.cc",
@@ -5300,7 +5493,9 @@ if (!v8_enable_maglev) {
"src/maglev/maglev-interpreter-frame-state.cc",
"src/maglev/maglev-ir.cc",
"src/maglev/maglev-known-node-aspects.cc",
+ "src/maglev/maglev-node-type.cc",
"src/maglev/maglev-phi-representation-selector.cc",
+ "src/maglev/maglev-range-verification.cc",
"src/maglev/maglev-truncation.cc",
]
}
@@ -5437,6 +5632,9 @@ v8_source_set("v8_compiler_for_mksnapshot_source_set") {
":v8_maybe_icu",
":v8_tracing",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ public_deps += [ ":run_torque_to_tsa" ]
+ }
deps = [
":v8_base_without_compiler",
@@ -5477,6 +5675,9 @@ v8_source_set("v8_compiler") {
":v8_maybe_icu",
":v8_tracing",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ public_deps += [ ":run_torque_to_tsa" ]
+ }
deps = [
":v8_base_without_compiler",
@@ -5561,6 +5762,8 @@ v8_source_set("v8_base_without_compiler") {
"src/builtins/builtins-internal.cc",
"src/builtins/builtins-intl.cc",
"src/builtins/builtins-json.cc",
+ "src/builtins/builtins-math-xsum.cc",
+ "src/builtins/builtins-math.cc",
"src/builtins/builtins-number.cc",
"src/builtins/builtins-object.cc",
"src/builtins/builtins-reflect.cc",
@@ -5674,6 +5877,7 @@ v8_source_set("v8_base_without_compiler") {
"src/handles/traced-handles.cc",
"src/heap/allocation-observer.cc",
"src/heap/array-buffer-sweeper.cc",
+ "src/heap/base-page.cc",
"src/heap/code-range.cc",
"src/heap/code-stats.cc",
"src/heap/collection-barrier.cc",
@@ -5704,7 +5908,7 @@ v8_source_set("v8_base_without_compiler") {
"src/heap/incremental-marking-job.cc",
"src/heap/incremental-marking.cc",
"src/heap/index-generator.cc",
- "src/heap/large-page-metadata.cc",
+ "src/heap/large-page.cc",
"src/heap/large-spaces.cc",
"src/heap/local-factory.cc",
"src/heap/local-heap.cc",
@@ -5716,17 +5920,16 @@ v8_source_set("v8_base_without_compiler") {
"src/heap/marking.cc",
"src/heap/memory-allocator.cc",
"src/heap/memory-balancer.cc",
- "src/heap/memory-chunk-metadata.cc",
"src/heap/memory-chunk.cc",
"src/heap/memory-measurement.cc",
"src/heap/memory-pool.cc",
"src/heap/memory-reducer.cc",
"src/heap/minor-gc-job.cc",
"src/heap/minor-mark-sweep.cc",
- "src/heap/mutable-page-metadata.cc",
+ "src/heap/mutable-page.cc",
"src/heap/new-spaces.cc",
+ "src/heap/normal-page.cc",
"src/heap/object-stats.cc",
- "src/heap/page-metadata.cc",
"src/heap/paged-spaces.cc",
"src/heap/pretenuring-handler.cc",
"src/heap/read-only-heap.cc",
@@ -5897,6 +6100,7 @@ v8_source_set("v8_base_without_compiler") {
"src/regexp/experimental/experimental-interpreter.cc",
"src/regexp/experimental/experimental.cc",
"src/regexp/regexp-ast.cc",
+ "src/regexp/regexp-bytecode-analysis.cc",
"src/regexp/regexp-bytecode-generator.cc",
"src/regexp/regexp-bytecode-iterator.cc",
"src/regexp/regexp-bytecode-peephole.cc",
@@ -5904,10 +6108,8 @@ v8_source_set("v8_base_without_compiler") {
"src/regexp/regexp-code-generator.cc",
"src/regexp/regexp-compiler-tonode.cc",
"src/regexp/regexp-compiler.cc",
- "src/regexp/regexp-dotprinter.cc",
"src/regexp/regexp-error.cc",
"src/regexp/regexp-interpreter.cc",
- "src/regexp/regexp-macro-assembler-tracer.cc",
"src/regexp/regexp-macro-assembler.cc",
"src/regexp/regexp-parser.cc",
"src/regexp/regexp-result-vector.cc",
@@ -5946,12 +6148,15 @@ v8_source_set("v8_base_without_compiler") {
"src/runtime/runtime-typedarray.cc",
"src/runtime/runtime-weak-refs.cc",
"src/runtime/runtime.cc",
+ "src/sandbox/bytecode-verifier.cc",
"src/sandbox/code-pointer-table.cc",
"src/sandbox/cppheap-pointer-table.cc",
"src/sandbox/external-pointer-table.cc",
+ "src/sandbox/external-strings-cage.cc",
"src/sandbox/hardware-support.cc",
"src/sandbox/js-dispatch-table.cc",
"src/sandbox/sandbox.cc",
+ "src/sandbox/sandboxable-thread.cc",
"src/sandbox/testing.cc",
"src/sandbox/trusted-pointer-scope.cc",
"src/sandbox/trusted-pointer-table.cc",
@@ -5995,7 +6200,6 @@ v8_source_set("v8_base_without_compiler") {
"src/utils/detachable-vector.cc",
"src/utils/hex-format.cc",
"src/utils/identity-map.cc",
- "src/utils/memcopy.cc",
"src/utils/ostreams.cc",
"src/utils/output-stream.cc",
"src/utils/sha-256.cc",
@@ -6012,6 +6216,17 @@ v8_source_set("v8_base_without_compiler") {
sources += [ "src/snapshot/snapshot-compression.cc" ]
}
+ if (v8_enable_regexp_diagnostics) {
+ sources += [
+ "src/regexp/regexp-ast-printer.cc",
+ "src/regexp/regexp-dotprinter.cc",
+ "src/regexp/regexp-graph-printer.cc",
+ "src/regexp/regexp-macro-assembler-tracer.cc",
+ "src/regexp/regexp-node-printer.cc",
+ "src/regexp/regexp-printer.cc",
+ ]
+ }
+
if (v8_enable_temporal_support) {
sources += [
"src/builtins/builtins-temporal.cc",
@@ -6044,8 +6259,10 @@ v8_source_set("v8_base_without_compiler") {
"src/maglev/maglev-interpreter-frame-state.cc",
"src/maglev/maglev-ir.cc",
"src/maglev/maglev-known-node-aspects.cc",
+ "src/maglev/maglev-node-type.cc",
"src/maglev/maglev-phi-representation-selector.cc",
"src/maglev/maglev-pipeline-statistics.cc",
+ "src/maglev/maglev-range-verification.cc",
"src/maglev/maglev-regalloc.cc",
"src/maglev/maglev-truncation.cc",
"src/maglev/maglev.cc",
@@ -6080,6 +6297,11 @@ v8_source_set("v8_base_without_compiler") {
"src/maglev/ppc/maglev-assembler-ppc.cc",
"src/maglev/ppc/maglev-ir-ppc.cc",
]
+ } else if (v8_current_cpu == "loong64") {
+ sources += [
+ "src/maglev/loong64/maglev-assembler-loong64.cc",
+ "src/maglev/loong64/maglev-ir-loong64.cc",
+ ]
}
}
@@ -6111,6 +6333,7 @@ v8_source_set("v8_base_without_compiler") {
"src/wasm/basic-block-calculator.cc",
"src/wasm/canonical-types.cc",
"src/wasm/code-space-access.cc",
+ "src/wasm/compilation-hints-generation.cc",
"src/wasm/constant-expression-interface.cc",
"src/wasm/constant-expression.cc",
"src/wasm/function-body-decoder.cc",
@@ -6145,8 +6368,10 @@ v8_source_set("v8_base_without_compiler") {
"src/wasm/wasm-opcodes.cc",
"src/wasm/wasm-result.cc",
"src/wasm/wasm-serialization.cc",
+ "src/wasm/wasm-stack-wrapper-cache.cc",
"src/wasm/wasm-subtyping.cc",
"src/wasm/wasm-tracing.cc",
+ "src/wasm/wasm-wrapper-cache.cc",
"src/wasm/well-known-imports.cc",
]
if (v8_wasm_random_fuzzers) {
@@ -6407,6 +6632,9 @@ v8_source_set("v8_base_without_compiler") {
if (current_cpu == "x64" && is_linux) {
sources += [ "src/trap-handler/handler-outside-simulator.cc" ]
}
+ if (riscv_use_zicfiss) {
+ sources += [ "src/execution/riscv/shadow-stack-riscv.cc" ]
+ }
}
} else if (v8_current_cpu == "riscv32") {
sources += [
@@ -6490,6 +6718,9 @@ v8_source_set("v8_base_without_compiler") {
":v8_maybe_icu",
"//third_party/simdutf",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ public_deps += [ ":run_torque_to_tsa" ]
+ }
if (v8_fuzzilli) {
sources += [
@@ -6500,6 +6731,15 @@ v8_source_set("v8_base_without_compiler") {
]
}
+ if (v8_dumpling) {
+ sources += [
+ "src/dumpling/dumpling-manager.cc",
+ "src/dumpling/dumpling-manager.h",
+ "src/dumpling/object-dumping.cc",
+ "src/dumpling/object-dumping.h",
+ ]
+ }
+
if (v8_enable_i18n_support) {
deps += [ ":run_gen-regexp-special-case" ]
sources += [ "$target_gen_dir/src/regexp/special-case.cc" ]
@@ -6634,6 +6874,14 @@ v8_source_set("torque_base") {
"src/torque/utils.h",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ sources += [
+ "src/torque/ast-visitor.h",
+ "src/torque/tsa-generator.cc",
+ "src/torque/tsa-generator.h",
+ ]
+ }
+
deps = [
":v8_flags",
":v8_shared_internal_headers",
@@ -6701,6 +6949,7 @@ v8_component("v8_libbase") {
"src/base/abort-mode.cc",
"src/base/abort-mode.h",
"src/base/address-region.h",
+ "src/base/algorithm.h",
"src/base/atomic-utils.h",
"src/base/atomicops.h",
"src/base/base-export.h",
@@ -6730,6 +6979,7 @@ v8_component("v8_libbase") {
"src/base/file-utils.cc",
"src/base/file-utils.h",
"src/base/flags.h",
+ "src/base/float16.h",
"src/base/fpu.cc",
"src/base/fpu.h",
"src/base/free_deleter.h",
@@ -6747,6 +6997,7 @@ v8_component("v8_libbase") {
"src/base/logging.cc",
"src/base/logging.h",
"src/base/macros.h",
+ "src/base/memcopy.h",
"src/base/memory.h",
"src/base/numbers/bignum-dtoa.cc",
"src/base/numbers/bignum-dtoa.h",
@@ -7438,6 +7689,7 @@ v8_source_set("cppgc_base") {
if (v8_use_perfetto) {
sources += [
+ "src/tracing/perfetto-sdk.h",
"src/tracing/trace-categories.cc",
"src/tracing/trace-categories.h",
]
@@ -8006,6 +8258,8 @@ v8_executable("d8") {
"src/d8/d8-test.cc",
"src/d8/d8.cc",
"src/d8/d8.h",
+ "src/d8/hardware-watchpoints.cc",
+ "src/d8/hardware-watchpoints.h",
]
configs = [
@@ -8309,6 +8563,9 @@ if (v8_enable_webassembly) {
":v8_shared_internal_headers",
":v8_tracing",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ deps += [ ":run_torque_to_tsa" ]
+ }
public_deps = [
":v8_abseil",
@@ -8409,6 +8666,9 @@ group("v8_generated_cc_files") {
":run_torque",
"src/inspector:v8_generated_cc_files",
]
+ if (v8_enable_experimental_tq_to_tsa) {
+ deps += [ ":run_torque_to_tsa" ]
+ }
}
# Protobuf targets, used only when building outside of chromium.
diff --git a/deps/v8/COMMON_OWNERS b/deps/v8/COMMON_OWNERS
index 1a14c2458d6d0d..87e36677744ae4 100644
--- a/deps/v8/COMMON_OWNERS
+++ b/deps/v8/COMMON_OWNERS
@@ -8,6 +8,7 @@ dinfuehr@chromium.org
dlehmann@chromium.org
dmercadier@chromium.org
ecmziegler@chromium.org
+emaxx@google.com
evih@chromium.org
fgm@chromium.org
gdeepti@chromium.org
diff --git a/deps/v8/DEPS b/deps/v8/DEPS
index 86740bd8ebbf1d..170b52a281c5b1 100644
--- a/deps/v8/DEPS
+++ b/deps/v8/DEPS
@@ -6,6 +6,7 @@ use_relative_paths = True
gclient_gn_args_file = 'build/config/gclient_args.gni'
gclient_gn_args = [
+ 'checkout_src_internal',
]
vars = {
@@ -58,6 +59,9 @@ vars = {
# Used for downloading the Fuchsia SDK without running hooks.
'checkout_fuchsia_no_hooks': False,
+ # V8 doesn't need src_internal, but some shared GN files use this variable.
+ 'checkout_src_internal': False,
+
# reclient CIPD package version
'reclient_version': 're_client_version:0.185.0.db415f21-gomaip',
@@ -75,53 +79,41 @@ vars = {
'build_with_chromium': False,
# GN CIPD package version.
- 'gn_version': 'git_revision:07d3c6f4dc290fae5ca6152ebcb37d6815c411ab',
+ 'gn_version': 'git_revision:103f8b437f5e791e0aef9d5c372521a5d675fabb',
# ninja CIPD package version
# https://chrome-infra-packages.appspot.com/p/infra/3pp/tools/ninja
'ninja_version': 'version:3@1.12.1.chromium.4',
# siso CIPD package version
- 'siso_version': 'git_revision:0915813c4c786240e12d03aa3018c02bab4df14f',
+ 'siso_version': 'git_revision:dc540b292de5e5cbfc88bbdd15b30b1634979823',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling Fuchsia sdk
# and whatever else without interference from each other.
- 'fuchsia_version': 'version:29.20251023.3.1',
+ 'fuchsia_version': 'version:30.20251218.4.1',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling partition_alloc_version
# and whatever else without interference from each other.
- 'partition_alloc_version': 'db8446987dfff3cfc0c100b7d58e6a404ef639eb',
+ 'partition_alloc_version': '936619c71ecb17c0e2482cf86be3f3f417b2f683',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling android_sdk_build-tools_version
# and whatever else without interference from each other.
- 'android_sdk_build-tools_version': 'y3EsZLg4bxPmpW0oYsAHylywNyMnIwPS3kh1VbQLAFAC',
+ 'android_sdk_build-tools_version': '-jLl4Ibk_WmgTsZaP-ueQwZDhBwkWf5BsQ4UNrkzXF0C',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling android_sdk_emulator_version
# and whatever else without interference from each other.
'android_sdk_emulator_version': '9lGp8nTUCRRWGMnI_96HcKfzjnxEJKUcfvfwmA3wXNkC',
# Three lines of non-changing comments so that
- # the commit queue can handle CLs rolling android_sdk_extras_version
- # and whatever else without interference from each other.
- 'android_sdk_extras_version': 'bY55nDqO6FAm6FkGIj09sh2KW9oqAkCGKjYok5nUvBMC',
- # Three lines of non-changing comments so that
- # the commit queue can handle CLs rolling android_sdk_patcher_version
- # and whatever else without interference from each other.
- 'android_sdk_patcher_version': 'I6FNMhrXlpB-E1lOhMlvld7xt9lBVNOO83KIluXDyA0C',
- # Three lines of non-changing comments so that
# the commit queue can handle CLs rolling android_sdk_platform-tools_version
# and whatever else without interference from each other.
'android_sdk_platform-tools_version': 'qTD9QdBlBf3dyHsN1lJ0RH6AhHxR42Hmg2Ih-Vj4zIEC',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling android_sdk_platforms_version
# and whatever else without interference from each other.
- 'android_sdk_platforms_version': '_YHemUrK49JrE7Mctdf5DDNOHu1VKBx_PTcWnZ-cbOAC',
- # Three lines of non-changing comments so that
- # the commit queue can handle CLs rolling android_sdk_sources_version
- # and whatever else without interference from each other.
- 'android_sdk_sources_version': 'qfTSF99e29-w3eIVPpfcif0Em5etyvxuicTDTntWHQMC',
+ 'android_sdk_platforms_version': 'gxwLT70eR_ObwZJzKK8UIS-N549yAocNTmc0JHgO7gUC',
# 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.
@@ -130,9 +122,9 @@ vars = {
deps = {
'build':
- Var('chromium_url') + '/chromium/src/build.git' + '@' + '81330a6e45719ab8c0d22e5548afbedb5482b068',
+ Var('chromium_url') + '/chromium/src/build.git' + '@' + '483cecced32ce8b098d65eb08eb77925afa90bec',
'buildtools':
- Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '723d636763a2635105e0e912bae25f662b2acaa8',
+ Var('chromium_url') + '/chromium/src/buildtools.git' + '@' + '6a18683f555b4ac8b05ac8395c29c84483ac9588',
'buildtools/linux64': {
'packages': [
{
@@ -178,7 +170,7 @@ deps = {
'test/mozilla/data':
Var('chromium_url') + '/v8/deps/third_party/mozilla-tests.git' + '@' + 'f6c578a10ea707b1a8ab0b88943fe5115ce2b9be',
'test/test262/data':
- Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'd2940bdbb0e28fd002ec31b89f8182bbf63da092',
+ Var('chromium_url') + '/external/github.com/tc39/test262.git' + '@' + 'dd6138f9bc1aa2c3ba9cbf54452049b9a92c4e13',
'third_party/android_platform': {
'url': Var('chromium_url') + '/chromium/src/third_party/android_platform.git' + '@' + 'e3919359f2387399042d31401817db4a02d756ec',
'condition': 'checkout_android',
@@ -186,33 +178,21 @@ deps = {
'third_party/android_sdk/public': {
'packages': [
{
- 'package': 'chromium/third_party/android_sdk/public/build-tools/36.0.0',
+ 'package': 'chromium/third_party/android_sdk/public/build-tools/36.1.0',
'version': Var('android_sdk_build-tools_version'),
},
{
'package': 'chromium/third_party/android_sdk/public/emulator',
'version': Var('android_sdk_emulator_version'),
},
- {
- 'package': 'chromium/third_party/android_sdk/public/extras',
- 'version': Var('android_sdk_extras_version'),
- },
- {
- 'package': 'chromium/third_party/android_sdk/public/patcher',
- 'version': Var('android_sdk_patcher_version'),
- },
{
'package': 'chromium/third_party/android_sdk/public/platform-tools',
'version': Var('android_sdk_platform-tools_version'),
},
{
- 'package': 'chromium/third_party/android_sdk/public/platforms/android-36',
+ 'package': 'chromium/third_party/android_sdk/public/platforms/android-36.1',
'version': Var('android_sdk_platforms_version'),
},
- {
- 'package': 'chromium/third_party/android_sdk/public/sources/android-30',
- 'version': Var('android_sdk_sources_version'),
- },
{
'package': 'chromium/third_party/android_sdk/public/cmdline-tools',
'version': Var('android_sdk_cmdline-tools_version'),
@@ -232,7 +212,7 @@ deps = {
'dep_type': 'cipd',
},
'third_party/catapult': {
- 'url': Var('chromium_url') + '/catapult.git' + '@' + '4daf7b2cead7fb17ec3da4eedb30215e3bd3674a',
+ 'url': Var('chromium_url') + '/catapult.git' + '@' + 'ef2533747d649df4cba6756528f68751b8523f81',
'condition': 'checkout_android',
},
'third_party/clang-format/script':
@@ -246,19 +226,19 @@ deps = {
'condition': 'checkout_android',
},
'third_party/depot_tools':
- Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '8a1ec6a0213ae033f6749f261e1c528488349991',
+ Var('chromium_url') + '/chromium/tools/depot_tools.git' + '@' + '284c5ccb591c3de4e9f71be4a4beb5d1916d5383',
'third_party/dragonbox/src':
- Var('chromium_url') + '/external/github.com/jk-jeon/dragonbox.git' + '@' + '6c7c925b571d54486b9ffae8d9d18a822801cbda',
+ Var('chromium_url') + '/external/github.com/jk-jeon/dragonbox.git' + '@' + 'beeeef91cf6fef89a4d4ba5e95d47ca64ccb3a44',
'third_party/fp16/src':
Var('chromium_url') + '/external/github.com/Maratyszcza/FP16.git' + '@' + '3d2de1816307bac63c16a297e8c4dc501b4076df',
'third_party/fast_float/src':
Var('chromium_url') + '/external/github.com/fastfloat/fast_float.git' + '@' + 'cb1d42aaa1e14b09e1452cfdef373d051b8c02a4',
'third_party/fuchsia-gn-sdk': {
- 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + '99294ee55f28f8ae5a3552f4c435528e4c1686b6',
+ 'url': Var('chromium_url') + '/chromium/src/third_party/fuchsia-gn-sdk.git' + '@' + '947109b3f1f40fb060e7c91df049ee53fe89d573',
'condition': 'checkout_fuchsia',
},
'third_party/simdutf':
- Var('chromium_url') + '/chromium/src/third_party/simdutf' + '@' + 'acd71a451c1bcb808b7c3a77e0242052909e381e',
+ Var('chromium_url') + '/chromium/src/third_party/simdutf' + '@' + '93b35aec29256f705c97f675fe4623578bd7a395',
# Exists for rolling the Fuchsia SDK. Check out of the SDK should always
# rely on the hook running |update_sdk.py| script below.
'third_party/fuchsia-sdk/sdk': {
@@ -272,21 +252,21 @@ deps = {
'dep_type': 'cipd',
},
'third_party/google_benchmark_chrome': {
- 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + 'fa1929c5500ccfc01852ba50ff9258303e93601e',
+ 'url': Var('chromium_url') + '/chromium/src/third_party/google_benchmark.git' + '@' + 'abeba5d5e6db5bdf85261045e148f1db3fdc40ad',
},
'third_party/google_benchmark_chrome/src': {
- 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '761305ec3b33abf30e08d50eb829e19a802581cc',
+ 'url': Var('chromium_url') + '/external/github.com/google/benchmark.git' + '@' + '188e8278990a9069ffc84441cb5a024fd0bede37',
},
'third_party/fuzztest':
- Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + 'aa6ba9074b8d66a2e2853a0a0992c25966022e13',
+ Var('chromium_url') + '/chromium/src/third_party/fuzztest.git' + '@' + '3c8b741ed69e60949a481e3ff86c7933f65cfc2d',
'third_party/fuzztest/src':
- Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + '7940ee9a7ebce6419c6391eef8b289524b16f198',
+ Var('chromium_url') + '/external/github.com/google/fuzztest.git' + '@' + '54dfec04d5c9ad1f22b08002ab6a5e2d0de77671',
'third_party/googletest/src':
- Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + 'b2b9072ecbe874f5937054653ef8f2731eb0f010',
+ Var('chromium_url') + '/external/github.com/google/googletest.git' + '@' + '4fe3307fb2d9f86d19777c7eb0e4809e9694dde7',
'third_party/highway/src':
Var('chromium_url') + '/external/github.com/google/highway.git' + '@' + '84379d1c73de9681b54fbe1c035a23c7bd5d272d',
'third_party/icu':
- Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'f27805b7d7d8618fa73ce89e9d28e0a8b2216fec',
+ Var('chromium_url') + '/chromium/deps/icu.git' + '@' + 'a86a32e67b8d1384b33f8fa48c83a6079b86f8cd',
'third_party/instrumented_libs': {
'url': Var('chromium_url') + '/chromium/third_party/instrumented_libraries.git' + '@' + '69015643b3f68dbd438c010439c59adc52cac808',
'condition': 'checkout_instrumented_libraries',
@@ -302,179 +282,179 @@ deps = {
'third_party/jsoncpp/source':
Var('chromium_url') + '/external/github.com/open-source-parsers/jsoncpp.git'+ '@' + '42e892d96e47b1f6e29844cc705e148ec4856448',
'third_party/libc++/src':
- Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + 'cdb24138c1591d12b07d5147825ec7dfeb495276',
+ Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxx.git' + '@' + '7ab65651aed6802d2599dcb7a73b1f82d5179d05',
'third_party/libc++abi/src':
- Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + 'a02fa0058d8d52aca049868d229808a3e5dadbad',
+ Var('chromium_url') + '/external/github.com/llvm/llvm-project/libcxxabi.git' + '@' + '8f11bb1d4438d0239d0dfc1bd9456a9f31629dda',
'third_party/libpfm4':
Var('chromium_url') + '/chromium/src/third_party/libpfm4.git' + '@' + '25c29f04c9127e1ca09e6c1181f74850aa7f118b',
'third_party/libpfm4/src':
Var('chromium_url') + '/external/git.code.sf.net/p/perfmon2/libpfm4.git' + '@' + '964baf9d35d5f88d8422f96d8a82c672042e7064',
'third_party/libunwind/src':
- Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + '61ba011ba3c4ed238af93ebad476d3ab5a2fb5ab',
+ Var('chromium_url') + '/external/github.com/llvm/llvm-project/libunwind.git' + '@' + 'ba19d93d6d4f467fba11ff20fe2fc7c056f79345',
'third_party/llvm-libc/src':
- Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + 'db35841a6fcbeee98e4d7fe6ba3df1a876a18a62',
+ Var('chromium_url') + '/external/github.com/llvm/llvm-project/libc.git' + '@' + 'e81e859cfb7e78e70a58c3bfce859c509f45e1da',
'third_party/llvm-build/Release+Asserts': {
'dep_type': 'gcs',
'bucket': 'chromium-browser-clang',
'objects': [
{
- 'object_name': 'Linux_x64/clang-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': 'f6a487ffd0e56ba7a39b063d85d1f8ff7846514f50635785730cffb7368872ce',
- 'size_bytes': 55669844,
- 'generation': 1759771493989631,
+ 'object_name': 'Linux_x64/clang-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '1c3c056427ab0db261c54c8fdf7c8404ff55e3de3e550520bcb1e1660ca05aad',
+ 'size_bytes': 57489092,
+ 'generation': 1768590901063677,
'condition': 'host_os == "linux"',
},
{
- 'object_name': 'Linux_x64/clang-tidy-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '4fc7aacf4c25e50a25a941f1186a9e042ae26a2c5c698f359907798fa68106c8',
- 'size_bytes': 14053336,
- 'generation': 1759771494041411,
+ 'object_name': 'Linux_x64/clang-tidy-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': 'e3f568bd57c7ab199eb384153eea8cbe3c0e0604b2d8bbb158985647709a9a9c',
+ 'size_bytes': 14391456,
+ 'generation': 1768590901188932,
'condition': 'host_os == "linux" and checkout_clang_tidy',
},
{
- 'object_name': 'Linux_x64/clangd-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '238897cb0b55ffcb7f6b8f6a10055e44e05023642441a800895704ced91d37d1',
- 'size_bytes': 14197108,
- 'generation': 1759771494144266,
+ 'object_name': 'Linux_x64/clangd-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '8762f3c6102eae568e3ca7a287e774514846f2bb2feda4cf7dc1c33d9f5f1c8d',
+ 'size_bytes': 14588900,
+ 'generation': 1768590901246745,
'condition': 'host_os == "linux" and checkout_clangd',
},
{
- 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '2c5b0bf210ca982d8ec37cacf3d06d9c45bd6e68b33dcaabce0d108d6c266a36',
- 'size_bytes': 2272128,
- 'generation': 1759771494296549,
+ 'object_name': 'Linux_x64/llvm-code-coverage-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '4705feac592251ad0e2e1c41c855a6ecdc728908cbb459d4f68ca57f16bc4c5e',
+ 'size_bytes': 2321652,
+ 'generation': 1768590901407256,
'condition': 'host_os == "linux" and checkout_clang_coverage_tools',
},
{
- 'object_name': 'Linux_x64/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': 'fd644634db56977b072d951f26571ac41c9c298bf5989e99efeb150ee8427364',
- 'size_bytes': 5666140,
- 'generation': 1759771494159187,
+ 'object_name': 'Linux_x64/llvmobjdump-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '39d29ab3e708bcb6485181ac03123cfa3bac5b2365d5c441ab0cf5e7b25354b6',
+ 'size_bytes': 5802908,
+ 'generation': 1768590901316435,
'condition': '(checkout_linux or checkout_mac or checkout_android) and host_os == "linux"',
},
{
- 'object_name': 'Mac/clang-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '44811b6ed6868142c088807f6bcc0d08811a7b11d3f2bc2124c45868037e8cc3',
- 'size_bytes': 53583464,
- 'generation': 1759771495565305,
+ 'object_name': 'Mac/clang-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '9aff2c8f9d941be0667dc3ad3d4c3591dccd70f7a3b8e80396a623364e752eeb',
+ 'size_bytes': 54613288,
+ 'generation': 1768590902935296,
'condition': 'host_os == "mac" and host_cpu == "x64"',
},
{
- 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '8a2e16410bede5d52c77a012f182dde2350b05e647f7c1acaf7823ce816b4422',
- 'size_bytes': 1005144,
- 'generation': 1759771503758969,
+ 'object_name': 'Mac/clang-mac-runtime-library-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '4f953afe4edebb54912719b437c78842978b0205792c069aa7529fd369d900be',
+ 'size_bytes': 1011040,
+ 'generation': 1768590912304306,
'condition': 'checkout_mac and not host_os == "mac"',
},
{
- 'object_name': 'Mac/clang-tidy-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '66633fe8846fddeda86b5ee992b945939bfe46567c9c685900c39531d22ce5cf',
- 'size_bytes': 14133312,
- 'generation': 1759771495642847,
+ 'object_name': 'Mac/clang-tidy-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '62033f6ff5c1ea0a18ae581edfd1178f50ede19d84675eafb640d752e26b60ae',
+ 'size_bytes': 14444752,
+ 'generation': 1768590903234647,
'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_tidy',
},
{
- 'object_name': 'Mac/clangd-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '44088b951aa7ddc96c0f32703b076311a7e7b803b3adfe0bfe9725f78c4fab29',
- 'size_bytes': 15627392,
- 'generation': 1759771495653658,
+ 'object_name': 'Mac/clangd-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '4a0365772b4eb7fe12fe595355e645f12c72255bf3f869941f2b4e5c5e2b76da',
+ 'size_bytes': 16398188,
+ 'generation': 1768590903283692,
'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clangd',
},
{
- 'object_name': 'Mac/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '79d62c78d256a508a0f3dbe59aa0fdf0391a9d462bf74e56adc1dee82efa83ac',
- 'size_bytes': 2321940,
- 'generation': 1759771495825689,
+ 'object_name': 'Mac/llvm-code-coverage-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '1c307bb206c5fc1e79deec1d12ce4ead53fa41574729deaa6d2b3a67f9540710',
+ 'size_bytes': 2352620,
+ 'generation': 1768590903522922,
'condition': 'host_os == "mac" and host_cpu == "x64" and checkout_clang_coverage_tools',
},
{
- 'object_name': 'Mac/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': 'a10d075e19e7b614ffd8c5a65f04fbd45011ec74c735dda89f0b3780ab397329',
- 'size_bytes': 5567160,
- 'generation': 1759771495741126,
+ 'object_name': 'Mac/llvmobjdump-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '83767300f93707ba9a40d3d7e14f1149aaf587d5c1e3ae243be8742a008e5052',
+ 'size_bytes': 5682364,
+ 'generation': 1768590903341073,
'condition': 'host_os == "mac" and host_cpu == "x64"',
},
{
- 'object_name': 'Mac_arm64/clang-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': 'c97e4f62cdd77edf725ccbf4cd63b589302605bf643c871f83214f39e629b2ea',
- 'size_bytes': 44593804,
- 'generation': 1759771504972271,
+ 'object_name': 'Mac_arm64/clang-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '5475c6c38a6199276ff173665a27ab608aadb3118ac34f1a75391ee6dc226798',
+ 'size_bytes': 45585568,
+ 'generation': 1768590913838191,
'condition': 'host_os == "mac" and host_cpu == "arm64"',
},
{
- 'object_name': 'Mac_arm64/clang-tidy-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '3a0eb0fb3a4633c8b4b143e826c5476c41cdd6bd0db8e93a74bbee6520b02b79',
- 'size_bytes': 12136348,
- 'generation': 1759771505073378,
+ 'object_name': 'Mac_arm64/clang-tidy-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '9893644917db71d520832ea9e276a98e2051acf53458efc6834973e076c6d36e',
+ 'size_bytes': 12429560,
+ 'generation': 1768590913986547,
'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_tidy',
},
{
- 'object_name': 'Mac_arm64/clangd-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '2a5dc1f385bacd25b974b8aa15c57008e33bc384521e2d705a940acbb3292356',
- 'size_bytes': 12479180,
- 'generation': 1759771505148040,
+ 'object_name': 'Mac_arm64/clangd-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': 'e67cfb9503c442bd29642b3a42b36c283346371b8143c81b895684df0fb09e69',
+ 'size_bytes': 12817084,
+ 'generation': 1768590914107805,
'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clangd',
},
{
- 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '00bf0f82ca9aff15f32e7f0cf7e7b25d36a5a672a1a9bc345c1b7e140a478f93',
- 'size_bytes': 1948520,
- 'generation': 1759771505303586,
+ 'object_name': 'Mac_arm64/llvm-code-coverage-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '5f17c695f24eadcc51edc720a5b0b2f2cc36413552038d93ae2bf361667d780a',
+ 'size_bytes': 1978756,
+ 'generation': 1768590914351005,
'condition': 'host_os == "mac" and host_cpu == "arm64" and checkout_clang_coverage_tools',
},
{
- 'object_name': 'Mac_arm64/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '7aa959752d6beafc74129e4822912021f855584e55a55600044f1d42b889f8b0',
- 'size_bytes': 5292960,
- 'generation': 1759771505201957,
+ 'object_name': 'Mac_arm64/llvmobjdump-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '5fd7fc88f00197a710aac7dd00a2b6947d5231c53a472ed38e1af0b9088cefc3',
+ 'size_bytes': 5418172,
+ 'generation': 1768590914206466,
'condition': 'host_os == "mac" and host_cpu == "arm64"',
},
{
- 'object_name': 'Win/clang-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': 'fc756186dea61e700bd0f885b585050d9356bbd7f942dafae25d38eef4671adf',
- 'size_bytes': 47657436,
- 'generation': 1759771514781908,
+ 'object_name': 'Win/clang-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': 'de6622ec6d9d22b00316c47b2eb59e6cb7dbcb2d5b59f04f18c94714d0b35066',
+ 'size_bytes': 48839256,
+ 'generation': 1768590925760667,
'condition': 'host_os == "win"',
},
{
- 'object_name': 'Win/clang-tidy-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': 'f7ecd7e8d555e8622e0096ea1aca3ddb3fb4e89e91228c3c87289a4b8ca7919c',
- 'size_bytes': 14016476,
- 'generation': 1759771514824669,
+ 'object_name': 'Win/clang-tidy-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': 'bf6f38e7f5d06c8c3eff9ba85df1ddd1006828cc72b638d22a3e7562507a8a51',
+ 'size_bytes': 14353272,
+ 'generation': 1768590926006423,
'condition': 'host_os == "win" and checkout_clang_tidy',
},
{
- 'object_name': 'Win/clang-win-runtime-library-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '0a426702c9e0f92ea27f9611a1665cc5df9a58820360d3fa6a4026b9a0e5120f',
- 'size_bytes': 2501292,
- 'generation': 1759771523074183,
+ 'object_name': 'Win/clang-win-runtime-library-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': 'ad0dc3c686f63f40a35bd7a10f90935d08bcd9d1f23549c87cbdeb8cb503250c',
+ 'size_bytes': 2540656,
+ 'generation': 1768590935148812,
'condition': 'checkout_win and not host_os == "win"',
},
{
- 'object_name': 'Win/clangd-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': 'b172d0246511cdeffbc5a4fa44ad402a6b9eacd9d3e2e77d88a9965f80d344d5',
- 'size_bytes': 14364312,
- 'generation': 1759771514873065,
+ 'object_name': 'Win/clangd-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': 'bcf731c6ce9050067212fc4164893ce768809d73732459f2c1a0ddb8f124f5f2',
+ 'size_bytes': 14736740,
+ 'generation': 1768590926034327,
'condition': 'host_os == "win" and checkout_clangd',
},
{
- 'object_name': 'Win/llvm-code-coverage-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': 'b70528795afd95729971b74939e512c638a8a93fd1ee1c9205a6240f7af28802',
- 'size_bytes': 2368144,
- 'generation': 1759771515105244,
+ 'object_name': 'Win/llvm-code-coverage-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': 'bf86ab13e378a70f953d014cc7a37714dbaca0d8002cd638dd4d88df08231910',
+ 'size_bytes': 2416448,
+ 'generation': 1768590926285418,
'condition': 'host_os == "win" and checkout_clang_coverage_tools',
},
{
- 'object_name': 'Win/llvmobjdump-llvmorg-22-init-8940-g4d4cb757-84.tar.xz',
- 'sha256sum': '94c068f109e220e028a38f5beced7d6acd67725fc0b1da9fa8ed1b959f12d799',
- 'size_bytes': 5673824,
- 'generation': 1759771514962844,
+ 'object_name': 'Win/llvmobjdump-llvmorg-23-init-484-gf646b915-1.tar.xz',
+ 'sha256sum': '3ee3ece3cf0afa3536c39b15f818e5eab1ac4408cd31ad0ad82414d3a8aa1eca',
+ 'size_bytes': 5796552,
+ 'generation': 1768590926109316,
'condition': '(checkout_linux or checkout_mac or checkout_android) and host_os == "win"',
},
],
},
'third_party/logdog/logdog':
- Var('chromium_url') + '/infra/luci/luci-py/client/libs/logdog' + '@' + '0b2078a90f7a638d576b3a7c407d136f2fb62399',
+ Var('chromium_url') + '/infra/luci/luci-py/client/libs/logdog' + '@' + '62fe96d7fd97a62f21a4665d2e71f69e9eedb04e',
'third_party/markupsafe':
Var('chromium_url') + '/chromium/src/third_party/markupsafe.git' + '@' + '4256084ae14175d38a3ff7d739dca83ae49ccec6',
'third_party/ninja': {
@@ -492,56 +472,56 @@ deps = {
'condition': 'not build_with_chromium',
},
'third_party/perfetto':
- Var('android_url') + '/platform/external/perfetto.git' + '@' + '40b529923598b739b2892a536a7692eedbed5685',
+ Var('chromium_url') + '/external/github.com/google/perfetto.git' + '@' + '1d9994a93c6ada2fb261dc72984fa07683a6c86e',
'third_party/protobuf':
- Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + 'fcb7931541e4fe633b796db3f3e6f54c2dd297a8',
+ Var('chromium_url') + '/chromium/src/third_party/protobuf.git' + '@' + 'ddf513ccaeed6b1316bc2029b10f4436ad297324',
'third_party/re2/src':
- Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + '61c4644171ee6b480540bf9e569cba06d9090b4b',
+ Var('chromium_url') + '/external/github.com/google/re2.git' + '@' + '972a15cedd008d846f1a39b2e88ce48d7f166cbd',
'third_party/requests': {
'url': Var('chromium_url') + '/external/github.com/kennethreitz/requests.git' + '@' + 'c7e0fc087ceeadb8b4c84a0953a422c474093d6d',
'condition': 'checkout_android',
},
'tools/rust':
- Var('chromium_url') + '/chromium/src/tools/rust' + '@' + '12557fcc00d7e94caa5e270d7343b566e48a68ae',
+ Var('chromium_url') + '/chromium/src/tools/rust' + '@' + 'd2fadac996be252abe5077583a42970163e9f2e7',
'tools/win':
- Var('chromium_url') + '/chromium/src/tools/win' + '@' + '24494b071e019a2baea4355d9870ffc5fc0bbafe',
+ Var('chromium_url') + '/chromium/src/tools/win' + '@' + 'baacfc6d5986b07abe0503216b491e234b94ba79',
'third_party/rust':
- Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + '4d93511ebaceb09ebdd83c8876a4a936b75fa04d',
+ Var('chromium_url') + '/chromium/src/third_party/rust' + '@' + '30eb036e9b2f181dda31bde6f20d2a4983e380b9',
'third_party/rust-toolchain': {
'dep_type': 'gcs',
'bucket': 'chromium-browser-clang',
'objects': [
{
- 'object_name': 'Linux_x64/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz',
- 'sha256sum': '2bdaea0b11cb11a8f2f4dcb79b0dbb4bf38e2bd22479ff8014f55b9b6890e135',
- 'size_bytes': 142044388,
- 'generation': 1758743116775859,
+ 'object_name': 'Linux_x64/rust-toolchain-d2015e2359d5d0b154c2b192d4039f9b5711fcdc-4-llvmorg-23-init-484-gf646b915.tar.xz',
+ 'sha256sum': 'd31bf65845992926dc6dedce43348e48fd9140f5339c678974481a1e3b356da1',
+ 'size_bytes': 267004352,
+ 'generation': 1769079787385484,
'condition': 'host_os == "linux"',
},
{
- 'object_name': 'Mac/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz',
- 'sha256sum': '351347e1930a900c63b3953cdb10775b73572c6145e389f3820ba920816d46ca',
- 'size_bytes': 135891820,
- 'generation': 1758743118329536,
+ 'object_name': 'Mac/rust-toolchain-d2015e2359d5d0b154c2b192d4039f9b5711fcdc-4-llvmorg-23-init-484-gf646b915.tar.xz',
+ 'sha256sum': '0677ec808549ab845bfdbe4ff6072d41c8b4f2c3321c68a5bf95b2577372fe34',
+ 'size_bytes': 254470068,
+ 'generation': 1769079789279846,
'condition': 'host_os == "mac" and host_cpu == "x64"',
},
{
- 'object_name': 'Mac_arm64/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz',
- 'sha256sum': '33d6b8cf4fc6617aa98888a46bc1dbef29ae9a9ebd01c3f248ef8c08ec5f198b',
- 'size_bytes': 123302332,
- 'generation': 1758743119839246,
+ 'object_name': 'Mac_arm64/rust-toolchain-d2015e2359d5d0b154c2b192d4039f9b5711fcdc-4-llvmorg-23-init-484-gf646b915.tar.xz',
+ 'sha256sum': '5977efd99f758004492f7e75879db85642c37b3882d610092200e850475b9042',
+ 'size_bytes': 238094236,
+ 'generation': 1769079791037848,
'condition': 'host_os == "mac" and host_cpu == "arm64"',
},
{
- 'object_name': 'Win/rust-toolchain-15283f6fe95e5b604273d13a428bab5fc0788f5a-1-llvmorg-22-init-8940-g4d4cb757.tar.xz',
- 'sha256sum': '4f6dfa230e5d401bf9aadd804142b412467177b17d50a3f52a8c69c1957aa2db',
- 'size_bytes': 199998880,
- 'generation': 1758743121322555,
+ 'object_name': 'Win/rust-toolchain-d2015e2359d5d0b154c2b192d4039f9b5711fcdc-4-llvmorg-23-init-484-gf646b915.tar.xz',
+ 'sha256sum': '0e4bd819cae4aa322a6f8667e3ff157adfb5eadb9d0daf615d5ff8202c530e6e',
+ 'size_bytes': 402509464,
+ 'generation': 1769079792946462,
'condition': 'host_os == "win"',
},
],
},
- 'third_party/siso': {
+ 'third_party/siso/cipd': {
'packages': [
{
'package': 'build/siso/${{platform}}',
@@ -552,13 +532,13 @@ deps = {
'condition': 'not build_with_chromium and host_cpu != "s390x" and host_os != "zos" and host_cpu != "ppc64"',
},
'third_party/zlib':
- Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '85f05b0835f934e52772efc308baa80cdd491838',
+ Var('chromium_url') + '/chromium/src/third_party/zlib.git'+ '@' + '980253c1cc835c893c57b5cfc10c5b942e10bc46',
'tools/clang':
- Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + '97f0845783b3d8ebca7541afb46ec53c3f4bd3ac',
+ Var('chromium_url') + '/chromium/src/tools/clang.git' + '@' + 'd651bc848c45c945ecbc0c1a372b0b781e47c991',
'tools/protoc_wrapper':
Var('chromium_url') + '/chromium/src/tools/protoc_wrapper.git' + '@' + '3438d4183bfc7c0d6850e8b970204cc8189f0323',
'third_party/abseil-cpp': {
- 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '3fb321d9764442ceaf2e17b6e68ab6b6836bc78a',
+ 'url': Var('chromium_url') + '/chromium/src/third_party/abseil-cpp.git' + '@' + '6d5ac0f7d3f0af5d13b78044fc31c793aa3549f8',
'condition': 'not build_with_chromium',
},
'third_party/zoslib': {
@@ -590,6 +570,7 @@ include_rules = [
'+absl/container/flat_hash_set.h',
'+absl/container/btree_map.h',
'+absl/functional/overload.h',
+ '+absl/numeric/int128.h',
'+absl/status',
'+absl/strings/str_format.h',
'+absl/synchronization/mutex.h',
diff --git a/deps/v8/MODULE.bazel b/deps/v8/MODULE.bazel
index 3370e06bc077b9..7d7ba53b579605 100644
--- a/deps/v8/MODULE.bazel
+++ b/deps/v8/MODULE.bazel
@@ -3,10 +3,10 @@ module(
version = "0.0.0",
)
-bazel_dep(name = "bazel_skylib", version = "1.7.1")
-bazel_dep(name = "rules_cc", version = "0.1.2")
+bazel_dep(name = "bazel_skylib", version = "1.8.1")
+bazel_dep(name = "rules_cc", version = "0.2.0")
bazel_dep(name = "rules_python", version = "1.0.0")
-bazel_dep(name = "platforms", version = "0.0.11")
+bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "abseil-cpp", version = "20250814.0")
bazel_dep(name = "highway", version = "1.2.0")
@@ -15,6 +15,178 @@ pip.parse(
hub_name = "v8_python_deps",
python_version = "3.11",
requirements_lock = "//:bazel/requirements.txt",
- extra_pip_args = ["--require-hashes"],
+ extra_pip_args = [
+ "--require-hashes",
+ "--index-url=https://pypi.org/simple",
+ ],
)
use_repo(pip, "v8_python_deps")
+
+# Define the local LLVM toolchain repository
+llvm_toolchain_repository = use_repo_rule("//bazel/toolchain:llvm_repository.bzl", "llvm_toolchain_repository")
+
+llvm_toolchain_repository(
+ name = "llvm_toolchain",
+ path = "third_party/llvm-build/Release+Asserts",
+ config_file_content = """
+load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", "feature", "flag_group", "flag_set", "tool_path")
+
+def _impl(ctx):
+ tool_paths = [
+ tool_path(name = "gcc", path = "bin/clang"),
+ tool_path(name = "ld", path = "bin/lld"),
+ tool_path(name = "ar", path = "bin/llvm-ar"),
+ tool_path(name = "cpp", path = "bin/clang++"),
+ tool_path(name = "gcov", path = "/bin/false"),
+ tool_path(name = "nm", path = "bin/llvm-nm"),
+ tool_path(name = "objdump", path = "bin/llvm-objdump"),
+ tool_path(name = "strip", path = "bin/llvm-strip"),
+ ]
+
+ features = [
+ feature(
+ name = "default_compile_flags",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ "c-compile",
+ "c++-compile",
+ "c++-header-parsing",
+ "c++-module-compile",
+ "c++-module-codegen",
+ "linkstamp-compile",
+ "assemble",
+ "preprocess-assemble",
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [
+ "--sysroot={WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot",
+ "-nostdinc++",
+ "-isystem",
+ "{WORKSPACE_ROOT}/buildtools/third_party/libc++",
+ "-isystem",
+ "{WORKSPACE_ROOT}/third_party/libc++/src/include",
+ "-isystem",
+ "{WORKSPACE_ROOT}/third_party/libc++abi/src/include",
+ "-isystem",
+ "{WORKSPACE_ROOT}/third_party/libc++/src/src",
+ "-isystem",
+ "{WORKSPACE_ROOT}/third_party/llvm-libc/src",
+ "-D_LIBCPP_HARDENING_MODE_DEFAULT=_LIBCPP_HARDENING_MODE_NONE",
+ "-DLIBC_NAMESPACE=__llvm_libc_cr",
+ ],
+ ),
+ ],
+ ),
+ ],
+ ),
+ feature(
+ name = "default_linker_flags",
+ enabled = True,
+ flag_sets = [
+ flag_set(
+ actions = [
+ "c++-link-executable",
+ "c++-link-dynamic-library",
+ "c++-link-nodeps-dynamic-library",
+ ],
+ flag_groups = [
+ flag_group(
+ flags = [
+ "--sysroot={WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot",
+ "-fuse-ld=lld",
+ "-lm",
+ "-lpthread",
+ ],
+ ),
+ ],
+ ),
+ ],
+ ),
+ ]
+
+ return cc_common.create_cc_toolchain_config_info(
+ ctx = ctx,
+ features = features,
+ cxx_builtin_include_directories = [
+ "{WORKSPACE_ROOT}/buildtools/third_party/libc++",
+ "{WORKSPACE_ROOT}/third_party/libc++/src/include",
+ "{WORKSPACE_ROOT}/third_party/libc++abi/src/include",
+ "{WORKSPACE_ROOT}/third_party/libc++/src/src",
+ "{WORKSPACE_ROOT}/third_party/llvm-libc/src",
+ "{WORKSPACE_ROOT}/third_party/llvm-build/Release+Asserts/lib/clang/22/include",
+ "{WORKSPACE_ROOT}/third_party/llvm-build/Release+Asserts/lib/clang/23/include",
+ "{WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot/usr/include",
+ "{WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot/usr/local/include",
+ ],
+ toolchain_identifier = "local_clang",
+ host_system_name = "local",
+ target_system_name = "local",
+ target_cpu = "k8",
+ target_libc = "unknown",
+ compiler = "clang",
+ abi_version = "unknown",
+ abi_libc_version = "unknown",
+ tool_paths = tool_paths,
+ )
+
+cc_toolchain_config = rule(
+ implementation = _impl,
+ attrs = {},
+ provides = [CcToolchainConfigInfo],
+)
+""",
+ build_file_content = """
+load(":cc_toolchain_config.bzl", "cc_toolchain_config")
+
+package(default_visibility = ["//visibility:public"])
+
+filegroup(
+ name = "all_files",
+ srcs = glob(["**/*"]),
+)
+
+filegroup(name = "empty")
+
+cc_toolchain_config(name = "k8_toolchain_config")
+
+cc_toolchain(
+ name = "k8_toolchain",
+ all_files = ":all_files",
+ ar_files = ":all_files",
+ compiler_files = ":all_files",
+ dwp_files = ":empty",
+ linker_files = ":all_files",
+ objcopy_files = ":all_files",
+ strip_files = ":all_files",
+ supports_param_files = 0,
+ toolchain_config = ":k8_toolchain_config",
+ toolchain_identifier = "local_clang",
+)
+
+toolchain(
+ name = "cc_toolchain_k8",
+ exec_compatible_with = [
+ "@platforms//cpu:x86_64",
+ "@platforms//os:linux",
+ ],
+ target_compatible_with = [
+ "@platforms//cpu:x86_64",
+ "@platforms//os:linux",
+ ],
+ toolchain = ":k8_toolchain",
+ toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
+)
+""",
+)
+
+register_toolchains("@llvm_toolchain//:cc_toolchain_k8")
+
+# Define local repository for libc++ from third_party sources
+libcxx_repository = use_repo_rule("//bazel/toolchain:libcxx_repository.bzl", "libcxx_repository")
+
+libcxx_repository(
+ name = "libcxx",
+)
diff --git a/deps/v8/WATCHLISTS b/deps/v8/WATCHLISTS
index 0e9e78b120c9eb..db847a31279e54 100644
--- a/deps/v8/WATCHLISTS
+++ b/deps/v8/WATCHLISTS
@@ -60,6 +60,9 @@
'arm': {
'filepath': '/arm/',
},
+ 'riscv': {
+ 'filepath': '/riscv/',
+ },
'merges': {
'filepath': '.',
},
@@ -111,6 +114,7 @@
'WATCHLISTS': {
'maglev': [
+ 'dmercadier+watch@chromium.org',
'leszeks+watch@chromium.org',
'verwaest+watch@chromium.org',
'victorgomes+watch@chromium.org',
@@ -140,6 +144,9 @@
'v8-ppc-ports@googlegroups.com',
'v8-risc-v-ports@chromium.org',
],
+ 'riscv': [
+ 'v8-risc-v-ports@chromium.org',
+ ],
'merges': [
# Only enabled on branches created with tools/release/create_release.py
'v8-merges@googlegroups.com',
diff --git a/deps/v8/bazel/config/BUILD.bazel b/deps/v8/bazel/config/BUILD.bazel
index c81f2782031269..17e379b8e27baa 100644
--- a/deps/v8/bazel/config/BUILD.bazel
+++ b/deps/v8/bazel/config/BUILD.bazel
@@ -357,3 +357,28 @@ selects.config_setting_group(
":is_fastbuild",
],
)
+
+# To build with sanitizers in the command line, define the local
+# variable SANITIZER.
+# Eg: bazel build --copt=-fsanitize=address --linkopt=-fsanitize=address \
+# --define=SANITIZER=asan ...
+
+config_setting(
+ name = "asan_enabled",
+ values = {"define": "SANITIZER=asan"},
+)
+
+config_setting(
+ name = "hwasan_enabled",
+ values = {"define": "SANITIZER=hwasan"},
+)
+
+config_setting(
+ name = "msan_enabled",
+ values = {"define": "SANITIZER=msan"},
+)
+
+config_setting(
+ name = "ubsan_enabled",
+ values = {"define": "SANITIZER=ubsan"},
+)
diff --git a/deps/v8/bazel/defs.bzl b/deps/v8/bazel/defs.bzl
index a7e1e2af786ce4..9648e4a541f99f 100644
--- a/deps/v8/bazel/defs.bzl
+++ b/deps/v8/bazel/defs.bzl
@@ -97,7 +97,7 @@ v8_config = rule(
def _default_args():
return struct(
- deps = [":define_flags"],
+ deps = [":define_flags", "@libcxx//:libc++"],
defines = select({
"@v8//bazel/config:is_windows": [
"UNICODE",
@@ -111,6 +111,7 @@ def _default_args():
"@v8//bazel/config:is_posix": [
"-fPIC",
"-fno-strict-aliasing",
+ "-fconstexpr-steps=2000000",
"-Werror",
"-Wextra",
"-Wno-unneeded-internal-declaration",
diff --git a/deps/v8/bazel/toolchain/BUILD.bazel b/deps/v8/bazel/toolchain/BUILD.bazel
new file mode 100644
index 00000000000000..497f126c4c3af3
--- /dev/null
+++ b/deps/v8/bazel/toolchain/BUILD.bazel
@@ -0,0 +1,2 @@
+package(default_visibility = ["//visibility:public"])
+exports_files(["llvm_repository.bzl"])
diff --git a/deps/v8/bazel/toolchain/libcxx_repository.bzl b/deps/v8/bazel/toolchain/libcxx_repository.bzl
new file mode 100644
index 00000000000000..a7d5f11053dd33
--- /dev/null
+++ b/deps/v8/bazel/toolchain/libcxx_repository.bzl
@@ -0,0 +1,99 @@
+"""Repository rule for building libc++ from third_party sources."""
+
+def _libcxx_repository_impl(ctx):
+ # Find the workspace root
+ workspace_root = ctx.path(Label("@//:BUILD.bazel")).dirname
+
+ # Symlink the source directories
+ ctx.symlink(workspace_root.get_child("third_party").get_child("libc++"), "libc++")
+ ctx.symlink(workspace_root.get_child("third_party").get_child("libc++abi"), "libc++abi")
+ ctx.symlink(workspace_root.get_child("third_party").get_child("llvm-libc"), "llvm-libc")
+ ctx.symlink(workspace_root.get_child("buildtools").get_child("third_party").get_child("libc++"), "buildtools_libc++")
+
+ # Get the external repository path for include flags
+ # In bzlmod, repo names may have prefixes, so we need to determine the actual path
+ repo_path = "external/" + ctx.name
+
+ # Create the BUILD file
+ # NOTE: We don't use 'includes' attribute here because it creates relative paths
+ # that conflict with the toolchain's absolute paths, breaking #include_next.
+ # The toolchain provides the libc++ include paths via -isystem flags.
+ build_content = '''
+package(default_visibility = ["//visibility:public"])
+
+LIBCXX_COPTS = [
+ "-std=c++23",
+ "-fPIC",
+ "-fstrict-aliasing",
+ "-fexceptions",
+ "-frtti",
+ "-D_LIBCPP_BUILDING_LIBRARY",
+ "-D_LIBCPP_HARDENING_MODE_DEFAULT=_LIBCPP_HARDENING_MODE_NONE",
+ "-DLIBC_NAMESPACE=__llvm_libc_cr",
+]
+
+cc_library(
+ name = "libc++abi",
+ srcs = glob([
+ "libc++abi/src/src/*.cpp",
+ "libc++abi/src/src/*.h",
+ "libc++abi/src/src/demangle/*.h",
+ ], exclude = [
+ # Exclude files not needed for Linux build
+ "libc++abi/src/src/cxa_noexception.cpp",
+ "libc++abi/src/src/stdlib_new_delete.cpp",
+ ]),
+ hdrs = glob([
+ "libc++abi/src/include/**/*.h",
+ "libc++/src/include/**/*",
+ "libc++/src/src/include/*.h",
+ "libc++abi/src/src/demangle/*.def",
+ "buildtools_libc++/__config_site",
+ "buildtools_libc++/__assertion_handler",
+ "llvm-libc/src/**/*.h",
+ ]),
+ copts = LIBCXX_COPTS + [
+ "-DLIBCXXABI_SILENT_TERMINATE",
+ "-iquote", "{REPO_PATH}/libc++abi/src/src",
+ "-iquote", "{REPO_PATH}/libc++abi/src/src/demangle",
+ ],
+ linkstatic = True,
+)
+
+cc_library(
+ name = "libc++",
+ srcs = glob([
+ "libc++/src/src/*.cpp",
+ "libc++/src/src/*.h",
+ "libc++/src/src/filesystem/*.cpp",
+ "libc++/src/src/filesystem/*.h",
+ "libc++/src/src/ryu/*.cpp",
+ "libc++/src/src/include/*.h",
+ "libc++/src/src/include/ryu/*.h",
+ ]) + glob(["libc++/src/src/support/**/*.ipp"], allow_empty = True),
+ hdrs = glob([
+ "libc++/src/include/**/*",
+ "buildtools_libc++/__config_site",
+ "buildtools_libc++/__assertion_handler",
+ "llvm-libc/src/**/*.h",
+ ]),
+ copts = LIBCXX_COPTS + [
+ "-DLIBCXX_BUILDING_LIBCXXABI",
+ "-iquote", "{REPO_PATH}/libc++/src/src",
+ "-iquote", "{REPO_PATH}/libc++/src/src/filesystem",
+ ],
+ linkopts = [
+ "-lpthread",
+ "-lm",
+ ],
+ deps = [":libc++abi"],
+ linkstatic = True,
+)
+'''.format(REPO_PATH=repo_path)
+ ctx.file("BUILD.bazel", build_content)
+
+libcxx_repository = repository_rule(
+ implementation = _libcxx_repository_impl,
+ local = True,
+ configure = True,
+)
diff --git a/deps/v8/bazel/toolchain/llvm_repository.bzl b/deps/v8/bazel/toolchain/llvm_repository.bzl
new file mode 100644
index 00000000000000..76670a5e69b657
--- /dev/null
+++ b/deps/v8/bazel/toolchain/llvm_repository.bzl
@@ -0,0 +1,40 @@
+def _llvm_toolchain_impl(ctx):
+ # Find the workspace root by resolving a label in the main repository
+ # This assumes the main repo is "@" or the default.
+ workspace_root = ctx.path(Label("@//:BUILD.bazel")).dirname
+
+ # Construct the path to the LLVM build directory within the workspace
+ # ctx.attr.path should be relative to the workspace root,
+ # e.g. "third_party/llvm-build/Release+Asserts"
+ # We manually split and traverse because get_child handles one component.
+ llvm_path = workspace_root
+ for component in ctx.attr.path.split("/"):
+ llvm_path = llvm_path.get_child(component)
+
+ # Symlink top-level directories and files
+ items = ["bin", "lib", "include", "share"]
+ for item in items:
+ # Check if the item exists before symlinking to avoid errors
+ src_path = llvm_path.get_child(item)
+ if src_path.exists:
+ ctx.symlink(src_path, item)
+
+ # Create the config file
+ config_content = ctx.attr.config_file_content.replace("{WORKSPACE_ROOT}", str(workspace_root))
+ ctx.file("cc_toolchain_config.bzl", config_content)
+
+ # Create the BUILD file
+ ctx.file("BUILD.bazel", ctx.attr.build_file_content)
+
+llvm_toolchain_repository = repository_rule(
+ implementation = _llvm_toolchain_impl,
+ attrs = {
+ "path": attr.string(mandatory = True,
+ doc = "Path to the LLVM install directory relative to workspace root"),
+ "build_file_content": attr.string(mandatory = True, doc = "Content of the BUILD file"),
+ "config_file_content": attr.string(mandatory = True,
+ doc = "Content of the cc_toolchain_config.bzl file"),
+ },
+ local = True,
+ configure = True, # Indicates this rule depends on system configuration/files
+)
diff --git a/deps/v8/gni/v8.gni b/deps/v8/gni/v8.gni
index d198859576a4bd..e29a7c5de3c4cc 100644
--- a/deps/v8/gni/v8.gni
+++ b/deps/v8/gni/v8.gni
@@ -61,8 +61,7 @@ declare_args() {
# is still not accessible unless --harmony-temporal is enabled at runtime)
#
# Furthermore, some architectures don't have Rust toolchains in Chromium
- v8_enable_temporal_support = !(defined(build_with_node) && build_with_node) &&
- target_cpu != "ppc64" && target_cpu != "s390x"
+ v8_enable_temporal_support = !(defined(build_with_node) && build_with_node)
# Use static libraries instead of source_sets.
v8_static_library = false
@@ -80,6 +79,12 @@ declare_args() {
# Implement tracing using Perfetto (https://perfetto.dev).
v8_use_perfetto = false
+ # Use Perfetto JSON Export.
+ v8_use_perfetto_json_export = ""
+
+ # Use Perfetto SDK headers.
+ v8_use_perfetto_sdk = false
+
# Override global symbol level setting for v8.
v8_symbol_level = symbol_level
@@ -225,7 +230,7 @@ declare_args() {
# When `v8_enable_pointer_compression_shared_cage` RO space is placed into a
# contiguous area at the front of the cage. In case RO allocations fails this
# size needs to be adjusted.
- v8_contiguous_compressed_ro_space_size_mb = 8
+ v8_contiguous_compressed_ro_space_size_mb = 16
# Change code emission and runtime features to be CET shadow-stack compliant
# (incomplete and experimental).
@@ -269,12 +274,25 @@ if (v8_enable_backtrace == "") {
v8_enable_backtrace = is_debug && !v8_optimized_debug
}
+if (v8_use_perfetto_sdk) {
+ # When using perfetto SDK, we also need to enable perfetto support.
+ v8_use_perfetto = true
+}
+
# Chromium is configured to use the perfetto client library, v8 should also
# use perfetto for tracing.
-if (build_with_chromium) {
+if (build_with_chromium && !use_fuzzing_engine) {
v8_use_perfetto = true
}
+# Enable JSON export by default when using perfetto but not the SDK.
+if (v8_use_perfetto_json_export == "") {
+ v8_use_perfetto_json_export = v8_use_perfetto && !v8_use_perfetto_sdk
+}
+assert(
+ !(v8_use_perfetto_sdk && v8_use_perfetto_json_export),
+ "Perfetto JSON Export is not available when building with the Perfetto SDK.")
+
# Includes profiles to optimize builtins if
# * it is a Chromium build, and
# * Chromium builds with optimization.
@@ -305,7 +323,8 @@ if (v8_enable_pointer_compression == "") {
# Windows, Linux, MacOS and tvOS.
is_drumbrake_supported =
v8_enable_webassembly && v8_enable_pointer_compression &&
- (v8_current_cpu == "x64" || v8_current_cpu == "arm64") &&
+ (v8_current_cpu == "x64" || v8_current_cpu == "arm64" ||
+ v8_current_cpu == "riscv64") &&
(target_os == "win" || target_os == "linux" || target_os == "mac" ||
target_os == "ios")
diff --git a/deps/v8/include/cppgc/allocation.h b/deps/v8/include/cppgc/allocation.h
index a7955fd1016e8e..450db00479e87a 100644
--- a/deps/v8/include/cppgc/allocation.h
+++ b/deps/v8/include/cppgc/allocation.h
@@ -50,18 +50,17 @@ class MakeGarbageCollectedTraitInternal {
protected:
static inline void MarkObjectAsFullyConstructed(const void* payload) {
// See api_constants for an explanation of the constants.
- std::atomic* atomic_mutable_bitfield =
- reinterpret_cast*>(
- const_cast(reinterpret_cast(
- reinterpret_cast(payload) -
- api_constants::kFullyConstructedBitFieldOffsetFromPayload)));
+ std::atomic_ref atomic_mutable_bitfield(
+ *const_cast(reinterpret_cast(
+ reinterpret_cast(payload) -
+ api_constants::kFullyConstructedBitFieldOffsetFromPayload)));
// It's safe to split use load+store here (instead of a read-modify-write
// operation), since it's guaranteed that this 16-bit bitfield is only
// modified by a single thread. This is cheaper in terms of code bloat (on
// ARM) and performance.
- uint16_t value = atomic_mutable_bitfield->load(std::memory_order_relaxed);
+ uint16_t value = atomic_mutable_bitfield.load(std::memory_order_relaxed);
value |= api_constants::kFullyConstructedBitMask;
- atomic_mutable_bitfield->store(value, std::memory_order_release);
+ atomic_mutable_bitfield.store(value, std::memory_order_release);
}
// Dispatch based on compile-time information.
diff --git a/deps/v8/include/cppgc/internal/api-constants.h b/deps/v8/include/cppgc/internal/api-constants.h
index f3b0d8571d3b9d..73b955d7053ae1 100644
--- a/deps/v8/include/cppgc/internal/api-constants.h
+++ b/deps/v8/include/cppgc/internal/api-constants.h
@@ -28,7 +28,7 @@ constexpr size_t kGB = kMB * 1024;
static constexpr size_t kFullyConstructedBitFieldOffsetFromPayload =
2 * sizeof(uint16_t);
// Mask for in-construction bit.
-static constexpr uint16_t kFullyConstructedBitMask = uint16_t{1};
+static constexpr uint16_t kFullyConstructedBitMask = uint16_t{1} << 15;
static constexpr size_t kPageSizeBits = 17;
static constexpr size_t kPageSize = size_t{1} << kPageSizeBits;
diff --git a/deps/v8/include/libplatform/v8-tracing.h b/deps/v8/include/libplatform/v8-tracing.h
index 2271729240b9cb..9d05949c38efac 100644
--- a/deps/v8/include/libplatform/v8-tracing.h
+++ b/deps/v8/include/libplatform/v8-tracing.h
@@ -14,9 +14,11 @@
#include "v8-platform.h" // NOLINT(build/include_directory)
namespace perfetto {
+#if defined(V8_USE_PERFETTO_JSON_EXPORT)
namespace trace_processor {
class TraceProcessorStorage;
}
+#endif // defined(V8_USE_PERFETTO_JSON_EXPORT)
class TracingSession;
}
@@ -231,6 +233,12 @@ class V8_PLATFORM_EXPORT TraceConfig {
#define V8_PLATFORM_NON_EXPORTED_BASE(code) code
#endif // defined(_MSC_VER)
+/**
+ * V8 Tracing controller default implementation.
+ *
+ * Will become obsolete in Perfetto build
+ * (v8_use_perfetto_json_export = true).
+ */
class V8_PLATFORM_EXPORT TracingController
: public V8_PLATFORM_NON_EXPORTED_BASE(v8::TracingController) {
public:
@@ -307,10 +315,13 @@ class V8_PLATFORM_EXPORT TracingController
std::unique_ptr trace_config_;
std::atomic_bool recording_{false};
-#if defined(V8_USE_PERFETTO)
- std::ostream* output_stream_ = nullptr;
+#if defined(V8_USE_PERFETTO_JSON_EXPORT)
std::unique_ptr
trace_processor_;
+#endif
+
+#if defined(V8_USE_PERFETTO)
+ std::ostream* output_stream_ = nullptr;
TraceEventListener* listener_for_testing_ = nullptr;
std::unique_ptr tracing_session_;
#else // !defined(V8_USE_PERFETTO)
diff --git a/deps/v8/include/v8-array-buffer.h b/deps/v8/include/v8-array-buffer.h
index 3e64ece5debda3..4b55c445376530 100644
--- a/deps/v8/include/v8-array-buffer.h
+++ b/deps/v8/include/v8-array-buffer.h
@@ -77,6 +77,11 @@ class V8_EXPORT BackingStore : public v8::internal::BackingStoreBase {
*/
bool IsShared() const;
+ /**
+ * Indicates whether the backing store is immutable.
+ */
+ bool IsImmutable() const;
+
/**
* Indicates whether the backing store was created for a resizable ArrayBuffer
* or a growable SharedArrayBuffer, and thus may be resized by user JavaScript
@@ -328,6 +333,11 @@ class V8_EXPORT ArrayBuffer : public Object {
*/
bool WasDetached() const;
+ /**
+ * Returns true if this ArrayBuffer is immutable.
+ */
+ bool IsImmutable() const;
+
/**
* Detaches this ArrayBuffer and all its views (typed arrays).
* Detaching sets the byte length of the buffer and all typed arrays to zero,
diff --git a/deps/v8/include/v8-callbacks.h b/deps/v8/include/v8-callbacks.h
index 850b7ccbd4f210..e5eba5a203b8bc 100644
--- a/deps/v8/include/v8-callbacks.h
+++ b/deps/v8/include/v8-callbacks.h
@@ -260,6 +260,15 @@ enum class CrashKeyId {
using AddCrashKeyCallback = void (*)(CrashKeyId id, const std::string& value);
+// --- CrashKeyString Callbacks ---
+using CrashKey = void*;
+enum class CrashKeySize { Size32, Size64, Size256, Size1024 };
+
+using AllocateCrashKeyStringCallback =
+ std::function;
+using SetCrashKeyStringCallback =
+ std::function;
+
// --- Enter/Leave Script Callback ---
using BeforeCallEnteredCallback = void (*)(Isolate*);
using CallCompletedCallback = void (*)(Isolate*);
diff --git a/deps/v8/include/v8-context.h b/deps/v8/include/v8-context.h
index 1d52f5bf40652e..21137f628f2def 100644
--- a/deps/v8/include/v8-context.h
+++ b/deps/v8/include/v8-context.h
@@ -276,6 +276,20 @@ class V8_EXPORT Context : public Data {
* Gets the embedder data with the given index, which must have been set by a
* previous call to SetEmbedderData with the same index.
*/
+ V8_INLINE Local GetEmbedderDataV2(int index);
+
+ /**
+ * Sets the embedder data with the given index, growing the data as
+ * needed. Note that index 0 currently has a special meaning for Chrome's
+ * debugger.
+ */
+ void SetEmbedderDataV2(int index, Local value);
+
+ /**
+ * Gets the embedder data with the given index, which must have been set by a
+ * previous call to SetEmbedderData with the same index.
+ */
+ V8_DEPRECATE_SOON("Use GetEmbedderDataV2 instead")
V8_INLINE Local GetEmbedderData(int index);
/**
@@ -291,6 +305,7 @@ class V8_EXPORT Context : public Data {
* needed. Note that index 0 currently has a special meaning for Chrome's
* debugger.
*/
+ V8_DEPRECATE_SOON("Use SetEmbedderDataV2 instead")
void SetEmbedderData(int index, Local value);
/**
@@ -304,7 +319,7 @@ class V8_EXPORT Context : public Data {
V8_INLINE void* GetAlignedPointerFromEmbedderData(int index,
EmbedderDataTypeTag tag);
- V8_DEPRECATE_SOON(
+ V8_DEPRECATED(
"Use GetAlignedPointerFromEmbedderData with EmbedderDataTypeTag "
"parameter instead.")
V8_INLINE void* GetAlignedPointerFromEmbedderData(Isolate* isolate,
@@ -313,7 +328,7 @@ class V8_EXPORT Context : public Data {
kEmbedderDataTypeTagDefault);
}
- V8_DEPRECATE_SOON(
+ V8_DEPRECATED(
"Use GetAlignedPointerFromEmbedderData with EmbedderDataTypeTag "
"parameter instead.")
V8_INLINE void* GetAlignedPointerFromEmbedderData(int index) {
@@ -329,7 +344,7 @@ class V8_EXPORT Context : public Data {
* index, growing the data as needed. Note that index 0 currently has a
* special meaning for Chrome's debugger.
*/
- V8_DEPRECATE_SOON(
+ V8_DEPRECATED(
"Use SetAlignedPointerInEmbedderData with EmbedderDataTypeTag parameter "
"instead.")
void SetAlignedPointerInEmbedderData(int index, void* value) {
@@ -453,6 +468,7 @@ class V8_EXPORT Context : public Data {
internal::ValueHelper::InternalRepresentationType GetDataFromSnapshotOnce(
size_t index);
Local SlowGetEmbedderData(int index);
+ Local SlowGetEmbedderDataV2(int index);
void* SlowGetAlignedPointerFromEmbedderData(int index,
EmbedderDataTypeTag tag);
};
@@ -471,7 +487,7 @@ Local Context::GetEmbedderData(int index) {
A value = I::ReadRawField(embedder_data, value_offset);
#ifdef V8_COMPRESS_POINTERS
// We read the full pointer value and then decompress it in order to avoid
- // dealing with potential endiannes issues.
+ // dealing with potential endianness issues.
value = I::DecompressTaggedField(embedder_data, static_cast(value));
#endif
@@ -482,6 +498,29 @@ Local Context::GetEmbedderData(int index) {
#endif
}
+V8_INLINE Local Context::GetEmbedderDataV2(int index) {
+#ifndef V8_ENABLE_CHECKS
+ using A = internal::Address;
+ using I = internal::Internals;
+ A ctx = internal::ValueHelper::ValueAsAddress(this);
+ A embedder_data =
+ I::ReadTaggedPointerField(ctx, I::kNativeContextEmbedderDataOffset);
+ int value_offset =
+ I::kEmbedderDataArrayHeaderSize + (I::kEmbedderDataSlotSize * index);
+ A value = I::ReadRawField(embedder_data, value_offset);
+#ifdef V8_COMPRESS_POINTERS
+ // We read the full pointer value and then decompress it in order to avoid
+ // dealing with potential endianness issues.
+ value = I::DecompressTaggedField(embedder_data, static_cast(value));
+#endif
+
+ auto* isolate = I::GetCurrentIsolate();
+ return Local::New(isolate, value);
+#else
+ return SlowGetEmbedderDataV2(index);
+#endif
+}
+
void* Context::GetAlignedPointerFromEmbedderData(Isolate* isolate, int index,
EmbedderDataTypeTag tag) {
#if !defined(V8_ENABLE_CHECKS)
diff --git a/deps/v8/include/v8-data.h b/deps/v8/include/v8-data.h
index bf40b746adf887..7be431b31921a7 100644
--- a/deps/v8/include/v8-data.h
+++ b/deps/v8/include/v8-data.h
@@ -77,7 +77,8 @@ class V8_EXPORT Data {
class V8_EXPORT FixedArray : public Data {
public:
int Length() const;
- Local Get(Local context, int i) const;
+
+ Local Get(int i) const;
V8_INLINE static FixedArray* Cast(Data* data) {
#ifdef V8_ENABLE_CHECKS
diff --git a/deps/v8/include/v8-debug.h b/deps/v8/include/v8-debug.h
index 0aff8b9e675e8a..620467a72695e4 100644
--- a/deps/v8/include/v8-debug.h
+++ b/deps/v8/include/v8-debug.h
@@ -136,6 +136,11 @@ class V8_EXPORT StackTrace {
kDetailed = kOverview | kIsEval | kIsConstructor | kScriptNameOrSourceURL
};
+ struct ScriptIdAndContext {
+ int id;
+ v8::Local context;
+ };
+
/**
* Returns the (unique) ID of this stack trace.
*/
@@ -174,15 +179,30 @@ class V8_EXPORT StackTrace {
static Local CurrentScriptNameOrSourceURL(Isolate* isolate);
/**
- * Returns the first valid script id at the top of
- * the JS stack. The returned value is Message::kNoScriptIdInfo if no id
- * was found.
+ * Returns the first valid script id at the top of the JS stack. The returned
+ * value is Message::kNoScriptIdInfo if no id was found.
*
* This method is equivalent to calling StackTrace::CurrentStackTrace and
* walking the resulting frames from the beginning until a non-empty id is
* found. The difference is that this method won't allocate a stack trace.
*/
static int CurrentScriptId(Isolate* isolate);
+
+ /**
+ * Writes up to the first `frame_data.size()` valid script ids and function
+ * contexts at the top of the JS stack into the given span. Returns a span
+ * sized to the number of frames worth of data written. It's similar to the
+ * CurrentStackTrace method but doesn't allocate a stack trace. Further, it
+ * skips frames that don't have valid script ids or function contexts. The
+ * final difference is that the script id written for evals or regexp is that
+ * of the script that ran eval() or regexp, not the current context.
+ *
+ * WARNING: This is an unfinished experimental feature. Semantics and
+ * implementation may change frequently.
+ */
+ static v8::MemorySpan
+ CurrentScriptIdsAndContexts(Isolate* isolate,
+ v8::MemorySpan frame_data);
};
} // namespace v8
diff --git a/deps/v8/include/v8-exception.h b/deps/v8/include/v8-exception.h
index 5441a0ab6a403c..f240d9a609e92b 100644
--- a/deps/v8/include/v8-exception.h
+++ b/deps/v8/include/v8-exception.h
@@ -276,15 +276,18 @@ class V8_EXPORT TryCatch {
void ResetInternal();
+ // Helper methods for internal::Isolate.
+ bool capture_message() const;
+ void set_can_continue(bool value);
+ bool rethrow() const;
+ void set_rethrow(bool value);
+
internal::Isolate* i_isolate_;
TryCatch* next_;
void* exception_;
void* message_obj_;
internal::Address js_stack_comparable_address_;
- bool is_verbose_ : 1;
- bool can_continue_ : 1;
- bool capture_message_ : 1;
- bool rethrow_ : 1;
+ uint8_t flags_;
friend class internal::Isolate;
friend class internal::ThreadLocalTop;
diff --git a/deps/v8/include/v8-extension.h b/deps/v8/include/v8-extension.h
index 0705e2afbb8708..d0056cb286330d 100644
--- a/deps/v8/include/v8-extension.h
+++ b/deps/v8/include/v8-extension.h
@@ -33,7 +33,6 @@ class V8_EXPORT Extension {
}
const char* name() const { return name_; }
- size_t source_length() const { return source_length_; }
const String::ExternalOneByteStringResource* source() const {
return source_;
}
@@ -48,7 +47,6 @@ class V8_EXPORT Extension {
private:
const char* name_;
- size_t source_length_; // expected to initialize before source_
String::ExternalOneByteStringResource* source_;
int dep_count_;
const char** deps_;
diff --git a/deps/v8/include/v8-external.h b/deps/v8/include/v8-external.h
index c3feb1daad7e5f..da43c42e350ade 100644
--- a/deps/v8/include/v8-external.h
+++ b/deps/v8/include/v8-external.h
@@ -28,26 +28,44 @@ constexpr ExternalPointerTypeTag kExternalPointerTypeTagDefault = 0;
*/
class V8_EXPORT External : public Value {
public:
- V8_DEPRECATE_SOON("Use the version with the type tag.")
+ V8_DEPRECATED("Use the version with the type tag.")
static Local New(Isolate* isolate, void* value) {
return New(isolate, value, kExternalPointerTypeTagDefault);
}
+ /**
+ * Creates a new External object.
+ *
+ * \param isolate The isolate for the external object.
+ * \param value The C++ pointer value.
+ * \param tag The type tag of the external pointer. If type tags are not used
+ * in the embedder, the default value `kExternalPointerTypeTagDefault` can be
+ * used.
+ * \return The new External object.
+ */
static Local New(Isolate* isolate, void* value,
ExternalPointerTypeTag tag);
- V8_INLINE static External* Cast(Value* value) {
+ V8_INLINE static External* Cast(Data* value) {
#ifdef V8_ENABLE_CHECKS
CheckCast(value);
#endif
return static_cast(value);
}
- V8_DEPRECATE_SOON("Use the version with the type tag.")
+ V8_DEPRECATED("Use the version with the type tag.")
void* Value() const { return Value(kExternalPointerTypeTagDefault); }
+ /**
+ * Returns the value of the external pointer.
+ *
+ * \param tag The type tag of the external pointer. If type tags are not used
+ * in the embedder, the default value `kExternalPointerTypeTagDefault` can be
+ * used.
+ * \return The value of the external pointer.
+ */
void* Value(ExternalPointerTypeTag tag) const;
private:
- static void CheckCast(v8::Value* obj);
+ static void CheckCast(v8::Data* obj);
};
} // namespace v8
diff --git a/deps/v8/include/v8-function-callback.h b/deps/v8/include/v8-function-callback.h
index 0dad94ce22c270..135508ef5b5acc 100644
--- a/deps/v8/include/v8-function-callback.h
+++ b/deps/v8/include/v8-function-callback.h
@@ -57,6 +57,7 @@ class ReturnValue {
V8_INLINE void Set(const Local handle);
template
V8_INLINE void SetNonEmpty(const Local handle);
+
// Fast primitive number setters.
V8_INLINE void Set(bool value);
V8_INLINE void Set(double i);
@@ -66,11 +67,13 @@ class ReturnValue {
V8_INLINE void Set(uint16_t i);
V8_INLINE void Set(uint32_t i);
V8_INLINE void Set(uint64_t i);
+
// Fast JS primitive setters.
V8_INLINE void SetNull();
V8_INLINE void SetUndefined();
V8_INLINE void SetFalse();
V8_INLINE void SetEmptyString();
+
// Convenience getter for the Isolate.
V8_INLINE Isolate* GetIsolate() const;
@@ -103,7 +106,7 @@ class ReturnValue {
V8_INLINE explicit ReturnValue(internal::Address* slot);
// See FunctionCallbackInfo.
- static constexpr int kIsolateValueIndex = -2;
+ static constexpr int kIsolateValueIndex = -1;
internal::Address* value_;
};
@@ -142,41 +145,75 @@ class FunctionCallbackInfo {
friend class internal::CustomArguments;
friend class debug::ConsoleCallArguments;
friend void internal::PrintFunctionCallbackInfo(void*);
+ using I = internal::Internals;
- // TODO(ishell, http://crbug.com/326505377): in case of non-constructor
- // call, don't pass kNewTarget and kUnused. Add IsConstructCall flag to
- // kIsolate field.
- static constexpr int kUnusedIndex = 0;
- static constexpr int kIsolateIndex = 1;
- static constexpr int kContextIndex = 2;
- static constexpr int kReturnValueIndex = 3;
- static constexpr int kTargetIndex = 4;
- static constexpr int kNewTargetIndex = 5;
- static constexpr int kArgsLength = 6;
-
- static constexpr int kArgsLengthWithReceiver = kArgsLength + 1;
-
- // Codegen constants:
- static constexpr int kSize = 3 * internal::kApiSystemPointerSize;
- static constexpr int kImplicitArgsOffset = 0;
- static constexpr int kValuesOffset =
- kImplicitArgsOffset + internal::kApiSystemPointerSize;
- static constexpr int kLengthOffset =
- kValuesOffset + internal::kApiSystemPointerSize;
-
- static constexpr int kThisValuesIndex = -1;
+ // Frame block, matches the layout of ApiCallbackExitFrame.
+ // See ApiCallbackExitFrameConstants.
+ enum {
+ //
+ // Optional frame arguments block (exists only for API_CONSTRUCT_EXIT
+ // frame).
+
+ // Frame arguments block.
+ kNewTargetIndex = -1,
+
+ //
+ // Mandatory part, exists for both API_CALLBACK_EXIT and API_CONSTRUCT_EXIT
+ // frames.
+ //
+
+ // Frame arguments block.
+ kArgcIndex,
+
+ // Regular ExitFrame structure.
+ kFrameSPIndex,
+ kFrameTypeIndex,
+ kFrameConstantPoolIndex, // Optional, see I::kFrameCPSlotCount.
+ kFrameFPIndex = kFrameConstantPoolIndex + I::kFrameCPSlotCount,
+ kFramePCIndex,
+
+ // Api arguments block, starts at kFirstArgumentIndex.
+ kFirstApiArgumentIndex,
+ kIsolateIndex = kFirstApiArgumentIndex,
+ kReturnValueIndex,
+ kContextIndex,
+ kTargetIndex,
+
+ // JS args block, starts at kFrameFirstImplicitArgsIndex.
+ kReceiverIndex,
+ kFirstJSArgumentIndex,
+
+ // Mandatory part includes receiver.
+ kArgsLength = kReceiverIndex + 1,
+ // Optional part size (exists only for API_CONSTRUCT_EXIT frame).
+ kOptionalArgsLength = 1,
+
+ // The length of just Api arguments part.
+ kApiArgsLength = kReceiverIndex - kFirstApiArgumentIndex,
+ };
+
+ static_assert(kArgcIndex == 0);
static_assert(ReturnValue::kIsolateValueIndex ==
kIsolateIndex - kReturnValueIndex);
- V8_INLINE FunctionCallbackInfo(internal::Address* implicit_args,
- internal::Address* values, int length);
+ internal::Address* address_of_first_argument() const {
+ return &values_[kFirstJSArgumentIndex];
+ }
+
+ V8_INLINE FunctionCallbackInfo() = default;
- // TODO(https://crbug.com/326505377): flatten the v8::FunctionCallbackInfo
- // object to avoid indirect loads through values_ and implicit_args_ and
- // reduce the number of instructions in the CallApiCallback builtin.
- internal::Address* implicit_args_;
- internal::Address* values_;
- internal::Address length_;
+ // FunctionCallbackInfo object provides a view of the stack area where the
+ // data is stored and thus it's not supposed to be copyable/movable.
+ FunctionCallbackInfo(const FunctionCallbackInfo&) = delete;
+ FunctionCallbackInfo& operator=(const FunctionCallbackInfo&) = delete;
+ FunctionCallbackInfo(FunctionCallbackInfo&&) = delete;
+ FunctionCallbackInfo& operator=(FunctionCallbackInfo&&) = delete;
+
+ // Declare as mutable to let GC modify the contents of the slots even though
+ // it's not possible to change values via this class.
+ // Define the array size as 1 to make it clear that we are going to access
+ // it out-of-bounds from both sides anyway.
+ mutable internal::Address values_[1];
};
/**
@@ -198,72 +235,13 @@ class PropertyCallbackInfo {
*/
V8_INLINE Local Data() const;
- /**
- * \return The receiver. In many cases, this is the object on which the
- * property access was intercepted. When using
- * `Reflect.get`, `Function.prototype.call`, or similar functions, it is the
- * object passed in as receiver or thisArg.
- *
- * \code
- * void GetterCallback(Local name,
- * const v8::PropertyCallbackInfo& info) {
- * auto context = info.GetIsolate()->GetCurrentContext();
- *
- * v8::Local a_this =
- * info.This()
- * ->GetRealNamedProperty(context, v8_str("a"))
- * .ToLocalChecked();
- * v8::Local a_holder =
- * info.Holder()
- * ->GetRealNamedProperty(context, v8_str("a"))
- * .ToLocalChecked();
- *
- * CHECK(v8_str("r")->Equals(context, a_this).FromJust());
- * CHECK(v8_str("obj")->Equals(context, a_holder).FromJust());
- *
- * info.GetReturnValue().Set(name);
- * }
- *
- * v8::Local templ =
- * v8::FunctionTemplate::New(isolate);
- * templ->InstanceTemplate()->SetHandler(
- * v8::NamedPropertyHandlerConfiguration(GetterCallback));
- * LocalContext env;
- * env->Global()
- * ->Set(env.local(), v8_str("obj"), templ->GetFunction(env.local())
- * .ToLocalChecked()
- * ->NewInstance(env.local())
- * .ToLocalChecked())
- * .FromJust();
- *
- * CompileRun("obj.a = 'obj'; var r = {a: 'r'}; Reflect.get(obj, 'x', r)");
- * \endcode
- */
- V8_INLINE Local |