Переглянути джерело

Made the GC reclaim successful routines

main
Ludovic 'Archivist' Lagouardette 5 місяці тому
джерело
коміт
3d39b4e3d6
1 змінених файлів з 9 додано та 1 видалено
  1. +9
    -1
      lib.c

+ 9
- 1
lib.c Переглянути файл

@ -1004,8 +1004,16 @@ void ink_gc(struct context* ctx) {
}
}
/* Start by marking the roots of the routines */
/* Start by marking the roots of the routines, Clear the routines if possible */
for(i = 0; i < ctx->routines_top; ++i) {
if(ctx->routine[i].panic == INK_ROUTINE_SUCCESS) {
ctx->free(ctx->routine[i].stack);
ctx->free(ctx->routine[i].function_stack);
ctx->routine[i].panic = INK_ROUTINE_CAN_REUSE;
}
if(ctx->routine[i].panic == INK_ROUTINE_CAN_REUSE) {
continue;
}
for(j = 0; j < ctx->routines[i].top; ++j) {
v = ink_get_value_link(ctx, ctx->routines[i].stack[j]);
if(v != NULL) ++v->uses;

Завантаження…
Відмінити
Зберегти