Skip to content

Commit 124cacb

Browse files
Yoink
1 parent 8d85d0d commit 124cacb

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/WebSocketProtocol.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,14 +113,15 @@ T cond_byte_swap(T value) {
113113
// https://www.cl.cam.ac.uk/~mgk25/ucs/utf8_check.c
114114
// Optimized for predominantly 7-bit content by Alex Hultman, 2016
115115
// Licensed as Zlib, like the rest of this project
116+
// This runs about 40% faster than simdutf with g++ -mavx
116117
static bool isValidUtf8(unsigned char *s, size_t length)
117118
{
118119
for (unsigned char *e = s + length; s != e; ) {
119-
if (s + 4 <= e) {
120-
uint32_t tmp;
121-
memcpy(&tmp, s, 4);
122-
if ((tmp & 0x80808080) == 0) {
123-
s += 4;
120+
if (s + 16 <= e) {
121+
uint64_t tmp[2];
122+
memcpy(&tmp, s, 16);
123+
if (((tmp[0] & 0x8080808080808080) | (tmp[1] & 0x8080808080808080)) == 0) {
124+
s += 16;
124125
continue;
125126
}
126127
}

0 commit comments

Comments
 (0)