Exemple #1
0
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);
}
Exemple #2
0
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);
}