92 Commits

Author SHA1 Message Date
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