Skip to content

Commit b25cd62

Browse files
anonrigV8 LUCI CQ
authored andcommitted
Optimize utf8length for utf16 values
Change-Id: I4d9546ab45264852f52361123e86fa3b38d79e45 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7142019 Reviewed-by: Anton Bikineev <bikineev@chromium.org> Reviewed-by: Erik Corry <erikcorry@chromium.org> Commit-Queue: Erik Corry <erikcorry@chromium.org> Cr-Commit-Position: refs/heads/main@{#103754}
1 parent e471736 commit b25cd62

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

src/objects/string-inl.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1221,6 +1221,12 @@ size_t String::Utf8Length(Isolate* isolate, DirectHandle<String> string) {
12211221
reinterpret_cast<const char*>(vec.begin()), vec.size());
12221222
}
12231223

1224+
base::Vector<const base::uc16> vec = content.ToUC16Vector();
1225+
const char16_t* data = reinterpret_cast<const char16_t*>(vec.begin());
1226+
if (simdutf::validate_utf16(data, vec.size())) {
1227+
return simdutf::utf8_length_from_utf16(data, vec.size());
1228+
}
1229+
12241230
// TODO(419496232): Use simdutf once upstream bug is resolved.
12251231
size_t utf8_length = 0;
12261232
uint16_t last_character = unibrow::Utf16::kNoPreviousCharacter;

0 commit comments

Comments
 (0)