mirror of git://gcc.gnu.org/git/gcc.git
Imported version 5.1.
2000-06-20 Bryce McKinlay <bryce@albatross.co.nz> Imported version 5.1. * acinclude.m4: Push version to 5.1. From-SVN: r34610
This commit is contained in:
parent
aac350aaf9
commit
aec5061ba2
|
@ -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>
|
2000-06-19 Andrew Haley <aph@cygnus.com>
|
||||||
|
|
||||||
* os_dep.c (read): Pass two dummy args to syscall().
|
* os_dep.c (read): Pass two dummy args to syscall().
|
||||||
|
|
|
@ -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
|
provided the above notices are retained, and a notice that the code was
|
||||||
modified is included with the above copyright notice.
|
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
|
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
|
This caused occasional failures under Windows 98, and may also be
|
||||||
an issue under Windows NT/2000.
|
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:
|
To do:
|
||||||
- Integrate Linux/SPARC fixes.
|
- Integrate Linux/SPARC fixes.
|
||||||
- Very large root set sizes (> 16 MB or so) could cause the collector
|
- Very large root set sizes (> 16 MB or so) could cause the collector
|
||||||
|
|
|
@ -31,7 +31,7 @@ AC_SUBST(boehm_gc_basedir)
|
||||||
|
|
||||||
AC_CANONICAL_HOST
|
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
|
# 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
|
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
|
||||||
|
|
|
@ -43,7 +43,7 @@ AC_SUBST(boehm_gc_basedir)
|
||||||
|
|
||||||
AC_CANONICAL_HOST
|
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
|
# 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
|
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
|
||||||
|
|
|
@ -372,8 +372,7 @@ GC_API GC_PTR GC_malloc_atomic_ignore_off_page GC_PROTO((size_t lb));
|
||||||
|
|
||||||
#ifdef GC_ADD_CALLER
|
#ifdef GC_ADD_CALLER
|
||||||
# define GC_EXTRAS GC_RETURN_ADDR, __FILE__, __LINE__
|
# define GC_EXTRAS GC_RETURN_ADDR, __FILE__, __LINE__
|
||||||
# define GC_EXTRA_PARAMS GC_word ra, GC_CONST char * s,
|
# define GC_EXTRA_PARAMS GC_word ra, GC_CONST char * s, int i
|
||||||
int i
|
|
||||||
#else
|
#else
|
||||||
# define GC_EXTRAS __FILE__, __LINE__
|
# define GC_EXTRAS __FILE__, __LINE__
|
||||||
# define GC_EXTRA_PARAMS GC_CONST char * s, int i
|
# define GC_EXTRA_PARAMS GC_CONST char * s, int i
|
||||||
|
|
|
@ -236,18 +236,9 @@ register word sz;
|
||||||
/* Clear object, advance p to next object in the process */
|
/* Clear object, advance p to next object in the process */
|
||||||
q = p + sz;
|
q = p + sz;
|
||||||
p++; /* Skip link field */
|
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;
|
*p++ = 0;
|
||||||
}
|
}
|
||||||
# endif
|
|
||||||
}
|
}
|
||||||
word_no += sz;
|
word_no += sz;
|
||||||
}
|
}
|
||||||
|
@ -604,20 +595,32 @@ int report_if_found; /* Abort if a reclaimable object is found */
|
||||||
switch(sz) {
|
switch(sz) {
|
||||||
# ifndef SMALL_CONFIG
|
# ifndef SMALL_CONFIG
|
||||||
case 1:
|
case 1:
|
||||||
|
# if CPP_WORDSZ == 64
|
||||||
|
full = GC_block_nearly_full1(hhdr, 0xffffffffffffffffl);
|
||||||
|
# else
|
||||||
full = GC_block_nearly_full1(hhdr, 0xffffffffl);
|
full = GC_block_nearly_full1(hhdr, 0xffffffffl);
|
||||||
|
# endif
|
||||||
if (TRUE == full) goto out;
|
if (TRUE == full) goto out;
|
||||||
if (FALSE == full) GC_write_hint(hbp);
|
if (FALSE == full) GC_write_hint(hbp);
|
||||||
/* In the DONT_KNOW case, we let reclaim fault. */
|
/* In the DONT_KNOW case, we let reclaim fault. */
|
||||||
*flh = GC_reclaim1(hbp, hhdr, *flh);
|
*flh = GC_reclaim1(hbp, hhdr, *flh);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
# if CPP_WORDSZ == 64
|
||||||
|
full = GC_block_nearly_full1(hhdr, 0x5555555555555555l);
|
||||||
|
# else
|
||||||
full = GC_block_nearly_full1(hhdr, 0x55555555l);
|
full = GC_block_nearly_full1(hhdr, 0x55555555l);
|
||||||
|
# endif
|
||||||
if (TRUE == full) goto out;
|
if (TRUE == full) goto out;
|
||||||
if (FALSE == full) GC_write_hint(hbp);
|
if (FALSE == full) GC_write_hint(hbp);
|
||||||
*flh = GC_reclaim_clear2(hbp, hhdr, *flh);
|
*flh = GC_reclaim_clear2(hbp, hhdr, *flh);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
# if CPP_WORDSZ == 64
|
||||||
|
full = GC_block_nearly_full1(hhdr, 0x1111111111111111l);
|
||||||
|
# else
|
||||||
full = GC_block_nearly_full1(hhdr, 0x11111111l);
|
full = GC_block_nearly_full1(hhdr, 0x11111111l);
|
||||||
|
# endif
|
||||||
if (TRUE == full) goto out;
|
if (TRUE == full) goto out;
|
||||||
if (FALSE == full) GC_write_hint(hbp);
|
if (FALSE == full) GC_write_hint(hbp);
|
||||||
*flh = GC_reclaim_clear4(hbp, hhdr, *flh);
|
*flh = GC_reclaim_clear4(hbp, hhdr, *flh);
|
||||||
|
@ -634,19 +637,31 @@ int report_if_found; /* Abort if a reclaimable object is found */
|
||||||
switch(sz) {
|
switch(sz) {
|
||||||
# ifndef SMALL_CONFIG
|
# ifndef SMALL_CONFIG
|
||||||
case 1:
|
case 1:
|
||||||
|
# if CPP_WORDSZ == 64
|
||||||
|
full = GC_block_nearly_full1(hhdr, 0xffffffffffffffffl);
|
||||||
|
# else
|
||||||
full = GC_block_nearly_full1(hhdr, 0xffffffffl);
|
full = GC_block_nearly_full1(hhdr, 0xffffffffl);
|
||||||
|
# endif
|
||||||
if (TRUE == full) goto out;
|
if (TRUE == full) goto out;
|
||||||
if (FALSE == full) GC_write_hint(hbp);
|
if (FALSE == full) GC_write_hint(hbp);
|
||||||
*flh = GC_reclaim1(hbp, hhdr, *flh);
|
*flh = GC_reclaim1(hbp, hhdr, *flh);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
# if CPP_WORDSZ == 64
|
||||||
|
full = GC_block_nearly_full1(hhdr, 0x5555555555555555l);
|
||||||
|
# else
|
||||||
full = GC_block_nearly_full1(hhdr, 0x55555555l);
|
full = GC_block_nearly_full1(hhdr, 0x55555555l);
|
||||||
|
# endif
|
||||||
if (TRUE == full) goto out;
|
if (TRUE == full) goto out;
|
||||||
if (FALSE == full) GC_write_hint(hbp);
|
if (FALSE == full) GC_write_hint(hbp);
|
||||||
*flh = GC_reclaim_uninit2(hbp, hhdr, *flh);
|
*flh = GC_reclaim_uninit2(hbp, hhdr, *flh);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
# if CPP_WORDSZ == 64
|
||||||
|
full = GC_block_nearly_full1(hhdr, 0x1111111111111111l);
|
||||||
|
# else
|
||||||
full = GC_block_nearly_full1(hhdr, 0x11111111l);
|
full = GC_block_nearly_full1(hhdr, 0x11111111l);
|
||||||
|
# endif
|
||||||
if (TRUE == full) goto out;
|
if (TRUE == full) goto out;
|
||||||
if (FALSE == full) GC_write_hint(hbp);
|
if (FALSE == full) GC_write_hint(hbp);
|
||||||
*flh = GC_reclaim_uninit4(hbp, hhdr, *flh);
|
*flh = GC_reclaim_uninit4(hbp, hhdr, *flh);
|
||||||
|
|
|
@ -175,7 +175,7 @@ GC_descr GC_double_descr(descriptor, nwords)
|
||||||
register GC_descr descriptor;
|
register GC_descr descriptor;
|
||||||
register word nwords;
|
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 = GC_bm_table[BYTES_TO_WORDS((word)descriptor)];
|
||||||
};
|
};
|
||||||
descriptor |= (descriptor & ~DS_TAGS) >> nwords;
|
descriptor |= (descriptor & ~DS_TAGS) >> nwords;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#define GC_VERSION_MAJOR 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_ALPHA_VERSION GC_NOT_ALPHA
|
||||||
|
|
||||||
# define GC_NOT_ALPHA 0xff
|
# define GC_NOT_ALPHA 0xff
|
||||||
|
|
Loading…
Reference in New Issue