1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 15:40:19 +02:00

RETURN_HOOK communicates the number of returned values

* libguile/vm-engine.h (RUN_HOOK1): Add some machinery whereby a hook
  can push an arg on the stack, run the hook, then drop the value.
  (RETURN_HOOK): Use it here, so we push the number of returned values.

* libguile/vm-i-system.c (return, return-values): Adapt to RETURN_HOOK
  changes.
This commit is contained in:
Andy Wingo 2010-01-13 23:14:12 +01:00
parent 7e9f96021a
commit 45cc48673a
2 changed files with 15 additions and 3 deletions

View file

@ -1123,7 +1123,7 @@ VM_DEFINE_INSTRUCTION (63, return, "return", 0, 1, 1)
{
vm_return:
EXIT_HOOK ();
RETURN_HOOK ();
RETURN_HOOK (1);
VM_HANDLE_INTERRUPTS;
@ -1163,7 +1163,7 @@ VM_DEFINE_INSTRUCTION (64, return_values, "return/values", 1, -1, -1)
nvalues = FETCH ();
vm_return_values:
EXIT_HOOK ();
RETURN_HOOK ();
RETURN_HOOK (nvalues);
VM_HANDLE_INTERRUPTS;