include type information in mark_delays.
This commit is contained in:
parent
24c2650472
commit
3a7b3e15c6
31
C/heapgc.c
31
C/heapgc.c
@ -1473,16 +1473,6 @@ mark_regs(tr_fr_ptr old_TR)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef COROUTINING
|
|
||||||
static void
|
|
||||||
mark_delays(CELL *max)
|
|
||||||
{
|
|
||||||
for (; max < H0; max++) {
|
|
||||||
mark_external_reference2(max);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* mark all heap objects accessible from a chain of environments */
|
/* mark all heap objects accessible from a chain of environments */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1812,6 +1802,23 @@ mark_slots(CELL *ptr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef COROUTINING
|
||||||
|
static void
|
||||||
|
mark_delays(attvar_record *top, attvar_record *bottom)
|
||||||
|
{
|
||||||
|
attvar_record *attv = (attvar_record *)top;
|
||||||
|
for (; attv < bottom; attv++) {
|
||||||
|
mark_external_reference2(&attv->Done);
|
||||||
|
mark_external_reference2(&attv->Value);
|
||||||
|
mark_external_reference2(&attv->Atts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define mark_delays(T,B)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose)
|
mark_choicepoints(register choiceptr gc_B, tr_fr_ptr saved_TR, int very_verbose)
|
||||||
{
|
{
|
||||||
@ -3446,13 +3453,11 @@ marking_phase(tr_fr_ptr old_TR, CELL *current_env, yamop *curp, CELL *max)
|
|||||||
cont_top0 = (cont *)db_vec;
|
cont_top0 = (cont *)db_vec;
|
||||||
#endif
|
#endif
|
||||||
cont_top = (cont *)db_vec;
|
cont_top = (cont *)db_vec;
|
||||||
#ifdef COROUTINING
|
|
||||||
mark_delays(max);
|
|
||||||
#endif
|
|
||||||
/* These two must be marked first so that our trail optimisation won't lose
|
/* These two must be marked first so that our trail optimisation won't lose
|
||||||
values */
|
values */
|
||||||
mark_regs(old_TR); /* active registers & trail */
|
mark_regs(old_TR); /* active registers & trail */
|
||||||
/* active environments */
|
/* active environments */
|
||||||
|
mark_delays((attvar_record *)max, (attvar_record *)H0);
|
||||||
mark_environments(current_env, EnvSize(curp), EnvBMap((CELL *)curp));
|
mark_environments(current_env, EnvSize(curp), EnvBMap((CELL *)curp));
|
||||||
mark_choicepoints(B, old_TR, is_gc_very_verbose()); /* choicepoints, and environs */
|
mark_choicepoints(B, old_TR, is_gc_very_verbose()); /* choicepoints, and environs */
|
||||||
#ifdef EASY_SHUNTING
|
#ifdef EASY_SHUNTING
|
||||||
|
Reference in New Issue
Block a user