Commit Graph
100 Commits
Author SHA1 Message Date
Ruben Ayrapetyan 4cd7f96acc Suppressing 'member variable is not assigned in operator =' cppcheck warning, because of false positives. 2015-01-29 14:40:31 +03:00
Ruben Ayrapetyan 94cb1c0e67 Changing jerry_ref_unused_variables signature to take values by const reference. 2015-01-28 19:58:20 +03:00
Ruben Ayrapetyan 8b31156b5a Forbidding use of rbp for register allocation on x86-64 platform.
It is necessary because of bug in gcc / g++:
 Pointers allocated on rbp can be (are?) supposed to be aligned indepedently of what they actually contain.

Turning off allocation on rbp is not critical for now, because, currently, x86-64 is just development platform.
2015-01-28 17:43:04 +03:00
Ruben Ayrapetyan 0f487a0bb7 Returning ecma_value_t instead of ecma_completion_value_t from ECMA_TRY_CATCH for case when completion value is normal. 2015-01-27 22:07:26 +03:00
Ruben Ayrapetyan f231b9a0d2 Moving ecma_reference_t declaration to ecma-reference.h. 2015-01-27 17:18:53 +03:00
Ruben Ayrapetyan d1925ab882 Using static_cast instead of C-style cast in MEM_DEFINE_LOCAL_ARRAY. 2015-01-27 15:40:46 +03:00
Ruben Ayrapetyan 57f645c18c Passing ecma_value_t arguments by const reference instead of by value. 2015-01-23 20:22:21 +03:00
Ruben Ayrapetyan 11e37ad7f3 Switching cppcheck to c++11-compatible mode. 2015-01-22 18:07:56 +03:00
Ruben Ayrapetyan 005b5370fc Switching to g++ and corresponding changes according to C++ requirements. 2015-01-16 17:27:02 +03:00
Ruben Ayrapetyan 557df54f9d Registering temporary variables arrays in ecma-stack frames, starting mark traverse from them during GC. 2015-01-15 18:45:37 +03:00
Ruben Ayrapetyan eef966869a Revert "Switching get_variable_value to returning value through ecma-stack (stack convention)."
This reverts commit 6415130925187a877b83b14db40cade0c336ea44.
2015-01-15 17:26:08 +03:00
Ruben Ayrapetyan e570d18936 Switching get_variable_value to returning value through ecma-stack (stack convention). 2015-01-14 20:09:24 +03:00
Ruben Ayrapetyan e70626f92d Removing free of throw completion value in ECMA_TRY_CATCH macro, instead just copying it to the return value variable. 2015-01-14 18:14:28 +03:00
Ruben Ayrapetyan 917ebe4a83 Creating ecma-stack frames in run_int_from_pos. 2015-01-12 20:52:04 +03:00
Ruben Ayrapetyan b843167b91 Introducing ecma-stack structures and routines. 2015-01-12 19:33:04 +03:00
Ruben Ayrapetyan d03b2dafba Upon receiving 'give some memory back' request check if any corresponding callback set instead of asserting that. 2015-01-12 19:07:35 +03:00
Ruben Ayrapetyan f96770a811 Adding '-min' option to tools/perf.sh: the option switches to output of minimum instead of average of performance measurements. 2014-12-19 21:37:26 +03:00
Ruben Ayrapetyan 42c44830ce Removing trailing whitespace from sources. 2014-12-19 14:35:17 +03:00
Ruben Ayrapetyan 6bb39bb8ea Introducing 'try to give memory back' callback for heap allocator to use upon allocation request that can not be satisfied by the allocator. 2014-12-18 22:25:22 +03:00
Ruben Ayrapetyan 8febd2bae8 Increasing heap size from 8K to 16K for MCU targets. 2014-12-18 17:17:08 +03:00
Ruben Ayrapetyan 5539afc60e Adding #pragma GCC optimize "O0" to libperipherals' modules. 2014-12-18 17:16:33 +03:00
Ruben Ayrapetyan 5c4c47514a Fixing new line marks output in tools/generator.sh. 2014-12-18 16:14:31 +03:00
Ruben Ayrapetyan 84294018a3 Replacing dynamically sized on-stack arrays with heap allocated arrays defined through MEM_DEFINE_LOCAL_ARRAY. 2014-12-18 13:56:45 +03:00
Ruben Ayrapetyan 1e0eea3d73 Returning NULL from mem_heap_alloc_block if requested block size is zero. 2014-12-18 13:26:42 +03:00
Ruben Ayrapetyan 9b1fff1d8b Introducing MEM_DEFINE_LOCAL_ARRAY and MEM_FINALIZE_LOCAL_ARRAY to replace on-stack allocation of dynamic sized arrays. 2014-12-17 22:18:32 +03:00
Ruben Ayrapetyan 005fcb008e Changing dynamic sized (syntactically) array to constant-sized array in ecma_op_general_object_default_value. 2014-12-17 22:14:33 +03:00
Ruben Ayrapetyan 14620e30a6 Defining constant limit on magic string length instead of runtime calculation of maximum among magic strings' lengths. 2014-12-17 22:14:04 +03:00
Ruben Ayrapetyan c9b73da82d Changing dynamic sized (syntactically) array to constant-sized array in ecma_gc_run. 2014-12-17 21:29:45 +03:00
Ruben Ayrapetyan 001f262590 Limiting maximum command line arguments by CONFIG_JERRY_MAX_COMMAND_LINE_ARGS configuration option. 2014-12-17 21:29:17 +03:00
Ruben Ayrapetyan dd3271e35d Changing uint8_t* to void* in arguments and return values of mem_heap_alloc_block, mem_heap_free_block and mem_heap_try_resize_block operations. 2014-12-17 21:27:02 +03:00
Ruben Ayrapetyan 8349ad8ecf Inter-commit performance comparison script. 2014-12-17 19:16:16 +03:00
Ruben Ayrapetyan d836dc32af Introducing ECMA_OP_TO_NUMBER_TRY_CATCH and ECMA_OP_TO_NUMBER_FINALIZE macroses.
- the ECMA_OP_TO_NUMBER_TRY_CATCH macro gets number from given value,
    converting the value to number if it's type is different,
    and catching possible conversion exceptions;

  - using the macroses instead of ecma_op_to_number to reduce allocator invocations
    in several routines with arguments that are likely to be numbers.
