details: http://hg.nginx.org/njs/rev/57bd01817edb branches: changeset: 383:57bd01817edb user: Dmitry Volyntsev <xei...@nginx.com> date: Thu Jul 06 19:07:41 2017 +0300 description: Passing all args to njs_vm_create() through njs_vm_opt_t struct.
diffstat: nginx/ngx_http_js_module.c | 10 ++++++---- nginx/ngx_stream_js_module.c | 10 ++++++---- njs/njscript.c | 18 +++++++++--------- njs/njscript.h | 9 +++++++-- njs/test/njs_unit_test.c | 20 ++++++++++++-------- 5 files changed, 40 insertions(+), 27 deletions(-) diffs (215 lines): diff -r f8f7540383f2 -r 57bd01817edb nginx/ngx_http_js_module.c --- a/nginx/ngx_http_js_module.c Wed Jun 28 15:31:36 2017 +0300 +++ b/nginx/ngx_http_js_module.c Thu Jul 06 19:07:41 2017 +0300 @@ -1231,9 +1231,9 @@ ngx_http_js_include(ngx_conf_t *cf, ngx_ ngx_str_t *value, file; nxt_int_t rc; nxt_str_t text, ext; + njs_vm_opt_t options; nxt_lvlhsh_t externals; ngx_file_info_t fi; - njs_vm_shared_t *shared; ngx_pool_cleanup_t *cln; nxt_mem_cache_pool_t *mcp; @@ -1309,8 +1309,6 @@ ngx_http_js_include(ngx_conf_t *cf, ngx_ cln->handler = ngx_http_js_cleanup_mem_cache_pool; cln->data = mcp; - shared = NULL; - nxt_lvlhsh_init(&externals); if (njs_vm_external_add(&externals, mcp, 0, ngx_http_js_externals, @@ -1321,7 +1319,11 @@ ngx_http_js_include(ngx_conf_t *cf, ngx_ return NGX_CONF_ERROR; } - jlcf->vm = njs_vm_create(mcp, &shared, &externals); + options.mcp = mcp; + options.shared = NULL; + options.externals = &externals; + + jlcf->vm = njs_vm_create(&options); if (jlcf->vm == NULL) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "failed to create JS VM"); return NGX_CONF_ERROR; diff -r f8f7540383f2 -r 57bd01817edb nginx/ngx_stream_js_module.c --- a/nginx/ngx_stream_js_module.c Wed Jun 28 15:31:36 2017 +0300 +++ b/nginx/ngx_stream_js_module.c Thu Jul 06 19:07:41 2017 +0300 @@ -941,9 +941,9 @@ ngx_stream_js_include(ngx_conf_t *cf, ng ngx_str_t *value, file; nxt_int_t rc; nxt_str_t text, ext; + njs_vm_opt_t options; nxt_lvlhsh_t externals; ngx_file_info_t fi; - njs_vm_shared_t *shared; ngx_pool_cleanup_t *cln; nxt_mem_cache_pool_t *mcp; @@ -1019,8 +1019,6 @@ ngx_stream_js_include(ngx_conf_t *cf, ng cln->handler = ngx_stream_js_cleanup_mem_cache_pool; cln->data = mcp; - shared = NULL; - nxt_lvlhsh_init(&externals); if (njs_vm_external_add(&externals, mcp, 0, ngx_stream_js_externals, @@ -1031,7 +1029,11 @@ ngx_stream_js_include(ngx_conf_t *cf, ng return NGX_CONF_ERROR; } - jscf->vm = njs_vm_create(mcp, &shared, &externals); + options.mcp = mcp; + options.shared = NULL; + options.externals = &externals; + + jscf->vm = njs_vm_create(&options); if (jscf->vm == NULL) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "failed to create JS VM"); return NGX_CONF_ERROR; diff -r f8f7540383f2 -r 57bd01817edb njs/njscript.c --- a/njs/njscript.c Wed Jun 28 15:31:36 2017 +0300 +++ b/njs/njscript.c Thu Jul 06 19:07:41 2017 +0300 @@ -99,13 +99,15 @@ const nxt_mem_proto_t njs_array_mem_pro njs_vm_t * -njs_vm_create(nxt_mem_cache_pool_t *mcp, njs_vm_shared_t **shared, - nxt_lvlhsh_t *externals) +njs_vm_create(njs_vm_opt_t *options) { njs_vm_t *vm; nxt_int_t ret; + nxt_mem_cache_pool_t *mcp; njs_regexp_pattern_t *pattern; + mcp = options->mcp; + if (mcp == NULL) { mcp = nxt_mem_cache_pool_create(&njs_vm_mem_cache_pool_proto, NULL, NULL, 2 * nxt_pagesize(), 128, 512, 16); @@ -124,8 +126,8 @@ njs_vm_create(nxt_mem_cache_pool_t *mcp, return NULL; } - if (shared != NULL && *shared != NULL) { - vm->shared = *shared; + if (options->shared != NULL) { + vm->shared = options->shared; } else { vm->shared = nxt_mem_cache_zalloc(mcp, sizeof(njs_vm_shared_t)); @@ -133,9 +135,7 @@ njs_vm_create(nxt_mem_cache_pool_t *mcp, return NULL; } - if (shared != NULL) { - *shared = vm->shared; - } + options->shared = vm->shared; nxt_lvlhsh_init(&vm->shared->keywords_hash); @@ -162,8 +162,8 @@ njs_vm_create(nxt_mem_cache_pool_t *mcp, nxt_lvlhsh_init(&vm->values_hash); - if (externals != NULL) { - vm->externals_hash = *externals; + if (options->externals != NULL) { + vm->externals_hash = *options->externals; } vm->trace.level = NXT_LEVEL_TRACE; diff -r f8f7540383f2 -r 57bd01817edb njs/njscript.h --- a/njs/njscript.h Wed Jun 28 15:31:36 2017 +0300 +++ b/njs/njscript.h Thu Jul 06 19:07:41 2017 +0300 @@ -65,6 +65,12 @@ struct njs_external_s { uintptr_t data; }; +typedef struct { + nxt_lvlhsh_t *externals; + njs_vm_shared_t *shared; + nxt_mem_cache_pool_t *mcp; +} njs_vm_opt_t; + #define NJS_OK NXT_OK #define NJS_ERROR NXT_ERROR @@ -79,8 +85,7 @@ NXT_EXPORT nxt_int_t njs_vm_external_add 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, - njs_vm_shared_t **shared, nxt_lvlhsh_t *externals); +NXT_EXPORT njs_vm_t *njs_vm_create(njs_vm_opt_t *options); NXT_EXPORT void njs_vm_destroy(njs_vm_t *vm); NXT_EXPORT nxt_int_t njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end); diff -r f8f7540383f2 -r 57bd01817edb njs/test/njs_unit_test.c --- a/njs/test/njs_unit_test.c Wed Jun 28 15:31:36 2017 +0300 +++ b/njs/test/njs_unit_test.c Thu Jul 06 19:07:41 2017 +0300 @@ -8121,8 +8121,8 @@ njs_unit_test(nxt_bool_t disassemble) nxt_str_t s; nxt_uint_t i; nxt_bool_t success; + njs_vm_opt_t options; nxt_lvlhsh_t externals; - njs_vm_shared_t *shared; njs_unit_test_req r; nxt_mem_cache_pool_t *mcp; @@ -8133,8 +8133,6 @@ njs_unit_test(nxt_bool_t disassemble) (void) putenv((char *) "TZ=Pacific/Chatham"); tzset(); - shared = NULL; - mcp = nxt_mem_cache_pool_create(&njs_mem_cache_pool_proto, NULL, NULL, 2 * nxt_pagesize(), 128, 512, 16); if (nxt_slow_path(mcp == NULL)) { @@ -8157,7 +8155,11 @@ njs_unit_test(nxt_bool_t disassemble) (int) njs_test[i].script.length, njs_test[i].script.start); fflush(stdout); - vm = njs_vm_create(mcp, &shared, &externals); + options.mcp = mcp; + options.shared = NULL; + options.externals = &externals; + + vm = njs_vm_create(&options); if (vm == NULL) { return NXT_ERROR; } @@ -8235,13 +8237,11 @@ njs_unit_test_benchmark(nxt_str_t *scrip nxt_uint_t i; nxt_bool_t success; nxt_lvlhsh_t externals; + njs_vm_opt_t options; struct rusage usage; - njs_vm_shared_t *shared; njs_unit_test_req r; nxt_mem_cache_pool_t *mcp; - shared = NULL; - mcp = nxt_mem_cache_pool_create(&njs_mem_cache_pool_proto, NULL, NULL, 2 * nxt_pagesize(), 128, 512, 16); if (nxt_slow_path(mcp == NULL)) { @@ -8258,7 +8258,11 @@ njs_unit_test_benchmark(nxt_str_t *scrip return NXT_ERROR; } - vm = njs_vm_create(mcp, &shared, &externals); + options.mcp = mcp; + options.shared = NULL; + options.externals = &externals; + + vm = njs_vm_create(&options); if (vm == NULL) { return NXT_ERROR; } _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel