summaryrefslogtreecommitdiffstats
path: root/vm.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/vm.c b/vm.c
index da06d156..f3aada5c 100644
--- a/vm.c
+++ b/vm.c
@@ -1115,6 +1115,8 @@ val vm_execute_closure(val fun, struct args *args)
cnum ix = 0;
vm_word_t argw = 0;
+ gc_stack_check();
+
vm_reset(&vm, vd, dspl, vc->nlvl - 1, vc->ip);
vm.dspl = coerce(struct vm_env *, frame + vc->nreg);
@@ -1174,6 +1176,7 @@ val vm_execute_closure(val fun, struct args *args)
int frsz = vd->nlvl * 2 + vc->nreg; \
val *frame = coerce(val *, zalloca(sizeof *frame * frsz)); \
struct vm_env *dspl = coerce(struct vm_env *, frame + vc->nreg); \
+ gc_stack_check(); \
vm_reset(&vm, vd, dspl, vc->nlvl - 1, vc->ip); \
vm.dspl = coerce(struct vm_env *, frame + vc->nreg); \
frame[0] = nil; \