commit | ddc975483eae62ad9e3393a4ac27954c5ed9043f | [log] [tgz] |
---|---|---|
author | swissChili <swisschili@fastmail.com> | Sun Jul 04 11:47:42 2021 -0700 |
committer | swissChili <swisschili@fastmail.com> | Sun Jul 04 11:47:42 2021 -0700 |
tree | 6bdcae1c6b0ea602a6b38128901f7fc09ab290aa | |
parent | f1ba8c1cc4797d0b53ac6d2bc8a1e758f1d3b89d [diff] [blame] |
Add lexical closures
diff --git a/src/lisp/gc.c b/src/lisp/gc.c index 16ec471..8820ef5 100644 --- a/src/lisp/gc.c +++ b/src/lisp/gc.c
@@ -39,6 +39,16 @@ _mark(cons->cons.cdr, marked); break; } + case CLOSURE_TAG: { + struct closure_alloc *closure = (void *)alloc; + + for (int i = 0; i < closure->closure.num_captured; i++) + { + _mark(closure->closure.data[i], marked); + } + + break; + } } } }