| 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 |
| |
| 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). |