From 3f93f8d0fad900a856a0a7ea2700a77870f1d48d Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Mon, 11 Mar 2019 11:15:20 +0300 Subject: [PATCH] Improved handling of arguments object. --- 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(-) diff --git a/njs/njs_generator.c b/njs/njs_generator.c index d8cf7714..5c818b7d 100644 --- a/njs/njs_generator.c +++ b/njs/njs_generator.c @@ -579,8 +579,6 @@ njs_generate_arguments_object(njs_vm_t *vm, njs_generator_t *generator, { 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, njs_function_lambda_t *lambda, 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 --git a/njs/njs_generator.h b/njs/njs_generator.h index 1ffe022e..3ebb0739 100644 --- a/njs/njs_generator.h +++ b/njs/njs_generator.h @@ -24,7 +24,6 @@ struct njs_generator_s { /* Parsing Function() or eval(). */ uint8_t runtime; /* 1 bit */ - uint8_t arguments_object; /* 1 bit */ }; diff --git a/njs/njs_parser.c b/njs/njs_parser.c index 1cb012d6..9b408e76 100644 --- a/njs/njs_parser.c +++ b/njs/njs_parser.c @@ -2169,6 +2169,8 @@ njs_parser_reference(njs_vm_t *vm, njs_parser_t *parser, njs_token_t token, return NULL; } + parser->scope->arguments_object = 1; + break; case NJS_TOKEN_OBJECT_CONSTRUCTOR: diff --git a/njs/njs_parser.h b/njs/njs_parser.h index fca1c2d7..0797f219 100644 --- a/njs/njs_parser.h +++ b/njs/njs_parser.h @@ -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; }; -- 2.47.3