]> git.kaiwu.me - njs.git/commitdiff
Optimized string creation with ASCII input.
authorDmitry Volyntsev <xeioex@nginx.com>
Sat, 18 May 2024 04:54:49 +0000 (21:54 -0700)
committerDmitry Volyntsev <xeioex@nginx.com>
Sat, 18 May 2024 04:54:49 +0000 (21:54 -0700)
src/njs_string.c

index e7e3893c0834b25b0656293a66baf8e1f4c4c40c..2549491af0bfe493b4d7d8489121f731c96e43f5 100644 (file)
@@ -130,8 +130,20 @@ njs_int_t
 njs_string_create(njs_vm_t *vm, njs_value_t *value, const char *src,
     size_t size)
 {
+    u_char     *p, *p_end;
     njs_str_t  str;
 
+    p = (u_char *) src;
+    p_end = p + size;
+
+    while (p < p_end && *p < 0x80) {
+          p++;
+    }
+
+    if (p == p_end) {
+        return njs_string_new(vm, value, (u_char *) src, size, size);
+    }
+
     str.start = (u_char *) src;
     str.length = size;