[njs] A fix of function name usage.

Igor Sysoev igor at sysoev.ru
Tue Oct 18 13:00:39 UTC 2016


details:   http://hg.nginx.org/njs/rev/b2a23cf748f8
branches:  
changeset: 206:b2a23cf748f8
user:      Igor Sysoev <igor at sysoev.ru>
date:      Tue Oct 18 15:48:19 2016 +0300
description:
A fix of function name usage.

diffstat:

 njs/njs_generator.c |  9 ++-------
 njs/njs_parser.c    |  1 +
 njs/njs_variable.h  |  3 ++-
 3 files changed, 5 insertions(+), 8 deletions(-)

diffs (52 lines):

diff -r 462f7d2113f9 -r b2a23cf748f8 njs/njs_generator.c
--- a/njs/njs_generator.c	Tue Oct 18 15:48:13 2016 +0300
+++ b/njs/njs_generator.c	Tue Oct 18 15:48:19 2016 +0300
@@ -333,14 +333,9 @@ njs_generator(njs_vm_t *vm, njs_parser_t
 static nxt_int_t
 njs_generate_name(njs_vm_t *vm, njs_parser_t *parser, njs_parser_node_t *node)
 {
-    njs_index_t               index;
-    njs_value_t               *value;
     njs_vmcode_object_copy_t  *copy;
 
-    index = node->u.variable->index;
-    value = njs_variable_value(parser, index);
-
-    if (value->type == NJS_FUNCTION) {
+    if (node->u.variable->function) {
 
         node->index = njs_generator_dest_index(vm, parser, node);
         if (nxt_slow_path(node->index == NJS_INDEX_ERROR)) {
@@ -352,7 +347,7 @@ njs_generate_name(njs_vm_t *vm, njs_pars
         copy->code.operands = NJS_VMCODE_2OPERANDS;
         copy->code.retval = NJS_VMCODE_RETVAL;
         copy->retval = node->index;
-        copy->object = index;
+        copy->object = node->u.variable->index;
 
         return NXT_OK;
     }
diff -r 462f7d2113f9 -r b2a23cf748f8 njs/njs_parser.c
--- a/njs/njs_parser.c	Tue Oct 18 15:48:13 2016 +0300
+++ b/njs/njs_parser.c	Tue Oct 18 15:48:19 2016 +0300
@@ -315,6 +315,7 @@ njs_parser_function_declaration(njs_vm_t
     }
 
     var->state = NJS_VARIABLE_DECLARED;
+    var->function = 1;
     node->index = var->index;
 
     token = njs_parser_token(parser);
diff -r 462f7d2113f9 -r b2a23cf748f8 njs/njs_variable.h
--- a/njs/njs_variable.h	Tue Oct 18 15:48:13 2016 +0300
+++ b/njs/njs_variable.h	Tue Oct 18 15:48:19 2016 +0300
@@ -20,7 +20,8 @@ typedef enum {
 typedef struct {
     u_char                *name_start;
     uint16_t              name_len;
-    njs_variable_state_t  state:8;  /* 3 bits */
+    njs_variable_state_t  state:8;   /* 3 bits */
+    uint8_t               function;  /* 1 bit */
 
     njs_index_t           index;
 } njs_variable_t;



More information about the nginx-devel mailing list