1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-07-06 09:30:29 +02:00

Precise tracing works with heap-conservative-mmc

* libguile/ports.c (scm_make_port_type): Pin the ptob.
* libguile/threads.c (scm_trace_thread_roots): No need to trace dynstack
roots; we will do so within scm_trace_thread.
* libguile/trace.h (scm_trace_struct): Fix arg order to logbit?.
(scm_trace_ephemeron_table): Indentation fix.
(scm_trace_pointer): Actually trace the protected objects.
(scm_trace_vm):
(scm_trace_active_dynamic_state):
(scm_trace_thread): Fix to trace missing references.
(scm_trace_port): Trace the ptob and write_buf_aux.
(scm_trace_random_state): Add comment about rng being static.
* libguile/whippet-embedder.h (gc_is_valid_conservative_ref_displacement):
Don't hide behind an ifdef.
This commit is contained in:
Andy Wingo 2025-07-02 15:11:03 +02:00
parent 24f5e43e61
commit e51cf4bf65
5 changed files with 54 additions and 63 deletions

View file

@ -49,15 +49,16 @@ static inline size_t gc_finalizer_priority_count (void) { return 2; }
static inline int
gc_is_valid_conservative_ref_displacement (uintptr_t displacement) {
#if GC_CONSERVATIVE_ROOTS || GC_CONSERVATIVE_TRACE
if (displacement == 0) return 1;
if (displacement == scm_tc3_cons) return 1;
if (displacement == scm_tc3_struct) return 1;
return 0;
#else
if (GC_CONSERVATIVE_ROOTS || GC_CONSERVATIVE_TRACE)
{
if (displacement == 0) return 1;
if (displacement == scm_tc3_cons) return 1;
if (displacement == scm_tc3_struct) return 1;
return 0;
}
// Shouldn't get here.
GC_CRASH ();
#endif
}
// FIXME: Here add tracing for SCM literals in .go files or .data