SCM_EXPORT void scm_fin_gc(void) { finalize_heap(); finalize_protected_var(); GCROOTS_fin(l_gcroots_ctx); free(l_gcroots_ctx); SCM_GLOBAL_VARS_FIN(static_gc); }
void pic_close(pic_state *pic) { size_t i; /* free global stacks */ free(pic->stbase); free(pic->cibase); free(pic->rescue); free(pic->globals); xh_destroy(pic->sym_tbl); xh_destroy(pic->global_tbl); pic->glen = 0; pic->rlen = 0; pic->arena_idx = 0; pic->lib_tbl = pic_undef_value(); /* free all values */ pic_gc_run(pic); /* free heaps */ finalize_heap(pic->heap); free(pic->heap); /* free symbol names */ for (i = 0; i < pic->slen; ++i) { free((void *)pic->sym_pool[i]); } free(pic->sym_pool); PIC_BLK_DECREF(pic, pic->blk); free(pic); }