1 |
721 |
jeremybenn |
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 |
|
|
|