|
@ -1153,6 +1153,22 @@ struct elem ink_make_native(struct context* ctx, int type, void* ptr) { |
|
|
return ink_make_native_unsafe(ctx, type, ptr, 0); |
|
|
return ink_make_native_unsafe(ctx, type, ptr, 0); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void ink_clean_routines(struct context* ctx) { |
|
|
|
|
|
int i, j; |
|
|
|
|
|
struct elem null; |
|
|
|
|
|
|
|
|
|
|
|
null.value = 0; |
|
|
|
|
|
null.type = INK_INTEGER; |
|
|
|
|
|
for(i = 0; i < ctx->routines_top; ++i) { |
|
|
|
|
|
if(ctx->routines[i].panic == INK_ROUTINE_CAN_REUSE) { |
|
|
|
|
|
for (j = 0; j < ctx->routines[i].top; ++j) { |
|
|
|
|
|
ctx->routines[i].stack[j] = null; |
|
|
|
|
|
} |
|
|
|
|
|
ctx->routines[i].top = 0; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void ink_gc(struct context* ctx) { |
|
|
void ink_gc(struct context* ctx) { |
|
|
int i, j, k; |
|
|
int i, j, k; |
|
|
int marked; |
|
|
int marked; |
|
|