Change to incremental GC
This commit is contained in:
@@ -20,6 +20,8 @@ const char *LISP_TYPE_NAMES[N_LISP_TYPES] = {
|
||||
[TYPE_FUNCTION] = "function",
|
||||
};
|
||||
|
||||
bool lisp_gc_on_alloc;
|
||||
|
||||
void *lisp_alloc_object_no_gc(size_t size, LispValType type) {
|
||||
assert(size >= sizeof(LispObject));
|
||||
LispObject *obj = lisp_aligned_alloc(LISP_OBJECT_ALIGNMENT, size);
|
||||
@@ -31,6 +33,9 @@ void *lisp_alloc_object_no_gc(size_t size, LispValType type) {
|
||||
|
||||
void *lisp_alloc_object(size_t size, LispValType type) {
|
||||
LispObject *obj = lisp_alloc_object_no_gc(size, type);
|
||||
if (lisp_gc_on_alloc && the_stack.depth) {
|
||||
lisp_gc_yield(NULL, false);
|
||||
}
|
||||
if (the_stack.depth > 0) {
|
||||
add_local_reference_no_recurse(obj);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user