Introduce GC stress testing mode (-mem_stress_test prefix; for example: debug.linux-mem_stress_test).
JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan r.ayrapetyan@samsung.com
This commit is contained in:
@@ -154,10 +154,14 @@ project (Jerry CXX C ASM)
|
|||||||
# Memory statistics
|
# Memory statistics
|
||||||
set(MODIFIER_SUFFIX_MEMORY_STATISTICS -mem_stats)
|
set(MODIFIER_SUFFIX_MEMORY_STATISTICS -mem_stats)
|
||||||
|
|
||||||
|
# Memory management stress-test mode
|
||||||
|
set(MODIFIER_SUFFIX_MEM_STRESS_TEST -mem_stress_test)
|
||||||
|
|
||||||
# Modifier lists
|
# Modifier lists
|
||||||
# Linux
|
# Linux
|
||||||
set(MODIFIERS_LISTS_LINUX
|
set(MODIFIERS_LISTS_LINUX
|
||||||
"FULL_PROFILE"
|
"FULL_PROFILE"
|
||||||
|
"FULL_PROFILE MEM_STRESS_TEST"
|
||||||
"COMPACT_PROFILE"
|
"COMPACT_PROFILE"
|
||||||
"COMPACT_PROFILE_MINIMAL"
|
"COMPACT_PROFILE_MINIMAL"
|
||||||
"FULL_PROFILE MEMORY_STATISTICS"
|
"FULL_PROFILE MEMORY_STATISTICS"
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ export TARGET_RELEASE_MODES = release
|
|||||||
|
|
||||||
export TARGET_PC_SYSTEMS = linux
|
export TARGET_PC_SYSTEMS = linux
|
||||||
|
|
||||||
export TARGET_PC_MODS = cp cp_minimal mem_stats
|
export TARGET_PC_MODS = cp cp_minimal mem_stats mem_stress_test
|
||||||
|
|
||||||
export TARGET_MCU_MODS = cp cp_minimal
|
export TARGET_MCU_MODS = cp cp_minimal
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,10 @@ project (JerryCore CXX C ASM)
|
|||||||
CONFIG_ECMA_COMPACT_PROFILE_DISABLE_MATH_BUILTIN
|
CONFIG_ECMA_COMPACT_PROFILE_DISABLE_MATH_BUILTIN
|
||||||
CONFIG_ECMA_COMPACT_PROFILE_DISABLE_JSON_BUILTIN)
|
CONFIG_ECMA_COMPACT_PROFILE_DISABLE_JSON_BUILTIN)
|
||||||
|
|
||||||
|
# Memory management stress-test mode
|
||||||
|
set(DEFINES_MEM_STRESS_TEST
|
||||||
|
MEM_GC_BEFORE_EACH_ALLOC)
|
||||||
|
|
||||||
# Memory statistics
|
# Memory statistics
|
||||||
set(DEFINES_MEMORY_STATISTICS MEM_STATS)
|
set(DEFINES_MEMORY_STATISTICS MEM_STATS)
|
||||||
|
|
||||||
|
|||||||
@@ -489,6 +489,10 @@ mem_heap_alloc_block_try_give_memory_back (size_t size_in_bytes, /**< size of re
|
|||||||
* (one-chunked or general) */
|
* (one-chunked or general) */
|
||||||
mem_heap_alloc_term_t alloc_term) /**< expected allocation term */
|
mem_heap_alloc_term_t alloc_term) /**< expected allocation term */
|
||||||
{
|
{
|
||||||
|
#ifdef MEM_GC_BEFORE_EACH_ALLOC
|
||||||
|
mem_run_try_to_give_memory_back_callbacks (MEM_TRY_GIVE_MEMORY_BACK_SEVERITY_CRITICAL);
|
||||||
|
#endif /* MEM_GC_BEFORE_EACH_ALLOC */
|
||||||
|
|
||||||
size_t chunks = mem_get_block_chunks_count_from_data_size (size_in_bytes);
|
size_t chunks = mem_get_block_chunks_count_from_data_size (size_in_bytes);
|
||||||
if ((mem_heap_allocated_chunks + chunks) * MEM_HEAP_CHUNK_SIZE >= mem_heap_limit)
|
if ((mem_heap_allocated_chunks + chunks) * MEM_HEAP_CHUNK_SIZE >= mem_heap_limit)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,14 +24,15 @@
|
|||||||
* Memory pool manager implementation
|
* Memory pool manager implementation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define JERRY_MEM_POOL_INTERNAL
|
|
||||||
|
|
||||||
#include "jrt.h"
|
#include "jrt.h"
|
||||||
#include "jrt-libc-includes.h"
|
#include "jrt-libc-includes.h"
|
||||||
#include "mem-allocator.h"
|
#include "mem-allocator.h"
|
||||||
#include "mem-heap.h"
|
#include "mem-heap.h"
|
||||||
#include "mem-poolman.h"
|
#include "mem-poolman.h"
|
||||||
|
|
||||||
|
#define MEM_ALLOCATOR_INTERNAL
|
||||||
|
#include "mem-allocator-internal.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Size of a pool
|
* Size of a pool
|
||||||
*/
|
*/
|
||||||
@@ -521,6 +522,10 @@ mem_pools_alloc_longpath (void)
|
|||||||
uint8_t* __attr_always_inline___
|
uint8_t* __attr_always_inline___
|
||||||
mem_pools_alloc (void)
|
mem_pools_alloc (void)
|
||||||
{
|
{
|
||||||
|
#ifdef MEM_GC_BEFORE_EACH_ALLOC
|
||||||
|
mem_run_try_to_give_memory_back_callbacks (MEM_TRY_GIVE_MEMORY_BACK_SEVERITY_CRITICAL);
|
||||||
|
#endif /* MEM_GC_BEFORE_EACH_ALLOC */
|
||||||
|
|
||||||
mem_check_pools ();
|
mem_check_pools ();
|
||||||
|
|
||||||
do
|
do
|
||||||
|
|||||||
Reference in New Issue
Block a user