summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib.c4
-rw-r--r--vm.h2
2 files changed, 6 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index 980fe768..7219d2d2 100644
--- a/lib.c
+++ b/lib.c
@@ -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)) {
diff --git a/vm.h b/vm.h
index 1a8a1c8e..da2fab08 100644
--- a/vm.h
+++ b/vm.h
@@ -25,6 +25,8 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+extern val vm_desc_s, vm_closure_s;
+
val vm_make_desc(val nlevels, val nregs, val bytecode,
val datavec, val funvec);
val vm_execute_toplevel(val desc);