diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2015-11-30 06:16:16 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2015-11-30 06:16:16 -0800 |
commit | e557f0f806badf93b36b2bf519a73830b67cf564 (patch) | |
tree | 0be990c21e59608e3ec8be36b01093f60bad23e5 /lib.c | |
parent | 4a71d6d387e332431d8a53bca4f37a32d12b647a (diff) | |
download | txr-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.c | 13 |
1 files changed, 6 insertions, 7 deletions
@@ -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); |