diff options
author | Andy Wingo <wingo@pobox.com> | 2011-04-11 23:30:52 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-04-11 23:30:52 +0200 |
commit | 21c05db45b69f8a62b84c36abc86cb935fa967d7 (patch) | |
tree | 743df01da540e7fd628f54894e7d5fbe94b03996 /libguile/eval.c | |
parent | 4db853d747ac115f799c93e2de93f5159ad84109 (diff) | |
parent | c89b45299329d034875429804f18768c1ea96713 (diff) | |
download | guile-21c05db45b69f8a62b84c36abc86cb935fa967d7.tar.gz |
Merge remote branch 'origin/stable-2.0'
Conflicts:
GUILE-VERSION
test-suite/tests/srfi-4.test
Diffstat (limited to 'libguile/eval.c')
-rw-r--r-- | libguile/eval.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/libguile/eval.c b/libguile/eval.c index 6f2020ebc..164aadd70 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -424,7 +424,7 @@ eval (SCM x, SCM env) { /* The prompt exited nonlocally. */ proc = handler; - args = scm_i_prompt_pop_abort_args_x (prompt); + args = scm_i_prompt_pop_abort_args_x (scm_the_vm ()); goto apply_proc; } @@ -477,6 +477,21 @@ scm_call_4 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4) } SCM +scm_call_5 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4, SCM arg5) +{ + SCM args[] = { arg1, arg2, arg3, arg4, arg5 }; + return scm_c_vm_run (scm_the_vm (), proc, args, 5); +} + +SCM +scm_call_6 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM arg4, SCM arg5, + SCM arg6) +{ + SCM args[] = { arg1, arg2, arg3, arg4, arg5, arg6 }; + return scm_c_vm_run (scm_the_vm (), proc, args, 6); +} + +SCM scm_call_n (SCM proc, SCM *argv, size_t nargs) { return scm_c_vm_run (scm_the_vm (), proc, argv, nargs); @@ -543,11 +558,7 @@ SCM_DEFINE (scm_nconc2last, "apply:nconc2last", 1, 0, 0, SCM *lloc; SCM_VALIDATE_NONEMPTYLIST (1, lst); lloc = &lst; - while (!scm_is_null (SCM_CDR (*lloc))) /* Perhaps should be - SCM_NULL_OR_NIL_P, but not - needed in 99.99% of cases, - and it could seriously hurt - performance. - Neil */ + while (!scm_is_null (SCM_CDR (*lloc))) lloc = SCM_CDRLOC (*lloc); SCM_ASSERT (scm_ilength (SCM_CAR (*lloc)) >= 0, lst, SCM_ARG1, FUNC_NAME); *lloc = SCM_CAR (*lloc); |