[njs] Improved handling of arguments object.

Dmitry Volyntsev xeioex at nginx.com
Mon Mar 11 09:06:38 UTC 2019


details:   https://hg.nginx.org/njs/rev/a835619baf84
branches:  
changeset: 825:a835619baf84
user:      Dmitry Volyntsev <xeioex at nginx.com>
date:      Mon Mar 11 11:15:20 2019 +0300
description:
Improved handling of arguments object.

diffstat:

 njs/njs_generator.c |  4 +---
 njs/njs_generator.h |  1 -
 njs/njs_parser.c    |  2 ++
 njs/njs_parser.h    |  1 +
 4 files changed, 4 insertions(+), 4 deletions(-)

diffs (55 lines):

diff -r 0e8ab0dfd08b -r a835619baf84 njs/njs_generator.c
--- a/njs/njs_generator.c	Sun Mar 10 22:26:25 2019 +0300
+++ b/njs/njs_generator.c	Mon Mar 11 11:15:20 2019 +0300
@@ -579,8 +579,6 @@ njs_generate_arguments_object(njs_vm_t *
 {
     njs_vmcode_arguments_t  *gen;
 
-    generator->arguments_object = 1;
-
     node->index = njs_generate_object_dest_index(vm, generator, node);
     if (nxt_slow_path(node->index == NJS_INDEX_ERROR)) {
         return NXT_ERROR;
@@ -2312,7 +2310,7 @@ njs_generate_function_scope(njs_vm_t *vm
         lambda->closure_size = size;
 
         lambda->nesting = node->scope->nesting;
-        lambda->arguments_object = generator.arguments_object;
+        lambda->arguments_object = node->scope->arguments_object;
 
         lambda->start = generator.code_start;
         lambda->local_size = generator.scope_size;
diff -r 0e8ab0dfd08b -r a835619baf84 njs/njs_generator.h
--- a/njs/njs_generator.h	Sun Mar 10 22:26:25 2019 +0300
+++ b/njs/njs_generator.h	Mon Mar 11 11:15:20 2019 +0300
@@ -24,7 +24,6 @@ struct njs_generator_s {
 
     /* Parsing Function() or eval(). */
     uint8_t                         runtime;           /* 1 bit */
-    uint8_t                         arguments_object;  /* 1 bit */
 };
 
 
diff -r 0e8ab0dfd08b -r a835619baf84 njs/njs_parser.c
--- a/njs/njs_parser.c	Sun Mar 10 22:26:25 2019 +0300
+++ b/njs/njs_parser.c	Mon Mar 11 11:15:20 2019 +0300
@@ -2169,6 +2169,8 @@ njs_parser_reference(njs_vm_t *vm, njs_p
             return NULL;
         }
 
+        parser->scope->arguments_object = 1;
+
         break;
 
     case NJS_TOKEN_OBJECT_CONSTRUCTOR:
diff -r 0e8ab0dfd08b -r a835619baf84 njs/njs_parser.h
--- a/njs/njs_parser.h	Sun Mar 10 22:26:25 2019 +0300
+++ b/njs/njs_parser.h	Mon Mar 11 11:15:20 2019 +0300
@@ -30,6 +30,7 @@ struct njs_parser_scope_s {
     njs_scope_t                     type:8;
     uint8_t                         nesting;     /* 4 bits */
     uint8_t                         argument_closures;
+    uint8_t                         arguments_object;
 };
 
 


More information about the nginx-devel mailing list