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