void mrb_irep_decref(MemManager &mrb, mrb_irep *irep) { irep->refcnt--; if (irep->refcnt == 0) { mrb_irep_free(mrb, irep); } }
void mrb_irep_decref(mrb_state *mrb, mrb_irep *irep) { irep->refcnt--; if (irep->refcnt == 0) { mrb_irep_free(mrb, irep); } }
static void ngx_mrb_irep_clean(ngx_http_request_t *r, ngx_mrb_state_t *state, ngx_mrb_code_t *code) { int i; int last_idx = state->mrb->irep_len; state->mrb->irep_len = code->n; for (i = code->n; i < last_idx; i++) { ngx_log_error(NGX_LOG_INFO , r->connection->log , 0 , "%s INFO %s:%d: irep cleaning idx=[%d]" , MODULE_NAME , __func__ , __LINE__ , i ); mrb_irep_free(state->mrb, state->mrb->irep[i]); } }
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); }
// // run mruby core functions // static void ap_mruby_irep_clean(mrb_state *mrb, struct mrb_irep *irep, request_rec *r) { TRACER; mrb_irep_free(mrb, irep); }
static void ngx_mrb_irep_clean(ngx_mrb_state_t *state) { state->mrb->irep_len = state->n; mrb_irep_free(state->mrb, state->mrb->irep[state->n]); state->mrb->exc = 0; }
static void ngx_http_mruby_irep_clean(ngx_http_mruby_state_t *state, ngx_http_mruby_code_t *code) { mrb_irep_free(state->mrb, code->proc->body.irep); state->mrb->exc = 0; }