diff options
author | Tom Tromey <tromey@cygnus.com> | 1999-11-01 23:15:51 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-11-01 23:15:51 +0000 |
commit | 20bbd3cd53a80ddafa56a5d21337aae0c24f94ca (patch) | |
tree | 9c24ba1ebabff472b9caddbff07ef957dbf2c24c /boehm-gc/blacklst.c | |
parent | c05ddfa745d68f6d9db1a7d0992650a41986d376 (diff) | |
download | gcc-20bbd3cd53a80ddafa56a5d21337aae0c24f94ca.zip gcc-20bbd3cd53a80ddafa56a5d21337aae0c24f94ca.tar.gz gcc-20bbd3cd53a80ddafa56a5d21337aae0c24f94ca.tar.bz2 |
Merged GC 5.0alpha4 with local changes, plus:
* Makefile.in: Rebuilt.
* Makefile.am (gctest_LDADD): Added THREADLIB.
(TESTS): New macro.
* configure: Rebuilt.
* configure.in (INCLUDES): New subst.
From-SVN: r30332
Diffstat (limited to 'boehm-gc/blacklst.c')
-rw-r--r-- | boehm-gc/blacklst.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/boehm-gc/blacklst.c b/boehm-gc/blacklst.c index 44455e5..e5a3a26 100644 --- a/boehm-gc/blacklst.c +++ b/boehm-gc/blacklst.c @@ -63,11 +63,16 @@ ptr_t p; void (*GC_print_heap_obj)(/* char * s, ptr_t p */) = GC_default_print_heap_obj_proc; -void GC_print_source_ptr(ptr_t p) +void GC_print_source_ptr(p) +ptr_t p; { ptr_t base = GC_base(p); if (0 == base) { - GC_err_printf0("in root set"); + if (0 == p) { + GC_err_printf0("in register"); + } else { + GC_err_printf0("in root set"); + } } else { GC_err_printf0("in object at "); (*GC_print_heap_obj)(base); @@ -140,6 +145,13 @@ void GC_promote_black_lists() if (GC_black_list_spacing < 3 * HBLKSIZE) { GC_black_list_spacing = 3 * HBLKSIZE; } + if (GC_black_list_spacing > MAXHINCR * HBLKSIZE) { + GC_black_list_spacing = MAXHINCR * HBLKSIZE; + /* Makes it easier to allocate really huge blocks, which otherwise */ + /* may have problems with nonuniform blacklist distributions. */ + /* This way we should always succeed immediately after growing the */ + /* heap. */ + } } void GC_unpromote_black_lists() |