2014-12-15 23:08:34 +03:00
Ruben Ayrapetyan 386a530d4d Upon assignment of a number to a register variable reusing the variable's space if it already contains a number. 2014-12-15 23:08:34 +03:00
Ruben Ayrapetyan eb80e817d8 Removing trailing whitespace in src/libcoreint/opcodes.c. 2014-12-15 23:08:34 +03:00
Ruben Ayrapetyan 2c86712e21 Introducing number chunk for storage of temporary (stack-only) number operands. 2014-12-09 18:24:16 +03:00
Ruben Ayrapetyan 1182f7bbfe Removing JERRY_UNREACHABLE from lexical environment related routines. 2014-12-05 13:25:41 +03:00
Ruben Ayrapetyan 5bb90fb8ca Initializing object / lexical environment descriptors with zeroes before field initialization. 2014-12-05 13:24:39 +03:00
Ruben Ayrapetyan 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. 2014-12-04 17:03:14 +03:00
Ruben Ayrapetyan 2b9b729c37 Invoking jerry_exit (ERR_OUT_OF_MEMORY) instead of JERRY_UNREACHABLE in in ecma_alloc_*. 2014-12-04 15:10:39 +03:00
Ruben Ayrapetyan f7f0681698 Invoking tools/perf.sh in tools/run_benchmarks.sh. 2014-12-04 12:52:55 +03:00
Ruben Ayrapetyan 3b1c6b5c37 Fixing an issue in garbage collection module: correctly updating 'may reference younger objects' flag. 2014-12-04 12:38:06 +03:00
Ruben Ayrapetyan d2f6b36cf7 Implementing Math.sin and Math.cos built-in routines. 2014-12-04 11:39:23 +03:00
Ruben Ayrapetyan 557a4b6460 Removing ecma_op_object_has_property and ecma_op_general_object_has_property routines. 2014-12-03 22:48:37 +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 b7daa16b99 Implementing number comparisons through simple comparison operators, checking under !JERRY_NDEBUG that behaviour is equivalent to ECMA-defined comparisons. 2014-12-03 20:22:29 +03:00
Ruben Ayrapetyan 8998860c7b Extract non-inlineable long path from ecma_op_object_get_own_property. 2014-12-03 19:25:16 +03:00
Ruben Ayrapetyan 98a11c13d5 Padding ecma_lcache_entry_t to 8 bytes size. 2014-12-03 19:25:01 +03:00
Ruben Ayrapetyan e955d8f742 Assigning numbers to named data properties' values without reallocating pool chunk if the value already contains a number. 2014-12-03 16:03:13 +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 668eef73c8 Implementing system call sequences in plain assembler routines; removing -fomit-frame-pointer for non-optimized builds. 2014-12-02 15:42:09 +03:00
Ruben Ayrapetyan ef012d9cd4 Adding lcache lookup and insert to ecma_find_named_property; removing lcache insert from ecma_op_object_get_own_property. 2014-11-28 21:27:52 +03:00
Ruben Ayrapetyan 3b29280b79 Using hash value stored in ecma-string for lcache search; comparing string faster but with possible false negatives while performing lcache lookup. 2014-11-28 21:27:48 +03:00
Ruben Ayrapetyan fe7e34d93e Adding ecma-string's hash to ecma_string_t. 2014-11-28 21:12:44 +03:00
Ruben Ayrapetyan 6c65c48772 Removing 'length' field from ecma-string descriptor (calculating length upon request). 2014-11-28 16:26:22 +03:00
Ruben Ayrapetyan 7b75dcf0c9 Removing assertion checks with possible side effects. 2014-11-27 21:04:14 +03:00
Ruben Ayrapetyan f6e7621d3f Adding __always_inline attribute to some value handling helpers. 2014-11-27 19:40:14 +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 22e1941050 Moving pools that received request on allocation / free to beginning of pools' list; extracting long path from mem_pools_alloc. 2014-11-26 20:22:44 +03:00
Ruben Ayrapetyan 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. 2014-11-26 19:23:26 +03:00
Ruben Ayrapetyan 9a0081b856 Splitting free block from end if block search direction is backward (currently, for short-term blocks). 2014-11-24 18:52:47 +03:00
Ruben Ayrapetyan 5b8077b976 Storing provideThis flag and pointer to binding object immediately in descriptor of object-bound lexical environment. 2014-11-21 20:37:04 +03:00
Ruben Ayrapetyan 958126f5c8 Adding debug assertion about incoming state of formal parameters collection to ecma_create_arguments_object. 2014-11-21 17:08:40 +03:00
Ruben Ayrapetyan 103e1b1c8a Running cppcheck only for sources affected by local changes. 2014-11-21 16:28:52 +03:00
Ruben Ayrapetyan 036521627e Introducing "on-stack" ecma-string descriptors and using them in get_variable_value / set_variable_value. 2014-11-21 13:06:30 +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 f5ffae0fec Removing runtime checks for reading / writing 'arguments' variable in CompactProfile mode (the checks should be performed during parsing). 2014-11-20 18:24:31 +03:00
Ruben Ayrapetyan d7764dfc6e Implementation of ecma_make_simple_value and ecma_make_completion_value through bitwise operations (instead of through bit-fields). 2014-11-20 15:34:46 +03:00
Ruben Ayrapetyan 76aab95aac Implementation of ecma_is_value_* for simple values through comparison with integer constants (instead of bit-fields). 2014-11-20 15:33:27 +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 30ff59fca3 Reverting c2933d9e44eb5346161964c7c52f1ca793c4c7b4 changes of ecma_number_{is,make}_infinity routines. 2014-11-19 17:55:15 +03:00
Ruben Ayrapetyan 27827e607c Reducing cases in which full static source analysis is performed.
- starting vera++ only on changed sources;
 - starting cppcheck only on changed sources, if no header file was changed,
   and on all sources, if at least one header file was changed.
