Lines Matching refs:pool

122   alloc_pool pool;  in create_alloc_pool()  local
149 pool = xmalloc (pool_size); in create_alloc_pool()
152 pool->name = /*xstrdup (name)*/name; in create_alloc_pool()
157 pool->elt_size = size; in create_alloc_pool()
158 pool->elts_per_block = num; in create_alloc_pool()
163 pool->block_size = (size * num) + header_size; in create_alloc_pool()
164 pool->free_list = NULL; in create_alloc_pool()
165 pool->elts_allocated = 0; in create_alloc_pool()
166 pool->elts_free = 0; in create_alloc_pool()
167 pool->blocks_allocated = 0; in create_alloc_pool()
168 pool->block_list = NULL; in create_alloc_pool()
177 pool->id = last_id; in create_alloc_pool()
180 return (pool); in create_alloc_pool()
185 free_alloc_pool (alloc_pool pool) in free_alloc_pool() argument
189 struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name); in free_alloc_pool()
192 gcc_assert (pool); in free_alloc_pool()
195 for (block = pool->block_list; block != NULL; block = next_block) in free_alloc_pool()
200 desc->current -= pool->block_size; in free_alloc_pool()
204 memset (pool, 0xaf, sizeof (*pool)); in free_alloc_pool()
207 free (pool); in free_alloc_pool()
212 free_alloc_pool_if_empty (alloc_pool *pool) in free_alloc_pool_if_empty() argument
214 if ((*pool)->elts_free == (*pool)->elts_allocated) in free_alloc_pool_if_empty()
216 free_alloc_pool (*pool); in free_alloc_pool_if_empty()
217 *pool = NULL; in free_alloc_pool_if_empty()
223 pool_alloc (alloc_pool pool) in pool_alloc() argument
228 struct alloc_pool_descriptor *desc = alloc_pool_descriptor (pool->name); in pool_alloc()
230 desc->allocated+=pool->elt_size; in pool_alloc()
233 gcc_assert (pool); in pool_alloc()
236 if (!pool->free_list) in pool_alloc()
242 block = XNEWVEC (char, pool->block_size); in pool_alloc()
246 desc->current += pool->block_size; in pool_alloc()
252 block_header->next = pool->block_list; in pool_alloc()
253 pool->block_list = block_header; in pool_alloc()
256 for (i = 0; i < pool->elts_per_block; i++, block += pool->elt_size) in pool_alloc()
263 header->next = pool->free_list; in pool_alloc()
264 pool->free_list = header; in pool_alloc()
268 pool->elts_allocated += pool->elts_per_block; in pool_alloc()
269 pool->elts_free += pool->elts_per_block; in pool_alloc()
270 pool->blocks_allocated += 1; in pool_alloc()
274 header = pool->free_list; in pool_alloc()
275 pool->free_list = header->next; in pool_alloc()
276 pool->elts_free--; in pool_alloc()
280 ALLOCATION_OBJECT_PTR_FROM_USER_PTR (header)->id = pool->id; in pool_alloc()
288 pool_free (alloc_pool pool, void *ptr) in pool_free() argument
295 memset (ptr, 0xaf, pool->elt_size - offsetof (allocation_object, u.data)); in pool_free()
298 gcc_assert (pool->id == ALLOCATION_OBJECT_PTR_FROM_USER_PTR (ptr)->id); in pool_free()
304 gcc_assert (pool->elts_free < pool->elts_allocated); in pool_free()
308 header->next = pool->free_list; in pool_free()
309 pool->free_list = header; in pool_free()
310 pool->elts_free++; in pool_free()