summaryrefslogtreecommitdiffstats
path: root/vm.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-11-16 07:16:40 -0800
committerKaz Kylheku <kaz@kylheku.com>2018-11-16 07:16:40 -0800
commitedc808bf0ccba62aee1a5e49ae31baebdfc1c9a5 (patch)
tree9ae7e258eaa3681f7fcfe23a31753977a7fa6bb6 /vm.h
parent7ad10f417a5be78a7dec3b436ba6c37580b92340 (diff)
downloadtxr-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.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/vm.h b/vm.h
index e39b115f..9fbaab76 100644
--- a/vm.h
+++ b/vm.h
@@ -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);