diff --git a/src/gc.c b/src/gc.c index dbb4617..3d2adc1 100644 --- a/src/gc.c +++ b/src/gc.c @@ -289,7 +289,9 @@ static void mark_object_recurse(LispGCStats *restrict stats, LispVal *val) { while (!OBJECT_PROCESS_STACK_EMPTY_P(&stack)) { LispVal *cur = object_process_stack_pop(&stack); if (!OBJECT_GC_SET_P(cur, GC_BLACK)) { - ++stats->objects_searched; + if (!OBJECT_STATIC_P(val)) { + ++stats->non_statics_kept; + } gc_move_to_set(cur, GC_BLACK); object_process_stack_push_held_objects(&stack, cur); } @@ -370,7 +372,7 @@ void lisp_gc_now(LispGCStats *restrict stats) { stats = &backup_stats; } stats->objects_cleaned = 0; - stats->objects_searched = 0; + stats->non_statics_kept = 0; struct timespec start_time; clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start_time); mark_statics(stats); @@ -388,7 +390,7 @@ void lisp_gc_now(LispGCStats *restrict stats) { } void debug_print_gc_stats(FILE *stream, const LispGCStats *stats) { - fprintf(stream, "Objects Searched: %zu\n", stats->objects_searched); + fprintf(stream, "Non-Statics Kept: %zu\n", stats->non_statics_kept); fprintf(stream, "Objects Cleaned: %zu\n", stats->objects_cleaned); double time = stats->ellapsed_time.tv_sec * 1000 + (stats->ellapsed_time.tv_nsec / 1000000.0); diff --git a/src/gc.h b/src/gc.h index cd99cd5..3136090 100644 --- a/src/gc.h +++ b/src/gc.h @@ -41,7 +41,7 @@ extern struct timespec total_gc_time; extern size_t total_gc_count; typedef struct { - size_t objects_searched; + size_t non_statics_kept; size_t objects_cleaned; struct timespec ellapsed_time; } LispGCStats;