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