Commit Graph

47 Commits

Author SHA1 Message Date
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