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.
mark_special
PMC_EXT
structure,
append or prepend the next_for_GC
pointer; otherwise,
do the custom mark directly.pobject_lives
Parrot_dod_trace_root
trace_stack
can have these values: 0 ... trace normal roots, no system areas
1 ... trace whole root set
2 ... trace system areas only
trace_active_PMCs
Parrot_dod_trace_children
Parrot_dod_trace_pmc_data
clear_cow
used_cow
bufstart
.Parrot_dod_sweep
GC_IS_MALLOC
, bufstart gets freed too, if possible. Avoid buffers that are immune from collection (i.e. constant).Parrot_dod_free_pmc
Parrot_free_pmc_ext
parrot_dod_free_sysmem
Parrot_dod_free_buffer_malloc
Parrot_dod_free_buffer
find_common_mask
val1
and val2
.trace_mem_block
lo_var_ptr
and hi_var_ptr
.clear_live_bits
Parrot_dod_clear_live_bits
Parrot_dod_profile_start
Parrot_dod_profile_end
what
run when profiling is enabled. Also record start time of next part.Parrot_dod_ms_run_init
sweep_cb
Parrot_dod_ms_run
Parrot_do_dod_run
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.
|