MRB_API void mrb_close(mrb_state *mrb) { if (!mrb) return; if (mrb->atexit_stack_len > 0) { mrb_int i; for (i = mrb->atexit_stack_len; i > 0; --i) { mrb->atexit_stack[i - 1](mrb); } #ifndef MRB_FIXED_STATE_ATEXIT_STACK mrb_free(mrb, mrb->atexit_stack); #endif } /* free */ mrb_gc_free_gv(mrb); mrb_free_context(mrb, mrb->root_c); mrb_free_symtbl(mrb); mrb_free_heap(mrb); mrb_alloca_free(mrb); #ifndef MRB_GC_FIXED_ARENA mrb_free(mrb, mrb->arena); #endif mrb_free(mrb, mrb); }
void mrb_close(mrb_state *mrb) { mrb_final_core(mrb); /* free */ mrb_gc_free_gv(mrb); mrb_free_context(mrb, mrb->root_c); mrb_free_symtbl(mrb); mrb_free_heap(mrb); mrb_alloca_free(mrb); #ifndef MRB_GC_FIXED_ARENA mrb_free(mrb, mrb->arena); #endif mrb_free(mrb, mrb); }
void mrb_close(mrb_state *mrb) { size_t i; mrb_final_core(mrb); /* free */ mrb_gc_free_gv(mrb); for (i=0; i<mrb->irep_len; i++) { mrb_irep_free(mrb, mrb->irep[i]); } mrb_free(mrb, mrb->irep); mrb_free_context(mrb, mrb->root_c); mrb_free_symtbl(mrb); mrb_free_heap(mrb); mrb_alloca_free(mrb); mrb_free(mrb, mrb); }
void mrb_close(mrb_state *mrb) { int i; /* free */ mrb_gc_free_gv(mrb); mrb_free(mrb, mrb->stbase); mrb_free(mrb, mrb->cibase); for (i=0; i<mrb->irep_len; i++) { mrb_free(mrb, mrb->irep[i]->iseq); mrb_free(mrb, mrb->irep[i]->pool); mrb_free(mrb, mrb->irep[i]->syms); mrb_free(mrb, mrb->irep[i]->lines); mrb_free(mrb, mrb->irep[i]); } mrb_free(mrb, mrb->irep); mrb_free_symtbl(mrb); mrb_free_heap(mrb); mrb_alloca_free(mrb); mrb_free(mrb, mrb); }