196 Commits

Author SHA1 Message Date
Ruben Ayrapetyan
3eed2d0d4c Renaming ecma_op_number_{add,subtract,multiply,divide} -> ecma_number_{add,subtract,multiply,divide}.
Moving ecma_number_{add,subtract,multiply,divide} to src/libecmaobjects/ecma-helpers-number.c.
Moving abs, sqrt, ln, exp, calculation helpers from src/libecmabuiltins/ecma-builtin-math-object.c to src/libecmaobjects/ecma-helpers-number.c.
2014-10-20 18:48:10 +04:00
Ruben Ayrapetyan
2d5a5c37b0 Fixing number bitwise operations. 2014-10-20 13:47:21 +04:00
Ruben Ayrapetyan
a66c175d98 Fixing 'delete_var' opcode handler. 2014-10-15 20:39:56 +04:00
Ruben Ayrapetyan
aaadfec530 Fixing assertion checks in 'try' opcode handler. 2014-10-15 19:40:46 +04:00
Ruben Ayrapetyan
5d874596ec Fixing 'instanceof' opcode handler. 2014-10-15 18:46:40 +04:00
Ruben Ayrapetyan
11252394a5 Fixing 'delete_prop' opcode handler. 2014-10-15 18:11:45 +04:00
Ruben Ayrapetyan
0c9f03c313 Fixing opfunc_delete_var. 2014-10-15 18:02:29 +04:00
Ruben Ayrapetyan
e8d728f8ce Fixing typeof for boolean arguments. 2014-10-15 18:02:10 +04:00
Ruben Ayrapetyan
41b7ca2faa Fixing 'in' opcode handler. 2014-10-15 17:41:48 +04:00
Ruben Ayrapetyan
47ed774232 Fixing obj_decl opcode handler to handle property name argument as index of register variable containing a declared property's name. 2014-10-15 17:33:58 +04:00
Ruben Ayrapetyan
7dcbeec487 Fixing typeof with null argument. 2014-10-15 16:11:04 +04:00
Ilmir Usmanov
a9856dcf9a Add support of NaN in opfunc_unary_minus 2014-10-15 15:33:00 +04:00
Ilmir Usmanov
032031a861 Add unary_plus and unary_minus opcodes 2014-10-15 15:20:49 +04:00
Ruben Ayrapetyan
391b6caebe Fixing this_arg handling in opfunc_call_n. 2014-10-15 13:57:26 +04:00
Ruben Ayrapetyan
427dd83d99 Fixing postfix increment and postfix decrement opcodes handlers. 2014-10-14 18:52:06 +04:00
Ruben Ayrapetyan
c4ba033970 Renaming ERR_MEMORY -> ERR_OUT_OF_MEMORY. 2014-10-14 14:08:38 +04:00
Ilmir Usmanov
18618c6501 Freaking FINALLY: postparser 2014-10-12 20:34:23 +04:00
Ilmir Usmanov
3d3da5d481 Preparser: new pass to order var_decls prior to parser 2014-10-07 20:14:41 +04:00
Ruben Ayrapetyan
6b02835547 Refactoring 'call_n' opcode handler so that it looks for meta 'this_arg' at start of argument list. 2014-09-26 15:13:43 +04:00
Ruben Ayrapetyan
f380b30e75 Fixing 'print' native call. 2014-09-25 16:08:48 +04:00
Ilmir Usmanov
42876bdc8f Add support of native calls 2014-09-25 15:57:57 +04:00
Ilmir Usmanov
0a4616b65f Remove call_0, call_1, func_decl_0, func_decl_1, func_decl_2 opcodes. 2014-09-24 16:33:28 +04:00
Ruben Ayrapetyan
25ec2bea17 Refactoring function call operations to return 'normal' completion values instead of 'return' completion values. Removing ECMA_FUNCTION_CALL macro. 2014-09-24 14:27:27 +04:00
Ruben Ayrapetyan
3a31bf6eb1 Adding 'print' native call. 2014-09-24 14:22:57 +04:00
Ruben Ayrapetyan
1fed738217 Replacing ecma_builtin_is_*_object interfaces with ecma_builtin_is (object, builtin_id), and ecma_builtin_get_*_object with ecma_builtin_get (builtin_id). 2014-09-22 21:46:26 +04:00
Ruben Ayrapetyan
7fc3b178d8 Introducing ecma_is_string_magic, ecma_init and ecma_finalize interfaces, 'magic-string' container type for ecma-strings. Renaming ecma_is_magic_string to ecma_is_zt_string_magic. Moving magic-string related routines to ecma-helpers-string.c. 2014-09-19 12:08:19 +04:00
Ruben Ayrapetyan
f402e42d2f Moving Global object related routines to libecmabuiltins component. Introducing ecma_init_builtins and ecma_finalize_builtins routines. 2014-09-18 13:55:56 +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
d4cd8be349 Fix asserts in opfunc_*jmp_down functions. 2014-09-16 22:36:26 +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
cd41b236d9 Statistics of memory usage during interpretation. 2014-09-16 21:19:07 +04:00
Ruben Ayrapetyan
dafbaa742e Adding configuration option for ECMA exception support. 2014-09-08 19:09:34 +04:00
Ruben Ayrapetyan
c5dd81cf76 Fixing memory leak in opfunc_throw. 2014-09-05 20:28:02 +04:00
Ruben Ayrapetyan
b9fd80ce36 Fixing object declaration and function expression opcode handlers; adding unit test that declares object and operates on the object's properties. 2014-09-04 21:02:29 +04:00
Ruben Ayrapetyan
50371ddf20 Implementing Array construction routine; adding unit test on array operations. 2014-09-03 17:30:03 +04:00
Ruben Ayrapetyan
0a6e1a83f8 Renaming ecma_compare_ecma_string_to_ecma_string to ecma_compare_ecma_strings. 2014-09-02 20:16:41 +04:00
Ruben Ayrapetyan
c581f10b94 Changing return value of ecma_op_abstract_equality_compare to ecma_completion_value_t. 2014-09-02 19:07:43 +04:00
Ruben Ayrapetyan
8e14f32806 Introducing getters/setters for ecma_object_t structure. 2014-08-29 15:53:07 +04:00
Ruben Ayrapetyan
f7968e617d Adding several completion value construction and comparison helpers. 2014-08-29 12:51:06 +04:00
Ruben Ayrapetyan
227c09fb3e Adding target counter and depth level to 'break' and 'continue' completion values. 2014-08-28 22:56:29 +04:00
Ruben Ayrapetyan
16cbe0c63b Removing try_get_string_by_idx and get_number_by_idx. 2014-08-28 21:19:44 +04:00
Ruben Ayrapetyan
b36f997ef2 Determining if global code is strict code by checking if first opcode is 'meta' opcode of OPCODE_META_TYPE_STRICT_CODE type; setting 'configurableBindings' in 'var_decl' opcode to true if current code is eval code. 2014-08-28 20:29:42 +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
2feb159fd8 Implementing 'array_decl' opcode handler. 2014-08-27 18:28:26 +04:00