Skip to content

Commit c4ecfef

Browse files
mertcanaltinaduh95
authored andcommitted
src: use simdutf for one-byte string UTF-8 write in stringBytes
PR-URL: #61696 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Daniel Lemire <daniel@lemire.me> Reviewed-By: Vinícius Lourenço Claro Cardoso <contact@viniciusl.com.br> Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
1 parent d4c9b5c commit c4ecfef

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/string_bytes.cc

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,17 @@ size_t StringBytes::Write(Isolate* isolate,
266266

267267
case BUFFER:
268268
case UTF8:
269-
nbytes = str->WriteUtf8V2(
270-
isolate, buf, buflen, String::WriteFlags::kReplaceInvalidUtf8);
269+
if (input_view.is_one_byte()) {
270+
// Use simdutf for one-byte strings instead of V8's WriteUtf8V2.
271+
nbytes = simdutf::convert_latin1_to_utf8_safe(
272+
reinterpret_cast<const char*>(input_view.data8()),
273+
input_view.length(),
274+
buf,
275+
buflen);
276+
} else {
277+
nbytes = str->WriteUtf8V2(
278+
isolate, buf, buflen, String::WriteFlags::kReplaceInvalidUtf8);
279+
}
271280
break;
272281

273282
case UCS2: {

0 commit comments

Comments
 (0)