2014-11-19 16:54:52 +03:00
Ruben Ayrapetyan 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. 2014-11-19 16:11:05 +03:00
Ruben Ayrapetyan 9f7e17e9fd Removing musl libc usage. Linking to libgcc (for __aeabi_* routines on ARM target). 2014-11-18 21:17:31 +03:00
Ruben Ayrapetyan 988288c9e4 Fixing _start routine for ARM Linux targets (non-musl builds). 2014-11-18 20:12:25 +03:00
Ruben Ayrapetyan fb6bdd151a Moving part of ecma_compare_ecma_strings to ecma_compare_ecma_strings_longpath. 2014-11-18 17:28:03 +03:00
Ruben Ayrapetyan e7f96336f8 Fixing ecma_lcache_init. 2014-11-17 21:26:36 +03:00
Ruben Ayrapetyan fd155d4699 Fixing calculation of ecma-string's hash in ecma_string_try_hash. 2014-11-17 20:19:38 +03:00
Ruben Ayrapetyan 76ed780895 Introducing cache for property by name lookup (LCache). 2014-11-17 18:52:48 +03:00
Ruben Ayrapetyan 8a6eae0ca5 Reordering comparisons in ecma_compare_ecma_strings to improve performance for frequent cases. 2014-11-17 18:52:38 +03:00
Ruben Ayrapetyan 34430f0831 Passing object to named property free routines.
Adding argument, pointing to object that contains the property to be freed, to ecma_free_property, ecma_free_named_data_property and ecma_free_named_accessor_property.
Also, adding static qualifier to ecma_free_named_data_property, ecma_free_named_accessor_property and ecma_free_internal_property.
2014-11-17 17:06:06 +03:00
Ruben Ayrapetyan 7bb6c6bc84 Removing debug_release.* build targets. 2014-11-17 13:52:22 +03:00
Ruben Ayrapetyan 44eca8e207 Fixing JERRY_ASSERT macro for JERRY_NDEBUG build mode.
The macro under !JERRY_NDEBUG was evaluting it's argument and called jerry_assert_fail
if the argument was evaluated to false. Under JERRY_NDEBUG the macro still
was evaluating it's argument but jerry_assert_fail wasn't called anyway.

