From 8ea96e653212c87d32665a263aa29744e41e64a2 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Fri, 14 Nov 2025 15:57:33 -0500 Subject: [PATCH] deps: V8: cherry-pick b25cd62c7ba2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: Optimize utf8length for utf16 values Change-Id: I4d9546ab45264852f52361123e86fa3b38d79e45 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7142019 Reviewed-by: Anton Bikineev Reviewed-by: Erik Corry Commit-Queue: Erik Corry Cr-Commit-Position: refs/heads/main@{#103754} Refs: https://github.com/v8/v8/commit/b25cd62c7ba2a9c1fa76906d135832ae09d0a674 PR-URL: https://github.com/nodejs/node/pull/62354 Refs: https://github.com/nodejs/node/pull/61601 Reviewed-By: Antoine du Hamel Reviewed-By: René Reviewed-By: Yagiz Nizipli --- common.gypi | 2 +- deps/v8/src/objects/string-inl.h | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/common.gypi b/common.gypi index f7c219fc8f167d..953a1448d4baa5 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.16', + 'v8_embedder_string': '-node.17', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/objects/string-inl.h b/deps/v8/src/objects/string-inl.h index 6d72fdacd68268..03b590ce83bd56 100644 --- a/deps/v8/src/objects/string-inl.h +++ b/deps/v8/src/objects/string-inl.h @@ -1221,6 +1221,12 @@ size_t String::Utf8Length(Isolate* isolate, DirectHandle string) { reinterpret_cast(vec.begin()), vec.size()); } + base::Vector vec = content.ToUC16Vector(); + const char16_t* data = reinterpret_cast(vec.begin()); + if (simdutf::validate_utf16(data, vec.size())) { + return simdutf::utf8_length_from_utf16(data, vec.size()); + } + // TODO(419496232): Use simdutf once upstream bug is resolved. size_t utf8_length = 0; uint16_t last_character = unibrow::Utf16::kNoPreviousCharacter;