ecl/src/gc
2008-12-15 10:15:29 +01:00
..
cord Upgraded to Boehm-Weiser 6.4 2005-03-11 09:38:48 +00:00
doc Use version 6.8 of the Boehm-Weiser garbage collector (solves some memory leaks in OSX) 2007-01-20 11:38:38 +00:00
include lwsync is not available on all PowerPC cores 2008-12-15 10:15:29 +01:00
Mac_files Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
tests Imported Boehm-Weiser GC 6.5 2005-06-27 08:09:07 +00:00
acinclude.m4 Preliminary support for POSIX threads. 2003-11-18 11:23:07 +00:00
aclocal.m4 Imported Boehm-Weiser GC 6.5 2005-06-27 08:09:07 +00:00
add_gc_prefix.c Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
allchblk.c Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
alloc.c Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
alpha_mach_dep.S Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
AmigaOS.c Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
backgraph.c Upgraded to Boehm-Weiser 6.4 2005-03-11 09:38:48 +00:00
BCC_MAKEFILE Changed all files to Unix line end convention to keep TortoiseCVS/CVSNET happy 2007-02-14 16:25:16 +00:00
blacklst.c Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
callprocs Initial revision 2001-06-26 17:14:44 +00:00
checksums.c Imported version 6.3 of the garbage collector 2004-10-29 10:27:18 +00:00
config.guess Upgraded to Boehm-Weiser 6.4 2005-03-11 09:38:48 +00:00
config.sub Upgraded to Boehm-Weiser 6.4 2005-03-11 09:38:48 +00:00
configure Use version 6.8 of the Boehm-Weiser garbage collector (solves some memory leaks in OSX) 2007-01-20 11:38:38 +00:00
configure.host Imported version 6.3 of the garbage collector 2004-10-29 10:27:18 +00:00
configure.in Use version 6.8 of the Boehm-Weiser garbage collector (solves some memory leaks in OSX) 2007-01-20 11:38:38 +00:00
darwin_stop_world.c Registers are prefixed by two underscores in Leopard. 2007-12-30 15:01:16 +00:00
dbg_mlc.c Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
depcomp Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
digimars.mak Changed all files to Unix line end convention to keep TortoiseCVS/CVSNET happy 2007-02-14 16:25:16 +00:00
dyn_load.c Use version 6.8 of the Boehm-Weiser garbage collector (solves some memory leaks in OSX) 2007-01-20 11:38:38 +00:00
EMX_MAKEFILE Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
finalize.c Upgraded to Boehm-Weiser 6.4 2005-03-11 09:38:48 +00:00
gc.mak Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
gc_cpp.cc Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
gc_cpp.cpp Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
gc_dlopen.c Preliminary support for POSIX threads. 2003-11-18 11:23:07 +00:00
gcc_support.c Initial revision 2001-06-26 17:14:44 +00:00
gcj_mlc.c Imported version 6.3 of the garbage collector 2004-10-29 10:27:18 +00:00
gcname.c Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
headers.c Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
hpux_test_and_clear.s Initial revision 2001-06-26 17:14:44 +00:00
ia64_save_regs_in_stack.s Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
if_mach.c Preliminary support for POSIX threads. 2003-11-18 11:23:07 +00:00
if_not_there.c Imported version 6.3 of the garbage collector 2004-10-29 10:27:18 +00:00
install-sh Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
libtool.m4 Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
ltmain.sh Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
mach_dep.c Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
MacOS.c Initial revision 2001-06-26 17:14:44 +00:00
MacProjects.sit.hqx Initial revision 2001-06-26 17:14:44 +00:00
Makefile Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
Makefile.am Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
Makefile.direct Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
Makefile.dj Imported version 6.3 of the garbage collector 2004-10-29 10:27:18 +00:00
Makefile.DLLs Initial revision 2001-06-26 17:14:44 +00:00
Makefile.in Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
malloc.c Use version 6.8 of the Boehm-Weiser garbage collector (solves some memory leaks in OSX) 2007-01-20 11:38:38 +00:00
mallocx.c Imported Boehm-Weiser GC 6.5 2005-06-27 08:09:07 +00:00
mark.c Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
mark_rts.c Imported Boehm-Weiser GC 6.5 2005-06-27 08:09:07 +00:00
mips_sgi_mach_dep.s Preliminary support for POSIX threads. 2003-11-18 11:23:07 +00:00
mips_ultrix_mach_dep.s Initial revision 2001-06-26 17:14:44 +00:00
misc.c The symbols from Boehm-Weiser garbage collector are now exported from the DLL also in Windows. This means PROFILE can be built there. In addition, under mingw32 we now only export symbols which have been marked with dllexport. 2008-03-17 08:28:20 +00:00
missing Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
mkinstalldirs Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
new_hblk.c Imported version 6.3 of the garbage collector 2004-10-29 10:27:18 +00:00
NT_MAKEFILE Imported version 6.3 of the garbage collector 2004-10-29 10:27:18 +00:00
NT_STATIC_THREADS_MAKEFILE Imported version 6.3 of the garbage collector 2004-10-29 10:27:18 +00:00
NT_THREADS_MAKEFILE Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
obj_map.c Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
OS2_MAKEFILE Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
os_dep.c Use version 6.8 of the Boehm-Weiser garbage collector (solves some memory leaks in OSX) 2007-01-20 11:38:38 +00:00
pc_excludes Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
PCR-Makefile Initial revision 2001-06-26 17:14:44 +00:00
pcr_interface.c Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
powerpc_darwin_mach_dep.s Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
pthread_stop_world.c Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
pthread_support.c Use version 6.8 of the Boehm-Weiser garbage collector (solves some memory leaks in OSX) 2007-01-20 11:38:38 +00:00
ptr_chck.c Preliminary support for POSIX threads. 2003-11-18 11:23:07 +00:00
README.QUICK Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
real_malloc.c Initial revision 2001-06-26 17:14:44 +00:00
reclaim.c Upgraded to Boehm-Weiser 6.4 2005-03-11 09:38:48 +00:00
rs6000_mach_dep.s Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
setjmp_t.c Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
SMakefile.amiga Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
solaris_pthreads.c Upgraded to Boehm-Weiser 6.4 2005-03-11 09:38:48 +00:00
solaris_threads.c Imported Boehm-Weiser GC 6.5 2005-06-27 08:09:07 +00:00
sparc_mach_dep.S Version 6.1 of the garbage collector imported. 2002-09-20 09:37:43 +00:00
sparc_netbsd_mach_dep.s Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
sparc_sunos4_mach_dep.s Initial revision 2001-06-26 17:14:44 +00:00
specific.c Upgraded to Boehm-Weiser 6.4 2005-03-11 09:38:48 +00:00
stubborn.c Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
threadlibs.c Version 6.7 of Boehm-Weiser garbage collector (Mostly for Darwin/x86 port) 2006-06-17 15:58:20 +00:00
typd_mlc.c Imported version 6.3 of the garbage collector 2004-10-29 10:27:18 +00:00
version.h Use version 6.8 of the Boehm-Weiser garbage collector (solves some memory leaks in OSX) 2007-01-20 11:38:38 +00:00
WCC_MAKEFILE Incorporate version 6.0 of the Boehm-Weiser garbage collector 2001-08-19 18:04:30 +00:00
win32_threads.c Automatic initialization of GC library uses ECL's usual flags 2008-06-26 23:02:17 +02:00

Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers
Copyright (c) 1991-1995 by Xerox Corporation.  All rights reserved.
Copyright (c) 1996-1999 by Silicon Graphics.  All rights reserved.
Copyright (c) 1999-2001 by Hewlett-Packard. All rights reserved.

THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
OR IMPLIED.  ANY USE IS AT YOUR OWN RISK.

Permission is hereby granted to use or copy this program
for any purpose,  provided the above notices are retained on all copies.
Permission to modify the code and to distribute modified code is granted,
provided the above notices are retained, and a notice that the code was
modified is included with the above copyright notice.

A few files have other copyright holders. A few of the files needed
to use the GNU-style build procedure come with a modified GPL license
that appears not to significantly restrict use of the collector, though
use of those files for a purpose other than building the collector may
require the resulting code to be covered by the GPL.

For more details and the names of other contributors, see the
doc/README* files and include/gc.h.  This file describes typical use of
the collector on a machine that is already supported.

For the version number, see doc/README or version.h.

INSTALLATION:
Under UN*X, Linux:
Alternative 1 (the old way): type "make test" in this directory.
	Link against gc.a.

Alternative 2 (the new way): type
	"./configure --prefix=<dir>; make; make check; make install".
	Link against <dir>/lib/libgc.a or <dir>/lib/libgc.so.
	See README.autoconf for details

Under OS/2 or Windows 95, 98, Me, NT, or 2000:
copy the appropriate makefile to MAKEFILE, read it, and type "nmake test".
(Under Windows, this assumes you have Microsoft command-line tools
installed, and have DOS configured with enough environment space to run them.)
Read the machine specific README in the doc directory if one exists.
The only way to develop code with the collector for Windows 3.1 is
to develop under Windows NT or 95+, and then to use win32S.

If you need thread support, you will need to either follow the special
platform-dependent instructions (win32), or add a suitable define
option as described in Makefile.

If you wish to use the cord (structured string) library, type
"make cords". (This requires an ANSI C compiler.  You may need
to redefine CC in the Makefile. The CORD_printf implementation in
cordprnt.c is known to be less than perfectly portable.  The rest
of the package should still work.)

If you wish to use the collector from C++, type
"make c++".  These add further files to gc.a and to the include
subdirectory.  See cord/cord.h and include/gc_cpp.h.

TYPICAL USE:
Include "gc.h" from the include subdirectory.  Link against the
appropriate library ("gc.a" under UN*X).  Replace calls to malloc
by calls to GC_MALLOC, and calls to realloc by calls to GC_REALLOC.
If the object is known to never contain pointers, use GC_MALLOC_ATOMIC
instead of GC_MALLOC.

Define GC_DEBUG before including gc.h for additional checking.

More documentation on the collector interface can be found at
http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcinterface.html,
in doc/README, and in include/gc.h .

WARNINGS:

Do not store the only pointer to an object in memory allocated
with system malloc, since the collector usually does not scan
memory allocated in this way.

Use with threads may be supported on your system, but requires the
collector to be built with thread support.  See Makefile.  The collector
does not guarantee to scan thread-local storage (e.g. of the kind
accessed with pthread_getspecific()).  The collector does scan
thread stacks though, so generally the best solution is to ensure that
any pointers stored in thread-local storage are also stored on the
thread's stack for the duration of their lifetime.