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.
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);
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
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"
ptr = SCM_CAR (ptr);
goto gc_mark_nimp;
}
+
+
scm_gc_mark (SCM_CAR (ptr));
ptr = SCM_CDR (ptr);
goto gc_mark_nimp;
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;
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
*
* 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............
*
*
*