misc.c: Back out buggy changes to stack clearing code.
authorHans Boehm <Hans_Boehm@hp.com>
Sat, 7 Apr 2001 00:11:43 +0000 (17:11 -0700)
committerPer Bothner <bothner@gcc.gnu.org>
Sat, 7 Apr 2001 00:11:43 +0000 (17:11 -0700)
* 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

boehm-gc/ChangeLog
boehm-gc/misc.c

index 31b8ebe038e7d7d883278e8338ea16a1428ce31b..091f27d6d835e71cb5e55de8336bbdfb39a338f3 100644 (file)
@@ -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:
index 1e1ada574578ef7cbd627aa12ada4ba0abf6476a..9edb9453bb4169ef3bc8fd89e514676b4be3ac93 100644 (file)
@@ -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 */