Browse Source

Made the GC reclaim successful routines

main
Ludovic 'Archivist' Lagouardette 7 months ago
parent
commit
3d39b4e3d6
1 changed files with 9 additions and 1 deletions
  1. +9
    -1
      lib.c

+ 9
- 1
lib.c View File

@ -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;

Loading…
Cancel
Save