1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-02 04:40:29 +02:00
This commit is contained in:
Keisuke Nishida 2001-04-07 23:32:03 +00:00
parent 25ec54b542
commit c8b9df71f7

View file

@ -281,9 +281,10 @@ VM_DEFINE_INSTRUCTION (call, "call", 1, -1, 1)
{ {
SCM x; SCM x;
nargs = FETCH (); nargs = FETCH ();
x = sp[-nargs];
vm_call: vm_call:
x = sp[-nargs];
/* /*
* Subprogram call * Subprogram call
*/ */
@ -412,7 +413,23 @@ VM_DEFINE_INSTRUCTION (tail_call, "tail-call", 1, -1, 1)
VM_DEFINE_INSTRUCTION (apply, "apply", 1, -1, 1) VM_DEFINE_INSTRUCTION (apply, "apply", 1, -1, 1)
{ {
int len;
SCM ls;
POP (ls);
nargs = FETCH ();
if (nargs < 2)
goto vm_error_wrong_num_args;
len = scm_ilength (ls);
if (len < 0)
goto vm_error_wrong_type_arg;
for (; !SCM_NULLP (ls); ls = SCM_CDR (ls))
PUSH (SCM_CAR (ls));
nargs += len - 2;
goto vm_call;
} }
VM_DEFINE_INSTRUCTION (call_cc, "call/cc", 1, 1, 1) VM_DEFINE_INSTRUCTION (call_cc, "call/cc", 1, 1, 1)