diff options
author | Hans Boehm <Hans_Boehm@hp.com> | 2001-04-06 17:11:43 -0700 |
---|---|---|
committer | Per Bothner <bothner@gcc.gnu.org> | 2001-04-06 17:11:43 -0700 |
commit | c8cd06a8137b153b373c16a2d681aaca2c423425 (patch) | |
tree | 45fce1262c5241e4b2007ad637999e4734424ffb /boehm-gc | |
parent | 14bc1c0e15633ea781d76d0ae4274b2e27d51db5 (diff) | |
download | gcc-c8cd06a8137b153b373c16a2d681aaca2c423425.zip gcc-c8cd06a8137b153b373c16a2d681aaca2c423425.tar.gz gcc-c8cd06a8137b153b373c16a2d681aaca2c423425.tar.bz2 |
misc.c: Back out buggy changes to stack clearing code.
* misc.c: Back out buggy changes to stack clearing code.
Reduce CLEAR_SIZE to 1/4 of original value to reduce time
spent clearing memory.
From-SVN: r41172
Diffstat (limited to 'boehm-gc')
-rw-r--r-- | boehm-gc/ChangeLog | 6 | ||||
-rw-r--r-- | boehm-gc/misc.c | 23 |
2 files changed, 13 insertions, 16 deletions
diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index 31b8ebe..091f27d 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,3 +1,9 @@ +2001-04-05 Hans Boehm <hans_boehm@hp.com> + + * misc.c: Back out buggy changes to stack clearing code. + Reduce CLEAR_SIZE to 1/4 of original value to reduce time + spent clearing memory. + 2001-04-04 Hans Boehm <hans_boehm@hp.com> * finalize.c: diff --git a/boehm-gc/misc.c b/boehm-gc/misc.c index 1e1ada5..9edb945 100644 --- a/boehm-gc/misc.c +++ b/boehm-gc/misc.c @@ -206,10 +206,10 @@ extern signed_word GC_mem_found; */ word GC_stack_last_cleared = 0; /* GC_no when we last did this */ # ifdef THREADS -# define BIG_CLEAR_SIZE 2048 /* Clear this much now and then. */ -# define SMALL_CLEAR_SIZE 256 /* Clear this much every time. */ +# define CLEAR_SIZE 512 +# else +# define CLEAR_SIZE 213 # endif -# define CLEAR_SIZE 213 /* Granularity for GC_clear_stack_inner */ # define DEGRADE_RATE 50 word GC_min_sp; /* Coolest stack pointer value from which we've */ @@ -266,12 +266,10 @@ ptr_t arg; { register word sp = (word)GC_approx_sp(); /* Hotter than actual sp */ # ifdef THREADS - word dummy[SMALL_CLEAR_SIZE]; - unsigned random_no = 0; /* Should be more random than it is ... */ - /* Used to occasionally clear a bigger */ - /* chunk. */ + word dummy[CLEAR_SIZE]; +# else + register word limit; # endif - register word limit; # define SLOP 400 /* Extra bytes we clear every time. This clears our own */ @@ -289,14 +287,7 @@ ptr_t arg; /* thus more junk remains accessible, thus the heap gets */ /* larger ... */ # ifdef THREADS - if (++random_no % 13 == 0) { - limit = sp; - MAKE_HOTTER(limit, BIG_CLEAR_SIZE*sizeof(word)); - return GC_lear_stack_inner(arg, limit); - } else { - BZERO(dummy, SMALL_CLEAR_SIZE*sizeof(word)); - return arg; - } + BZERO(dummy, CLEAR_SIZE*sizeof(word)); # else if (GC_gc_no > GC_stack_last_cleared) { /* Start things over, so we clear the entire stack again */ |