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
cd41b236d9
Statistics of memory usage during interpretation.
2014-09-16 21:19:07 +04:00
Ruben Ayrapetyan
b529fc2da9
Processing unhandled exception by exiting engine with ERR_UNHANDLED_EXCEPTION; determining if function's code is strict by checking for appearance of 'meta' opcode of OPCODE_META_TYPE_STRICT_CODE type at the beginning of the function's code.
2014-08-28 20:21:47 +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
d286a93e2c
Replacing 'varg' opcode with 'meta' opcode with corresponding type.
2014-08-27 19:35:56 +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
6f58335f23
Replacing 'varg_list' (3 args) with 'varg' (1 arg).
2014-08-26 20:50:41 +04:00
Ruben Ayrapetyan
9573b7234d
Implementing 'func_decl_n' and 'func_call_n' opcodes' handlers.
2014-08-26 17:30:23 +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
Ruben Ayrapetyan
7a80b7f4f1
Renaming 'construct_decl' opcode to 'construct_n'.
2014-08-26 12:50:23 +04:00
e.gavrin
4ffbdd2c3f
__opcode -> opcode_t
2014-08-23 02:01:56 +04:00
e.gavrin
a99907670b
OPCODE define replaced with opcode_t. T_IDX define replaced with idx_t.
2014-08-23 00:53:41 +04:00
e.gavrin
0eece0be5a
Remove not needed opcode-support.[c,h]
2014-08-23 00:24:49 +04:00
e.gavrin
d80cb10361
Refine opcodes OP_LIST macro. Removed ambiguous lists of opcodes in several files. The only list is in opcodes.h
2014-08-23 00:16:56 +04:00
e.gavrin
d4a9d9430e
Refactoring of libcoreint part1
2014-08-23 00:16:56 +04:00
e.gavrin
c6a41c167e
Add native_call opcode.
2014-08-21 17:30:52 +04:00
e.gavrin
1261820838
Add meta opcode.
2014-08-21 16:07:05 +04:00
e.gavrin
5b2b04f5f9
Various opcode's refinements: obj[0,1, 2, n]->obj_decl, array[0, 1, 2, n]->array_decl, func_expr[0, 1, n]->removed, varg[1_end, 2_end, 3_end, 3]->varg_list.
2014-08-21 15:49:10 +04:00
Ruben Ayrapetyan
284e7fc91b
Renaming prop_access opcode to prop_getter; introducing prop_setter opcode; implementing property getter/setter opcode handlers.
2014-08-20 16:34:03 +04:00
e.gavrin
b3b1ba0206
Formatting fixes in libcoreint
2014-08-12 01:13:32 +04:00
Ilmir Usmanov
5373b60955
Reformat
2014-08-11 23:17:45 +04:00
Ilmir Usmanov
1f3b5a4c29
Merge
2014-07-24 19:50:37 +04:00
Ilmir Usmanov
1790739b93
Add 'reg_var_decl' opcode
2014-07-24 15:45:55 +04:00
Ilmir Usmanov
764efa41b8
Fix parsing of for-loops.
2014-07-23 20:47:31 +04:00
Ruben Ayrapetyan
bc0c7824c2
Renaming ecma_* identifiers from 'camelCase' to 'underscore_naming'.
2014-07-23 12:54:56 +04:00
Ilmir Usmanov
18fcf4bd77
Merge with 'geppetto': Generate bytecode while parsing
2014-07-22 21:18:19 +04:00
Ilmir Usmanov
efb7009cfb
Generate bytecode while parsing
2014-07-22 20:49:51 +04:00
Ruben Ayrapetyan
98a0c0f933
Introducing type argument in 'assignment' opcode handler.
2014-07-21 15:57:15 +04:00
Ruben Ayrapetyan
0209acad65
Introducing exitval opcode for end of script and assertions in unit tests. The opcode finishes interpretation with status code 0 (success) or 1 (failure).
2014-07-17 21:32:29 +04:00
Ruben Ayrapetyan
dd5c9dfb39
Changing return type of opcode handlers to ecma_CompletionValue_t.
2014-07-17 20:53:48 +04:00
e.gavrin
0c9f81dbf9
add var_decl
2014-07-17 15:19:55 +04:00
e.gavrin
9a0b54313d
remove opcodes
2014-07-17 13:08:43 +04:00
e.gavrin
a61d31e9bf
fix style error: Variable xxx hides enumerator with same name
2014-07-16 23:20:27 +04:00
e.gavrin
73bf0f9be1
remove unused gen_bytecode and save_op_data
2014-07-16 23:03:58 +04:00
Ilmir Usmanov
270ee301b4
Start dumping assignment expressions to bytecode; revise bytecode instructions
2014-07-16 22:23:55 +04:00
Ruben Ayrapetyan
76e579d4e1
Remove inclusion of std headers to our headers; move fatal from src/error.h to src/libjsparser/parser.c.
2014-07-10 19:46:24 +04:00
Ilmir Usmanov
f46d5b440c
Merge line-by-line parser
2014-07-09 16:17:42 +04:00
e.gavrin
f18a5f5e31
opcodes + refined int structure
2014-07-08 13:18:00 +04:00
e.gavrin
21db33fa97
added opcodes
2014-07-07 23:18:49 +04:00
e.gavrin
8ab8adb031
fixed
2014-07-07 11:55:10 +04:00
e.gavrin
2091bfb9e4
opcodes
2014-07-04 23:51:42 +04:00
e.gavrin
aace544c55
fixed Makefile and tests, wrapped interpreter and opcodes
2014-07-04 21:34:44 +04:00
e.gavrin
7759e4b99f
fixes
2014-07-04 19:08:21 +04:00
e.gavrin
e3e0167249
remove output from lexer, fixes
2014-07-04 17:11:06 +04:00
e.gavrin
d3a26dc982
compacting
2014-07-03 19:45:27 +04:00
e.gavrin
7f878fd8a7
add opcodes
2014-07-03 18:37:57 +04:00