From 91b3bd3fe62a0cf158c7c3dab8eb7997780f49d2 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Mon, 2 Jun 2025 21:07:59 -0400 Subject: [PATCH] deps: patch V8 to 13.7.152.13 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs: https://github.com/v8/v8/compare/13.7.152.10...13.7.152.13 PR-URL: https://github.com/nodejs/node/pull/58539 Reviewed-By: Yagiz Nizipli Reviewed-By: Michaƫl Zasso Reviewed-By: Luigi Pinca Reviewed-By: Richard Lau Reviewed-By: Marco Ippolito --- deps/v8/include/v8-version.h | 2 +- deps/v8/infra/mb/mb_config.pyl | 7 +++++-- deps/v8/src/compiler/representation-change.cc | 7 ++++++- .../store-store-elimination-reducer-inl.h | 20 ++++++++++++------- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h index 935dbe6e22..b39a02bd40 100644 --- a/deps/v8/include/v8-version.h +++ b/deps/v8/include/v8-version.h @@ -11,7 +11,7 @@ #define V8_MAJOR_VERSION 13 #define V8_MINOR_VERSION 7 #define V8_BUILD_NUMBER 152 -#define V8_PATCH_LEVEL 10 +#define V8_PATCH_LEVEL 13 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl index f787dd9a07..6f6d3720b7 100644 --- a/deps/v8/infra/mb/mb_config.pyl +++ b/deps/v8/infra/mb/mb_config.pyl @@ -953,7 +953,7 @@ }, 'no_reclient': { - 'gn_args': 'use_remoteexec=false', + 'gn_args': 'use_remoteexec=false use_siso=false', }, 'no_sandbox': { @@ -968,8 +968,11 @@ 'gn_args': 'v8_use_perfetto=true', }, + # TODO(https://crbug.com/414724525): Temporarily use the reclient and siso + # configs synonym. In a follow up we'll drop the reclient parts and replace + # them with SISO configs. 'reclient': { - 'gn_args': 'use_remoteexec=true', + 'gn_args': 'use_remoteexec=true use_siso=true', }, 'release': { diff --git a/deps/v8/src/compiler/representation-change.cc b/deps/v8/src/compiler/representation-change.cc index 7419e2b80f..e8d5c842d7 100644 --- a/deps/v8/src/compiler/representation-change.cc +++ b/deps/v8/src/compiler/representation-change.cc @@ -1344,7 +1344,12 @@ Node* RepresentationChanger::GetWord64RepresentationFor( } } else if (output_rep == MachineRepresentation::kTaggedSigned) { if (output_type.Is(Type::SignedSmall())) { - op = simplified()->ChangeTaggedSignedToInt64(); + if (output_type.IsRange() && output_type.AsRange()->Min() >= 0) { + node = InsertChangeTaggedSignedToInt32(node); + op = machine()->ChangeUint32ToUint64(); + } else { + op = simplified()->ChangeTaggedSignedToInt64(); + } } else { return TypeError(node, output_rep, output_type, MachineRepresentation::kWord64); diff --git a/deps/v8/src/compiler/turboshaft/store-store-elimination-reducer-inl.h b/deps/v8/src/compiler/turboshaft/store-store-elimination-reducer-inl.h index 45654a022f..e058a41f23 100644 --- a/deps/v8/src/compiler/turboshaft/store-store-elimination-reducer-inl.h +++ b/deps/v8/src/compiler/turboshaft/store-store-elimination-reducer-inl.h @@ -325,10 +325,11 @@ class RedundantStoreAnalysis { // TODO(nicohartmann@): Use the new effect flags to distinguish heap // access once available. const bool is_on_heap_store = store.kind.tagged_base; - const bool is_field_store = !store.index().valid(); + const bool is_fixed_offset_store = !store.index().valid(); const uint8_t size = store.stored_rep.SizeInBytes(); - // For now we consider only stores of fields of objects on the heap. - if (is_on_heap_store && is_field_store) { + // For now we consider only stores of fixed offsets of objects on the + // heap. + if (is_on_heap_store && is_fixed_offset_store) { bool is_eliminable_store = false; switch (table_.GetObservability(store.base(), store.offset, size)) { case StoreObservability::kUnobservable: @@ -415,11 +416,16 @@ class RedundantStoreAnalysis { // TODO(nicohartmann@): Use the new effect flags to distinguish heap // access once available. const bool is_on_heap_load = load.kind.tagged_base; - const bool is_field_load = !load.index().valid(); + const bool is_fixed_offset_load = !load.index().valid(); // For now we consider only loads of fields of objects on the heap. - if (is_on_heap_load && is_field_load) { - table_.MarkPotentiallyAliasingStoresAsObservable(load.base(), - load.offset); + if (is_on_heap_load) { + if (is_fixed_offset_load) { + table_.MarkPotentiallyAliasingStoresAsObservable(load.base(), + load.offset); + } else { + // A dynamically indexed load might alias any fixed offset. + table_.MarkAllStoresAsObservable(); + } } break; }