summaryrefslogtreecommitdiff
path: root/libguile/debug.h
diff options
context:
space:
mode:
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2004-06-27 12:34:54 +0000
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2004-06-27 12:34:54 +0000
commit9fcf3cbb818cb3568f8649b6b8f8b2635caeaa6f (patch)
tree415527d595b5518767c4a7d3977ad725bf21b2b8 /libguile/debug.h
parent90df793f6794d18810de7e07b7532a2e67325145 (diff)
downloadguile-9fcf3cbb818cb3568f8649b6b8f8b2635caeaa6f.tar.gz
* backtrace.c (display_expression, display_frame): Call
scm_i_unmemoize_expr for unmemoizing a memoized object holding a single memoized expression. * debug.c (memoized_print): Don't try to unmemoize the memoized object, since we can't know whether it holds a single expression or a body. (scm_mem_to_proc): Removed check for lambda expression, since it was moot anyway. Whoever uses these functions for debugging purposes should know what they do: Creating invalid memoized code will cause crashes, independent of whether this check is present or not. (scm_proc_to_mem): Take the closure's code as it is and don't append a SCM_IM_LAMBDA isym. To allow easier debugging, the memoized code should not be modified. * debug.[ch] (scm_unmemoize, scm_i_unmemoize_expr): Removed scm_unmemoize from public use, but made scm_i_unmemoize_expr available as a guile internal function instead. However, scm_i_unmemoize_expr will only work on memoized objects that hold a single memoized expression. It won't work with bodies. * debug.c (scm_procedure_source), macros.c (macro_print), print.c (scm_iprin1): Call scm_i_unmemocopy_body for unmemoizing a body, i. e. a list of expressions. * eval.c (unmemoize_exprs): Drop internal body markers from the output during unmemoization. * eval.[ch] (scm_unmemocopy, scm_i_unmemocopy_expr, scm_i_unmemocopy_body): Removed scm_unmemocopy from public use, but made scm_i_unmemocopy_expr and scm_i_unmemocopy_body available as guile internal functions instead. scm_i_unmemoize_expr will only work on a single memoized expression, while scm_i_unmemocopy_body will only work on bodies.
Diffstat (limited to 'libguile/debug.h')
-rw-r--r--libguile/debug.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/libguile/debug.h b/libguile/debug.h
index de4a0054b..426215cc6 100644
--- a/libguile/debug.h
+++ b/libguile/debug.h
@@ -161,8 +161,9 @@ SCM_API SCM scm_memoized_p (SCM obj);
SCM_API SCM scm_with_traps (SCM thunk);
SCM_API SCM scm_evaluator_traps (SCM setting);
SCM_API SCM scm_debug_options (SCM setting);
-SCM_API SCM scm_unmemoize (SCM memoized);
SCM_API SCM scm_make_debugobj (scm_t_debug_frame *debug);
+
+SCM_API SCM scm_i_unmemoize_expr (SCM memoized);
SCM_API void scm_init_debug (void);
#ifdef GUILE_DEBUG