remove GC bits documentation from the tags table.
authorHan-Wen Nienhuys <hanwen@lilypond.org>
Mon, 5 Aug 2002 17:46:34 +0000 (17:46 +0000)
committerHan-Wen Nienhuys <hanwen@lilypond.org>
Mon, 5 Aug 2002 17:46:34 +0000 (17:46 +0000)
libguile/ChangeLog
libguile/gc-card.c
libguile/gc-mark.c
libguile/tags.h

index ccef7d0..62b6a1e 100644 (file)
@@ -1,5 +1,7 @@
 2002-08-05  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
+       * tags.h: remove GC bits documentation from the tags table. 
+
        * read.c (INPUT_ERROR): Prepare for file:line:column error
        messages for errors in scm_lreadr() and friends.
 
index 7daa6df..6f82488 100644 (file)
@@ -91,6 +91,7 @@ scm_i_sweep_card (scm_t_cell *  p, SCM *free_list, int span)
     the bitvec in turn, but it wasn't any faster, but quite bit
     hairier.
    */
+
   for (p += offset; p < end; p += span, offset += span)
     {
       SCM scmptr = PTR2SCM(p);
index 49cb77e..466874a 100644 (file)
@@ -192,7 +192,7 @@ scm_gc_mark (SCM ptr)
 
 Mark the dependencies of an object.
 
-TODO:
+Prefetching:
 
 Should prefetch objects before marking, i.e. if marking a cell, we
 should prefetch the car, and then mark the cdr. This will improve CPU
@@ -204,7 +204,13 @@ garbage collector cache misses.
 
 Prefetch is supported on GCC >= 3.1 
 
- */
+(Some time later.)
+
+Tried this with GCC 3.1.1 -- the time differences are barely measurable.
+Perhaps this would work better with an explicit markstack?
+
+
+*/
 void
 scm_gc_mark_dependencies (SCM p)
 #define FUNC_NAME "scm_gc_mark_dependencies"
@@ -225,6 +231,8 @@ scm_gc_mark_dependencies (SCM p)
          ptr = SCM_CAR (ptr);
          goto gc_mark_nimp;
        }
+
+
       scm_gc_mark (SCM_CAR (ptr));
       ptr = SCM_CDR (ptr);
       goto gc_mark_nimp;
@@ -232,6 +240,7 @@ scm_gc_mark_dependencies (SCM p)
       ptr = SCM_CDR (ptr);
       goto gc_mark_loop;
     case scm_tc7_pws:
+
       scm_gc_mark (SCM_SETTER (ptr));
       ptr = SCM_PROCEDURE (ptr);
       goto gc_mark_loop;
@@ -285,8 +294,10 @@ scm_gc_mark_dependencies (SCM p)
       if (i == 0)
        break;
       while (--i > 0)
-       if (SCM_NIMP (SCM_VELTS (ptr)[i]))
-         scm_gc_mark (SCM_VELTS (ptr)[i]);
+       {
+         if (SCM_NIMP (SCM_VELTS (ptr)[i]))
+           scm_gc_mark (SCM_VELTS (ptr)[i]);
+       }
       ptr = SCM_VELTS (ptr)[0];
       goto gc_mark_loop;
 #ifdef CCLO
index 26d4e89..3235b77 100644 (file)
@@ -229,12 +229,10 @@ typedef signed long scm_t_signed_bits;
  *
  * Here is a summary of tags in the CAR of a non-immediate:
  *
- *   HEAP CELL:        G=gc_mark; 1 during mark, 0 other times.
- *
- * cons           ..........SCM car..............0  ...........SCM cdr.............G
- * struct  ..........void * type........001  ...........void * data.........G
- * closure ..........SCM code...........011  ...........SCM env.............G
- * tc7    ......24.bits of data...Gxxxx1S1  ..........void *data............
+ * cons           ..........SCM car..............0  ...........SCM cdr.............0
+ * struct  ..........void * type........001  ...........void * data.........0
+ * closure ..........SCM code...........011  ...........SCM env.............0
+ * tc7    ......24.bits of data...0xxxx1S1  ..........void *data............
  *
  *
  *