summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-11-30 06:16:16 -0800
committerKaz Kylheku <kaz@kylheku.com>2015-11-30 06:16:16 -0800
commite557f0f806badf93b36b2bf519a73830b67cf564 (patch)
tree0be990c21e59608e3ec8be36b01093f60bad23e5 /lib.c
parent4a71d6d387e332431d8a53bca4f37a32d12b647a (diff)
downloadtxr-e557f0f806badf93b36b2bf519a73830b67cf564.tar.gz
txr-e557f0f806badf93b36b2bf519a73830b67cf564.tar.bz2
txr-e557f0f806badf93b36b2bf519a73830b67cf564.zip
Change funcall_interp API.
* eval.c (funcall_interp): Drop the env argument. The fun argument is now the whole function object, not the encapsulated code to be interpreted. We pull the environment and code out of the object locally and interpret as before. * eval.h (funcall_interp): Declaration updated. * lib.c (generic_funcall, funcall, funcall1, funcall2, * funcall3, funcall4): Calls to funcall_interp simplified, just passing fun.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/lib.c b/lib.c
index f5ec840f..bd172bf8 100644
--- a/lib.c
+++ b/lib.c
@@ -4950,7 +4950,7 @@ val generic_funcall(val fun, struct args *args_in)
switch (fun->f.functype) {
case FINTERP:
- return funcall_interp(fun->f.env, fun->f.f.interp_fun, args);
+ return funcall_interp(fun, args);
case F0:
return fun->f.f.f0v(fun->f.env, args);
case F1:
@@ -5000,7 +5000,7 @@ val funcall(val fun)
switch (fun->f.functype) {
case FINTERP:
- return funcall_interp(fun->f.env, fun->f.f.interp_fun, args);
+ return funcall_interp(fun, args);
case F0:
return fun->f.f.f0v(fun->f.env, args);
case N0:
@@ -5035,7 +5035,7 @@ val funcall1(val fun, val arg)
switch (fun->f.functype) {
case FINTERP:
args_add(args, arg);
- return funcall_interp(fun->f.env, fun->f.f.interp_fun, args);
+ return funcall_interp(fun, args);
case F0:
args_add(args, arg);
return fun->f.f.f0v(fun->f.env, args);
@@ -5076,7 +5076,7 @@ val funcall2(val fun, val arg1, val arg2)
switch (fun->f.functype) {
case FINTERP:
args_add2(args, arg1, arg2);
- return funcall_interp(fun->f.env, fun->f.f.interp_fun, args);
+ return funcall_interp(fun, args);
case F0:
args_add2(args, arg1, arg2);
return fun->f.f.f0v(fun->f.env, args);
@@ -5123,7 +5123,7 @@ val funcall3(val fun, val arg1, val arg2, val arg3)
switch (fun->f.functype) {
case FINTERP:
args_add3(args, arg1, arg2, arg3);
- return funcall_interp(fun->f.env, fun->f.f.interp_fun, args);
+ return funcall_interp(fun, args);
case F0:
args_add3(args, arg1, arg2, arg3);
return fun->f.f.f0v(fun->f.env, args);
@@ -5176,8 +5176,7 @@ val funcall4(val fun, val arg1, val arg2, val arg3, val arg4)
switch (fun->f.functype) {
case FINTERP:
args_add4(args, arg1, arg2, arg3, arg4);
- return funcall_interp(fun->f.env, fun->f.f.interp_fun,
- args);
+ return funcall_interp(fun, args);
case F0:
args_add4(args, arg1, arg2, arg3, arg4);
return fun->f.f.f0v(fun->f.env, args);