src: use simdutf for one-byte string UTF-8 write in stringBytes

PR-URL: https://github.com/nodejs/node/pull/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>
This commit is contained in:
Mert Can Altin authored and Renegade334 committed 2026-02-07 21:04:29 +01:00
1 parent 346ad95c3c
commit 28979fb595
1 file changed
+11 -2
+11 -2
View File
@@ -266,8 +266,17 @@ size_t StringBytes::Write(Isolate* isolate,
case BUFFER:
case UTF8:
nbytes = str->WriteUtf8V2(
isolate, buf, buflen, String::WriteFlags::kReplaceInvalidUtf8);
if (input_view.is_one_byte()) {
// Use simdutf for one-byte strings instead of V8's WriteUtf8V2.
nbytes = simdutf::convert_latin1_to_utf8_safe(
reinterpret_cast<const char*>(input_view.data8()),
input_view.length(),
buf,
buflen);
} else {
nbytes = str->WriteUtf8V2(
isolate, buf, buflen, String::WriteFlags::kReplaceInvalidUtf8);
}
break;
case UCS2: {