49 Commits

Author SHA1 Message Date
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
005b5370fc Switching to g++ and corresponding changes according to C++ requirements. 2015-01-16 17:27:02 +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
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
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
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
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
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
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
804af937d8 Fixing !MEM_STATS build. 2014-11-12 15:41:13 +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
Ruben Ayrapetyan
cd41b236d9 Statistics of memory usage during interpretation. 2014-09-16 21:19:07 +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
f266b84016 Adding configuration header file for engine's parameters/limitations 2014-08-22 18:29:39 +04:00
Ruben Ayrapetyan
b987bcc920 Compaction of heap block's header from 32 bytes to 8 bytes. ./benchmarks/jerry/loop_arithmetics_1kk.js: 2.77 -> 2.82. 2014-08-12 16:23:44 +04:00
Ruben Ayrapetyan
aa43e06366 Style fixes in liballocator, libecmaobjects, libecmaoperations: putting else on separate line after closing brace of 'if' block. 2014-08-12 13:53:34 +04:00
Ruben Ayrapetyan
38c6c2357d Styles fixes in liballocator: indentation and braces rules. 2014-08-11 21:10:06 +04:00
Ruben Ayrapetyan
59940fb648 Style fixes in liballocator, libecmaobjects, libecmaoperations: now lines are not longer than 120 characters. 2014-08-11 19:51:40 +04:00
Ruben Ayrapetyan
b02eefd4ae Style fixes in liballocator, libecmaobjects, libecmaoperations: space between function name and opening parenthesis, no space after opening parenthesis/before closing parenthesis. 2014-08-11 19:28:14 +04:00
Ruben Ayrapetyan
8ce1ef3c8b Removing trailing whitespace in liballocator, libecmaobjects and libecmaoperations. 2014-08-11 15:59:19 +04:00
Ruben Ayrapetyan
7b04e9eaeb Compacting pool header to 8 bytes. Replaced typed pool chunks with fixed-size untyped ones. loop_arithmetics_1kk.js benchmark: 2.98517 -> 2.9443. 2014-08-08 23:11:06 +04:00
Ruben Ayrapetyan
0194e63331 Removing pool bitmaps; optimizing search for free pool chunks. loop_arithmetics_1kk.js benchmark: 4.134s -> 3.479s. 2014-08-08 14:26:28 +04:00
Ruben Ayrapetyan
d7e28e3a28 Fixing memory leak in mem_pools_alloc. 2014-08-07 21:08:31 +04:00
Ruben Ayrapetyan
2887332573 Fixing valgrind annotations in mem_heap_alloc_block for path added in ae189c6107f943f5273f9b2fce14ad17a396636c. 2014-08-07 21:08:07 +04:00
Ruben Ayrapetyan
99c15ef802 Implementing object model, memory allocators finalization routines. Adding assertion that all memory was freed before exit. 2014-08-07 19:24:32 +04:00
Ruben Ayrapetyan
93c7b813cf Fixing heap's block allocation routine. Adding related checks to mem_check_heap. 2014-08-07 18:26:26 +04:00
Ruben Ayrapetyan
ac35a4ebf2 Fixing cppcheck warnings in mem-heap.c (appeared when valgrind=1) and in jerry-libc.c (appeared libc_raw=1). 2014-08-04 18:42:40 +04:00
Ruben Ayrapetyan
0025827eac Fixes: JERRY_NVALGRIND effect was inverted; also a block was marked as inaccessible too early. 2014-08-01 18:30:24 +04:00
Ruben Ayrapetyan
fa87696275 Revert "Fixes: JERRY_NVALGRIND effect was inverted; also a block was marked as inaccessible too early."
This reverts commit 53c0da4307b1407f506ff71b0e014eefe00da985.
2014-08-01 18:29:55 +04:00
Ruben Ayrapetyan
a6feea1068 Fixes: JERRY_NVALGRIND effect was inverted; also a block was marked as inaccessible too early. 2014-08-01 18:28:18 +04:00
Ruben Ayrapetyan
e1c57dc231 Adding valgrind's memcheck support in mem-heap. Adding valgrind's headers valgrind.h and memcheck.h to third-party/valgrind directory. 2014-08-01 18:22:34 +04:00
Ruben Ayrapetyan
e3c8af68f5 Enhancement of heap memory usage statistics output. 2014-07-25 19:16:52 +04:00
Ruben Ayrapetyan
5e4078095a Print heap memory usage statistics before exit (host version). 2014-07-25 19:09:10 +04:00
Ruben Ayrapetyan
8d180e9be1 Minor style fixes. 2014-07-23 20:41:21 +04:00
Ruben Ayrapetyan
1796b9d903 Renaming rest camelCase-named identifiers according to underscore_named_value-naming. 2014-07-23 14:07:45 +04:00
Ruben Ayrapetyan
79f3d97434 Renaming jerry_* identifiers from 'camelCase' to 'underscore_naming'. 2014-07-23 13:03:30 +04:00
Ruben Ayrapetyan
b3b4c74cbe Renaming mem_* identifiers from 'camelCase' to 'underscore_naming'. 2014-07-23 12:54:45 +04:00
Ruben Ayrapetyan
2d4ed154ee Removing m_ prefix from identifiers (m_ValueType -> ValueType, ...). 2014-07-23 11:41:58 +04:00
Ruben Ayrapetyan
c4d2c4c916 Moved definition of syntactic reference structure to ecma-refecence.h, removed ctx-reference.[ch] and ctx-manager.[ch]. 2014-07-10 11:16:23 +04:00
Ruben Ayrapetyan
aaf2bc4f41 Fix mem-heap.c, mem-poolman.c and test_poolman.c compilation for '#ifndef MEM_STATS' case. 2014-07-09 19:43:50 +04:00
Ruben Ayrapetyan
1f1190a346 Move mem_GetChunkSize to mem-poolman.c from mem-poolman.h. 2014-07-09 19:24:07 +04:00
Ruben Ayrapetyan
c54370bfec Remove inline from mem_GetChunkSize and mem-heap internal static functions. 2014-07-09 19:15:51 +04:00
Ilmir Usmanov
a2350cb88e Change parser to stack-only version 2014-07-09 18:05:19 +04:00
Ilmir Usmanov
f46d5b440c Merge line-by-line parser 2014-07-09 16:17:42 +04:00
e.gavrin
823432664e Applied memory tests 2014-07-08 13:24:57 +04:00
e.gavrin
3fde3400f4 manualy generated blinky opcodes 2014-07-03 16:23:25 +04:00