Commit Graph

1030 Commits

Author SHA1 Message Date
Ruben Ayrapetyan c12659ba51 Introducing managed pointer class ecma_pointer_t, using it to store pointer in ecma_value_t. 2015-02-03 18:25:38 +03:00
Ruben Ayrapetyan 9cdc50c3ec Disabling Wattributes warnings (because always_inline is considered incorrect without inline specifier even in LTO mode); removing used attribute from always_inline functions; removing inline specifier from ecma_lcache_lookup and ecma_stack_top_value. 2015-02-03 18:05:17 +03:00
Ruben Ayrapetyan 3cb0b0a379 Revert "Introducing managed pointers classes (ecma_generic_ptr_t, ecma_pointer_t<T>); using ecma_generic_ptr_t to store pointer in ecma_value_t."
This reverts commit f88c0d665b4ff7e2add495bc2980adf7a1622f31.
2015-02-03 16:50:21 +03:00
Ruben Ayrapetyan b0e4d2ece1 Introducing managed pointers classes (ecma_generic_ptr_t, ecma_pointer_t<T>); using ecma_generic_ptr_t to store pointer in ecma_value_t. 2015-02-03 15:11:44 +03:00
Ruben Ayrapetyan 55caaf7a88 Storing values in ecma_value_t in unpacked form (type + simple value / pointer to the heap). 2015-02-03 14:52:37 +03:00
Ruben Ayrapetyan f37a5085f6 Converting ecma_completion_value_t to class derived from ecma_value_t with additional field with for completion type and related operations.
Completion value are now returned through ecma_completion_value_t &ret_value argument.
2015-01-30 23:16:45 +03:00
Ruben Ayrapetyan a1f95048ae Removing label completion values. 2015-01-30 23:00:42 +03:00
Ruben Ayrapetyan 00afd4e0e2 Converting ecma_value_t to class that is used for on-stack storage of ecma-values.
Original ecma_value_t is renamed to ecma_value_packed_t and is used for on-heap storage.
Copy and move constructors, move assignment operator of ecma_value_t are not created.
New ecma-value return convention is introduced: ecma-values are now returned through ecma_value_t &ret_val argument.
2015-01-30 22:53:06 +03:00
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
Ilmir Usmanov 7e7bdc2aac Rework literal indexes hash table to simple array in order to improve performance 2014-12-15 22:56:22 +03:00
Ilmir Usmanov 864bd3de06 Fix comment. 2014-12-15 22:47:41 +03:00
Ilmir Usmanov ddac13f944 Fix parsing of empty file 2014-12-15 17:10:04 +03:00
Ilmir Usmanov c1ebb8db50 Fix expression statement parsing in case of statement starts with keyword 2014-12-12 16:36:18 +03:00
Ilmir Usmanov 6aee69d6df Fix native_call opcode dumping 2014-12-12 16:34:59 +03:00
Ilmir Usmanov 4b7871bdde Fix 'op=' assignment bytecode dumping in case of arrays 2014-12-10 19:20:33 +03:00
Ilmir Usmanov 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.
2014-12-10 18:31:59 +03:00
Ilmir Usmanov fc9e83d290 Remove obsolete unit tests. 2014-12-10 18:29:43 +03:00