aboutsummaryrefslogtreecommitdiff
path: root/boehm-gc
diff options
context:
space:
mode:
authorBryce McKinlay <bryce@albatross.co.nz>2000-06-20 01:04:58 +0000
committerBryce McKinlay <bryce@albatross.co.nz>2000-06-20 01:04:58 +0000
commit19423c77ad895d0881634c5b5c4e0ac83f7f81c1 (patch)
tree75ede5286875b779db37ba8e1ff6003b2dd7494f /boehm-gc
parentbb839bd08c0206f8ac252a15faf69245b385df7b (diff)
2000-06-20 Bryce McKinlay <bryce@albatross.co.nz>
Imported version 5.1. * acinclude.m4: Push version to 5.1. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@34610 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'boehm-gc')
-rw-r--r--boehm-gc/ChangeLog5
-rw-r--r--boehm-gc/README14
-rw-r--r--boehm-gc/acinclude.m42
-rw-r--r--boehm-gc/aclocal.m42
-rw-r--r--boehm-gc/gc.h3
-rw-r--r--boehm-gc/reclaim.c49
-rw-r--r--boehm-gc/typd_mlc.c2
-rw-r--r--boehm-gc/version.h2
8 files changed, 55 insertions, 24 deletions
diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index f5b5fb4488e..de895eb1dd1 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,8 @@
+2000-06-20 Bryce McKinlay <bryce@albatross.co.nz>
+
+ Imported version 5.1.
+ * acinclude.m4: Push version to 5.1.
+
2000-06-19 Andrew Haley <aph@cygnus.com>
* os_dep.c (read): Pass two dummy args to syscall().
diff --git a/boehm-gc/README b/boehm-gc/README
index 083c7a7259d..7e333dbcf10 100644
--- a/boehm-gc/README
+++ b/boehm-gc/README
@@ -15,7 +15,7 @@ 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.
-This is version 5.0 of a conservative garbage collector for C and C++.
+This is version 5.1 of a conservative garbage collector for C and C++.
You might find a more recent version of this at
@@ -1611,6 +1611,18 @@ Since 5.0alpha7:
This caused occasional failures under Windows 98, and may also be
an issue under Windows NT/2000.
+Since 5.0
+ - Fixed a gc.h header bug which showed up under Irix. (Thanks to
+ Dan Sullivan.)
+ - Fixed a typo in GC_double_descr in typd_mlc.c not getting traced correctly.
+ This probably could result in objects described by array descriptors not
+ getting traced correctly. (Thanks to Ben Hutchings for pointing this out.)
+ - The block nearly full tests in reclaim.c were not correct for 64 bit
+ environments. This could result in unnecessary heap growth under unlikely
+ conditions.
+ - Removed use of CLEAR_DOUBLE from generic reclaim code, since odd sizes
+ could occur.
+
To do:
- Integrate Linux/SPARC fixes.
- Very large root set sizes (> 16 MB or so) could cause the collector
diff --git a/boehm-gc/acinclude.m4 b/boehm-gc/acinclude.m4
index 27478584e6d..6491f994143 100644
--- a/boehm-gc/acinclude.m4
+++ b/boehm-gc/acinclude.m4
@@ -31,7 +31,7 @@ AC_SUBST(boehm_gc_basedir)
AC_CANONICAL_HOST
-AM_INIT_AUTOMAKE(boehm-gc, 5.0, no-define)
+AM_INIT_AUTOMAKE(boehm-gc, 5.1, no-define)
# FIXME: We temporarily define our own version of AC_PROG_CC. This is
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
diff --git a/boehm-gc/aclocal.m4 b/boehm-gc/aclocal.m4
index 797bddc1665..a0f394fd55f 100644
--- a/boehm-gc/aclocal.m4
+++ b/boehm-gc/aclocal.m4
@@ -43,7 +43,7 @@ AC_SUBST(boehm_gc_basedir)
AC_CANONICAL_HOST
-AM_INIT_AUTOMAKE(boehm-gc, 5.0, no-define)
+AM_INIT_AUTOMAKE(boehm-gc, 5.1, no-define)
# FIXME: We temporarily define our own version of AC_PROG_CC. This is
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
diff --git a/boehm-gc/gc.h b/boehm-gc/gc.h
index e35f54f7d3f..d7cd8996085 100644
--- a/boehm-gc/gc.h
+++ b/boehm-gc/gc.h
@@ -372,8 +372,7 @@ GC_API GC_PTR GC_malloc_atomic_ignore_off_page GC_PROTO((size_t lb));
#ifdef GC_ADD_CALLER
# define GC_EXTRAS GC_RETURN_ADDR, __FILE__, __LINE__
-# define GC_EXTRA_PARAMS GC_word ra, GC_CONST char * s,
- int i
+# define GC_EXTRA_PARAMS GC_word ra, GC_CONST char * s, int i
#else
# define GC_EXTRAS __FILE__, __LINE__
# define GC_EXTRA_PARAMS GC_CONST char * s, int i
diff --git a/boehm-gc/reclaim.c b/boehm-gc/reclaim.c
index 57c652ef265..4ace1107d62 100644
--- a/boehm-gc/reclaim.c
+++ b/boehm-gc/reclaim.c
@@ -236,18 +236,9 @@ register word sz;
/* Clear object, advance p to next object in the process */
q = p + sz;
p++; /* Skip link field */
-# if defined(SMALL_CONFIG) && defined(ALIGN_DOUBLE)
- /* We assert that sz must be even */
- *p++ = 0;
- while (p < q) {
- CLEAR_DOUBLE(p);
- p += 2;
- }
-# else
- while (p < q) {
+ while (p < q) {
*p++ = 0;
- }
-# endif
+ }
}
word_no += sz;
}
@@ -604,20 +595,32 @@ int report_if_found; /* Abort if a reclaimable object is found */
switch(sz) {
# ifndef SMALL_CONFIG
case 1:
- full = GC_block_nearly_full1(hhdr, 0xffffffffl);
+# if CPP_WORDSZ == 64
+ full = GC_block_nearly_full1(hhdr, 0xffffffffffffffffl);
+# else
+ full = GC_block_nearly_full1(hhdr, 0xffffffffl);
+# endif
if (TRUE == full) goto out;
if (FALSE == full) GC_write_hint(hbp);
/* In the DONT_KNOW case, we let reclaim fault. */
*flh = GC_reclaim1(hbp, hhdr, *flh);
break;
case 2:
- full = GC_block_nearly_full1(hhdr, 0x55555555l);
+# if CPP_WORDSZ == 64
+ full = GC_block_nearly_full1(hhdr, 0x5555555555555555l);
+# else
+ full = GC_block_nearly_full1(hhdr, 0x55555555l);
+# endif
if (TRUE == full) goto out;
if (FALSE == full) GC_write_hint(hbp);
*flh = GC_reclaim_clear2(hbp, hhdr, *flh);
break;
case 4:
- full = GC_block_nearly_full1(hhdr, 0x11111111l);
+# if CPP_WORDSZ == 64
+ full = GC_block_nearly_full1(hhdr, 0x1111111111111111l);
+# else
+ full = GC_block_nearly_full1(hhdr, 0x11111111l);
+# endif
if (TRUE == full) goto out;
if (FALSE == full) GC_write_hint(hbp);
*flh = GC_reclaim_clear4(hbp, hhdr, *flh);
@@ -634,19 +637,31 @@ int report_if_found; /* Abort if a reclaimable object is found */
switch(sz) {
# ifndef SMALL_CONFIG
case 1:
- full = GC_block_nearly_full1(hhdr, 0xffffffffl);
+# if CPP_WORDSZ == 64
+ full = GC_block_nearly_full1(hhdr, 0xffffffffffffffffl);
+# else
+ full = GC_block_nearly_full1(hhdr, 0xffffffffl);
+# endif
if (TRUE == full) goto out;
if (FALSE == full) GC_write_hint(hbp);
*flh = GC_reclaim1(hbp, hhdr, *flh);
break;
case 2:
- full = GC_block_nearly_full1(hhdr, 0x55555555l);
+# if CPP_WORDSZ == 64
+ full = GC_block_nearly_full1(hhdr, 0x5555555555555555l);
+# else
+ full = GC_block_nearly_full1(hhdr, 0x55555555l);
+# endif
if (TRUE == full) goto out;
if (FALSE == full) GC_write_hint(hbp);
*flh = GC_reclaim_uninit2(hbp, hhdr, *flh);
break;
case 4:
- full = GC_block_nearly_full1(hhdr, 0x11111111l);
+# if CPP_WORDSZ == 64
+ full = GC_block_nearly_full1(hhdr, 0x1111111111111111l);
+# else
+ full = GC_block_nearly_full1(hhdr, 0x11111111l);
+# endif
if (TRUE == full) goto out;
if (FALSE == full) GC_write_hint(hbp);
*flh = GC_reclaim_uninit4(hbp, hhdr, *flh);
diff --git a/boehm-gc/typd_mlc.c b/boehm-gc/typd_mlc.c
index ce769d60fec..a198f6c154d 100644
--- a/boehm-gc/typd_mlc.c
+++ b/boehm-gc/typd_mlc.c
@@ -175,7 +175,7 @@ GC_descr GC_double_descr(descriptor, nwords)
register GC_descr descriptor;
register word nwords;
{
- if (descriptor && DS_TAGS == DS_LENGTH) {
+ if (descriptor & DS_TAGS == DS_LENGTH) {
descriptor = GC_bm_table[BYTES_TO_WORDS((word)descriptor)];
};
descriptor |= (descriptor & ~DS_TAGS) >> nwords;
diff --git a/boehm-gc/version.h b/boehm-gc/version.h
index 2c69e44dd31..04787d85be3 100644
--- a/boehm-gc/version.h
+++ b/boehm-gc/version.h
@@ -1,5 +1,5 @@
#define GC_VERSION_MAJOR 5
-#define GC_VERSION_MINOR 0
+#define GC_VERSION_MINOR 1
#define GC_ALPHA_VERSION GC_NOT_ALPHA
# define GC_NOT_ALPHA 0xff