diff options
author | hboehm <hboehm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-03 19:34:11 +0000 |
---|---|---|
committer | hboehm <hboehm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-03 19:34:11 +0000 |
commit | 0c67eea30c500aad72b41360a5268d3190085d08 (patch) | |
tree | 0e084fa019f219c6affbd96447044ea359920119 /boehm-gc/alloc.c | |
parent | 0801242f635e1ab529ed092f5a44e63fe933d9f1 (diff) | |
download | gcc-0c67eea30c500aad72b41360a5268d3190085d08.tar.gz |
2003-03-03 Hans Boehm <Hans.Boehm@hp.com>
* mark_rts.c (GC_cond_register_dynamic_libraries): add.
(GC_push_roots): explicitly mark free list headers, register
dynamic libraries only if !REGISTER_LIBRARIES_EARLY.
* alloc.c (GC_stopped_mark): Conditionally call
GC_cond_register_dynamic_libraries().
(GC_collect_a_little_inner, GC_try_to_collect_inner): Check GC_dont_gc.
* dyn_load.c (GC_register_main_static_data): define.
(GC_register_dyn_libraries (Linux /proc, Linux ELF versions)):
no longer skip main data.
* misc.c (GC_REGISTER_MAIN_STATIC_DATA): define.
(GC_init_inner): Make main data registration conditional.
* include/private/gc_priv.h (GC_register_main_static_data): declare.
* include/private/gcconfig.h (REGISTER_LIBRARIES_EARLY): define
for LINUX.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63727 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'boehm-gc/alloc.c')
-rw-r--r-- | boehm-gc/alloc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/boehm-gc/alloc.c b/boehm-gc/alloc.c index 8a413b275f8..f2e5af05720 100644 --- a/boehm-gc/alloc.c +++ b/boehm-gc/alloc.c @@ -306,6 +306,7 @@ void GC_maybe_gc() GC_bool GC_try_to_collect_inner(stop_func) GC_stop_func stop_func; { + if (GC_dont_gc) return FALSE; if (GC_incremental && GC_collection_in_progress()) { # ifdef CONDPRINT if (GC_print_stats) { @@ -386,6 +387,7 @@ int n; { register int i; + if (GC_dont_gc) return; if (GC_incremental && GC_collection_in_progress()) { for (i = GC_deficit; i < GC_RATE*n; i++) { if (GC_mark_some((ptr_t)0)) { @@ -446,6 +448,9 @@ GC_stop_func stop_func; CLOCK_TYPE start_time, current_time; # endif +# if defined(REGISTER_LIBRARIES_EARLY) + GC_cond_register_dynamic_libraries(); +# endif STOP_WORLD(); # ifdef PRINTTIMES GET_TIME(start_time); |