From d89b907d2dc260bee706f787e05f55344b61785e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 16 Nov 2015 20:13:22 -0800 Subject: Useful debugging function for spurious retention. * gc.c (gc_report_copies): New function * gc.h (gc_report_copies): Declared. --- gc.c | 12 ++++++++++++ gc.h | 1 + 2 files changed, 13 insertions(+) diff --git a/gc.c b/gc.c index 58f0790c..fdc32195 100644 --- a/gc.c +++ b/gc.c @@ -918,3 +918,15 @@ void gc_hint_func(val *val) { (void) val; } + +void gc_report_copies(val *pvar) +{ + val *opvar = pvar; + val obj = *pvar++; + + for (; pvar < gc_stack_bottom; pvar++) { + if (*pvar == obj) + printf("%p found at %p (offset %d)\n", + (void *) obj, (void *) pvar, (int) (pvar - opvar)); + } +} diff --git a/gc.h b/gc.h index a945da7d..0e8ac1f5 100644 --- a/gc.h +++ b/gc.h @@ -47,6 +47,7 @@ extern int full_gc; void unmark(void); void gc_hint_func(val *); +void gc_report_copies(val *pvar); extern int gc_enabled; extern val **gc_prot_top; -- cgit v1.2.3