Cleanup Valgrind macros (#3180)
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai@inf.u-szeged.hu
This commit is contained in:
committed by
Robert Fancsik
parent
26626947c0
commit
f7391a94ae
+33
-29
@@ -91,6 +91,7 @@ jmem_heap_init (void)
|
|||||||
|
|
||||||
JERRY_CONTEXT (jmem_heap_list_skip_p) = &JERRY_HEAP_CONTEXT (first);
|
JERRY_CONTEXT (jmem_heap_list_skip_p) = &JERRY_HEAP_CONTEXT (first);
|
||||||
|
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (&JERRY_HEAP_CONTEXT (first), sizeof (jmem_heap_free_t));
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (JERRY_HEAP_CONTEXT (area), JMEM_HEAP_AREA_SIZE);
|
JMEM_VALGRIND_NOACCESS_SPACE (JERRY_HEAP_CONTEXT (area), JMEM_HEAP_AREA_SIZE);
|
||||||
|
|
||||||
#endif /* !ENABLED (JERRY_SYSTEM_ALLOCATOR) */
|
#endif /* !ENABLED (JERRY_SYSTEM_ALLOCATOR) */
|
||||||
@@ -162,7 +163,7 @@ jmem_heap_alloc (const size_t size) /**< size of requested block */
|
|||||||
JERRY_HEAP_CONTEXT (first).next_offset = JMEM_HEAP_GET_OFFSET_FROM_ADDR (remaining_p);
|
JERRY_HEAP_CONTEXT (first).next_offset = JMEM_HEAP_GET_OFFSET_FROM_ADDR (remaining_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
JMEM_VALGRIND_UNDEFINED_SPACE (data_space_p, sizeof (jmem_heap_free_t));
|
JMEM_VALGRIND_NOACCESS_SPACE (data_space_p, sizeof (jmem_heap_free_t));
|
||||||
|
|
||||||
if (JERRY_UNLIKELY (data_space_p == JERRY_CONTEXT (jmem_heap_list_skip_p)))
|
if (JERRY_UNLIKELY (data_space_p == JERRY_CONTEXT (jmem_heap_list_skip_p)))
|
||||||
{
|
{
|
||||||
@@ -239,12 +240,7 @@ jmem_heap_alloc (const size_t size) /**< size of requested block */
|
|||||||
JMEM_VALGRIND_NOACCESS_SPACE (&JERRY_HEAP_CONTEXT (first), sizeof (jmem_heap_free_t));
|
JMEM_VALGRIND_NOACCESS_SPACE (&JERRY_HEAP_CONTEXT (first), sizeof (jmem_heap_free_t));
|
||||||
|
|
||||||
JERRY_ASSERT ((uintptr_t) data_space_p % JMEM_ALIGNMENT == 0);
|
JERRY_ASSERT ((uintptr_t) data_space_p % JMEM_ALIGNMENT == 0);
|
||||||
#if ENABLED (JERRY_VALGRIND)
|
JMEM_VALGRIND_MALLOCLIKE_SPACE (data_space_p, size);
|
||||||
if (data_space_p != NULL)
|
|
||||||
{
|
|
||||||
JMEM_VALGRIND_UNDEFINED_SPACE (data_space_p, size);
|
|
||||||
}
|
|
||||||
#endif /* ENABLED (JERRY_VALGRIND) */
|
|
||||||
|
|
||||||
return (void *) data_space_p;
|
return (void *) data_space_p;
|
||||||
#else /* ENABLED (JERRY_SYSTEM_ALLOCATOR) */
|
#else /* ENABLED (JERRY_SYSTEM_ALLOCATOR) */
|
||||||
@@ -299,7 +295,6 @@ 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 */
|
||||||
|
|
||||||
@@ -365,8 +360,6 @@ jmem_heap_find_prev (const jmem_heap_free_t * const block_p) /**< which memory b
|
|||||||
{
|
{
|
||||||
const jmem_heap_free_t *prev_p;
|
const jmem_heap_free_t *prev_p;
|
||||||
|
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (&JERRY_HEAP_CONTEXT (first), sizeof (jmem_heap_free_t));
|
|
||||||
|
|
||||||
if (block_p > JERRY_CONTEXT (jmem_heap_list_skip_p))
|
if (block_p > JERRY_CONTEXT (jmem_heap_list_skip_p))
|
||||||
{
|
{
|
||||||
prev_p = JERRY_CONTEXT (jmem_heap_list_skip_p);
|
prev_p = JERRY_CONTEXT (jmem_heap_list_skip_p);
|
||||||
@@ -391,6 +384,7 @@ jmem_heap_find_prev (const jmem_heap_free_t * const block_p) /**< which memory b
|
|||||||
prev_p = next_p;
|
prev_p = next_p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
return (jmem_heap_free_t *) prev_p;
|
return (jmem_heap_free_t *) prev_p;
|
||||||
} /* jmem_heap_find_prev */
|
} /* jmem_heap_find_prev */
|
||||||
|
|
||||||
@@ -408,11 +402,13 @@ jmem_heap_insert_block (jmem_heap_free_t *block_p, /**< block to insert */
|
|||||||
JERRY_ASSERT ((uintptr_t) block_p % JMEM_ALIGNMENT == 0);
|
JERRY_ASSERT ((uintptr_t) block_p % JMEM_ALIGNMENT == 0);
|
||||||
JERRY_ASSERT (size % JMEM_ALIGNMENT == 0);
|
JERRY_ASSERT (size % JMEM_ALIGNMENT == 0);
|
||||||
|
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (block_p, size);
|
||||||
|
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
JMEM_VALGRIND_DEFINED_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
jmem_heap_free_t *next_p = JMEM_HEAP_GET_ADDR_FROM_OFFSET (prev_p->next_offset);
|
jmem_heap_free_t *next_p = JMEM_HEAP_GET_ADDR_FROM_OFFSET (prev_p->next_offset);
|
||||||
|
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (next_p, sizeof (jmem_heap_free_t));
|
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (block_p, sizeof (jmem_heap_free_t));
|
JMEM_VALGRIND_DEFINED_SPACE (block_p, sizeof (jmem_heap_free_t));
|
||||||
|
JMEM_VALGRIND_DEFINED_SPACE (next_p, sizeof (jmem_heap_free_t));
|
||||||
|
|
||||||
|
|
||||||
const uint32_t block_offset = JMEM_HEAP_GET_OFFSET_FROM_ADDR (block_p);
|
const uint32_t block_offset = JMEM_HEAP_GET_OFFSET_FROM_ADDR (block_p);
|
||||||
|
|
||||||
@@ -445,7 +441,7 @@ jmem_heap_insert_block (jmem_heap_free_t *block_p, /**< block to insert */
|
|||||||
JERRY_CONTEXT (jmem_heap_list_skip_p) = prev_p;
|
JERRY_CONTEXT (jmem_heap_list_skip_p) = prev_p;
|
||||||
|
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
JMEM_VALGRIND_NOACCESS_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (block_p, size);
|
JMEM_VALGRIND_NOACCESS_SPACE (block_p, sizeof (jmem_heap_free_t));
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (next_p, sizeof (jmem_heap_free_t));
|
JMEM_VALGRIND_NOACCESS_SPACE (next_p, sizeof (jmem_heap_free_t));
|
||||||
} /* jmem_heap_insert_block */
|
} /* jmem_heap_insert_block */
|
||||||
#endif /* !ENABLED (JERRY_SYSTEM_ALLOCATOR) */
|
#endif /* !ENABLED (JERRY_SYSTEM_ALLOCATOR) */
|
||||||
@@ -468,13 +464,12 @@ jmem_heap_free_block_internal (void *ptr, /**< pointer to beginning of data spac
|
|||||||
|
|
||||||
const size_t aligned_size = (size + JMEM_ALIGNMENT - 1) / JMEM_ALIGNMENT * JMEM_ALIGNMENT;
|
const size_t aligned_size = (size + JMEM_ALIGNMENT - 1) / JMEM_ALIGNMENT * JMEM_ALIGNMENT;
|
||||||
|
|
||||||
jmem_heap_free_t * const block_p = (jmem_heap_free_t *) ptr;
|
jmem_heap_free_t *const block_p = (jmem_heap_free_t *) ptr;
|
||||||
jmem_heap_free_t * const prev_p = jmem_heap_find_prev (block_p);
|
jmem_heap_free_t *const prev_p = jmem_heap_find_prev (block_p);
|
||||||
jmem_heap_insert_block (block_p, prev_p, aligned_size);
|
jmem_heap_insert_block (block_p, prev_p, aligned_size);
|
||||||
|
|
||||||
JERRY_CONTEXT (jmem_heap_allocated_size) -= aligned_size;
|
JERRY_CONTEXT (jmem_heap_allocated_size) -= aligned_size;
|
||||||
|
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (ptr, size);
|
|
||||||
JMEM_VALGRIND_FREELIKE_SPACE (ptr);
|
JMEM_VALGRIND_FREELIKE_SPACE (ptr);
|
||||||
#else /* ENABLED (JERRY_SYSTEM_ALLOCATOR) */
|
#else /* ENABLED (JERRY_SYSTEM_ALLOCATOR) */
|
||||||
JERRY_CONTEXT (jmem_heap_allocated_size) -= size;
|
JERRY_CONTEXT (jmem_heap_allocated_size) -= size;
|
||||||
@@ -511,8 +506,6 @@ 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_RESIZE_SPACE (block_p, old_size, new_size);
|
JMEM_VALGRIND_RESIZE_SPACE (block_p, old_size, 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;
|
||||||
@@ -521,8 +514,6 @@ 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_RESIZE_SPACE (block_p, old_size, new_size);
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (block_p, old_size);
|
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (block_p, new_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);
|
||||||
jmem_heap_insert_block ((jmem_heap_free_t *)((uint8_t *) block_p + aligned_new_size),
|
jmem_heap_insert_block ((jmem_heap_free_t *)((uint8_t *) block_p + aligned_new_size),
|
||||||
@@ -551,11 +542,12 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */
|
|||||||
jmem_heap_free_t *prev_p = jmem_heap_find_prev (block_p);
|
jmem_heap_free_t *prev_p = jmem_heap_find_prev (block_p);
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
JMEM_VALGRIND_DEFINED_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
jmem_heap_free_t * const next_p = JMEM_HEAP_GET_ADDR_FROM_OFFSET (prev_p->next_offset);
|
jmem_heap_free_t * const next_p = JMEM_HEAP_GET_ADDR_FROM_OFFSET (prev_p->next_offset);
|
||||||
JMEM_VALGRIND_DEFINED_SPACE (next_p, sizeof (jmem_heap_free_t));
|
|
||||||
|
|
||||||
/* Check if block can be extended at the end */
|
/* Check if block can be extended at the end */
|
||||||
if (((jmem_heap_free_t *) ((uint8_t *) block_p + aligned_old_size)) == next_p)
|
if (((jmem_heap_free_t *) ((uint8_t *) block_p + aligned_old_size)) == next_p)
|
||||||
{
|
{
|
||||||
|
JMEM_VALGRIND_DEFINED_SPACE (next_p, sizeof (jmem_heap_free_t));
|
||||||
|
|
||||||
if (required_size <= next_p->size)
|
if (required_size <= next_p->size)
|
||||||
{
|
{
|
||||||
/* Block can be extended, update the list. */
|
/* Block can be extended, update the list. */
|
||||||
@@ -573,9 +565,16 @@ 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* next_p will be marked as undefined space. */
|
||||||
JMEM_VALGRIND_RESIZE_SPACE (block_p, old_size, new_size);
|
JMEM_VALGRIND_RESIZE_SPACE (block_p, old_size, new_size);
|
||||||
ret_block_p = block_p;
|
ret_block_p = block_p;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (next_p, sizeof (jmem_heap_free_t));
|
||||||
|
}
|
||||||
|
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Check if block can be extended at the front.
|
* Check if block can be extended at the front.
|
||||||
@@ -597,18 +596,26 @@ jmem_heap_realloc_block (void *ptr, /**< memory region to reallocate */
|
|||||||
prev_p->size = (uint32_t) (prev_p->size - required_size);
|
prev_p->size = (uint32_t) (prev_p->size - required_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
|
|
||||||
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);
|
|
||||||
|
/* Mark the the new block as undefined so that we are able to write to it. */
|
||||||
|
JMEM_VALGRIND_UNDEFINED_SPACE (ret_block_p, old_size);
|
||||||
|
/* The blocks are likely to overlap, so mark the old block as defined memory again. */
|
||||||
|
JMEM_VALGRIND_DEFINED_SPACE (block_p, old_size);
|
||||||
memmove (ret_block_p, block_p, old_size);
|
memmove (ret_block_p, block_p, old_size);
|
||||||
|
|
||||||
JMEM_VALGRIND_FREELIKE_SPACE (block_p);
|
JMEM_VALGRIND_FREELIKE_SPACE (block_p);
|
||||||
JMEM_VALGRIND_NOACCESS_SPACE (block_p, old_size);
|
|
||||||
JMEM_VALGRIND_MALLOCLIKE_SPACE (ret_block_p, new_size);
|
JMEM_VALGRIND_MALLOCLIKE_SPACE (ret_block_p, new_size);
|
||||||
|
JMEM_VALGRIND_DEFINED_SPACE (ret_block_p, old_size);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
JMEM_VALGRIND_NOACCESS_SPACE (prev_p, sizeof (jmem_heap_free_t));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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. */
|
||||||
@@ -619,9 +626,6 @@ 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
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user