[ Oops that one got the wrong address, resent ]

-------- Original Message --------
To: perl6-internals-subscribe ...

----


Some remarks

0) Parrot's nomenclature DOD vs GC is a bit misleading. The "DOD"
subsystem is the stop-the-world mark & sweep collector that recycles
object headers. The "GC" is the copying collector for variable sized
string and other buffer memory.
The incremental mark & sweep collector (src/gc_ims.c) is an alternative
for the DOD thingy and reuses some code in src/dod.c.

We need to go incremental because arbitrary long pauses during
stop-the-world are not convenient for interactive programs. BTW a
refcount scheme can also suffer from long pauses. Albeit refcounting is
very incremental during normal operation, it can pause arbitrary long,
if decrementing one refcount causes the cleanup of an huge amount of
other objects (like in C< @huge_array = undef >)

1) The incremental garbage collector is functional, it passes all tests

2) Its totally untuned but should run with reasonable incremental timing
and memory requirement. And its probably[1] not faster then
stop-the-world, it just does its work in small steps but still has to do
all the work.

3) The copying collector isn't integrated yet. But that should be easy.
After finishing sweep and if there is some possible wastage in the
memory pools, these get compacted.

Please give it a try. C<include/parrot/settings.h> has two defines to
turn one on and one off.

leo

[1] cache coherency for incremental could be better.




Reply via email to