parrotcode: Handling Small Object Pools | |
Contents | C |
src/gc/resources.c - Handling Small Object Pools
Handles the accessing of small object pools (header pools).
PARROT_WARN_UNUSED_RESULT INTVAL contained_in_pool(ARGIN(const Small_Object_Pool *pool), ARGIN(const void *ptr))
pool
contains *ptr
.int Parrot_is_const_pmc(PARROT_INTERP, NOTNULL(PMC *pmc))
*pmc
is a constant PMC.static void more_traceable_objects(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool))
static void gc_ms_add_free_object(SHIM_INTERP, NOTNULL(Small_Object_Pool *pool), NOTNULL(PObj *to_add))
PARROT_CANNOT_RETURN_NULL PARROT_WARN_UNUSED_RESULT static PObj *gc_ms_get_free_object(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool))
void Parrot_add_to_free_list(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool), NOTNULL(Small_Object_Arena *arena))
arena
to the free list.void Parrot_append_arena_in_pool(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool), NOTNULL(Small_Object_Arena *new_arena), size_t size)
static void gc_ms_alloc_objects(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool))
PARROT_MALLOC PARROT_CANNOT_RETURN_NULL Small_Object_Pool *new_small_object_pool(size_t object_size, size_t objects_per_alloc)
Small_Object_Pool
and returns a pointer to it.void gc_pmc_ext_pool_init(NOTNULL(Small_Object_Pool *pool))
static void gc_ms_pool_init(SHIM_INTERP, NOTNULL(Small_Object_Pool *pool))
void Parrot_gc_ms_init(PARROT_INTERP)
add_free_object_fn
,
get_free_object_fn
,
alloc_object_fn
,
and more_object_fn
.void Parrot_small_object_pool_merge(PARROT_INTERP, NOTNULL(Small_Object_Pool *dest), NOTNULL(Small_Object_Pool *source))
source
into dest
.include/parrot/smallobject.h, docs/memory_internals.pod.
|