diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-08-18 01:04:43 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-08-18 01:04:43 +0000 |
commit | 8fee6c5ba203062646a84ef04770c79ba2be0a6a (patch) | |
tree | 0a038d94cc4acd44c0926f011247f6b7969fa84b /boehm-gc/mark_rts.c | |
parent | 75ae025532a15d2842c5401959ef6775e3ebe550 (diff) | |
download | gcc-8fee6c5ba203062646a84ef04770c79ba2be0a6a.tar.gz |
* Makefile.am, acinclude.m4, configure.in: Imported GC 6.0 and
merged local changes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@44994 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'boehm-gc/mark_rts.c')
-rw-r--r-- | boehm-gc/mark_rts.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/boehm-gc/mark_rts.c b/boehm-gc/mark_rts.c index 8480a0e1a4a..251a0d1458f 100644 --- a/boehm-gc/mark_rts.c +++ b/boehm-gc/mark_rts.c @@ -471,8 +471,9 @@ ptr_t cold_gc_frame; cold_gc_bs_pointer = bsp - 2048; if (cold_gc_bs_pointer < BACKING_STORE_BASE) { cold_gc_bs_pointer = BACKING_STORE_BASE; + } else { + GC_push_all_stack(BACKING_STORE_BASE, cold_gc_bs_pointer); } - GC_push_all_stack(BACKING_STORE_BASE, cold_gc_bs_pointer); } else { cold_gc_bs_pointer = BACKING_STORE_BASE; } @@ -501,6 +502,10 @@ void GC_push_gc_structures GC_PROTO((void)) # endif } +#ifdef THREAD_LOCAL_ALLOC + void GC_mark_thread_local_free_lists(); +#endif + /* * Call the mark routines (GC_tl_push for a single pointer, GC_push_conditional * on groups of pointers) on every top level accessible pointer. @@ -552,6 +557,12 @@ ptr_t cold_gc_frame; GC_push_gc_structures(); } + /* Mark thread local free lists, even if their mark */ + /* descriptor excludes the link field. */ +# ifdef THREAD_LOCAL_ALLOC + GC_mark_thread_local_free_lists(); +# endif + /* * Now traverse stacks. */ |