summaryrefslogtreecommitdiff
path: root/boehm-gc/doc
diff options
context:
space:
mode:
authorBryce McKinlay <bryce@waitaki.otago.ac.nz>2002-02-12 04:37:57 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2002-02-12 04:37:57 +0000
commit79f777fd1e10435cb50c4b45a664bd6ae280f2c1 (patch)
treecef3197531d988920cbff060bdc10742baf06d01 /boehm-gc/doc
parent005326029f35b4271c5274114a17126039fe18a0 (diff)
downloadgcc-79f777fd1e10435cb50c4b45a664bd6ae280f2c1.tar.gz
Imported GC 6.1 Alpha 3. Finally.
From-SVN: r49698
Diffstat (limited to 'boehm-gc/doc')
-rw-r--r--boehm-gc/doc/README2
-rw-r--r--boehm-gc/doc/README.changes55
-rw-r--r--boehm-gc/doc/README.environment43
-rw-r--r--boehm-gc/doc/README.win3213
4 files changed, 108 insertions, 5 deletions
diff --git a/boehm-gc/doc/README b/boehm-gc/doc/README
index b161ccf4a46..6ac37c6c8ce 100644
--- a/boehm-gc/doc/README
+++ b/boehm-gc/doc/README
@@ -27,7 +27,7 @@ are GPL'ed, but with an exception that should cover all uses in the
collector. (If you are concerned about such things, I recommend you look
at the notice in config.guess or ltmain.sh.)
-This is version 6.1alpha1 of a conservative garbage collector for C and C++.
+This is version 6.1alpha3 of a conservative garbage collector for C and C++.
You might find a more recent version of this at
diff --git a/boehm-gc/doc/README.changes b/boehm-gc/doc/README.changes
index 8c00e938b5f..232938b4375 100644
--- a/boehm-gc/doc/README.changes
+++ b/boehm-gc/doc/README.changes
@@ -1413,6 +1413,61 @@ Since 6.0:
less common thread implementations, since some of the original code
didn't stand up to close scrutiny. Support for the next pthreads
implementation should be easier to add.
+
+Since 6.1alpha1:
+ - No longer wrap read by default in multithreaded applications. It was
+ pointed out on the libgcj list that this holds the allocation lock for
+ way too long if the read blocks. For now, reads into the heap are
+ broken with incremental collection. It's possible to turn this back on
+ if you make sure that read calls don't block (e.g. by calling select
+ first).
+ - Fix ifdef in Solaris_threads.h to refer to GC_SOLARIS_THREADS.
+ - Added check for environment variable GC_IGNORE_GCJ_INFO.
+ - Added printing of stop-the-world GC times if GC_PRINT_STATS environment
+ variable is set.
+ - The calloc definition in leak_detector.h was missing parentheses, and
+ realloc was missing a second argument to GC_REALLOC.
+ (Thanks to Elrond (elrond<at>samba-tng.org).)
+ - Added GC_PRINT_BACK_HEIGHT environment variable and associated
+ code, mostly in the new file backgraph.c. See doc/README.environment.
+ - Added -DUSE_GLOBAL_ALLOC to work around a Windows NT issue. (Thanks to
+ Jonathan Clark.)
+ - Integrated port to NEC EWS4800 (MIPS-based workstation, with somewhat
+ different address-space layout). This may help for other machines with
+ holes in the data segment. (Thanks to Hironori Sakamoto.)
+ - Changed the order in which GC_push_roots and friends push things onto
+ the mark stack. GC_push_all calls need to come first, since we can't
+ necessarily recovere if those overflow the mark stack. (Thanks to
+ Matthew Flatt for tracking down the problem.)
+ - Some minor cleanups to mostly support the Intel compiler on Linux/IA64.
+
+Since 6.1 alpha2:
+ - Minor cleanup on the gcconfig.h section for SPARC.
+ - Minor fix to support Intel compiler for I386/Linux. (Thanks to Sven
+ Hartrumpf.)
+ - Added SPARC V9 (64-bit) support. (Thanks to Jeff Sturm.)
+ - Restructured the way in which we determine whether or not to keep
+ call stacks for debug allocation. By default SAVE_CALL_COUNT is
+ now zero on all platforms. Added SAVE_CALL_NARGS parameters.
+ If possible, use execinfo.h to capture call stack. (This should
+ add support for a number of new platforms, though often at
+ considerable runtime expense.)
+ - Try to print symbolic information for call stacks. On Linux, we
+ do this with a combination of execinfo.h and running addr2line in
+ a separate process. This is both much more expensive and much more
+ useful. Amazingly, it seems to be fast enough for most purposes.
+ - Redefined strdup if -DREDIRECT_MALLOC is given.
+ - Changed incremental collector and MPROTECT_VDB implementation so that,
+ under favorable conditions, pointerfree objects are not protected.
+ Added GC_incremental_protection_needs() to determine ahead of time whether
+ pointerfree objects may be protected. Replaced GC_write_hint() with
+ GC_remove_protection().
+ - Added test for GC_ENABLE_INCREMENTAL environment variable.
+ - Made GC_time_limit runtime configurable. Added GC_PAUSE_TIME_TARGET
+ environment variable.
+ - Eliminated GC_page_sz, a duplicate of GC_page_size.
+ - Caused the Solaris and Irix thread creation primitives to call
+ GC_init_inner().
To do:
diff --git a/boehm-gc/doc/README.environment b/boehm-gc/doc/README.environment
index 5760342a86a..6b25af1f6fe 100644
--- a/boehm-gc/doc/README.environment
+++ b/boehm-gc/doc/README.environment
@@ -1,5 +1,5 @@
The garbage collector looks at a number of environment variables which are
-the used to affect its operation. These are examined only on Un*x-like
+then used to affect its operation. These are examined only on Un*x-like
platforms.
GC_INITIAL_HEAP_SIZE=<bytes> - Initial heap size in bytes. May speed up
@@ -32,6 +32,47 @@ GC_NPROCS=<n> - Linux w/threads only. Explicitly sets the number of processors
GC_NO_BLACKLIST_WARNING - Prevents the collector from issuing
"Needed to allocate blacklisted block at ..." warnings.
+GC_IGNORE_GCJ_INFO - Ignore the type descriptors implicitly supplied by
+ GC_gcj_malloc and friends. This is useful for debugging
+ descriptor generation problems, and possibly for
+ temporarily working around such problems. It forces a
+ fully conservative scan of all heap objects except
+ those known to be pointerfree, and may thus have other
+ adverse effects.
+
+GC_PRINT_BACK_HEIGHT - Print max length of chain through unreachable objects
+ ending in a reachable one. If this number remains
+ bounded, then the program is "GC robust". This ensures
+ that a fixed number of misidentified pointers can only
+ result in a bounded space leak. This currently only
+ works if debugging allocation is used throughout.
+ It increases GC space and time requirements appreciably.
+ This feature is still somewhat experimental, and requires
+ that the collector have been built with MAKE_BACK_GRAPH
+ defined. For details, see Boehm, "Bounding Space Usage
+ of Conservative Garbage Collectors", POPL 2001, or
+ http://lib.hpl.hp.com/techpubs/2001/HPL-2001-251.html .
+
+GC_ENABLE_INCREMENTAL - Turn on incremental collection at startup. Note that,
+ depending on platform and collector configuration, this
+ may involve write protecting pieces of the heap to
+ track modifications. These pieces may include pointerfree
+ objects or not. Although this is intended to be
+ transparent, it may cause unintended system call failures.
+ Use with caution.
+
+GC_PAUSE_TIME_TARGET - Set the desired garbage collector pause time in msecs.
+ This only has an effect if incremental collection is enabled.
+ If a collection requires appreciably more time than this,
+ the client will be restarted, and the collector will need
+ to do additional work to compensate. The special value
+ "999999" indicates that pause time is unlimited, and the
+ incremental collector will behave completely like a
+ simple generational collector. If the collector is
+ configured for parallel marking, and run on a multiprocessor,
+ incremental collection should only be used with unlimited
+ pause time.
+
The following turn on runtime flags that are also program settable. Checked
only during initialization. We expect that they will usually be set through
other means, but this may help with debugging and testing:
diff --git a/boehm-gc/doc/README.win32 b/boehm-gc/doc/README.win32
index 417281da43d..b1a6ec59664 100644
--- a/boehm-gc/doc/README.win32
+++ b/boehm-gc/doc/README.win32
@@ -1,8 +1,8 @@
The collector has at various times been compiled under Windows 95 & NT,
with the original Microsoft SDK, with Visual C++ 2.0, 4.0, and 6, with
-the GNU win32 environment, with Borland 4.5, and recently with
-Watcom C. It is likely that some of these have been broken in the
-meantime. Patches are appreciated.
+the GNU win32 environment, with Borland 4.5, with Watcom C, and recently
+with the Digital Mars compiler. It is likely that some of these have been
+broken in the meantime. Patches are appreciated.
It runs under both win32s and win32, but with different semantics.
Under win32, all writable pages outside of the heaps and stack are
@@ -45,6 +45,13 @@ window colors.)
In general -DREDIRECT_MALLOC is unlikely to work unless the
application is completely statically linked.
+The collector normally allocates memory from the OS with VirtualAlloc.
+This appears to cause problems under Windows NT and Windows 2000 (but
+not Windows 95/98) if the memory is later passed to CreateDIBitmap.
+To work around this problem, build the collector with -DUSE_GLOBAL_ALLOC.
+This is currently incompatible with -DUSE_MUNMAP. (Thanks to Jonathan
+Clark for tracking this down.)
+
For Microsoft development tools, rename NT_MAKEFILE as
MAKEFILE. (Make sure that the CPU environment variable is defined
to be i386.) In order to use the gc_cpp.h C++ interface, all