1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 14:21:10 +02:00

remove GC bits documentation from the tags table.

This commit is contained in:
Han-Wen Nienhuys 2002-08-05 17:46:34 +00:00
parent 39e8f371e2
commit 33138b0567
4 changed files with 22 additions and 10 deletions

View file

@ -1,5 +1,7 @@
2002-08-05 Han-Wen Nienhuys <hanwen@cs.uu.nl> 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 * read.c (INPUT_ERROR): Prepare for file:line:column error
messages for errors in scm_lreadr() and friends. messages for errors in scm_lreadr() and friends.

View 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 the bitvec in turn, but it wasn't any faster, but quite bit
hairier. hairier.
*/ */
for (p += offset; p < end; p += span, offset += span) for (p += offset; p < end; p += span, offset += span)
{ {
SCM scmptr = PTR2SCM(p); SCM scmptr = PTR2SCM(p);

View file

@ -192,7 +192,7 @@ scm_gc_mark (SCM ptr)
Mark the dependencies of an object. Mark the dependencies of an object.
TODO: Prefetching:
Should prefetch objects before marking, i.e. if marking a cell, we 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 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 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 void
scm_gc_mark_dependencies (SCM p) scm_gc_mark_dependencies (SCM p)
#define FUNC_NAME "scm_gc_mark_dependencies" #define FUNC_NAME "scm_gc_mark_dependencies"
@ -225,6 +231,8 @@ scm_gc_mark_dependencies (SCM p)
ptr = SCM_CAR (ptr); ptr = SCM_CAR (ptr);
goto gc_mark_nimp; goto gc_mark_nimp;
} }
scm_gc_mark (SCM_CAR (ptr)); scm_gc_mark (SCM_CAR (ptr));
ptr = SCM_CDR (ptr); ptr = SCM_CDR (ptr);
goto gc_mark_nimp; goto gc_mark_nimp;
@ -232,6 +240,7 @@ scm_gc_mark_dependencies (SCM p)
ptr = SCM_CDR (ptr); ptr = SCM_CDR (ptr);
goto gc_mark_loop; goto gc_mark_loop;
case scm_tc7_pws: case scm_tc7_pws:
scm_gc_mark (SCM_SETTER (ptr)); scm_gc_mark (SCM_SETTER (ptr));
ptr = SCM_PROCEDURE (ptr); ptr = SCM_PROCEDURE (ptr);
goto gc_mark_loop; goto gc_mark_loop;
@ -285,8 +294,10 @@ scm_gc_mark_dependencies (SCM p)
if (i == 0) if (i == 0)
break; break;
while (--i > 0) 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]; ptr = SCM_VELTS (ptr)[0];
goto gc_mark_loop; goto gc_mark_loop;
#ifdef CCLO #ifdef CCLO

View 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: * 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.............0
* * struct ..........void * type........001 ...........void * data.........0
* cons ..........SCM car..............0 ...........SCM cdr.............G * closure ..........SCM code...........011 ...........SCM env.............0
* struct ..........void * type........001 ...........void * data.........G * tc7 ......24.bits of data...0xxxx1S1 ..........void *data............
* closure ..........SCM code...........011 ...........SCM env.............G
* tc7 ......24.bits of data...Gxxxx1S1 ..........void *data............
* *
* *
* *