summaryrefslogtreecommitdiff
path: root/libguile/debug.c
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>1996-10-14 20:28:18 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>1996-10-14 20:28:18 +0000
commitc6b8a41a55b9a89988e598800f242c698fa3e83b (patch)
tree0ae1bd5297d9fe4e12f2cc0890c094f440a30f00 /libguile/debug.c
parent473c250d0ae97ea7329c3a5b29573e26b18b5aa1 (diff)
downloadguile-c6b8a41a55b9a89988e598800f242c698fa3e83b.tar.gz
* debug.c (scm_procedure_name): Try procedure property `name' for
compiled closures aswell.
Diffstat (limited to 'libguile/debug.c')
-rw-r--r--libguile/debug.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/libguile/debug.c b/libguile/debug.c
index 5e3213ae0..dc985fccd 100644
--- a/libguile/debug.c
+++ b/libguile/debug.c
@@ -210,6 +210,7 @@ scm_procedure_name (proc)
s_procedure_name);
switch (SCM_TYP7 (proc)) {
case scm_tcs_closures:
+ case scm_tc7_cclo:
{
SCM name = scm_procedure_property (proc, scm_i_name);
#if 0
@@ -309,15 +310,23 @@ scm_m_start_stack (exp, env)
SCM env;
{
SCM answer;
- scm_debug_frame *old = scm_last_debug_frame;
+ scm_debug_frame *oframe = scm_last_debug_frame;
+ scm_debug_frame vframe;
exp = SCM_CDR (exp);
- SCM_ASSERT (SCM_NIMP (exp) && SCM_CONSP (exp) && SCM_NULLP (SCM_CDR (exp)),
+ SCM_ASSERT (SCM_NIMP (exp)
+ && SCM_CONSP (exp)
+ && SCM_NIMP (SCM_CDR (exp))
+ && SCM_CONSP (SCM_CDR (exp))
+ && SCM_NULLP (SCM_CDDR (exp)),
exp,
SCM_WNA,
s_start_stack);
- scm_last_debug_frame = 0;
- answer = scm_eval_car (exp, env);
- scm_last_debug_frame = old;
+ vframe.prev = 0;
+ vframe.status = SCM_VOIDFRAME;
+ vframe.vect[0].id = scm_eval_car (exp, env);
+ scm_last_debug_frame = &vframe;
+ answer = scm_eval_car (SCM_CDR (exp), env);
+ scm_last_debug_frame = oframe;
return answer;
}