Skip to content

Commit c02c51d

Browse files
committed
src: rename EncodeKnownValidUTF8 to EncodeValidUtf8
1 parent 820eb2e commit c02c51d

3 files changed

Lines changed: 24 additions & 28 deletions

File tree

src/encoding_binding.cc

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -459,21 +459,14 @@ void BindingData::DecodeUTF8(const FunctionCallbackInfo<Value>& args) {
459459
return node::THROW_ERR_ENCODING_INVALID_ENCODED_DATA(
460460
env->isolate(), "The encoded data was not valid for encoding utf-8");
461461
}
462-
463-
Local<Value> ret;
464-
// Data is already validated as UTF-8 above; skip redundant re-validation.
465-
if (StringBytes::EncodeKnownValidUTF8(env->isolate(), data, length)
466-
.ToLocal(&ret)) {
467-
args.GetReturnValue().Set(ret);
468-
}
469-
return;
470462
}
471463

472464
if (length == 0) return args.GetReturnValue().SetEmptyString();
473465

474466
Local<Value> ret;
475467
v8::MaybeLocal<Value> encoded =
476-
StringBytes::Encode(env->isolate(), data, length, UTF8);
468+
has_fatal ? StringBytes::EncodeValidUtf8(env->isolate(), data, length)
469+
: StringBytes::Encode(env->isolate(), data, length, UTF8);
477470
if (encoded.ToLocal(&ret)) {
478471
args.GetReturnValue().Set(ret);
479472
}

src/string_bytes.cc

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -539,9 +539,9 @@ Maybe<size_t> StringBytes::Size(Isolate* isolate,
539539

540540
// Converts known-valid UTF-8 (buflen >= 32) to a V8 string via the fast
541541
// UTF-16 path. Callers must ensure buflen is range-checked.
542-
static MaybeLocal<Value> EncodeKnownValidNonAsciiUTF8(Isolate* isolate,
543-
const char* buf,
544-
size_t buflen) {
542+
static MaybeLocal<Value> EncodeValidNonAsciiUtf8(Isolate* isolate,
543+
const char* buf,
544+
size_t buflen) {
545545
size_t u16size = simdutf::utf16_length_from_utf8(buf, buflen);
546546
if (u16size > static_cast<size_t>(v8::String::kMaxLength)) {
547547
isolate->ThrowException(ERR_STRING_TOO_LONG(isolate));
@@ -555,18 +555,6 @@ static MaybeLocal<Value> EncodeKnownValidNonAsciiUTF8(Isolate* isolate,
555555
});
556556
}
557557

558-
MaybeLocal<Value> StringBytes::EncodeKnownValidUTF8(Isolate* isolate,
559-
const char* buf,
560-
size_t buflen) {
561-
buflen = keep_buflen_in_range(buflen);
562-
if (buflen >= 32) return EncodeKnownValidNonAsciiUTF8(isolate, buf, buflen);
563-
Local<String> str;
564-
if (!String::NewFromUtf8(isolate, buf, v8::NewStringType::kNormal, buflen)
565-
.ToLocal(&str))
566-
isolate->ThrowException(node::ERR_STRING_TOO_LONG(isolate));
567-
return str;
568-
}
569-
570558
MaybeLocal<Value> StringBytes::Encode(Isolate* isolate,
571559
const char* buf,
572560
size_t buflen,
@@ -616,7 +604,7 @@ MaybeLocal<Value> StringBytes::Encode(Isolate* isolate,
616604
// We know that we are non-ASCII (and are unlikely Latin1), use 2-byte
617605
// In the most likely case of valid UTF-8, we can use this fast impl
618606
// For very short input, it is slower, so we limit min size
619-
return EncodeKnownValidNonAsciiUTF8(isolate, buf, buflen);
607+
return EncodeValidNonAsciiUtf8(isolate, buf, buflen);
620608
}
621609

622610
val =
@@ -719,4 +707,19 @@ MaybeLocal<Value> StringBytes::Encode(Isolate* isolate,
719707
return Encode(isolate, buf, len, encoding);
720708
}
721709

710+
MaybeLocal<Value> StringBytes::EncodeValidUtf8(Isolate* isolate,
711+
const char* buf,
712+
size_t buflen) {
713+
buflen = keep_buflen_in_range(buflen);
714+
if (!simdutf::validate_ascii_with_errors(buf, buflen).error) {
715+
return ExternOneByteString::NewFromCopy(isolate, buf, buflen);
716+
}
717+
if (buflen >= 32) return EncodeValidNonAsciiUtf8(isolate, buf, buflen);
718+
Local<String> str;
719+
if (!String::NewFromUtf8(isolate, buf, v8::NewStringType::kNormal, buflen)
720+
.ToLocal(&str))
721+
isolate->ThrowException(node::ERR_STRING_TOO_LONG(isolate));
722+
return str;
723+
}
724+
722725
} // namespace node

src/string_bytes.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ class StringBytes {
8585

8686
// Like Encode(..., UTF8) but skips UTF-8 validation. Caller must guarantee
8787
// that buf contains valid UTF-8.
88-
static v8::MaybeLocal<v8::Value> EncodeKnownValidUTF8(v8::Isolate* isolate,
89-
const char* buf,
90-
size_t buflen);
88+
static v8::MaybeLocal<v8::Value> EncodeValidUtf8(v8::Isolate* isolate,
89+
const char* buf,
90+
size_t buflen);
9191

9292
// Warning: This reverses endianness on BE platforms, even though the
9393
// signature using uint16_t implies that it should not.

0 commit comments

Comments
 (0)