aboutsummaryrefslogtreecommitdiff
path: root/nginx/ngx_js.c
diff options
context:
space:
mode:
authorDmitry Volyntsev <xeioex@nginx.com>2020-12-24 18:35:18 +0000
committerDmitry Volyntsev <xeioex@nginx.com>2020-12-24 18:35:18 +0000
commit49387a73bde3f8d5ac7f41078eed99c61d90c312 (patch)
treea36e0b18eadf4e3231872a049d1269f7faff72cb /nginx/ngx_js.c
parentee5c612b8ae33e3b09088164680a305bd39d1646 (diff)
downloadnjs-49387a73bde3f8d5ac7f41078eed99c61d90c312.tar.gz
njs-49387a73bde3f8d5ac7f41078eed99c61d90c312.zip
Refactored working with external prototypes.
Previously, njs_vm_external_prototype() returned the pointer to a created prototype structure. Which were expected to be passed to njs_vm_external_create() as is. The returned pointer is needed to be stored somewhere by user code which complicates user code in cases when many prototypes are created. Instead, an index in the VM internal table is returned. njs_vm_external_create() is changed accordingly. This simplifies user code because the index is known at static time for most cases.
Diffstat (limited to 'nginx/ngx_js.c')
-rw-r--r--nginx/ngx_js.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/nginx/ngx_js.c b/nginx/ngx_js.c
index 56b2bdd4..f47b916f 100644
--- a/nginx/ngx_js.c
+++ b/nginx/ngx_js.c
@@ -117,19 +117,18 @@ ngx_js_string(njs_vm_t *vm, njs_value_t *value, njs_str_t *str)
ngx_int_t
ngx_js_core_init(njs_vm_t *vm, ngx_log_t *log)
{
- njs_int_t ret;
- njs_str_t name;
- njs_opaque_value_t value;
- njs_external_proto_t proto;
-
- proto = njs_vm_external_prototype(vm, ngx_js_ext_core,
- njs_nitems(ngx_js_ext_core));
- if (proto == NULL) {
+ njs_int_t ret, proto_id;
+ njs_str_t name;
+ njs_opaque_value_t value;
+
+ proto_id = njs_vm_external_prototype(vm, ngx_js_ext_core,
+ njs_nitems(ngx_js_ext_core));
+ if (proto_id < 0) {
ngx_log_error(NGX_LOG_EMERG, log, 0, "failed to add js core proto");
return NGX_ERROR;
}
- ret = njs_vm_external_create(vm, njs_value_arg(&value), proto, NULL, 1);
+ ret = njs_vm_external_create(vm, njs_value_arg(&value), proto_id, NULL, 1);
if (njs_slow_path(ret != NJS_OK)) {
ngx_log_error(NGX_LOG_EMERG, log, 0,
"njs_vm_external_create() failed\n");