diff options
author | Andy Wingo <wingo@pobox.com> | 2010-01-09 21:48:16 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2010-01-09 21:48:16 +0100 |
commit | fc7648637b356078988ca1ed598e74c394beeaaa (patch) | |
tree | 2080fce333a678ed5704005536b54d84d496e1a1 /libguile/vm-i-system.c | |
parent | 37e9bc8ae48ae2c014fd4f63fc37b18348d05513 (diff) | |
download | guile-fc7648637b356078988ca1ed598e74c394beeaaa.tar.gz |
fix bug in subr-call and smob-call
* libguile/vm-i-system.c (subr-call, smob-call): Unlike the previous
situation, in which a call to a subr or a smob didn't actually build a
frame, we no longer need to explicitly pop the procedure and its
arguments. Indeed the procedure and its arguments must remain on the
stack, for hooks and ticks and such always to see frames with valid
procedures. Two lines out, two bugs less, and faster to boot.
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r-- | libguile/vm-i-system.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c index cc32804f7..2e1dae9d0 100644 --- a/libguile/vm-i-system.c +++ b/libguile/vm-i-system.c @@ -887,7 +887,6 @@ VM_DEFINE_INSTRUCTION (80, subr_call, "subr-call", 1, -1, -1) } NULLSTACK_FOR_NONLOCAL_EXIT (); - DROPN (nargs + 1); /* drop args and procedure */ if (SCM_UNLIKELY (SCM_VALUESP (ret))) { @@ -935,7 +934,6 @@ VM_DEFINE_INSTRUCTION (81, smob_call, "smob-call", 1, -1, -1) } NULLSTACK_FOR_NONLOCAL_EXIT (); - DROPN (nargs + 1); /* drop args and procedure */ if (SCM_UNLIKELY (SCM_VALUESP (ret))) { |