Add missing Valgrind macros to jmem (#3025)
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai@inf.u-szeged.hu
This commit is contained in:
@@ -35,12 +35,14 @@
|
|||||||
# define JMEM_VALGRIND_UNDEFINED_SPACE(p, s) VALGRIND_MAKE_MEM_UNDEFINED((p), (s))
|
# define JMEM_VALGRIND_UNDEFINED_SPACE(p, s) VALGRIND_MAKE_MEM_UNDEFINED((p), (s))
|
||||||
# define JMEM_VALGRIND_DEFINED_SPACE(p, s) VALGRIND_MAKE_MEM_DEFINED((p), (s))
|
# define JMEM_VALGRIND_DEFINED_SPACE(p, s) VALGRIND_MAKE_MEM_DEFINED((p), (s))
|
||||||
# define JMEM_VALGRIND_MALLOCLIKE_SPACE(p, s) VALGRIND_MALLOCLIKE_BLOCK((p), (s), 0, 0)
|
# define JMEM_VALGRIND_MALLOCLIKE_SPACE(p, s) VALGRIND_MALLOCLIKE_BLOCK((p), (s), 0, 0)
|
||||||
|
# define JMEM_VALGRIND_RESIZE_SPACE(p, o, n) VALGRIND_RESIZEINPLACE_BLOCK((p), (o), (n), 0)
|
||||||
# define JMEM_VALGRIND_FREELIKE_SPACE(p) VALGRIND_FREELIKE_BLOCK((p), 0)
|
# define JMEM_VALGRIND_FREELIKE_SPACE(p) VALGRIND_FREELIKE_BLOCK((p), 0)
|
||||||
#else /* !ENABLED (JERRY_VALGRIND) */
|
#else /* !ENABLED (JERRY_VALGRIND) */
|
||||||
# define JMEM_VALGRIND_NOACCESS_SPACE(p, s)
|
# define JMEM_VALGRIND_NOACCESS_SPACE(p, s)
|
||||||
# define JMEM_VALGRIND_UNDEFINED_SPACE(p, s)
|
# define JMEM_VALGRIND_UNDEFINED_SPACE(p, s)
|
||||||
# define JMEM_VALGRIND_DEFINED_SPACE(p, s)
|
# define JMEM_VALGRIND_DEFINED_SPACE(p, s)
|
||||||
# define JMEM_VALGRIND_MALLOCLIKE_SPACE(p, s)
|
# define JMEM_VALGRIND_MALLOCLIKE_SPACE(p, s)
|
||||||
|
# define JMEM_VALGRIND_RESIZE_SPACE(p, o, n)
|
||||||
# define JMEM_VALGRIND_FREELIKE_SPACE(p)
|
# define JMEM_VALGRIND_FREELIKE_SPACE(p)
|
||||||
#endif /* ENABLED (JERRY_VALGRIND) */
|
#endif /* ENABLED (JERRY_VALGRIND) */
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|||||||
@@ -299,6 +299,7 @@ jmem_heap_gc_and_alloc_block (const size_t size, /**< required memory size */
|
|||||||
data_space_p = jmem_heap_alloc (size);
|
data_space_p = jmem_heap_alloc (size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JMEM_VALGRIND_MALLOCLIKE_SPACE (data_space_p, size);
|
||||||
return data_space_p;
|
return data_space_p;
|
||||||
} /* jmem_heap_gc_and_alloc_block */
|
} /* jmem_heap_gc_and_alloc_block */
|
||||||
|
|
||||||
@@ -509,8 +510,9 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */
|
|||||||
|
|
||||||
if (aligned_old_size == aligned_new_size)
|
if (aligned_old_size == aligned_new_size)
|
||||||
{
|
{
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (block_p, old_size);
|
JMEM_VALGRIND_RESIZE_SPACE (block_p, old_size, new_size);
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (block_p, new_size);
|
JMEM_VALGRIND_UNDEFINED_SPACE (block_p, new_size);
|
||||||
|
JMEM_VALGRIND_DEFINED_SPACE (block_p, old_size);
|
||||||
JMEM_HEAP_STAT_FREE (old_size);
|
JMEM_HEAP_STAT_FREE (old_size);
|
||||||
JMEM_HEAP_STAT_ALLOC (new_size);
|
JMEM_HEAP_STAT_ALLOC (new_size);
|
||||||
return block_p;
|
return block_p;
|
||||||
@@ -518,6 +520,7 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */
|
|||||||
|
|
||||||
if (aligned_new_size < aligned_old_size)
|
if (aligned_new_size < aligned_old_size)
|
||||||
{
|
{
|
||||||
|
JMEM_VALGRIND_RESIZE_SPACE (block_p, old_size, new_size);
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (block_p, old_size);
|
JMEM_VALGRIND_NOACCESS_SPACE (block_p, old_size);
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (block_p, new_size);
|
JMEM_VALGRIND_DEFINED_SPACE (block_p, new_size);
|
||||||
JMEM_HEAP_STAT_FREE (old_size);
|
JMEM_HEAP_STAT_FREE (old_size);
|
||||||
@@ -570,8 +573,7 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */
|
|||||||
prev_p->next_offset = JMEM_HEAP_GET_OFFSET_FROM_ADDR (new_next_p);
|
prev_p->next_offset = JMEM_HEAP_GET_OFFSET_FROM_ADDR (new_next_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE ((uint8_t *) block_p, old_size);
|
JMEM_VALGRIND_RESIZE_SPACE (block_p, old_size, new_size);
|
||||||
JMEM_VALGRIND_DEFINED_SPACE ((uint8_t *) block_p, new_size);
|
|
||||||
ret_block_p = block_p;
|
ret_block_p = block_p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -585,6 +587,7 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */
|
|||||||
{
|
{
|
||||||
if (required_size == prev_p->size)
|
if (required_size == prev_p->size)
|
||||||
{
|
{
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
prev_p = jmem_heap_find_prev (prev_p);
|
prev_p = jmem_heap_find_prev (prev_p);
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
JMEM_VALGRIND_DEFINED_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
prev_p->next_offset = JMEM_HEAP_GET_OFFSET_FROM_ADDR (next_p);
|
prev_p->next_offset = JMEM_HEAP_GET_OFFSET_FROM_ADDR (next_p);
|
||||||
@@ -595,12 +598,17 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret_block_p = (uint8_t *) block_p - required_size;
|
ret_block_p = (uint8_t *) block_p - required_size;
|
||||||
|
JMEM_VALGRIND_UNDEFINED_SPACE (ret_block_p, new_size);
|
||||||
memmove (ret_block_p, block_p, old_size);
|
memmove (ret_block_p, block_p, old_size);
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE ((uint8_t *) block_p, old_size);
|
JMEM_VALGRIND_FREELIKE_SPACE (block_p);
|
||||||
JMEM_VALGRIND_DEFINED_SPACE ((uint8_t *) ret_block_p, new_size);
|
JMEM_VALGRIND_NOACCESS_SPACE (block_p, old_size);
|
||||||
|
JMEM_VALGRIND_MALLOCLIKE_SPACE (ret_block_p, new_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (next_p, sizeof (jmem_heap_free_t));
|
||||||
|
|
||||||
if (ret_block_p != NULL)
|
if (ret_block_p != NULL)
|
||||||
{
|
{
|
||||||
/* Managed to extend the block. Update memory usage and the skip pointer. */
|
/* Managed to extend the block. Update memory usage and the skip pointer. */
|
||||||
@@ -611,6 +619,9 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */
|
|||||||
{
|
{
|
||||||
JERRY_CONTEXT (jmem_heap_limit) += CONFIG_GC_LIMIT;
|
JERRY_CONTEXT (jmem_heap_limit) += CONFIG_GC_LIMIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JMEM_VALGRIND_UNDEFINED_SPACE (ret_block_p, new_size);
|
||||||
|
JMEM_VALGRIND_DEFINED_SPACE (ret_block_p, old_size);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -629,11 +640,10 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */
|
|||||||
|
|
||||||
memcpy (ret_block_p, block_p, old_size);
|
memcpy (ret_block_p, block_p, old_size);
|
||||||
jmem_heap_insert_block (block_p, prev_p, aligned_old_size);
|
jmem_heap_insert_block (block_p, prev_p, aligned_old_size);
|
||||||
|
/* jmem_heap_alloc_block_internal will call JMEM_VALGRIND_MALLOCLIKE_SPACE */
|
||||||
|
JMEM_VALGRIND_FREELIKE_SPACE (block_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (next_p, sizeof (jmem_heap_free_t));
|
|
||||||
|
|
||||||
JMEM_HEAP_STAT_FREE (old_size);
|
JMEM_HEAP_STAT_FREE (old_size);
|
||||||
JMEM_HEAP_STAT_ALLOC (new_size);
|
JMEM_HEAP_STAT_ALLOC (new_size);
|
||||||
return ret_block_p;
|
return ret_block_p;
|
||||||
|
|||||||
Reference in New Issue
Block a user