From 28979fb5951ac0fb4a975e9ee7e0b2ed8db3fe4c Mon Sep 17 00:00:00 2001 From: Mert Can Altin Date: Fri, 6 Feb 2026 20:35:08 +0300 Subject: [PATCH] src: use simdutf for one-byte string UTF-8 write in stringBytes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/61696 Reviewed-By: Yagiz Nizipli Reviewed-By: Stephen Belanger Reviewed-By: Daniel Lemire Reviewed-By: Vinícius Lourenço Claro Cardoso Reviewed-By: Сковорода Никита Андреевич Reviewed-By: Gürgün Dayıoğlu Reviewed-By: Anna Henningsen Reviewed-By: René --- src/string_bytes.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/string_bytes.cc b/src/string_bytes.cc index 6341346da07..28432a82ad8 100644 --- a/src/string_bytes.cc +++ b/src/string_bytes.cc @@ -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(input_view.data8()), + input_view.length(), + buf, + buflen); + } else { + nbytes = str->WriteUtf8V2( + isolate, buf, buflen, String::WriteFlags::kReplaceInvalidUtf8); + } break; case UCS2: {