SCM obj;
{
struct scm_async * it;
- if (SCM_GC8MARKP (obj))
- return SCM_BOOL_F;
- SCM_SETGC8MARK (obj);
it = SCM_ASYNC (obj);
return it->thunk;
}
}
static scm_smobfuns debugobjsmob =
-{scm_mark0, scm_free0, prindebugobj, 0};
+{0, scm_free0, prindebugobj, 0};
SCM_PROC (s_debug_object_p, "debug-object?", 1, 0, 0, scm_debug_object_p);
SCM ptr;
{
struct dynl_obj *d = (struct dynl_obj *)SCM_CDR (ptr);
- SCM_SETGC8MARK (ptr);
return d->filename;
}
}
static scm_smobfuns guardsmob = {
- scm_mark0,
+ 0,
freeguards,
printguards,
0
return 0;
}
-static scm_smobfuns dir_smob = {scm_mark0, scm_dir_free, scm_dir_print, 0};
+static scm_smobfuns dir_smob = {0, scm_dir_free, scm_dir_print, 0};
\f
/* {Navigating Directories}
}
static scm_smobfuns fluid_smob = {
- scm_mark0,
+ 0,
scm_free0,
print_fluid
};
\f
scm_ptobfuns scm_fptob =
{
- scm_mark0,
+ 0,
(int (*) SCM_P ((SCM))) local_fclose,
prinfport,
0,
/* {Pipe ports} */
scm_ptobfuns scm_pipob =
{
- scm_mark0,
+ 0,
(int (*) SCM_P ((SCM))) local_pclose,
print_pipe_port,
0,
goto def;
if (SCM_GC8MARKP (ptr))
break;
+ SCM_SETGC8MARK (ptr);
if (SCM_PTAB_ENTRY(ptr))
scm_gc_mark (SCM_PTAB_ENTRY(ptr)->file_name);
- ptr = (scm_ptobs[i].mark) (ptr);
- goto gc_mark_loop;
+ if (scm_ptobs[i].mark)
+ {
+ ptr = (scm_ptobs[i].mark) (ptr);
+ goto gc_mark_loop;
+ }
+ else
+ return;
break;
case scm_tc7_smob:
if (SCM_GC8MARKP (ptr))
break;
- switch SCM_TYP16 (ptr)
+ SCM_SETGC8MARK (ptr);
+ switch SCM_GCTYP16 (ptr)
{ /* should be faster than going through scm_smobs */
case scm_tc_free_cell:
/* printf("found free_cell %X ", ptr); fflush(stdout); */
- SCM_SETGC8MARK (ptr);
SCM_SETCDR (ptr, SCM_EOL);
break;
case scm_tcs_bignums:
case scm_tc16_flo:
- SCM_SETGC8MARK (ptr);
break;
default:
i = SCM_SMOBNUM (ptr);
if (!(i < scm_numsmob))
goto def;
- ptr = (scm_smobs[i].mark) (ptr);
- goto gc_mark_loop;
+ if (scm_smobs[i].mark)
+ {
+ ptr = (scm_smobs[i].mark) (ptr);
+ goto gc_mark_loop;
+ }
+ else
+ return;
}
break;
default:
\f
int scm_tc16_malloc;
-static scm_smobfuns mallocsmob = {scm_mark0, fmalloc, prinmalloc, 0};
+static scm_smobfuns mallocsmob = {0, fmalloc, prinmalloc, 0};
\f
*/
+/* This function is vestigial. It used to be the mark function's
+ responsibility to set the mark bit on the smob or port, but now the
+ generic marking routine in gc.c takes care of that, and a zero
+ pointer for a mark function means "don't bother". So you never
+ need scm_mark0.
+
+ However, we leave it here because it's harmless to call it, and
+ people out there have smob code that uses it, and there's no reason
+ to make their links fail. */
+
SCM
scm_mark0 (ptr)
SCM ptr;
{
- SCM_SETGC8MARK (ptr);
return SCM_BOOL_F;
}
scm_markcdr (ptr)
SCM ptr;
{
- if (SCM_GC8MARKP (ptr))
- return SCM_BOOL_F;
- SCM_SETGC8MARK (ptr);
return SCM_CDR (ptr);
}
SCM ptr;
{
int openp;
- if (SCM_GC8MARKP (ptr))
- return SCM_BOOL_F;
openp = SCM_CAR (ptr) & SCM_OPN;
- SCM_SETGC8MARK (ptr);
if (openp)
return SCM_STREAM (ptr);
else
static struct scm_ptobfuns void_port_ptob =
{
- scm_mark0,
+ 0,
noop0,
print_void_port,
0, /* equal? */
static scm_smobfuns regex_t_smob =
-{ scm_mark0, scm_free_regex_t, scm_print_regex_t, 0 };
+{ 0, scm_free_regex_t, scm_print_regex_t, 0 };
\f
SCM_SYMBOL (scm_regexp_error_key, "regular-expression-syntax");
SCM root;
{
scm_root_state *s = SCM_ROOT_STATE (root);
- SCM_SETGC8MARK (root);
+
scm_gc_mark (s->rootcont);
scm_gc_mark (s->dynwinds);
scm_gc_mark (s->continuation_stack);
static scm_smobfuns freecell =
{
- scm_mark0,
+ 0,
scm_free0,
0,
0
static scm_smobfuns flob =
{
- scm_mark0,
+ 0,
/*flofree*/ 0,
scm_floprint,
scm_floequal
static scm_smobfuns bigob =
{
- scm_mark0,
+ 0,
/*bigfree*/ 0,
scm_bigprint,
scm_bigequal
marksrcprops (obj)
SCM obj;
{
- SCM_SETGC8MARK (obj);
scm_gc_mark (SRCPROPFNAME (obj));
scm_gc_mark (SRCPROPCOPY (obj));
return SRCPROPPLIST (obj);
static scm_smobfuns thread_smob =
{
- scm_mark0,
+ 0,
scm_threads_free_thread,
print_thread,
0
static scm_smobfuns mutex_smob =
{
- scm_mark0,
+ 0,
scm_threads_free_mutex,
print_mutex,
0
static scm_smobfuns condvar_smob =
{
- scm_mark0,
+ 0,
scm_threads_free_condvar,
print_condvar,
0
}
static scm_smobfuns jbsmob = {
- scm_mark0,
+ 0,
#ifdef DEBUG_EXTENSIONS
freejb,
#else
}
static scm_smobfuns lazy_catch_funs = {
- scm_mark0, scm_free0, print_lazy_catch, 0
+ 0, scm_free0, print_lazy_catch, 0
};
markra (ptr)
SCM ptr;
{
- if SCM_GC8MARKP
- (ptr) return SCM_BOOL_F;
- SCM_SETGC8MARK (ptr);
return SCM_ARRAY_V (ptr);
}
scm_markvar (ptr)
SCM ptr;
{
- if (SCM_GC8MARKP (ptr))
- return SCM_BOOL_F;
- SCM_SETGC8MARK (ptr);
return SCM_CDR (ptr);
}