diff options
author | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2004-06-27 12:34:54 +0000 |
---|---|---|
committer | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2004-06-27 12:34:54 +0000 |
commit | 9fcf3cbb818cb3568f8649b6b8f8b2635caeaa6f (patch) | |
tree | 415527d595b5518767c4a7d3977ad725bf21b2b8 /libguile/eval.h | |
parent | 90df793f6794d18810de7e07b7532a2e67325145 (diff) | |
download | guile-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/eval.h')
-rw-r--r-- | libguile/eval.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libguile/eval.h b/libguile/eval.h index 5ea3b8fd7..1d10e08b3 100644 --- a/libguile/eval.h +++ b/libguile/eval.h @@ -128,7 +128,6 @@ SCM_API SCM scm_sym_args; SCM_API SCM * scm_ilookup (SCM iloc, SCM env); SCM_API SCM * scm_lookupcar (SCM vloc, SCM genv, int check); -SCM_API SCM scm_unmemocopy (SCM form, SCM env); SCM_API SCM scm_eval_car (SCM pair, SCM env); SCM_API SCM scm_eval_body (SCM code, SCM env); SCM_API SCM scm_eval_args (SCM i, SCM env, SCM proc); @@ -197,6 +196,8 @@ SCM_API SCM scm_eval_x (SCM exp, SCM module); SCM_API void scm_i_print_iloc (SCM /*iloc*/, SCM /*port*/); SCM_API void scm_i_print_isym (SCM /*isym*/, SCM /*port*/); +SCM_API SCM scm_i_unmemocopy_expr (SCM expr, SCM env); +SCM_API SCM scm_i_unmemocopy_body (SCM forms, SCM env); SCM_API void scm_init_eval (void); |