Ilmir Usmanov
af5cf79d3c
Use tmps as property names
2014-10-15 16:40:56 +04:00
Ilmir Usmanov
032031a861
Add unary_plus and unary_minus opcodes
2014-10-15 15:20:49 +04:00
Ilmir Usmanov
819361c234
Fix postfix expression parsing
2014-10-15 14:33:39 +04:00
Ilmir Usmanov
a49b52105e
Fix generation of this_arg. Fix pretty-printing of retval, prop_setter, prop_getter and string assignments
2014-10-15 12:57:11 +04:00
Ilmir Usmanov
9be0a85c1c
Fix 'while' bytecode generation
2014-10-14 16:55:09 +04:00
Ilmir Usmanov
053cbc769f
Fix alignment: part 2
2014-10-14 15:06:21 +04:00
Ilmir Usmanov
8a517ab03e
Add support of octal integer literals
2014-10-13 17:45:20 +04:00
Ilmir Usmanov
c33afca360
Add support of 'default' clause in 'switch' statement
2014-10-13 16:32:17 +04:00
Ilmir Usmanov
18618c6501
Freaking FINALLY: postparser
2014-10-12 20:34:23 +04:00
Ilmir Usmanov
63662dfb35
Postparser landing patch: add tree of scopes
2014-10-12 20:34:23 +04:00
Ilmir Usmanov
5c6dbd1466
Allow absent of semicolon before '}' token
2014-10-10 19:05:37 +04:00
Ilmir Usmanov
19d0690586
Support properties named 'get' and 'set'
2014-10-10 18:27:28 +04:00
Ilmir Usmanov
64a0d8a8b0
Fix error message on for-in loops
2014-10-10 14:57:56 +04:00
Ilmir Usmanov
2c90f8a7f1
Fix break and continue generation
2014-10-09 20:55:16 +04:00
Ilmir Usmanov
9cd4344c4e
Fix for loop parsing
2014-10-09 19:58:13 +04:00
Ilmir Usmanov
eeb497b84b
Fix if-else without braces
2014-10-09 19:41:42 +04:00
Ilmir Usmanov
29c734d95d
Reuse tmps in vargs
2014-10-09 18:28:28 +04:00
Ilmir Usmanov
bfa186d43a
Generate only one var_decl opcodes for each variable declared in a scope
2014-10-09 15:30:30 +04:00
Ilmir Usmanov
1dd94c12b2
Fix insert_semicolon
2014-10-08 19:15:25 +04:00
Ilmir Usmanov
24920cba57
Fix property names parsing
2014-10-08 17:09:02 +04:00
Ilmir Usmanov
c3f493c693
Some minor fixes in parser: Do not warn on escape sequences. Allow 'new' operator without parens. Fix 'var' parsing in preparser. Fix a test.
2014-10-08 16:32:36 +04:00
Ilmir Usmanov
9775d23274
Support 'delete' and 'void' operators in parser.
2014-10-08 14:52:38 +04:00
Ilmir Usmanov
3d3da5d481
Preparser: new pass to order var_decls prior to parser
2014-10-07 20:14:41 +04:00
Ilmir Usmanov
62cc3cc604
Fix && and || parsing
2014-10-06 14:35:26 +04:00
Ilmir Usmanov
3d5fd214f3
Add switch-case
2014-10-06 14:35:26 +04:00
Ilmir Usmanov
3819883f80
Add human-readable syntax errors
2014-10-03 19:01:45 +04:00
Ilmir Usmanov
c4c713535e
Fix insert_semicolon
2014-10-02 21:35:39 +04:00
Ilmir Usmanov
af00691d1d
Add this_arg dumping in parser
2014-10-02 19:31:29 +04:00
Ilmir Usmanov
eff5e1a80b
Fix stack operations in parser
2014-10-02 15:04:00 +04:00
Ilmir Usmanov
c8b97214fe
Parse undefined as simple
2014-10-01 14:30:04 +04:00
Ilmir Usmanov
6561c3fe6c
Add support of array initialization like [1,,,'4']
2014-09-30 19:44:45 +04:00
Ilmir Usmanov
9d129e15dc
Allocate stack memory by chunks
2014-09-30 18:40:24 +04:00
Ilmir Usmanov
cde880b1cf
Fix 'break' parsing
2014-09-25 18:06:21 +04:00
Ilmir Usmanov
42876bdc8f
Add support of native calls
2014-09-25 15:57:57 +04:00
Ilmir Usmanov
05a2224faa
Fix parsing of assignment expressions without assignment operator.
2014-09-24 16:53:58 +04:00
Ilmir Usmanov
0738ec6a54
Add generation of prop_setter.
2014-09-24 15:30:37 +04:00
Ilmir Usmanov
8bcc37d0f8
Fix prop_getter, construct_n, array_n generation.
2014-09-23 22:53:35 +04:00
Ilmir Usmanov
f17ca4c455
Fix post_* opcodes generation
2014-09-23 20:32:22 +04:00
Ilmir Usmanov
d26b7f9f4e
Fix reg_var_decl generation.
2014-09-23 20:05:10 +04:00
Ilmir Usmanov
8a5b956e38
Simplify serializer/deserializer. Reduce memory usage in lexer. Create HashTable data structure. Finish preparations for introducing new strings addressation.
2014-09-23 16:45:10 +04:00
Ilmir Usmanov
56e6d2a380
Add if_else.js test. Fix bytecode generation.
2014-09-17 20:21:30 +04:00
Ilmir Usmanov
70cc5128cc
Add test try_catch_finally.js. Fix parser and interpreter
2014-09-17 18:58:16 +04:00
Ilmir Usmanov
e77bd4f4e5
Add try-catch-finally support: parse and generate opcodes for this construct
...
Fix varg generation: generate *_n opcodes with parameters in following meta opcodes
Add stack internal structure: dimanically allocated stack.
Use dynamically allocated memory in parser: every local and global variables are stored in dinamically allocated stacks.
Use dynamically allocated memory in serializer: opcodes are also stored in stack.
Change is_true_jmp and is_false_jmp opcodes to relative.
Change *jmp* opcodes to be able to store opcode_counter_t instead of idx_t.
2014-09-16 21:32:59 +04:00
Ruben Ayrapetyan
ddb2e6e9d5
Introducing and implementing 'throw' and 'try' opcode handlers.
2014-08-28 18:57:34 +04:00
Ruben Ayrapetyan
647f6b3c67
Renaming OPCODE_META_TYPE_OPCODE_COUNTER -> OPCODE_META_TYPE_FUNCTION_END.
2014-08-28 16:49:03 +04:00
Ruben Ayrapetyan
9d45f68370
Introducing 'opcode counter' type for 'meta' opcode; replacing 'jmp_down' opcodes that are used as pointers only with 'meta' opcodes of the introduced type.
2014-08-28 15:17:49 +04:00
Ruben Ayrapetyan
5d2b535cec
Implementing 'with' opcode; replacing 'end_with' opcode with 'meta' opcode of corresponding type.
2014-08-27 21:38:53 +04:00
Ruben Ayrapetyan
f08c242156
Implementing 'obj_decl' opcode; replacing 'prop', 'prop_get_decl', 'prop_set_decl' with 'meta' opcodes of corresponding types.
2014-08-27 20:43:31 +04:00
Ruben Ayrapetyan
76121926d1
Splitting 'delete' opcode to 'delete_var' and 'delete_prop'. Implementing corresponding opcode handlers.
2014-08-27 17:12:59 +04:00
Ruben Ayrapetyan
02f31fbcfb
Adding 'func_expr_n' opcode; replacing arg1 and arg2 of 'func_decl_n' opcode with arg_list.
2014-08-26 15:58:57 +04:00