]> git.kaiwu.me - njs.git/commitdiff
Passing all args to njs_vm_create() through njs_vm_opt_t struct.
authorDmitry Volyntsev <xeioex@nginx.com>
Thu, 6 Jul 2017 16:07:41 +0000 (19:07 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Thu, 6 Jul 2017 16:07:41 +0000 (19:07 +0300)
nginx/ngx_http_js_module.c
nginx/ngx_stream_js_module.c
njs/njscript.c
njs/njscript.h
njs/test/njs_unit_test.c

index 73b284945965188f75d03cd723bcd3a510048377..d3b8d6dabff8d0ba31acb61e724fa9f1e4a87183 100644 (file)
@@ -1231,9 +1231,9 @@ ngx_http_js_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     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_command_t *cmd, void *conf)
     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_command_t *cmd, void *conf)
         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;
index 85884b29503a8c3f416dd55b0f630dc4817ed533..454e6a6deb6230852ec4c713f90fd158c23bca3a 100644 (file)
@@ -941,9 +941,9 @@ ngx_stream_js_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
     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, ngx_command_t *cmd, void *conf)
     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, ngx_command_t *cmd, void *conf)
         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;
index ce7cd697d2820f001cd427575bf6e392046cf4c2..21686f1f6bb4d3b8e45111d8fe80e54607374efe 100644 (file)
@@ -99,13 +99,15 @@ const nxt_mem_proto_t  njs_array_mem_proto = {
 
 
 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, njs_vm_shared_t **shared,
             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, njs_vm_shared_t **shared,
                 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, njs_vm_shared_t **shared,
 
         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;
index d54ad7d100d7e72fc6e4597e15db75b164b0d78f..437ea5dc70d6be3b1f438ab70b383f39b2d291ab 100644 (file)
@@ -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_lvlhsh_t *hash,
 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);
index c564c784ad70beb2b6b83e3313c6b6514417b737..6a9b7b94beaf3e7aa7d6c2567cbdb933bf051976 100644 (file)
@@ -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 *script, nxt_str_t *result, const char *msg,
     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 *script, nxt_str_t *result, const char *msg,
         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;
     }