aboutsummaryrefslogtreecommitdiff
path: root/boehm-gc/mark_rts.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2001-08-18 01:04:43 +0000
committerTom Tromey <tromey@gcc.gnu.org>2001-08-18 01:04:43 +0000
commit5a2586cf8fcf001cddb47d3f9bf6610975d1564d (patch)
tree0a038d94cc4acd44c0926f011247f6b7969fa84b /boehm-gc/mark_rts.c
parenteed566698034311c58eea585da1ddb5a6e0807fb (diff)
downloadgcc-5a2586cf8fcf001cddb47d3f9bf6610975d1564d.zip
gcc-5a2586cf8fcf001cddb47d3f9bf6610975d1564d.tar.gz
gcc-5a2586cf8fcf001cddb47d3f9bf6610975d1564d.tar.bz2
Makefile.am, [...]: Imported GC 6.0 and merged local changes.
* Makefile.am, acinclude.m4, configure.in: Imported GC 6.0 and merged local changes. From-SVN: r44994
Diffstat (limited to 'boehm-gc/mark_rts.c')
-rw-r--r--boehm-gc/mark_rts.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/boehm-gc/mark_rts.c b/boehm-gc/mark_rts.c
index 8480a0e..251a0d1 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.
*/