diff options
author | Andy Wingo <wingo@pobox.com> | 2009-12-01 21:59:42 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-01 21:59:42 +0100 |
commit | 23f276dea70668b7291589de1c7d7ea7ebd9026f (patch) | |
tree | 9efe3687daed1e4d3d09d9c9b26c919dffc9890d /libguile/eval.h | |
parent | 5161a3c0d7ec59e32a637bd093644a1a5b7b8dcf (diff) | |
download | guile-23f276dea70668b7291589de1c7d7ea7ebd9026f.tar.gz |
first step to make the vm stop calling the interpreter
* libguile/eval.h:
* libguile/eval.c (scm_closure_apply): New function, applies a closure.
Won't be necessary in the future, but for now here it is, with
internal linkage.
* libguile/gsubr.h:
* libguile/gsubr.c (scm_i_gsubr_apply_array): New function, applies a
gsubr to an array of values, potentially extending that array for
optional arguments and rest arguments and such.
* libguile/vm.c (apply_foreign): New function, applies a foreign
function to arguments on the stack, in place.
* libguile/vm-i-system.c (call): Add a case for procedures-with-setters
(will go away when they are applicable structs). Instead of calling
the evaluator for foreign functions, call apply_foreign.
Diffstat (limited to 'libguile/eval.h')
-rw-r--r-- | libguile/eval.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/libguile/eval.h b/libguile/eval.h index f10110fb3..62b84c11b 100644 --- a/libguile/eval.h +++ b/libguile/eval.h @@ -76,6 +76,7 @@ SCM_API SCM scm_apply_3 (SCM proc, SCM arg1, SCM arg2, SCM arg3, SCM args); SCM_INTERNAL SCM scm_i_call_closure_0 (SCM proc); SCM_API SCM scm_nconc2last (SCM lst); SCM_API SCM scm_apply (SCM proc, SCM arg1, SCM args); +SCM_INTERNAL SCM scm_closure_apply (SCM proc, SCM args); #define scm_dapply(proc,arg1,args) scm_apply (proc, arg1, args) SCM_API SCM scm_map (SCM proc, SCM arg1, SCM args); SCM_API SCM scm_for_each (SCM proc, SCM arg1, SCM args); |