Ruben Ayrapetyan
2c86712e21
Introducing number chunk for storage of temporary (stack-only) number operands.
2014-12-09 18:24:16 +03:00
Ruben Ayrapetyan
90fccc04ba
Passing property descriptors by const ref instead of by value.
2014-12-03 21:57:11 +03:00
Ruben Ayrapetyan
3190089818
Introducing getter and setter for named data property's value field, ecma_named_data_property_assign_value interface; using boolean flags for 'Writable', 'Enumerable' and 'Configurable' attributes values while passing them in routine arguments.
2014-12-03 15:45:58 +03:00
Ruben Ayrapetyan
1f3d96cffa
Representing ecma_completion_value_t as integer instead of structure with bit-fields, adding corresponding field accessors; adding __attribute_const__ to some value handling helpers.
2014-11-27 18:20:12 +03:00
Ruben Ayrapetyan
0d870a1e74
Representing ecma_value_t as integer instead of structure with bit-fields, adding corresponding field accessors.
2014-11-27 17:34:03 +03:00
Ruben Ayrapetyan
815309c7e9
Introducing ecma_get_[type]_from_value, ecma_get_[type]_from_completion_value and ecma_get_completion_value_value interfaces.
2014-11-27 14:19:53 +03:00
Ruben Ayrapetyan
14ab1b3355
Removing construction of ecma_reference_t in get_variable_value and set_variable_value.
2014-11-20 22:09:14 +03:00
Ruben Ayrapetyan
6dd357a554
Using ecma_is_value_* instead of switches for determining of ecma-value's type.
2014-11-20 15:33:04 +03:00
Ruben Ayrapetyan
7b3eaf146b
Introducing ecma_is_value_{number,string,object} for checking type of ecma-value.
2014-11-20 14:21:33 +03:00
Ruben Ayrapetyan
477a694622
Introducing ECMA_GET_NON_NULL_POINTER macro that is ECMA_GET_POINTER without NULL pointer check.
...
Replacing invocations of ECMA_GET_POINTER passing non-NULL argument with introduced ECMA_GET_NON_NULL_POINTER.
2014-11-13 19:09:13 +03:00
Ruben Ayrapetyan
0e10e97120
Returning bool value instead of simple boolean completion value from ecma_op_has_binding.
2014-11-13 18:08:23 +03:00
Ruben Ayrapetyan
1fae7645af
Splitting ecma_op_get_value and ecma_op_put_value.
...
Splitting each of ecma_op_get_value and ecma_op_put_value to two routines:
- for lexical environment or undefined bases (lex_env_base suffix);
- for object bases (object_base suffix).
2014-11-13 15:45:47 +03:00
Ruben Ayrapetyan
83c8007437
Compacting ecma_reference_t.
2014-11-12 21:35:21 +03:00
Ilmir Usmanov
8c7dc08d93
Add literals - replacements of strings and numbers in parser.
2014-10-31 21:22:52 +04:00
Ruben Ayrapetyan
4160262ce8
Implementing EvalError, RangeError, SyntaxError, URIError built-ins and corresponding prototype built-in objects.
2014-10-30 14:28:44 +03:00
Ilmir Usmanov
a55517f57a
Remove 'logical_or' and 'logical_and' opcodes
2014-10-27 14:55:02 +04:00
Ilmir Usmanov
ec6572d501
Add support of function expressions scopes. Uncomment tests.
2014-10-21 22:22:04 +04:00
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
a66c175d98
Fixing 'delete_var' opcode handler.
2014-10-15 20:39:56 +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
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
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
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
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
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
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
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
05185bb2e9
Implementing 'native_call' opcode handler.
2014-08-27 15:38:31 +04:00
Ruben Ayrapetyan
bc2f827447
Implementing 'unreachable' handler for 'meta' opcode.
2014-08-27 13:45:27 +04:00