summaryrefslogtreecommitdiff
path: root/deps/v8/src/unicode.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/unicode.cc')
-rw-r--r--deps/v8/src/unicode.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/deps/v8/src/unicode.cc b/deps/v8/src/unicode.cc
index de5e36038b..db98be8675 100644
--- a/deps/v8/src/unicode.cc
+++ b/deps/v8/src/unicode.cc
@@ -305,6 +305,20 @@ uchar Utf8::CalculateValue(const byte* str, size_t max_length, size_t* cursor) {
0x03C82080;
}
+bool Utf8::Validate(const byte* bytes, size_t length) {
+ size_t cursor = 0;
+
+ // Performance optimization: Skip over single-byte values first.
+ while (cursor < length && bytes[cursor] <= kMaxOneByteChar) {
+ ++cursor;
+ }
+
+ while (cursor < length) {
+ uchar c = ValueOf(bytes + cursor, length - cursor, &cursor);
+ if (!IsValidCharacter(c)) return false;
+ }
+ return true;
+}
// Uppercase: point.category == 'Lu'