소스 검색

Made the GC reclaim successful routines

main
Ludovic 'Archivist' Lagouardette 4 달 전
부모
커밋
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;

불러오는 중...
취소
저장