From cfb9e86cc37b19fa29752ce138d463c954795f7d Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Fri, 15 Jul 2016 15:50:13 +0300 Subject: [PATCH] njs_vm_function() and njs_vm_external() functions name and behavior unification. The function can be used with both original compiled VM and its clones. --- nginx/ngx_http_js_module.c | 8 ++++---- njs/njs_extern.c | 6 +++--- njs/njs_variable.c | 4 ++-- njs/njscript.c | 1 + njs/njscript.h | 4 ++-- njs/test/njs_unit_test.c | 6 +++--- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index 94fd858d..f8a88d47 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -1152,8 +1152,8 @@ ngx_http_js_compile(ngx_conf_t *cf, ngx_http_js_ctx_t *js, ngx_str_t *script) nxt_lvlhsh_init(&externals); - if (njs_add_external(&externals, mcp, 0, ngx_http_js_externals, - nxt_nitems(ngx_http_js_externals)) + if (njs_vm_external_add(&externals, mcp, 0, ngx_http_js_externals, + nxt_nitems(ngx_http_js_externals)) != NJS_OK) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "could not add js externals"); @@ -1191,7 +1191,7 @@ ngx_http_js_compile(ngx_conf_t *cf, ngx_http_js_ctx_t *js, ngx_str_t *script) if (function) { ngx_str_set(&name, "$r"); - rc = njs_external_get(vm, NULL, &name, &js->args[0]); + rc = njs_vm_external(vm, NULL, &name, &js->args[0]); if (rc != NXT_OK) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "could not get $r external"); @@ -1200,7 +1200,7 @@ ngx_http_js_compile(ngx_conf_t *cf, ngx_http_js_ctx_t *js, ngx_str_t *script) ngx_str_set(&name, "response"); - rc = njs_external_get(vm, &js->args[0], &name, &js->args[1]); + rc = njs_vm_external(vm, &js->args[0], &name, &js->args[1]); if (rc != NXT_OK) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "could not get $r.response external"); diff --git a/njs/njs_extern.c b/njs/njs_extern.c index fd48abdc..b13e28b8 100644 --- a/njs/njs_extern.c +++ b/njs/njs_extern.c @@ -51,7 +51,7 @@ const nxt_lvlhsh_proto_t njs_extern_hash_proto nxt_int_t -njs_add_external(nxt_lvlhsh_t *hash, nxt_mem_cache_pool_t *mcp, +njs_vm_external_add(nxt_lvlhsh_t *hash, nxt_mem_cache_pool_t *mcp, uintptr_t object, njs_external_t *external, nxt_uint_t n) { nxt_int_t ret; @@ -111,7 +111,7 @@ njs_add_external(nxt_lvlhsh_t *hash, nxt_mem_cache_pool_t *mcp, } if (external->properties != NULL) { - ret = njs_add_external(&ext->hash, mcp, object, + ret = njs_vm_external_add(&ext->hash, mcp, object, external->properties, external->nproperties); if (nxt_slow_path(ret != NXT_OK)) { return ret; @@ -128,7 +128,7 @@ njs_add_external(nxt_lvlhsh_t *hash, nxt_mem_cache_pool_t *mcp, nxt_int_t -njs_external_get(njs_vm_t *vm, njs_opaque_value_t *obj, nxt_str_t *property, +njs_vm_external(njs_vm_t *vm, njs_opaque_value_t *obj, nxt_str_t *property, njs_opaque_value_t *value) { uint32_t (*key_hash)(const void *, size_t); diff --git a/njs/njs_variable.c b/njs/njs_variable.c index 6782cc11..a102a309 100644 --- a/njs/njs_variable.c +++ b/njs/njs_variable.c @@ -136,8 +136,8 @@ njs_vm_function(njs_vm_t *vm, nxt_str_t *name) var = lhq.value; - value = (njs_value_t *) ((u_char *) vm->scopes[NJS_SCOPE_GLOBAL] - + njs_offset(var->index)); + value = (njs_value_t *) ((u_char *) vm->global_scope + + njs_offset(var->index) - NJS_INDEX_GLOBAL_OFFSET); return value->data.u.function; } diff --git a/njs/njscript.c b/njs/njscript.c index 9938e4ee..8e633147 100644 --- a/njs/njscript.c +++ b/njs/njscript.c @@ -280,6 +280,7 @@ njs_vm_clone(njs_vm_t *vm, nxt_mem_cache_pool_t *mcp, void **external) nvm->variables_hash = vm->variables_hash; nvm->values_hash = vm->values_hash; + nvm->externals_hash = vm->externals_hash; nvm->retval = njs_value_void; nvm->current = vm->current; diff --git a/njs/njscript.h b/njs/njscript.h index bfc88838..ed1c4bf3 100644 --- a/njs/njscript.h +++ b/njs/njscript.h @@ -73,10 +73,10 @@ struct njs_external_s { #define NJS_DONE NXT_DONE -NXT_EXPORT nxt_int_t njs_add_external(nxt_lvlhsh_t *hash, +NXT_EXPORT nxt_int_t njs_vm_external_add(nxt_lvlhsh_t *hash, nxt_mem_cache_pool_t *mcp, uintptr_t object, njs_external_t *external, nxt_uint_t n); -NXT_EXPORT nxt_int_t njs_external_get(njs_vm_t *vm, njs_opaque_value_t *object, +NXT_EXPORT nxt_int_t njs_vm_external(njs_vm_t *vm, njs_opaque_value_t *object, nxt_str_t *property, njs_opaque_value_t *value); NXT_EXPORT njs_vm_t *njs_vm_create(nxt_mem_cache_pool_t *mcp, diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 7acf67c8..404d2553 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -4811,8 +4811,8 @@ njs_unit_test_externals(nxt_lvlhsh_t *externals, nxt_mem_cache_pool_t *mcp) { nxt_lvlhsh_init(externals); - return njs_add_external(externals, mcp, 0, nxt_test_external, - nxt_nitems(nxt_test_external)); + return njs_vm_external_add(externals, mcp, 0, nxt_test_external, + nxt_nitems(nxt_test_external)); } @@ -4937,7 +4937,7 @@ njs_unit_test(nxt_bool_t disassemble) r_name.len = 2; r_name.data = (u_char *) "$r"; - ret = njs_external_get(vm, NULL, &r_name, &value); + ret = njs_vm_external(nvm, NULL, &r_name, &value); if (ret != NXT_OK) { return NXT_ERROR; } -- 2.47.3