diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-11-16 07:16:40 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-11-16 07:16:40 -0800 |
commit | edc808bf0ccba62aee1a5e49ae31baebdfc1c9a5 (patch) | |
tree | 9ae7e258eaa3681f7fcfe23a31753977a7fa6bb6 /vm.h | |
parent | 7ad10f417a5be78a7dec3b436ba6c37580b92340 (diff) | |
download | txr-edc808bf0ccba62aee1a5e49ae31baebdfc1c9a5.tar.gz txr-edc808bf0ccba62aee1a5e49ae31baebdfc1c9a5.tar.bz2 txr-edc808bf0ccba62aee1a5e49ae31baebdfc1c9a5.zip |
vm: provide special case call entry points.
* lib.c (funcall, funcall1, funcall2, funcall3, funcall4): Use
vm_funcall, vm_funcall1, vm_funcall2, vm_funcall3, and
vm_funcall4, respectively instead of the general
vm_execute_closure. Also, missing argument count check added
in funcall.
* vm.c (vm_funcall_common): New macro.
(vm_funcall, vm_funcall1, vm_funcall2, vm_funcall3,
vm_funcall4): New functions.
* vm.h (vm_funcall, vm_funcall1, vm_funcall2, vm_funcall3,
vm_funcall4): Declared.
Diffstat (limited to 'vm.h')
-rw-r--r-- | vm.h | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -32,5 +32,10 @@ val vm_make_desc(val nlevels, val nregs, val bytecode, val vm_execute_toplevel(val desc); val vm_copy_closure(val closure); val vm_execute_closure(val fun, struct args *); +val vm_funcall(val fun); +val vm_funcall1(val fun, val arg); +val vm_funcall2(val fun, val arg1, val arg2); +val vm_funcall3(val fun, val arg1, val arg2, val arg3); +val vm_funcall4(val fun, val arg1, val arg2, val arg3, val arg4); void vm_invalidate_binding(val sym); void vm_init(void); |