New GC Core

Andrew Whitworth wknight8111 at gmail.com
Sun Jul 12 13:10:02 UTC 2009


in r40013 I committed a new GC core, an "infinite memory" core. It's
designed to be a learning tool or basic template about how to create a
GC core, and it's also serving as a nice debugging tool to find places
where Parrot relies too much on the behavior of the current MS GC (And
I have already found a handful of such places). To activate the core,
you edit include/parrot/settings.h to set "PARROT_GC_SUBSYSTEM = 3".
Some caveats:

1) This core doesn't mark or sweep, it just allocates memory from the
system. It is not intended to be useful or performant in any way
(besides as an instructional tool).
2) This core does not EVER call any destroy VTABLEs, so things that
rely on that (such as automatic flushing/closing of filehandles)
break. The Parrot build mostly completes, although JSON notably relies
on this behavior of FileHandles so it does not build
3) Several tests fail. This is by design. Most such tests rely on
either JSON being built or on timely destruction of various objects.
Having these kinds of tests fail with this core should not be
considered a bug or even a problem worthy of attention. After all, a
"real" GC core will make these things work, and this is not a "real"
core.

I'll try to add some more documentation to this file to really explain
what each of the functions do and when they are called.

--Andrew Whitworth


More information about the parrot-dev mailing list