mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-13 07:10:20 +02:00
* gc.c (scm_gc_sweep): added a `continue' statement that have
fallen through the cracks in the merge. thanks to Shuji Narazaki!
This commit is contained in:
parent
5aba8e27ab
commit
7bb8eac780
1 changed files with 7 additions and 6 deletions
|
@ -1178,7 +1178,7 @@ gc_mark_nimp:
|
||||||
int len = SCM_LENGTH (layout);
|
int len = SCM_LENGTH (layout);
|
||||||
char * fields_desc = SCM_CHARS (layout);
|
char * fields_desc = SCM_CHARS (layout);
|
||||||
scm_bits_t * struct_data = (scm_bits_t *) SCM_STRUCT_DATA (ptr);
|
scm_bits_t * struct_data = (scm_bits_t *) SCM_STRUCT_DATA (ptr);
|
||||||
|
|
||||||
if (vtable_data[scm_struct_i_flags] & SCM_STRUCTF_ENTITY)
|
if (vtable_data[scm_struct_i_flags] & SCM_STRUCTF_ENTITY)
|
||||||
{
|
{
|
||||||
scm_gc_mark (SCM_PACK (struct_data[scm_struct_i_procedure]));
|
scm_gc_mark (SCM_PACK (struct_data[scm_struct_i_procedure]));
|
||||||
|
@ -1187,7 +1187,7 @@ gc_mark_nimp:
|
||||||
if (len)
|
if (len)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
for (x = 0; x < len - 2; x += 2, ++struct_data)
|
for (x = 0; x < len - 2; x += 2, ++struct_data)
|
||||||
if (fields_desc[x] == 'p')
|
if (fields_desc[x] == 'p')
|
||||||
scm_gc_mark (SCM_PACK (*struct_data));
|
scm_gc_mark (SCM_PACK (*struct_data));
|
||||||
|
@ -1421,10 +1421,10 @@ scm_mark_locations (SCM_STACKITEM x[], scm_sizet n)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SCM_GC_IN_CARD_HEADERP (ptr))
|
if (SCM_GC_IN_CARD_HEADERP (ptr))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (scm_heap_table[seg_id].span == 1
|
if (scm_heap_table[seg_id].span == 1
|
||||||
|| SCM_DOUBLE_CELLP (obj))
|
|| SCM_DOUBLE_CELLP (obj))
|
||||||
{
|
{
|
||||||
|
@ -1581,7 +1581,7 @@ scm_gc_sweep ()
|
||||||
|
|
||||||
if (SCM_GCMARKP (scmptr))
|
if (SCM_GCMARKP (scmptr))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
switch SCM_TYP7 (scmptr)
|
switch SCM_TYP7 (scmptr)
|
||||||
{
|
{
|
||||||
case scm_tcs_cons_gloc:
|
case scm_tcs_cons_gloc:
|
||||||
|
@ -1601,6 +1601,7 @@ scm_gc_sweep ()
|
||||||
*/
|
*/
|
||||||
SCM_SET_STRUCT_GC_CHAIN (scmptr, scm_structs_to_free);
|
SCM_SET_STRUCT_GC_CHAIN (scmptr, scm_structs_to_free);
|
||||||
scm_structs_to_free = scmptr;
|
scm_structs_to_free = scmptr;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
/* fall through so that scmptr gets collected */
|
/* fall through so that scmptr gets collected */
|
||||||
}
|
}
|
||||||
|
@ -1720,7 +1721,7 @@ scm_gc_sweep ()
|
||||||
sweeperr:
|
sweeperr:
|
||||||
SCM_MISC_ERROR ("unknown type", SCM_EOL);
|
SCM_MISC_ERROR ("unknown type", SCM_EOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!--left_to_collect)
|
if (!--left_to_collect)
|
||||||
{
|
{
|
||||||
SCM_SETCAR (scmptr, nfreelist);
|
SCM_SETCAR (scmptr, nfreelist);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue