garbage collector, to create an initialization routine for each of
them that calls GC_INIT(). Better safe than sorry.
-The incremental collector is still a bit flaky on darwin. It seems to
-work reliably with workarounds for a few possible bugs in place however
-these workaround may not work correctly in all cases. There may also
-be additional problems that I have not found.
-
Thread-local GC allocation will not work with threads that are not
created using the GC-provided override of pthread_create(). Threads
created without the GC-provided pthread_create() do not have the
layout or stack pointer conventions laid out in the PPC Mach-O ABI,
then this will likely crash the garbage collector.
-The original incremental collector support unfortunately no longer works
-on recent Darwin versions. It also relied on some undocumented kernel
-structures. Mach, however, does have a very clean interface to exception
-handing. The current implementation uses Mach's exception handling.
+Mach has a very clean interface to exception handing. So, the current
+implementation of the incremental collection uses Mach's exception handling.
Much thanks goes to Andrew Stone, Dietmar Planitzer, Andrew Begel,
Jeff Sturm, and Jesse Rosenstock for all their work on the
For unknown reason compiling under Windows 3.11 for NT (one
attempt has been made) leads to broken executables.
-Incremental collection is not supported.
+Incremental collection is supported (except for MSDOS and OS/2).
cord is not ported.
collector itself, though not the allocation process. Currently the marking
is performed by the thread that triggered the collection, together with
_N_ - 1 dedicated threads, where _N_ is the number of processors (cores)
- detected by the collector. The dedicated marker threads are created once at
- initialization time. Another effect of this flag is to switch to a more
+ detected by the collector. The dedicated marker threads are created at
+ initialization time (and optionally recreated in child processes after
+ forking). Another effect of this flag is to switch to a more
concurrent implementation of `GC_malloc_many`, so that free lists can be
built and memory can be cleared by more than one thread concurrently.
* Building the collector with `-DTHREAD_LOCAL_ALLOC` adds support for