diff options
author | Dmitry Volyntsev <xeioex@nginx.com> | 2020-12-24 18:35:18 +0000 |
---|---|---|
committer | Dmitry Volyntsev <xeioex@nginx.com> | 2020-12-24 18:35:18 +0000 |
commit | 49387a73bde3f8d5ac7f41078eed99c61d90c312 (patch) | |
tree | a36e0b18eadf4e3231872a049d1269f7faff72cb /nginx/ngx_js.c | |
parent | ee5c612b8ae33e3b09088164680a305bd39d1646 (diff) | |
download | njs-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.c | 17 |
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"); |