• Home
  • Raw
  • Download

Lines Matching refs:free_block

223 struct free_block {  struct
225 struct free_block *next; argument
226 struct free_block *prev; argument
233 ((struct free_block*)(((sljit_u8*)base) + offset)) argument
237 static struct free_block* free_blocks;
241 static SLJIT_INLINE void sljit_insert_free_block(struct free_block *free_block, sljit_uw size) in sljit_insert_free_block() argument
243 free_block->header.size = 0; in sljit_insert_free_block()
244 free_block->size = size; in sljit_insert_free_block()
246 free_block->next = free_blocks; in sljit_insert_free_block()
247 free_block->prev = NULL; in sljit_insert_free_block()
249 free_blocks->prev = free_block; in sljit_insert_free_block()
250 free_blocks = free_block; in sljit_insert_free_block()
253 static SLJIT_INLINE void sljit_remove_free_block(struct free_block *free_block) in sljit_remove_free_block() argument
255 if (free_block->next) in sljit_remove_free_block()
256 free_block->next->prev = free_block->prev; in sljit_remove_free_block()
258 if (free_block->prev) in sljit_remove_free_block()
259 free_block->prev->next = free_block->next; in sljit_remove_free_block()
261 SLJIT_ASSERT(free_blocks == free_block); in sljit_remove_free_block()
262 free_blocks = free_block->next; in sljit_remove_free_block()
271 struct free_block *free_block; in sljit_malloc_exec() local
280 free_block = free_blocks; in sljit_malloc_exec()
281 while (free_block) { in sljit_malloc_exec()
282 if (free_block->size >= size) { in sljit_malloc_exec()
283 chunk_size = free_block->size; in sljit_malloc_exec()
287 free_block->size = chunk_size; in sljit_malloc_exec()
288 header = AS_BLOCK_HEADER(free_block, chunk_size); in sljit_malloc_exec()
290 header->executable_offset = free_block->header.executable_offset; in sljit_malloc_exec()
294 sljit_remove_free_block(free_block); in sljit_malloc_exec()
295 header = (struct block_header*)free_block; in sljit_malloc_exec()
303 free_block = free_block->next; in sljit_malloc_exec()
330 free_block = AS_FREE_BLOCK(header, size); in sljit_malloc_exec()
331 free_block->header.prev_size = size; in sljit_malloc_exec()
332 free_block->header.executable_offset = executable_offset; in sljit_malloc_exec()
333 sljit_insert_free_block(free_block, chunk_size); in sljit_malloc_exec()
334 next_header = AS_BLOCK_HEADER(free_block, chunk_size); in sljit_malloc_exec()
352 struct free_block* free_block; in sljit_free_exec() local
363 free_block = AS_FREE_BLOCK(header, -(sljit_sw)header->prev_size); in sljit_free_exec()
364 if (SLJIT_UNLIKELY(!free_block->header.size)) { in sljit_free_exec()
365 free_block->size += header->size; in sljit_free_exec()
366 header = AS_BLOCK_HEADER(free_block, free_block->size); in sljit_free_exec()
367 header->prev_size = free_block->size; in sljit_free_exec()
370 free_block = (struct free_block*)header; in sljit_free_exec()
371 sljit_insert_free_block(free_block, header->size); in sljit_free_exec()
374 header = AS_BLOCK_HEADER(free_block, free_block->size); in sljit_free_exec()
376 free_block->size += ((struct free_block*)header)->size; in sljit_free_exec()
377 sljit_remove_free_block((struct free_block*)header); in sljit_free_exec()
378 header = AS_BLOCK_HEADER(free_block, free_block->size); in sljit_free_exec()
379 header->prev_size = free_block->size; in sljit_free_exec()
383 if (SLJIT_UNLIKELY(!free_block->header.prev_size && header->size == 1)) { in sljit_free_exec()
385 if (total_size - free_block->size > (allocated_size * 3 / 2)) { in sljit_free_exec()
386 total_size -= free_block->size; in sljit_free_exec()
387 sljit_remove_free_block(free_block); in sljit_free_exec()
388 free_chunk(free_block, free_block->size + sizeof(struct block_header)); in sljit_free_exec()
397 struct free_block* free_block; in sljit_free_unused_memory_exec() local
398 struct free_block* next_free_block; in sljit_free_unused_memory_exec()
402 free_block = free_blocks; in sljit_free_unused_memory_exec()
403 while (free_block) { in sljit_free_unused_memory_exec()
404 next_free_block = free_block->next; in sljit_free_unused_memory_exec()
405 if (!free_block->header.prev_size && in sljit_free_unused_memory_exec()
406 AS_BLOCK_HEADER(free_block, free_block->size)->size == 1) { in sljit_free_unused_memory_exec()
407 total_size -= free_block->size; in sljit_free_unused_memory_exec()
408 sljit_remove_free_block(free_block); in sljit_free_unused_memory_exec()
409 free_chunk(free_block, free_block->size + sizeof(struct block_header)); in sljit_free_unused_memory_exec()
411 free_block = next_free_block; in sljit_free_unused_memory_exec()