Now macro doesn't evaluate it's argument under JERRY_NDEBUG build.
2014-11-17 12:52:43 +03:00
Ruben Ayrapetyan 857e66fb98 Revert "Calling routine for instantiating built-ins' properties only if property name is a magic string."
Reverting commit 1dd7d626967110c3a0f14c40479bc054baf04b3f because of performance degradation on ARM Linux.

The degradation requires further investigation.
2014-11-14 18:04:45 +03:00
Ruben Ayrapetyan 82fe067fc9 Calling routine for instantiating built-ins' properties only if property name is a magic string. 2014-11-14 14:40:36 +03:00
Ruben Ayrapetyan dd1e9ca3e4 Improving performance of ecma_is_string_magic. 2014-11-14 14:40:30 +03:00
Ruben Ayrapetyan 2e94dc1341 Fixing an issue introduced in commit 4b3385fb920a60c9d7db66f9798355430ca4036a (restoring a check for NULL pointer). 2014-11-13 20:57:11 +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 11f0cf9a2d Performing do_strict_eval_or_arguments_check check only under !JERRY_NDEBUG. 2014-11-13 14:28:45 +03:00
Ruben Ayrapetyan 83c8007437 Compacting ecma_reference_t. 2014-11-12 21:35:21 +03:00
Ruben Ayrapetyan 44ade941b1 Showing STM32F4 binary size notes in tools/log.sh. 2014-11-12 20:42:20 +03:00
Ruben Ayrapetyan c5cc82d793 Adding mem_stats build modifier. 2014-11-12 15:46:15 +03:00
Ruben Ayrapetyan 804af937d8 Fixing !MEM_STATS build. 2014-11-12 15:41:13 +03:00
Ruben Ayrapetyan d93a4ec36c Replacing switches with pointer tables in some ecma_op_object_* routines. 2014-11-12 15:17:20 +03:00
Ruben Ayrapetyan afe242e7a3 Adding __attribute_pure__ and __attribute_const__ to some routines that operate on bit-fields. 2014-11-11 19:25:49 +03:00
Ruben Ayrapetyan bd60d1874b Implementing resize of heap blocks.
- adding mem_heap_try_resize_block routine that tries to resize
   block using free space that is located right after the resized block;
 - placing long-term blocks from start of heap space and short-term - from end
   of the space to increase probability of success of resizing just allocated
   long-term block;
 - adding mem_heap_try_resize_block invocation to 'test_heap' unit test.
2014-11-11 15:44:31 +03:00