Fix heap limit calculation when using the system allocator. (#2872)
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai@inf.u-szeged.hu
This commit is contained in:
committed by
László Langó
parent
9a512c8fcf
commit
0ba2d17faf
@@ -283,6 +283,13 @@ jmem_heap_alloc_block_internal (const size_t size) /**< size of requested block
|
|||||||
return (void *) data_space_p;
|
return (void *) data_space_p;
|
||||||
#else /* JERRY_SYSTEM_ALLOCATOR */
|
#else /* JERRY_SYSTEM_ALLOCATOR */
|
||||||
JMEM_HEAP_STAT_ALLOC (size);
|
JMEM_HEAP_STAT_ALLOC (size);
|
||||||
|
JERRY_CONTEXT (jmem_heap_allocated_size) += size;
|
||||||
|
|
||||||
|
while (JERRY_CONTEXT (jmem_heap_allocated_size) >= JERRY_CONTEXT (jmem_heap_limit))
|
||||||
|
{
|
||||||
|
JERRY_CONTEXT (jmem_heap_limit) += CONFIG_MEM_HEAP_DESIRED_LIMIT;
|
||||||
|
}
|
||||||
|
|
||||||
return malloc (size);
|
return malloc (size);
|
||||||
#endif /* !JERRY_SYSTEM_ALLOCATOR */
|
#endif /* !JERRY_SYSTEM_ALLOCATOR */
|
||||||
} /* jmem_heap_alloc_block_internal */
|
} /* jmem_heap_alloc_block_internal */
|
||||||
@@ -487,6 +494,13 @@ jmem_heap_free_block (void *ptr, /**< pointer to beginning of data space of the
|
|||||||
JMEM_HEAP_STAT_FREE (size);
|
JMEM_HEAP_STAT_FREE (size);
|
||||||
#else /* JERRY_SYSTEM_ALLOCATOR */
|
#else /* JERRY_SYSTEM_ALLOCATOR */
|
||||||
JMEM_HEAP_STAT_FREE (size);
|
JMEM_HEAP_STAT_FREE (size);
|
||||||
|
JERRY_CONTEXT (jmem_heap_allocated_size) -= size;
|
||||||
|
|
||||||
|
while (JERRY_CONTEXT (jmem_heap_allocated_size) + CONFIG_MEM_HEAP_DESIRED_LIMIT <= JERRY_CONTEXT (jmem_heap_limit))
|
||||||
|
{
|
||||||
|
JERRY_CONTEXT (jmem_heap_limit) -= CONFIG_MEM_HEAP_DESIRED_LIMIT;
|
||||||
|
}
|
||||||
|
|
||||||
free (ptr);
|
free (ptr);
|
||||||
#endif /* !JERRY_SYSTEM_ALLOCATOR */
|
#endif /* !JERRY_SYSTEM_ALLOCATOR */
|
||||||
} /* jmem_heap_free_block */
|
} /* jmem_heap_free_block */
|
||||||
|
|||||||
Reference in New Issue
Block a user