Chez Scheme GC: fix interaction of backtrace and incremental promotion
Disable incremental promotion when backreferences are enabled, otherwise the backreference list for a generation can have references to younger-generation objects.
This commit is contained in:
parent
8a14d31f06
commit
716e6d9435
|
@ -1092,7 +1092,7 @@ static void check_dirty() {
|
||||||
}
|
}
|
||||||
if (s != space_new && s != space_impure && s != space_count_impure && s != space_symbol && s != space_port
|
if (s != space_new && s != space_impure && s != space_count_impure && s != space_symbol && s != space_port
|
||||||
&& s != space_impure_record && s != space_impure_typed_object && s != space_immobile_impure
|
&& s != space_impure_record && s != space_impure_typed_object && s != space_immobile_impure
|
||||||
&& s != space_weakpair && s != space_ephemeron) {
|
&& s != space_weakpair && s != space_ephemeron && s != space_closure) {
|
||||||
S_checkheap_errors += 1;
|
S_checkheap_errors += 1;
|
||||||
printf("!!! (check_dirty): unexpected space %d for dirty segment "PHtx"\n", s, (ptrdiff_t)(si->number));
|
printf("!!! (check_dirty): unexpected space %d for dirty segment "PHtx"\n", s, (ptrdiff_t)(si->number));
|
||||||
}
|
}
|
||||||
|
@ -1290,6 +1290,7 @@ ptr S_gc(ptr tc, IGEN max_cg, IGEN min_tg, IGEN max_tg, ptr count_roots) {
|
||||||
if (min_tg == static_generation
|
if (min_tg == static_generation
|
||||||
|| S_G.enable_object_counts || S_G.enable_object_backreferences
|
|| S_G.enable_object_counts || S_G.enable_object_backreferences
|
||||||
|| (count_roots != Sfalse)) {
|
|| (count_roots != Sfalse)) {
|
||||||
|
if (S_G.enable_object_backreferences) min_tg = max_tg;
|
||||||
return S_gc_oce(tc, max_cg, min_tg, max_tg, count_roots);
|
return S_gc_oce(tc, max_cg, min_tg, max_tg, count_roots);
|
||||||
#if defined(PTHREADS)
|
#if defined(PTHREADS)
|
||||||
} else if (S_collect_waiting_threads != 0) {
|
} else if (S_collect_waiting_threads != 0) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user