OSDN Git Service

2000-06-20 Bryce McKinlay <bryce@albatross.co.nz>
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Jun 2000 01:04:58 +0000 (01:04 +0000)
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Jun 2000 01:04:58 +0000 (01:04 +0000)
Imported version 5.1.
* acinclude.m4: Push version to 5.1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34610 138bc75d-0d04-0410-961f-82ee72b054a4

boehm-gc/ChangeLog
boehm-gc/README
boehm-gc/acinclude.m4
boehm-gc/aclocal.m4
boehm-gc/gc.h
boehm-gc/reclaim.c
boehm-gc/typd_mlc.c
boehm-gc/version.h

index f5b5fb4..de895eb 100644 (file)
@@ -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().
index 083c7a7..7e333db 100644 (file)
@@ -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
index 2747858..6491f99 100644 (file)
@@ -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
index 797bddc..a0f394f 100644 (file)
@@ -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
index e35f54f..d7cd899 100644 (file)
@@ -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
index 57c652e..4ace110 100644 (file)
@@ -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);
index ce769d6..a198f6c 100644 (file)
@@ -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;
index 2c69e44..04787d8 100644 (file)
@@ -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