42 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Performance of the incremental collector can be greatly enhanced with
 | 
						|
-DNO_EXECUTE_PERMISSION.
 | 
						|
 | 
						|
The collector should run with all of the -32, -n32 and -64 ABIs.  Remember to
 | 
						|
define the AS macro in the Makefile to be "as -64", or "as -n32".
 | 
						|
 | 
						|
If you use -DREDIRECT_MALLOC=GC_malloc with C++ code, your code should make
 | 
						|
at least one explicit call to malloc instead of new to ensure that the proper
 | 
						|
version of malloc is linked in.
 | 
						|
 | 
						|
Sproc threads are not supported in this version, though there may exist other
 | 
						|
ports.
 | 
						|
 | 
						|
Pthreads support is provided.  This requires that:
 | 
						|
 | 
						|
1) You compile the collector with -DGC_IRIX_THREADS specified in the Makefile.
 | 
						|
 | 
						|
2) You have the latest pthreads patches installed.  
 | 
						|
 | 
						|
(Though the collector makes only documented pthread calls,
 | 
						|
it relies on signal/threads interactions working just right in ways
 | 
						|
that are not required by the standard.  It is unlikely that this code
 | 
						|
will run on other pthreads platforms.  But please tell me if it does.)
 | 
						|
 | 
						|
3) Every file that makes thread calls should define IRIX_THREADS and then
 | 
						|
include gc.h.  Gc.h redefines some of the pthread primitives as macros which
 | 
						|
also provide the collector with information it requires.
 | 
						|
 | 
						|
4) pthread_cond_wait and pthread_cond_timed_wait should be prepared for
 | 
						|
premature wakeups.  (I believe the pthreads and realted standards require this
 | 
						|
anyway.  Irix pthreads often terminate a wait if a signal arrives.
 | 
						|
The garbage collector uses signals to stop threads.)
 | 
						|
 | 
						|
5) It is expensive to stop a thread waiting in IO at the time the request is
 | 
						|
initiated.  Applications with many such threads may not exhibit acceptable
 | 
						|
performance with the collector.  (Increasing the heap size may help.)
 | 
						|
 | 
						|
6) The collector should not be compiled with -DREDIRECT_MALLOC.  This
 | 
						|
confuses some library calls made by the pthreads implementation, which
 | 
						|
expect the standard malloc.
 | 
						|
 |