summaryrefslogtreecommitdiff
path: root/boehm-gc/blacklst.c
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>1999-11-01 23:15:51 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>1999-11-01 23:15:51 +0000
commit9bc8642e1f366a35c305b9abe9e01bf934b584b9 (patch)
tree9c24ba1ebabff472b9caddbff07ef957dbf2c24c /boehm-gc/blacklst.c
parent79eaf784f16b0e8079d9dca062a0fc959d289d18 (diff)
downloadgcc-9bc8642e1f366a35c305b9abe9e01bf934b584b9.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30332 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'boehm-gc/blacklst.c')
-rw-r--r--boehm-gc/blacklst.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/boehm-gc/blacklst.c b/boehm-gc/blacklst.c
index 44455e5ba47..e5a3a26a8cf 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()