Skip to content

Commit ee71c43

Browse files
committed
add old way for <= 32 length
1 parent eaced01 commit ee71c43

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/encoding_binding.cc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,19 @@ void BindingData::EncodeInto(const FunctionCallbackInfo<Value>& args) {
198198
char* write_result = static_cast<char*>(buf->Data()) + dest->ByteOffset();
199199
size_t dest_length = dest->ByteLength();
200200

201+
// For small strings (length <= 32), use the old V8 path for better performance
202+
if (source->Length() <= 32) {
203+
size_t nchars;
204+
size_t written = source->WriteUtf8V2(isolate,
205+
write_result,
206+
dest_length,
207+
String::WriteFlags::kReplaceInvalidUtf8,
208+
&nchars);
209+
binding_data->encode_into_results_buffer_[0] = nchars;
210+
binding_data->encode_into_results_buffer_[1] = written;
211+
return;
212+
}
213+
201214
size_t read = 0;
202215
size_t written = 0;
203216
v8::String::ValueView view(isolate, source);

0 commit comments

Comments
 (0)