Commit Graph
100 Commits
Author SHA1 Message Date
Ruben Ayrapetyan aa86a3643b Implementing remainder operation according to ECMA. Checking that implementations of other arithmetic operations already conform to ECMA and removing corresponding TODOs from them. 2014-09-02 15:09:36 +04:00
Ruben Ayrapetyan afc21fad8e Simple implementation of string concatenations comparison. 2014-09-02 13:31:56 +04:00
Ruben Ayrapetyan 4d9602ba0d Supporting string concatenations that are longer than 64k. 2014-09-01 22:11:54 +04:00
Ruben Ayrapetyan 813831a23b Decimal conversion of Number to zt-string (still not precise enough). Zt-string copy and length calculation helpers. 2014-09-01 21:12:02 +04:00
Ruben Ayrapetyan e35f54fe86 Implementing ECMA String to Number conversion helper. 2014-08-29 22:46:38 +04:00
Ruben Ayrapetyan 23b62bce54 Replacing doxygen header for ECMA modules 'addtogroup ecma ---TODO---' -> 'addtogroup ecma ECMA'. 2014-08-29 18:35:44 +04:00
Ruben Ayrapetyan 32d111fecf Changing pool's chunk size to 8 bytes. Adding configurable value for minimum chunks in a pool allocated by pools' manager: CONFIG_MEM_LEAST_CHUNK_NUMBER_IN_POOL = 32. 2014-08-29 18:21:22 +04:00
Ruben Ayrapetyan 32f20a02a3 Adding missing may_ref_younger flags updates and assertion check for the flags value. 2014-08-29 18:06:20 +04:00
Ruben Ayrapetyan 1d02085dc6 Packing ecma_object_t to 8 bytes. 2014-08-29 17:38:05 +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 164350b369 Introducing constructor for label completion values (for 'break' and 'continue' completion types). 2014-08-28 23:08:31 +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
Ruben Ayrapetyan f8907573dd Implementing 'func_expr_n' opcode handler. 2014-08-26 22:15:40 +04:00
Ruben Ayrapetyan 6cfcedb053 Evaluation of expressions passed in arguments lists just before corresponding 'varg' opcodes. 2014-08-26 21:39:54 +04:00
Ruben Ayrapetyan 6f58335f23 Replacing 'varg_list' (3 args) with 'varg' (1 arg). 2014-08-26 20:50:41 +04:00
Ruben Ayrapetyan 32ba30ddef Extracting interpreter loop from run_int_from_pos. 2014-08-26 20:20:33 +04:00
Ruben Ayrapetyan bf5bda11ed Implementing 'construct_n' opcode handler. 2014-08-26 17:47:14 +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
Ruben Ayrapetyan dc3f529307 Implementing 'typeof' opcode handler. 2014-08-26 12:43:13 +04:00
Ruben Ayrapetyan 704c26ff80 Setting ThisBinding of the Global Environment to the Global Object. 2014-08-26 12:43:10 +04:00
Ruben Ayrapetyan 9a203c580e Implementing 'this' opcode handler. 2014-08-26 12:17:29 +04:00
Ruben Ayrapetyan 38fdcba69c Implementing opfunc_addition with a string-operand. 2014-08-26 11:26:47 +04:00
Ruben Ayrapetyan c72555d25f Introducing new type of ecma-string: concatenation of two ecma-strings (comparison is not implemented). loop_arithmetics_1kk.js: 2.8968 -> 2.8464. 2014-08-26 11:11:20 +04:00
Ruben Ayrapetyan d0963f6d3d Fixing deref and comparison for uint32-represented ecma-strings. loop_arithmetics_1kk.js: 2.8448 -> 2.9056. 2014-08-26 11:06:06 +04:00
Ruben Ayrapetyan 2194f80d71 Revert "Fixing deref and comparison for uint32-represented ecma-strings."
This reverts commit c3adae65625c4fcf25049a3a67e1f1862b443c35.
2014-08-26 11:05:19 +04:00
Ruben Ayrapetyan 6ca0942b74 Fixing deref and comparison for uint32-represented ecma-strings. 2014-08-26 10:26:47 +04:00
Ruben Ayrapetyan aeb363075b Adding const qualifier to ecma_string_t* in ecma-string comparison and property search routines. 2014-08-25 20:28:26 +04:00
Ruben Ayrapetyan ebfacc82d3 Removing is_length_valid from ecma-string descriptor. 2014-08-25 20:11:24 +04:00
Ruben Ayrapetyan 8998189bc0 Storing Number as UInt32 in ecma-string if the Number may be represented as UInt32. Calculating length for Number-represented ecma-strings in ecma-string constructor. loop_arithmetics_1kk.js: 2.9112 -> 2.8536. 2014-08-25 20:03:33 +04:00
Ruben Ayrapetyan 57965bf160 Moving {get,set}_variable_value and do_strict_eval_arguments_check from opcodes-ecma-support.h to opcodes-helpers-variables.c. loop_arithmetics_1kk.js: 3.0848 -> 2.9584. 2014-08-25 18:54:46 +04:00
Ruben Ayrapetyan 6fbf3e4eed Implementing accessor properties operations in general objects' [[Get]] and [[Put]] routines. 2014-08-22 21:27:46 +04:00
Ruben Ayrapetyan 90c006771f One more fix in Function objects' [[Construct]] routine 2014-08-22 21:16:43 +04:00
Ruben Ayrapetyan e6c10655c5 Fixing Function objects'[[Construct]] routine 2014-08-22 21:01:58 +04:00
Ruben Ayrapetyan a341fe044b call_0, call_1 opcode handlers: wrapping function calls using ECMA_FUNCTION_CALL helper 2014-08-22 20:50:40 +04:00
Ruben Ayrapetyan bf1841ce54 Full implementation of GetValue, PutValue operations. 2014-08-22 20:27:07 +04:00
Ruben Ayrapetyan 6801f22bd9 Introducing ECMA_FUNCTION_CALL helper macro for handling return completion values of function calls. 2014-08-22 20:26:23 +04:00
Ruben Ayrapetyan 80e6cd3a60 Fixing ecma_create_arguments_object: adding deref for allocated ecma-string 2014-08-22 18:47:46 +04:00
Ruben Ayrapetyan 077392e5c5 Fixing ecma_compare_zt_string_to_zt_string 2014-08-22 18:44:54 +04:00
Ruben Ayrapetyan f266b84016 Adding configuration header file for engine's parameters/limitations 2014-08-22 18:29:39 +04:00
Ruben Ayrapetyan dca9bcc387 Removing ECMA_TYPE__COUNT enum value; fixing comment to ecma_copy_value 2014-08-22 17:50:57 +04:00
Ruben Ayrapetyan a8486b01ed Partial implementation of 'Object' object construction routine 2014-08-22 17:18:29 +04:00
Ruben Ayrapetyan 3bcf02137e Adding stub for Array construction routine 2014-08-22 17:17:17 +04:00
Ruben Ayrapetyan 5713373279 Partial implementation of [[Construct]] routine for Function objects 2014-08-22 16:56:00 +04:00
Ruben Ayrapetyan 50a1532801 Implementing opfunc_instanceof using ecma_op_has_instance for [[HasInstance]] call 2014-08-22 15:39:23 +04:00
Ruben Ayrapetyan 7a20454047 Using ToString for property name conversion in opfunc_in 2014-08-22 15:26:05 +04:00
Ruben Ayrapetyan b1b6ae5a41 Partial implementation of [[HasInstance]] ecma-object's operation 2014-08-22 15:24:09 +04:00
Ruben Ayrapetyan 9cc27115fa Using ToString for property name conversion in opfunc_getter, opfunc_setter 2014-08-22 15:07:21 +04:00
Ruben Ayrapetyan f7cdb454ed Implementing ToString operation (ecma_op_to_string) 2014-08-22 14:40:58 +04:00
Ruben Ayrapetyan 148d9c4cb6 Disabling creation of testing notes during pre-push testing 2014-08-21 20:14:54 +04:00
Ruben Ayrapetyan 7d38fee700 Implementing comparison of ecma-strings for different types of string containers. 2014-08-21 19:54:11 +04:00
Ruben Ayrapetyan bb55d895c4 ./tools/pull.sh: pulling notes with git pull --rebase. tools/push.sh: make pull just before pushing; pushing master and notes with one command. 2014-08-21 18:21:35 +04:00
Ruben Ayrapetyan 2851c59d97 Add noopt=1 option to override OPTION_OPTIMIZE to disable. 2014-08-21 17:48:26 +04:00
Ruben Ayrapetyan 902f8c3414 Reducing build time: make debug.linux 8.778s -> 6.426s; make unittests: 32.230s -> 9.259s. 2014-08-21 17:28:14 +04:00
Ruben Ayrapetyan 616c96d3bb Implementing ecma_string_to_zt_string for number-represented string and strings that are stored in literal table 2014-08-21 16:46:45 +04:00
Ruben Ayrapetyan a96705701d Implementing prototype of ToString (Number) routine - ecma_number_to_zt_string; adding unit tests for the routine. 2014-08-21 14:43:43 +04:00
Ruben Ayrapetyan 5095bd31c9 Ecma-number decoding helpers 2014-08-20 19:20:03 +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
Ruben Ayrapetyan fe34bf7e01 Fixing: deallocation of number-represented ecma-string; [[Get]] of Arguments object for index arguments. 2014-08-20 13:47:51 +04:00
Ruben Ayrapetyan f9ff4e1ba3 Reducing includes of system headers in jerry-libc.c (LIBC_RAW). 2014-08-19 20:51:30 +04:00
Ruben Ayrapetyan 50554a81e4 Implementing Arguments object construction, [[Get]], [[GetOwnProperty]], [[DefineOwnProperty]], [[Delete]] routines. 2014-08-19 19:17:03 +04:00
Ruben Ayrapetyan d5f50ebd04 Add dbgsyms=1 option to override OPTION_DEBUG_SYMS to enable, OPTION_STRIP to disable. 2014-08-19 19:17:03 +04:00
Ruben Ayrapetyan d393d0c041 Fixing check of git push status code in tools/push.sh 2014-08-18 21:14:35 +04:00
Ruben Ayrapetyan 9d33a91822 Storing literals' indexes instead of literals' contents in ecma-strings if possible. 2014-08-18 20:52:02 +04:00
Ruben Ayrapetyan 8bc41358ec Replacing const ecma_char_t* with ecma_string_t*; supporting number-represented string in ecma_string_t. 2014-08-18 18:34:34 +04:00
Ruben Ayrapetyan 15b65a27fb Moving type conversion helpers from libecmaoperations to libecmaobjects. 2014-08-18 16:26:22 +04:00
Ruben Ayrapetyan bcddffbefb Preparations to lazy conversion of Number to String: introducing ECMA_STRING_CONTAINER_HEAP_NUMBER container type for ecma_string_t. 2014-08-18 16:10:54 +04:00
Ruben Ayrapetyan 471bbd9fc4 Test for function calls with args. 2014-08-15 20:14:02 +04:00
Ruben Ayrapetyan 04112c6fea Implementing opfunc_call_1. 2014-08-15 20:10:22 +04:00
Ruben Ayrapetyan 116a80f8ae Ilmir's fix of register variables counting. 2014-08-15 19:46:02 +04:00
Ruben Ayrapetyan b582d56ecb Implementing opfunc_decl_1, opfunc_decl_2. 2014-08-15 18:30:47 +04:00
Ruben Ayrapetyan 4de3da90a5 Implementing function's argument variables instantiation during function call. Implementing function declaration routine. 2014-08-15 17:30:11 +04:00
Ruben Ayrapetyan 04c6cb30c7 Adding ecma_is_lexical_environment_global helper. 2014-08-15 17:26:49 +04:00
Ruben Ayrapetyan 21a84afc4f Adding ecma_is_property_enumerable, ecma_is_property_configurable helpers. 2014-08-15 17:22:29 +04:00
Ruben Ayrapetyan 8f08c1c70e Fixing collections' construction and iteration routines. 2014-08-15 17:21:21 +04:00
Ruben Ayrapetyan 2a199cc6a7 Iterators for ecma-values collections 2014-08-15 15:58:34 +04:00
Ruben Ayrapetyan cf098ad4ac Adding missing 'break's in ecma_op_{create,initialize}_immutable_binding. 2014-08-14 21:36:33 +04:00
Ruben Ayrapetyan f638c381a3 Introducing ecma-values collection. Implementing ecma-strings collection through ecma-values collection. 2014-08-14 21:19:56 +04:00
Ruben Ayrapetyan 3f01ac6c45 Removing commit notes if push failed in tools/push.sh 2014-08-14 20:11:30 +04:00
Ruben Ayrapetyan 1d70fe0a37 Fixing ecma_op_abstract_equality_compare 2014-08-14 20:03:50 +04:00
Ruben Ayrapetyan 0447d128d0 Implementing b_and, b_or, b_xor opcode handlers. 2014-08-14 19:56:55 +04:00
Ruben Ayrapetyan 86a0c701df Partial stub for Int32 operation. 2014-08-14 19:15:25 +04:00
Ruben Ayrapetyan 85556504e4 Fixing exit code of tools/log.sh 2014-08-14 18:55:21 +04:00
Ruben Ayrapetyan 0cd5fbfd81 Adding src/main.c to cppcheck and vera++ source list. 2014-08-14 17:55:46 +04:00
Ruben Ayrapetyan 04dedd8f87 Adding 'make log' to list commits with commit testing notes. 2014-08-14 17:52:54 +04:00