version 1.1.1.3, 2013/07/22 08:25:57
|
version 1.1.1.4, 2014/06/15 19:46:05
|
Line 287 SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* pt
|
Line 287 SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* pt
|
|
|
allocator_release_lock(); |
allocator_release_lock(); |
} |
} |
|
|
|
SLJIT_API_FUNC_ATTRIBUTE void sljit_free_unused_memory_exec(void) |
|
{ |
|
struct free_block* free_block; |
|
struct free_block* next_free_block; |
|
|
|
allocator_grab_lock(); |
|
|
|
free_block = free_blocks; |
|
while (free_block) { |
|
next_free_block = free_block->next; |
|
if (!free_block->header.prev_size && |
|
AS_BLOCK_HEADER(free_block, free_block->size)->size == 1) { |
|
total_size -= free_block->size; |
|
sljit_remove_free_block(free_block); |
|
free_chunk(free_block, free_block->size + sizeof(struct block_header)); |
|
} |
|
free_block = next_free_block; |
|
} |
|
|
|
SLJIT_ASSERT((total_size && free_blocks) || (!total_size && !free_blocks)); |
|
allocator_release_lock(); |
|
} |