28 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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).
 |