details: https://github.com/nginx/njs/commit/3a4349e6b2b001001c64dd48f7863c5820cdf3e6
branches: master
commit: 3a4349e6b2b001001c64dd48f7863c5820cdf3e6
user: Dmitry Volyntsev <xeioex@nginx.com>
date: Mon, 7 Oct 2024 22:41:24 -0700
description:
Optimized ngx_qjs_string().
Doing JS_IsString() check first before a heavy-weight call to
JS_GetTypedArrayBuffer() which throws an exception when argument is not
a typed array.
---
nginx/ngx_js.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/nginx/ngx_js.c b/nginx/ngx_js.c
index 5fe3dc84..98e48dc2 100644
--- a/nginx/ngx_js.c
+++ b/nginx/ngx_js.c
@@ -1472,6 +1472,10 @@ ngx_qjs_string(ngx_engine_t *e, JSValueConst val, ngx_str_t *dst)
cx = e->u.qjs.ctx;
+ if (JS_IsString(val)) {
+ goto string;
+ }
+
buffer = JS_GetTypedArrayBuffer(cx, val, &byte_offset, &byte_length, NULL);
if (!JS_IsException(buffer)) {
start = JS_GetArrayBuffer(cx, &dst->len, buffer);
@@ -1492,6 +1496,8 @@ ngx_qjs_string(ngx_engine_t *e, JSValueConst val, ngx_str_t *dst)
}
}
+string:
+
str = JS_ToCString(cx, val);
if (str == NULL) {
return NGX_ERROR;
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
https://mailman.nginx.org/mailman/listinfo/nginx-devel