1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-14 07:30:32 +02:00

be more like the interpreter in signalling wrong-num-args

* libguile/vm-engine.c: Call scm_wrong_num_args in the wrong-num-args
  case, to be more like the interpreter.

* libguile/vm-engine.h (ASSERT): New macro.

* libguile/vm-i-system.c (apply, goto/apply): Assert that nargs >= 2,
  because the compiler should always feed us correct instructions.
  (call/cc): If no values are returned to the continuation, signal
  no_values instead of wrong_num_args.
This commit is contained in:
Andy Wingo 2008-10-02 11:00:55 +02:00
parent 7e91e01dd8
commit 9a8cc8e7f7
3 changed files with 15 additions and 7 deletions

View file

@ -840,8 +840,7 @@ VM_DEFINE_INSTRUCTION (apply, "apply", 1, -1, 1)
POP (ls);
nargs = FETCH ();
if (nargs < 2)
goto vm_error_wrong_num_args;
ASSERT (nargs >= 2);
len = scm_ilength (ls);
if (len < 0)
@ -861,8 +860,7 @@ VM_DEFINE_INSTRUCTION (goto_apply, "goto/apply", 1, -1, 1)
POP (ls);
nargs = FETCH ();
if (nargs < 2)
goto vm_error_wrong_num_args;
ASSERT (nargs >= 2);
len = scm_ilength (ls);
if (len < 0)
@ -895,7 +893,7 @@ VM_DEFINE_INSTRUCTION (call_cc, "call/cc", 0, 1, 1)
SCM values;
values = scm_struct_ref (cont, SCM_INUM0);
if (SCM_NULLP (values))
goto vm_error_wrong_num_args;
goto vm_error_no_values;
/* non-tail context does not accept multiple values? */
PUSH (SCM_CAR (values));
NEXT;