diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-04-06 23:25:23 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-04-06 23:25:23 -0700 |
commit | d44630dd678e7435753d6452fdb3e28a45243f69 (patch) | |
tree | 902ed70ec266923b4814a7650654fee0fef977ff /lib.c | |
parent | 75b107868d1f58ab08b9b1852904b53cc6aa07df (diff) | |
download | txr-d44630dd678e7435753d6452fdb3e28a45243f69.tar.gz txr-d44630dd678e7435753d6452fdb3e28a45243f69.tar.bz2 txr-d44630dd678e7435753d6452fdb3e28a45243f69.zip |
vm: allow vm description to be callable as function.
* lib.c (generic_funall): Handle vm-desc objects via
vm_execute_toplevel.
* vm.h (vm_desc_s, vm_closure_s): Declared.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -6253,6 +6253,10 @@ val generic_funcall(val fun, struct args *args_in) default: callerror(fun, lit("too many arguments")); } + } else if (fun->co.cls == vm_desc_s) { + if (args->fill || args->list) + callerror(fun, lit("too many arguments")); + return vm_execute_toplevel(fun); } else if (fun->co.cls == carray_s) { goto carray; } else if (obj_struct_p(fun)) { |