]>
git.kaiwu.me - njs.git/log
hongzhidao [Sat, 2 Feb 2019 06:21:26 +0000 (14:21 +0800)]
Improved njs_parser_statement_chain().
Dmitry Volyntsev [Fri, 1 Feb 2019 15:26:18 +0000 (18:26 +0300)]
Improved parsing object literals.
Dmitry Volyntsev [Fri, 1 Feb 2019 15:09:02 +0000 (18:09 +0300)]
Fixed parsing object literals.
hongzhidao [Fri, 1 Feb 2019 11:48:30 +0000 (19:48 +0800)]
Simplified parser builtin function.
hongzhidao [Tue, 29 Jan 2019 08:30:13 +0000 (16:30 +0800)]
Simplified parser tree building.
Dmitry Volyntsev [Wed, 30 Jan 2019 15:50:33 +0000 (18:50 +0300)]
Unifying quotes usage in exceptions.
Dmitry Volyntsev [Wed, 30 Jan 2019 15:49:33 +0000 (18:49 +0300)]
Replacing vsprintf with nxt_vsprintf in exceptions.
Dmitry Volyntsev [Wed, 30 Jan 2019 15:49:16 +0000 (18:49 +0300)]
Fixed SyntaxError message for unterminated regexp token.
Dmitry Volyntsev [Wed, 30 Jan 2019 15:48:23 +0000 (18:48 +0300)]
Fixed lexer->text state for the last token.
Dmitry Volyntsev [Wed, 30 Jan 2019 15:47:59 +0000 (18:47 +0300)]
Imported nxt_sprintf.c.
hongzhidao [Mon, 28 Jan 2019 17:30:04 +0000 (01:30 +0800)]
Style.
Dmitry Volyntsev [Tue, 29 Jan 2019 15:15:03 +0000 (18:15 +0300)]
Fixed parsing multiline comments.
Dmitry Volyntsev [Tue, 29 Jan 2019 13:49:36 +0000 (16:49 +0300)]
Added support for multiline tests.
hongzhidao [Sat, 26 Jan 2019 21:21:32 +0000 (05:21 +0800)]
Improved next index allocation.
Dmitry Volyntsev [Mon, 28 Jan 2019 18:18:43 +0000 (21:18 +0300)]
Renaming nxt_mem_cache_pool_t related structures and fields.
nxt_mem_cache_pool_t -> nxt_mp_t.
nxt_mem_cache_* -> nxt_mp_*.
vm->mem_cache_pool -> vm->mem_pool.
Dmitry Volyntsev [Mon, 28 Jan 2019 13:17:42 +0000 (16:17 +0300)]
HTTP: removed response object deprecated in 0.2.2.
hongzhidao [Wed, 23 Jan 2019 16:48:19 +0000 (19:48 +0300)]
Simplified function parsing.
Avoid creating phony parser structures while parsing
function bodies.
Dmitry Volyntsev [Tue, 22 Jan 2019 15:08:47 +0000 (18:08 +0300)]
Improved setting vm->trace.
Dmitry Volyntsev [Fri, 18 Jan 2019 12:28:17 +0000 (15:28 +0300)]
Removed unused vm->scratch field.
Dmitry Volyntsev [Fri, 18 Jan 2019 11:50:50 +0000 (14:50 +0300)]
Style.
Dmitry Volyntsev [Thu, 17 Jan 2019 14:01:22 +0000 (17:01 +0300)]
Setting exit index for try_return instruction is simplified.
Dmitry Volyntsev [Thu, 17 Jan 2019 13:12:46 +0000 (16:12 +0300)]
Fixed comments "try" instructions.
Dmitry Volyntsev [Thu, 17 Jan 2019 13:11:52 +0000 (16:11 +0300)]
Fixed try_break instruction.
Dmitry Volyntsev [Wed, 16 Jan 2019 15:58:23 +0000 (18:58 +0300)]
Making generator block for block statements.
Dmitry Volyntsev [Wed, 16 Jan 2019 15:55:16 +0000 (18:55 +0300)]
Fixed heap-use-after-free introduced in
045ba10db769 .
hongzhidao [Fri, 11 Jan 2019 11:20:38 +0000 (19:20 +0800)]
Improved an argument name of njs_function_frame().
hongzhidao [Fri, 11 Jan 2019 10:57:57 +0000 (18:57 +0800)]
Refactored njs_function_lambda_call().
Dmitry Volyntsev [Thu, 10 Jan 2019 17:18:27 +0000 (20:18 +0300)]
Making njs_function_frame_alloc() static.
hongzhidao [Tue, 8 Jan 2019 00:41:40 +0000 (08:41 +0800)]
Introduced njs_function_frame().
hongzhidao [Mon, 7 Jan 2019 23:04:24 +0000 (07:04 +0800)]
Renamed functions related to lambda.
hongzhidao [Mon, 7 Jan 2019 22:14:36 +0000 (06:14 +0800)]
Refactored out njs_function_apply().
As a variant of njs_function_activate().
hongzhidao [Mon, 7 Jan 2019 22:14:36 +0000 (06:14 +0800)]
Fixed njs_vm_call().
hongzhidao [Mon, 7 Jan 2019 21:02:20 +0000 (05:02 +0800)]
Simplified njs_vm_call().
hongzhidao [Mon, 7 Jan 2019 20:11:51 +0000 (04:11 +0800)]
Making njs_function_activate() more generic.
Dmitry Volyntsev [Thu, 10 Jan 2019 14:30:30 +0000 (17:30 +0300)]
Inlined njs_function_previous_frame().
hongzhidao [Mon, 7 Jan 2019 20:04:02 +0000 (04:04 +0800)]
Moving njs_normalize_args() into njs_function_native_call().
hongzhidao [Mon, 7 Jan 2019 14:14:17 +0000 (22:14 +0800)]
Introduced njs_function_native_call().
hongzhidao [Mon, 7 Jan 2019 09:42:00 +0000 (17:42 +0800)]
Refactored njs_function_frame_free.
hongzhidao [Mon, 7 Jan 2019 09:40:48 +0000 (17:40 +0800)]
Fixed vmcode function call.
This closes #82 issue on Github.
Dmitry Volyntsev [Wed, 9 Jan 2019 15:21:31 +0000 (18:21 +0300)]
2019 year.
hongzhidao [Sat, 29 Dec 2018 14:35:31 +0000 (22:35 +0800)]
Improved function naming in variable code.
Renaming:
1) njs_variable_get() to njs_variable_resolve().
2) njs_variable_find() to njs_variable_reference_resolve().
To better reflect what they do.
hongzhidao [Sat, 29 Dec 2018 08:03:57 +0000 (16:03 +0800)]
Improved working with scope indexes of variables.
Dmitry Volyntsev [Sat, 29 Dec 2018 12:16:59 +0000 (15:16 +0300)]
Removed dead code in njs_set_timer().
Found by Coverity (CID
1442096 ).
hongzhidao [Fri, 28 Dec 2018 17:43:44 +0000 (01:43 +0800)]
Removed duplicate njs_variable_reference() declaration.
hongzhidao [Fri, 28 Dec 2018 17:43:44 +0000 (01:43 +0800)]
Variables handling during code generation is improved.
All the necessary fields related to a variable are moved into
njs_variable_reference_t.
hongzhidao [Fri, 28 Dec 2018 17:43:44 +0000 (01:43 +0800)]
Improved njs_generate_typeof_operation().
njs_variable_typeof() cannot fail.
Dmitry Volyntsev [Fri, 28 Dec 2018 16:36:24 +0000 (19:36 +0300)]
Interactive shell: immediate events support.
This closes #66 issue on Github.
Dmitry Volyntsev [Fri, 28 Dec 2018 12:39:59 +0000 (15:39 +0300)]
Fixed grammar in njs_vm.h.
Dmitry Volyntsev [Fri, 28 Dec 2018 09:44:56 +0000 (12:44 +0300)]
Added setImmediate().
Dmitry Volyntsev [Fri, 28 Dec 2018 09:43:36 +0000 (12:43 +0300)]
Interactive shell: initial support of posted events.
Dmitry Volyntsev [Fri, 28 Dec 2018 09:43:22 +0000 (12:43 +0300)]
njs_vm_pending() is split in njs_vm_posted() and njs_vm_waiting().
There are two types of events in njs:
Posted - are ready to be executed by njs_vm_run().
Waiting - await external async events.
Dmitry Volyntsev [Fri, 28 Dec 2018 09:42:29 +0000 (12:42 +0300)]
njs_vm_run() is rectified.
Previously, both njs_vm_call() and njs_vm_run() can be used to run njs
code. njs_vm_call() was used to invoke a single function, while
njs_vm_run() was used to run global code as well to process the events.
At first invocation njs_vm_run() executed global code, all the next
invocations it processed pending events.
The solution is splitting njs_vm_run() into two functions. One for
events processing and another for running the global code.
Dmitry Volyntsev [Thu, 27 Dec 2018 07:35:07 +0000 (10:35 +0300)]
Improved naming in njs_variables_scope_resolve().
Thanks to 洪志道 (Hong Zhi Dao).
Dmitry Volyntsev [Thu, 27 Dec 2018 07:27:46 +0000 (10:27 +0300)]
Style.
Dmitry Volyntsev [Wed, 26 Dec 2018 16:57:41 +0000 (19:57 +0300)]
Refactored functions related to variables.
1) njs_builtin_add() is refactored out as a minor variant of
njs_variable_add().
2) parser is refactored out from arguments of the functions.
Dmitry Volyntsev [Wed, 26 Dec 2018 13:05:23 +0000 (16:05 +0300)]
Added support of native function calls in njs_vm_call().
Dmitry Volyntsev [Wed, 26 Dec 2018 10:23:16 +0000 (13:23 +0300)]
Fixed exit instructions inside try blocks.
Fixed instructions: continue, break, return.
Dmitry Volyntsev [Tue, 25 Dec 2018 06:53:27 +0000 (09:53 +0300)]
Version bump.
Dmitry Volyntsev [Tue, 25 Dec 2018 06:51:02 +0000 (09:51 +0300)]
Added tag 0.2.7 for changeset
4624ba4f6497
Dmitry Volyntsev [Tue, 25 Dec 2018 06:49:52 +0000 (09:49 +0300)]
Version 0.2.7.
Dmitry Volyntsev [Mon, 24 Dec 2018 10:59:27 +0000 (13:59 +0300)]
Removed surplus for loop.
Left over after simplifications in
4e62b7a295e0 .
Found by Coverity (CID
1441823 ).
Alexander Pyshchev [Mon, 17 Dec 2018 19:13:02 +0000 (21:13 +0200)]
Added the rest parameters support.
This closes #21 issue on Github.
Dmitry Volyntsev [Fri, 7 Dec 2018 15:58:27 +0000 (18:58 +0300)]
Style.
Dmitry Volyntsev [Fri, 7 Dec 2018 15:54:59 +0000 (18:54 +0300)]
Removing unused "size" field from njs_parser_operation_t.
Thanks to 洪志道 (Hong Zhi Dao).
This closes #68 issue on Github.
Dmitry Volyntsev [Fri, 7 Dec 2018 15:33:52 +0000 (18:33 +0300)]
Freeing code buffer after is was reallocated.
Thanks to 洪志道 (Hong Zhi Dao).
Dmitry Volyntsev [Fri, 7 Dec 2018 14:15:21 +0000 (17:15 +0300)]
Code generator is separated from parser structure.
Dmitry Volyntsev [Fri, 7 Dec 2018 14:11:33 +0000 (17:11 +0300)]
Code generator refactored.
Previously, the code size had to be calculated before code generation
phase because raw pointers to instruction were used to determine proper
jump offsets. It introduced unnecessary coupling between parser and
generator as well as complicated the parser because it had to know in
advance what instructions will be generated.
The solution is the dynamic reallocation of the code during generation
phase and the usage of relative offsets when calculating jump instructions.
Igor Sysoev [Wed, 5 Dec 2018 12:38:33 +0000 (15:38 +0300)]
Fixed building on paltforms without librt.
Dmitry Volyntsev [Tue, 4 Dec 2018 18:13:13 +0000 (21:13 +0300)]
Fixed type of iteration variable in for-in with array values.
Valentin Bartenev [Mon, 3 Dec 2018 16:23:27 +0000 (19:23 +0300)]
Object.entries() method.
Valentin Bartenev [Mon, 3 Dec 2018 16:20:58 +0000 (19:20 +0300)]
Object.values() method.
Valentin Bartenev [Sat, 1 Dec 2018 19:32:33 +0000 (22:32 +0300)]
Slightly optimized njs_object_keys_array().
There is no need to iterate over the object properties second time if after
the first attempt we know that it contains no enumerable properties.
Also removed surplus conditions.
Dmitry Volyntsev [Fri, 30 Nov 2018 14:52:02 +0000 (17:52 +0300)]
Fixed comparison of Byte and UTF8 strings.
Dmitry Volyntsev [Thu, 29 Nov 2018 18:01:59 +0000 (21:01 +0300)]
Using acosh(0) to get NaN in runtime.
macOS clang 10 optimizes sqrt(-1) out using garbage value
instead.
Artem S. Povalyukhin [Wed, 28 Nov 2018 18:56:19 +0000 (21:56 +0300)]
Improved accuracy of console.time()/console.timeEnd().
Artem S. Povalyukhin [Wed, 28 Nov 2018 18:50:28 +0000 (21:50 +0300)]
Added nxt_time().
Returns the current high-resolution real time.
Dmitry Volyntsev [Thu, 29 Nov 2018 15:14:12 +0000 (18:14 +0300)]
Fixed conversion of NAN and INF to uint32_t on some platforms.
Dmitry Volyntsev [Wed, 28 Nov 2018 12:47:05 +0000 (15:47 +0300)]
Fixed assignment expression from compound assignment.
Dmitry Volyntsev [Tue, 27 Nov 2018 15:58:30 +0000 (18:58 +0300)]
Fixed automatic semicolon insertion.
Dmitry Volyntsev [Tue, 27 Nov 2018 15:58:26 +0000 (18:58 +0300)]
Version bump.
Dmitry Volyntsev [Tue, 27 Nov 2018 12:20:11 +0000 (15:20 +0300)]
Added tag 0.2.6 for changeset
0709b8b4f11e
Dmitry Volyntsev [Tue, 27 Nov 2018 12:18:45 +0000 (15:18 +0300)]
Version 0.2.6.
Dmitry Volyntsev [Fri, 23 Nov 2018 14:46:30 +0000 (17:46 +0300)]
Fixed parsing of statements in if without newline.
This fixes #8 issue on Github.
Thanks to 洪志道 (Hong Zhi Dao)
Dmitry Volyntsev [Fri, 23 Nov 2018 11:30:24 +0000 (14:30 +0300)]
Fixed parser for newline after throw.
Dmitry Volyntsev [Thu, 22 Nov 2018 16:32:48 +0000 (19:32 +0300)]
Fixed typeof for object_value type.
Dmitry Volyntsev [Thu, 22 Nov 2018 15:55:32 +0000 (18:55 +0300)]
Making built-in prototypes mutable.
Dmitry Volyntsev [Thu, 22 Nov 2018 15:12:26 +0000 (18:12 +0300)]
Backed out changeset
b3691d847ff4 , reimplemented properly.
Dmitry Volyntsev [Thu, 22 Nov 2018 14:38:40 +0000 (17:38 +0300)]
Fixed parsing of throw statement inside if.
Dmitry Volyntsev [Thu, 22 Nov 2018 14:38:25 +0000 (17:38 +0300)]
Fixed size uint32_t overflow in njs_array_expand().
Dmitry Volyntsev [Thu, 22 Nov 2018 12:35:25 +0000 (15:35 +0300)]
Improved backtrace reporting for stack overflow.
Dmitry Volyntsev [Thu, 22 Nov 2018 12:02:19 +0000 (15:02 +0300)]
Fixed handling of unexpected tokens in parser.
This fixes #50 issue on Github.
Dmitry Volyntsev [Wed, 21 Nov 2018 13:45:10 +0000 (16:45 +0300)]
Interactive shell: quiet mode.
Dmitry Volyntsev [Mon, 19 Nov 2018 13:55:37 +0000 (16:55 +0300)]
Fixed buffer overrun by memcpy() (CID
1441409 ).
Dmitry Volyntsev [Mon, 19 Nov 2018 13:30:35 +0000 (16:30 +0300)]
Fixed various clang static analyzer warnings.
In njs_object_keys_array() function.
Dmitry Volyntsev [Thu, 15 Nov 2018 17:31:35 +0000 (20:31 +0300)]
Handling non-object values in Object.keys().
This fixes #54 issue on Github.
Dmitry Volyntsev [Thu, 15 Nov 2018 17:31:35 +0000 (20:31 +0300)]
Extended Object.defineProperty() spec conformance.
1) non-primitive property names.
2) support of array index properties.
3) support of special properties with
NJS_PROPERTY_HANDLER, like length.
Dmitry Volyntsev [Thu, 15 Nov 2018 17:31:35 +0000 (20:31 +0300)]
Fixed local scope this.
Dmitry Volyntsev [Thu, 15 Nov 2018 17:31:35 +0000 (20:31 +0300)]
Fixed global objects.
1) Making it extensible.
2) Adding default properties according to ES5.1:15.1.1.
Dmitry Volyntsev [Wed, 4 Apr 2018 14:38:10 +0000 (17:38 +0300)]
Improved handling of builtin objects.
The handling of njs_object_init_t arrays is unified across
njs_builtin.c functions.
Artem S. Povalyukhin [Wed, 14 Nov 2018 15:14:49 +0000 (18:14 +0300)]
console.time() and console.timeEnd() methods.
This fixes #62 issue on Github.