diff --git a/common.gypi b/common.gypi index 2e7aa943f9bf36..804a78cac1c118 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.21', + 'v8_embedder_string': '-node.22', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/objects/string-inl.h b/deps/v8/src/objects/string-inl.h index e04219e7a2e52c..d5b5d92ff1a4f3 100644 --- a/deps/v8/src/objects/string-inl.h +++ b/deps/v8/src/objects/string-inl.h @@ -1226,6 +1226,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;