Commit Graph

  • 4b7871bdde Fix 'op=' assignment bytecode dumping in case of arrays Ilmir Usmanov 2014-12-10 19:20:33 +03:00
  • dc8ab27900 Split parser into parser itself, opcodes dumper and syntax errors checker. Add internal hash map of literal indexes: In this hash map key is pair of block number and literal's unique identifier in the block, and the value is a literal index that unique in the whole program. Block is a continues array of opcodes. So, bytecode is splitted into blocks. Each block has its own uid counter. To get literal index the interpreter looks up it in the hash map. Thus, now JS program is able to have more than 255 identifiers/string literals. The first 128 (0-127) uids are reserved for block's uid counter, the other 128 (128-255) are reserved for tmp variables. Ilmir Usmanov 2014-12-10 18:31:59 +03:00
  • fc9e83d290 Remove obsolete unit tests. Ilmir Usmanov 2014-12-10 18:29:43 +03:00
  • a251bf5d6f Add array list structure. Change hash table to use array lists instead of linked lists. Ilmir Usmanov 2014-12-10 18:27:36 +03:00
  • 2c86712e21 Introducing number chunk for storage of temporary (stack-only) number operands. Ruben Ayrapetyan 2014-12-09 18:24:16 +03:00
  • 1182f7bbfe Removing JERRY_UNREACHABLE from lexical environment related routines. Ruben Ayrapetyan 2014-12-05 13:25:41 +03:00
  • 5bb90fb8ca Initializing object / lexical environment descriptors with zeroes before field initialization. Ruben Ayrapetyan 2014-12-05 13:24:39 +03:00
  • ee7ac6602b Fixing insertion to lookup cache: removing possibility of invalidation of entry during it's initialization, skipping empty entries during search for entry containing specified property. Ruben Ayrapetyan 2014-12-04 16:57:45 +03:00
  • 2b9b729c37 Invoking jerry_exit (ERR_OUT_OF_MEMORY) instead of JERRY_UNREACHABLE in in ecma_alloc_*. Ruben Ayrapetyan 2014-12-04 15:10:39 +03:00
  • f7f0681698 Invoking tools/perf.sh in tools/run_benchmarks.sh. Ruben Ayrapetyan 2014-12-04 12:52:55 +03:00
  • 3b1c6b5c37 Fixing an issue in garbage collection module: correctly updating 'may reference younger objects' flag. Ruben Ayrapetyan 2014-12-04 12:38:06 +03:00
  • d2f6b36cf7 Implementing Math.sin and Math.cos built-in routines. Ruben Ayrapetyan 2014-12-04 11:33:10 +03:00
  • 557a4b6460 Removing ecma_op_object_has_property and ecma_op_general_object_has_property routines. Ruben Ayrapetyan 2014-12-03 22:48:37 +03:00
  • 90fccc04ba Passing property descriptors by const ref instead of by value. Ruben Ayrapetyan 2014-12-03 21:57:11 +03:00
  • b7daa16b99 Implementing number comparisons through simple comparison operators, checking under !JERRY_NDEBUG that behaviour is equivalent to ECMA-defined comparisons. Ruben Ayrapetyan 2014-12-03 20:22:29 +03:00
  • 8998860c7b Extract non-inlineable long path from ecma_op_object_get_own_property. Ruben Ayrapetyan 2014-12-03 19:25:16 +03:00
  • 98a11c13d5 Padding ecma_lcache_entry_t to 8 bytes size. Ruben Ayrapetyan 2014-12-03 19:25:01 +03:00
  • e955d8f742 Assigning numbers to named data properties' values without reallocating pool chunk if the value already contains a number. Ruben Ayrapetyan 2014-12-03 16:03:13 +03:00
  • 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. Ruben Ayrapetyan 2014-12-03 14:49:38 +03:00
  • 668eef73c8 Implementing system call sequences in plain assembler routines; removing -fomit-frame-pointer for non-optimized builds. Ruben Ayrapetyan 2014-12-02 15:42:09 +03:00
  • ef012d9cd4 Adding lcache lookup and insert to ecma_find_named_property; removing lcache insert from ecma_op_object_get_own_property. Ruben Ayrapetyan 2014-11-28 20:38:39 +03:00
  • 3b29280b79 Using hash value stored in ecma-string for lcache search; comparing string faster but with possible false negatives while performing lcache lookup. Ruben Ayrapetyan 2014-11-28 20:27:27 +03:00
  • fe7e34d93e Adding ecma-string's hash to ecma_string_t. Ruben Ayrapetyan 2014-11-28 18:00:24 +03:00
  • 6c65c48772 Removing 'length' field from ecma-string descriptor (calculating length upon request). Ruben Ayrapetyan 2014-11-28 16:25:25 +03:00
  • 7b75dcf0c9 Removing assertion checks with possible side effects. Ruben Ayrapetyan 2014-11-27 21:04:14 +03:00
  • f6e7621d3f Adding __always_inline attribute to some value handling helpers. Ruben Ayrapetyan 2014-11-27 19:35:53 +03:00
  • 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. Ruben Ayrapetyan 2014-11-27 18:20:12 +03:00
  • 0d870a1e74 Representing ecma_value_t as integer instead of structure with bit-fields, adding corresponding field accessors. Ruben Ayrapetyan 2014-11-27 17:34:03 +03:00
  • 815309c7e9 Introducing ecma_get_[type]_from_value, ecma_get_[type]_from_completion_value and ecma_get_completion_value_value interfaces. Ruben Ayrapetyan 2014-11-27 14:19:53 +03:00
  • 22e1941050 Moving pools that received request on allocation / free to beginning of pools' list; extracting long path from mem_pools_alloc. Ruben Ayrapetyan 2014-11-26 20:21:40 +03:00
  • c21e186f2c Static definition of pool's area size and number of chunks in a pool; alignment of mem_block_header_t and mem_pool_state_t to MEM_ALIGNMENT. Ruben Ayrapetyan 2014-11-26 18:49:00 +03:00
  • 9a0081b856 Splitting free block from end if block search direction is backward (currently, for short-term blocks). Ruben Ayrapetyan 2014-11-24 18:47:48 +03:00
  • 5b8077b976 Storing provideThis flag and pointer to binding object immediately in descriptor of object-bound lexical environment. Ruben Ayrapetyan 2014-11-21 20:31:39 +03:00
  • 958126f5c8 Adding debug assertion about incoming state of formal parameters collection to ecma_create_arguments_object. Ruben Ayrapetyan 2014-11-21 17:08:40 +03:00
  • 103e1b1c8a Running cppcheck only for sources affected by local changes. Ruben Ayrapetyan 2014-11-21 16:24:07 +03:00
  • 036521627e Introducing "on-stack" ecma-string descriptors and using them in get_variable_value / set_variable_value. Ruben Ayrapetyan 2014-11-21 12:56:45 +03:00
  • 14ab1b3355 Removing construction of ecma_reference_t in get_variable_value and set_variable_value. Ruben Ayrapetyan 2014-11-20 22:04:41 +03:00
  • f5ffae0fec Removing runtime checks for reading / writing 'arguments' variable in CompactProfile mode (the checks should be performed during parsing). Ruben Ayrapetyan 2014-11-20 18:24:26 +03:00
  • d7764dfc6e Implementation of ecma_make_simple_value and ecma_make_completion_value through bitwise operations (instead of through bit-fields). Ruben Ayrapetyan 2014-11-20 15:30:33 +03:00
  • 76aab95aac Implementation of ecma_is_value_* for simple values through comparison with integer constants (instead of bit-fields). Ruben Ayrapetyan 2014-11-19 21:52:05 +03:00
  • 6dd357a554 Using ecma_is_value_* instead of switches for determining of ecma-value's type. Ruben Ayrapetyan 2014-11-19 20:28:14 +03:00
  • 7b3eaf146b Introducing ecma_is_value_{number,string,object} for checking type of ecma-value. Ruben Ayrapetyan 2014-11-19 17:39:54 +03:00
  • 30ff59fca3 Reverting c2933d9e44eb5346161964c7c52f1ca793c4c7b4 changes of ecma_number_{is,make}_infinity routines. Ruben Ayrapetyan 2014-11-19 17:54:06 +03:00
  • 27827e607c Reducing cases in which full static source analysis is performed. Ruben Ayrapetyan 2014-11-19 16:48:53 +03:00
  • 24c9b12ce5 Compacting some ecma_number_* helpers, allowing NaN in argument of ecma_number_negate, using ecma_number_negate instead of immediate unary minus in ecma_number_substract. Ruben Ayrapetyan 2014-11-19 15:18:03 +03:00
  • 9f7e17e9fd Removing musl libc usage. Linking to libgcc (for __aeabi_* routines on ARM target). Ruben Ayrapetyan 2014-11-18 21:13:54 +03:00
  • 988288c9e4 Fixing _start routine for ARM Linux targets (non-musl builds). Ruben Ayrapetyan 2014-11-18 20:12:25 +03:00
  • fb6bdd151a Moving part of ecma_compare_ecma_strings to ecma_compare_ecma_strings_longpath. Ruben Ayrapetyan 2014-11-18 17:28:03 +03:00
  • e7f96336f8 Fixing ecma_lcache_init. Ruben Ayrapetyan 2014-11-17 21:26:36 +03:00
  • fd155d4699 Fixing calculation of ecma-string's hash in ecma_string_try_hash. Ruben Ayrapetyan 2014-11-17 20:19:38 +03:00
  • 76ed780895 Introducing cache for property by name lookup (LCache). Ruben Ayrapetyan 2014-11-17 18:13:09 +03:00
  • 8a6eae0ca5 Reordering comparisons in ecma_compare_ecma_strings to improve performance for frequent cases. Ruben Ayrapetyan 2014-11-17 18:36:56 +03:00
  • 34430f0831 Passing object to named property free routines. Ruben Ayrapetyan 2014-11-17 16:59:36 +03:00
  • 7bb6c6bc84 Removing debug_release.* build targets. Ruben Ayrapetyan 2014-11-17 13:05:02 +03:00
  • 44eca8e207 Fixing JERRY_ASSERT macro for JERRY_NDEBUG build mode. Ruben Ayrapetyan 2014-11-17 12:45:40 +03:00
  • 857e66fb98 Revert "Calling routine for instantiating built-ins' properties only if property name is a magic string." Ruben Ayrapetyan 2014-11-14 18:04:45 +03:00
  • 82fe067fc9 Calling routine for instantiating built-ins' properties only if property name is a magic string. Ruben Ayrapetyan 2014-11-14 14:25:55 +03:00
  • dd1e9ca3e4 Improving performance of ecma_is_string_magic. Ruben Ayrapetyan 2014-11-14 14:25:16 +03:00
  • 2e94dc1341 Fixing an issue introduced in commit 4b3385fb920a60c9d7db66f9798355430ca4036a (restoring a check for NULL pointer). Ruben Ayrapetyan 2014-11-13 20:57:11 +03:00
  • 477a694622 Introducing ECMA_GET_NON_NULL_POINTER macro that is ECMA_GET_POINTER without NULL pointer check. Ruben Ayrapetyan 2014-11-13 19:09:13 +03:00
  • 0e10e97120 Returning bool value instead of simple boolean completion value from ecma_op_has_binding. Ruben Ayrapetyan 2014-11-13 18:08:23 +03:00
  • 1fae7645af Splitting ecma_op_get_value and ecma_op_put_value. Ruben Ayrapetyan 2014-11-13 15:45:47 +03:00
  • 11f0cf9a2d Performing do_strict_eval_or_arguments_check check only under !JERRY_NDEBUG. Ruben Ayrapetyan 2014-11-13 14:28:45 +03:00
  • 83c8007437 Compacting ecma_reference_t. Ruben Ayrapetyan 2014-11-12 21:33:04 +03:00
  • 44ade941b1 Showing STM32F4 binary size notes in tools/log.sh. Ruben Ayrapetyan 2014-11-12 20:41:06 +03:00
  • c5cc82d793 Adding mem_stats build modifier. Ruben Ayrapetyan 2014-11-12 15:46:15 +03:00
  • 804af937d8 Fixing !MEM_STATS build. Ruben Ayrapetyan 2014-11-12 15:41:13 +03:00
  • d93a4ec36c Replacing switches with pointer tables in some ecma_op_object_* routines. Ruben Ayrapetyan 2014-11-12 15:17:20 +03:00
  • afe242e7a3 Adding __attribute_pure__ and __attribute_const__ to some routines that operate on bit-fields. Ruben Ayrapetyan 2014-11-11 18:35:09 +03:00
  • bd60d1874b Implementing resize of heap blocks. Ruben Ayrapetyan 2014-11-11 15:25:19 +03:00
  • 4875762cfc Showing ARM Linux binary size notes in tools/log.sh. Ruben Ayrapetyan 2014-11-10 18:25:21 +03:00
  • 7c488ea11a Fixing tests of internal test suite. Ruben Ayrapetyan 2014-11-06 17:39:24 +03:00
  • e33e6a77cb Adding tests that depend on number precision to tests/jerry-test-suite/precommit_test_list. Ruben Ayrapetyan 2014-10-31 21:25:24 +03:00
  • 8a5b1148bc Storing magic string identifier in ecma-string descriptor instead of copying magic string's characters to the descriptor or to the heap. Ruben Ayrapetyan 2014-10-31 21:13:44 +03:00
  • 4d04cb4658 Removing tests that depend on features, which are unsupported in Compact Profile minimal build, from tests/jerry-test-suite/compact_profile_list list. Ruben Ayrapetyan 2014-10-31 20:58:04 +03:00
  • 843305fb48 Fixing some assertions in src/libecmaobjects/ecma-helpers-string.c. Ruben Ayrapetyan 2014-10-31 20:50:57 +03:00
  • c0a6ae3eff - Smaller but not precise conversion between strings and numbers under CONFIG_ECMA_NUMBER_TYPE==CONFIG_ECMA_NUMBER_FLOAT32 (float32 mode); - float64 mode by default if not CompactProfile-mode; - CompactProfile-mode for MCU builds. Ruben Ayrapetyan 2014-10-31 20:19:16 +03:00
  • 8c7dc08d93 Add literals - replacements of strings and numbers in parser. Ilmir Usmanov 2014-10-31 21:22:52 +04:00
  • 05cf2dbe04 Providing cp_minimal build mode. Ruben Ayrapetyan 2014-10-31 18:27:46 +03:00
  • 73084cb976 Fixing GetBindingValue operation for immutable bindings. Ruben Ayrapetyan 2014-10-31 16:03:32 +03:00
  • 5c4d2085a1 Fixing build without CONFIG_ECMA_COMPACT_PROFILE. Ruben Ayrapetyan 2014-10-31 16:02:30 +03:00
  • 5c4d73f4a3 Fixing Ctrl-C handling in tools/push.sh. Ruben Ayrapetyan 2014-10-30 21:25:01 +03:00
  • bc484e2048 Parallel tests run in tools/run_test_suite_test262.sh. Ruben Ayrapetyan 2014-10-30 21:21:46 +03:00
  • 290f6a7551 Passing file with test at first and sta-jerry.js as second in test262 runner. Ruben Ayrapetyan 2014-10-30 19:21:14 +03:00
  • b4bd0bfb4c Correctly setting [[Extensible]] property of built-in objects. Ruben Ayrapetyan 2014-10-30 19:39:54 +03:00
  • d8acb0b6e2 'undefined' is not literal, so dump it as identifier. Ilmir Usmanov 2014-10-30 19:47:33 +04:00
  • bd5f4c0c69 Adding test for some limitations that take effect in strict mode. Ruben Ayrapetyan 2014-10-30 18:22:52 +03:00
  • bb6583faa7 Fixing do_strict_eval_arguments_check helper. Ruben Ayrapetyan 2014-10-30 17:25:30 +03:00
  • ac710dd0b5 Implementing [[ThrowTypeError]] built-in Function object. Ruben Ayrapetyan 2014-10-30 17:14:06 +03:00
  • 4625d5b90a Changing value of CompactProfileError built-in's 'length' property to 0. Ruben Ayrapetyan 2014-10-30 16:56:44 +03:00
  • d5878132cc Dump 'use strict' prior to reg_var_decl. Ilmir Usmanov 2014-10-30 18:17:37 +04:00
  • 90dfee3cdb Updating tools/run_test_suite_test262.sh to handle tests marked '@negative'. Ruben Ayrapetyan 2014-10-30 16:06:57 +03:00
  • 4160262ce8 Implementing EvalError, RangeError, SyntaxError, URIError built-ins and corresponding prototype built-in objects. Ruben Ayrapetyan 2014-10-30 14:28:44 +03:00
  • 66cb7e316d Implementing ReferenceError and ReferenceError.prototype built-ins. Ruben Ayrapetyan 2014-10-29 21:28:56 +03:00
  • 6991b26e04 Implementing TypeError and TypeError.prototype built-ins. Fixing Error.prototype.toString implementation. Ruben Ayrapetyan 2014-10-29 21:15:36 +03:00
  • 4e6f5c7716 Implementing Error and Error.prototype built-in objects. Ruben Ayrapetyan 2014-10-29 18:49:31 +03:00
  • ed08fe9983 Full names of magic string identifiers in src/libecmaobjects/ecma-magic-strings.inc.h Ruben Ayrapetyan 2014-10-29 17:23:43 +03:00
  • a74c77a1d5 Arrangement of built-in objects implementation (description of built-ins with *.inc.h headers, reducing code duplication). Ruben Ayrapetyan 2014-10-29 15:46:31 +03:00
  • 6078a4c854 Describing Boolean.prototype with src/libecmabuiltins/ecma-builtin-boolean-prototype.inc.h header. Ruben Ayrapetyan 2014-10-28 20:38:26 +03:00
  • f9e809e2e8 Removing ecma_builtin_*_get_routine_parameters_number routines. Ruben Ayrapetyan 2014-10-28 20:12:03 +03:00