|
|
| 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(); | |
| } |