Update function call stuff

This commit is contained in:
2026-07-19 00:14:16 -07:00
parent bd7ca2fa25
commit 67b68f8c61
10 changed files with 177 additions and 115 deletions
+3 -6
View File
@@ -153,7 +153,7 @@ void gc_mark_stack_for_rescan(void) {
static void free_object(LispVal *val) {
// This is called on non-white objects during cleanup! Don't assert
// OBJECT_GC_SET_P!
assert(!OBJECT_HAS_LOCAL_REFERENCE_P(val));
assert(!OBJECT_LOWEST_LOCAL_REFERENCE(val));
switch (((LispObject *) val)->type) {
case TYPE_HASH_TABLE: {
LispHashTable *ht = val;
@@ -311,10 +311,7 @@ static void mark_stack_frame(StackFrame *frame, size_t *restrict limit) {
}
}
static void mark_and_compact_the_stack(size_t *restrict limit) {
if ((*limit)--) {
mark_object(the_stack.nogc_retval);
}
static void mark_the_stack(size_t *restrict limit) {
size_t i;
for (i = 0; i < the_stack.depth && *limit; ++i) {
if (!the_stack.frames[i].marked) {
@@ -389,7 +386,7 @@ void lisp_gc_yield(struct timespec *restrict time_took, bool full) {
mark_statics(&limit);
break;
case GC_STEP_STACK:
mark_and_compact_the_stack(&limit);
mark_the_stack(&limit);
break;
case GC_STEP_HEAP:
mark_grey_objects(&limit);