| parrotcode: Dead object destruction of the various headers | |
| Contents | C |

src/gc/dod.c - Dead object destruction of the various headers

This file implements dead object destruction. This is documented in PDD 9 with supplementary notes in docs/dev/dod.pod.
It's possible to turn on/off the checking of the system stack and processor registers. The actual checking is implemented in src/cpu_dep.c.
There's also a verbose mode for garbage collection.

static void mark_special(PARROT_INTERP, NOTNULL(PMC *obj))PMC_EXT structure,
append or prepend the next_for_GC pointer; otherwise,
do the custom mark directly.PARROT_API void pobject_lives(PARROT_INTERP, NOTNULL(PObj *obj))int Parrot_dod_trace_root(PARROT_INTERP, int trace_stack)trace_stack can have these values: 0 ... trace normal roots, no system areas
1 ... trace whole root set
2 ... trace system areas only
static int trace_active_PMCs(PARROT_INTERP, int trace_stack)int Parrot_dod_trace_children(PARROT_INTERP, size_t how_many)void Parrot_dod_trace_pmc_data(PARROT_INTERP, NOTNULL(PMC *const p))void clear_cow(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool), int cleanup)void used_cow(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool), int cleanup)bufstart.void Parrot_dod_sweep(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool))GC_IS_MALLOC, bufstart gets freed too, if possible. Avoid buffers that are immune from collection (i.e. constant).void Parrot_dod_free_pmc(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool), NOTNULL(PObj *p))void Parrot_free_pmc_ext(PARROT_INTERP, NOTNULL(PMC *p))void Parrot_dod_free_sysmem(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool), NOTNULL(PObj *b))void Parrot_dod_free_buffer_malloc(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool), NOTNULL(PObj *b))void Parrot_dod_free_buffer(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool), NOTNULL(PObj *b))PARROT_CONST_FUNCTION static size_t find_common_mask(PARROT_INTERP, size_t val1, size_t val2)val1 and val2.void trace_mem_block(PARROT_INTERP, size_t lo_var_ptr, size_t hi_var_ptr)lo_var_ptr and hi_var_ptr.static void clear_live_bits(NOTNULL(Small_Object_Pool *pool))void Parrot_dod_clear_live_bits(PARROT_INTERP)void Parrot_dod_profile_start(PARROT_INTERP)void Parrot_dod_profile_end(PARROT_INTERP, int what)what run when profiling is enabled. Also record start time of next part.void Parrot_dod_ms_run_init(PARROT_INTERP)static int sweep_cb(PARROT_INTERP, NOTNULL(Small_Object_Pool *pool), int flag, NOTNULL(void *arg))void Parrot_dod_ms_run(PARROT_INTERP, int flags)void Parrot_do_dod_run(PARROT_INTERP, UINTVAL flags)
include/parrot/dod.h, src/cpu_dep.c, docs/dev/dod.dev and docs/pdds/pdd09_gc.pod.

Initial version by Mike Lambert on 2002.05.27.
|
|
|