Update function call stuff
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user