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