2001-05-21 14:39:23 +08:00
|
|
|
While the GC should work on MacOS X Server, MacOS X and Darwin, I only tested
|
|
|
|
it on MacOS X Server.
|
|
|
|
I've added a PPC assembly version of GC_push_regs(), thus the setjmp() hack is
|
|
|
|
no longer necessary. Incremental collection is supported via mprotect/signal.
|
|
|
|
The current solution isn't really optimal because the signal handler must decode
|
|
|
|
the faulting PPC machine instruction in order to find the correct heap address.
|
|
|
|
Further, it must poke around in the register state which the kernel saved away
|
|
|
|
in some obscure register state structure before it calls the signal handler -
|
|
|
|
needless to say the layout of this structure is no where documented.
|
|
|
|
Threads and dynamic libraries are not yet supported (adding dynamic library
|
|
|
|
support via the low-level dyld API shouldn't be that hard).
|
|
|
|
|
|
|
|
The original MacOS X port was brought to you by Andrew Stone.
|
|
|
|
|
|
|
|
|
|
|
|
June, 1 2000
|
|
|
|
|
|
|
|
Dietmar Planitzer
|
|
|
|
dave.pl@ping.at
|
2001-08-18 09:04:43 +08:00
|
|
|
|
|
|
|
Note from Andrew Begel:
|
|
|
|
|
|
|
|
One more fix to enable gc.a to link successfully into a shared library for
|
|
|
|
MacOS X. You have to add -fno-common to the CFLAGS in the Makefile. MacOSX
|
|
|
|
disallows common symbols in anything that eventually finds its way into a
|
|
|
|
shared library. (I don't completely understand why, but -fno-common seems to
|
|
|
|
work and doesn't mess up the garbage collector's functionality).
|