Lines Matching refs:mrb
40 MRubyContext::MRubyContext(mrb_state *mrb, mrb_value app, mrb_value env) in MRubyContext() argument
41 : mrb_(mrb), app_(std::move(app)), env_(std::move(env)) {} in MRubyContext()
117 mrb_value instantiate_app(mrb_state *mrb, RProc *proc) { in instantiate_app() argument
118 mrb->ud = nullptr; in instantiate_app()
120 auto res = mrb_top_run(mrb, proc, mrb_top_self(mrb), 0); in instantiate_app()
122 if (mrb->exc) { in instantiate_app()
123 auto exc = mrb_obj_value(mrb->exc); in instantiate_app()
124 auto inspect = mrb_inspect(mrb, exc); in instantiate_app()
127 << mrb_str_to_cstr(mrb, inspect); in instantiate_app()
141 RProc *compile(mrb_state *mrb, const StringRef &filename) { in compile() argument
153 auto mrbc = mrbc_context_new(mrb); in compile()
158 auto mrbc_d = defer(mrbc_context_free, mrb, mrbc); in compile()
160 auto parser = mrb_parse_file(mrb, infile, nullptr); in compile()
172 auto proc = mrb_generate_code(mrb, parser); in compile()
187 auto mrb = mrb_open(); in create_mruby_context() local
188 if (mrb == nullptr) { in create_mruby_context()
193 auto ai = mrb_gc_arena_save(mrb); in create_mruby_context()
195 auto req_proc = compile(mrb, filename); in create_mruby_context()
198 mrb_gc_arena_restore(mrb, ai); in create_mruby_context()
200 mrb_close(mrb); in create_mruby_context()
204 auto env = init_module(mrb); in create_mruby_context()
206 auto app = instantiate_app(mrb, req_proc); in create_mruby_context()
208 mrb_gc_arena_restore(mrb, ai); in create_mruby_context()
210 mrb_close(mrb); in create_mruby_context()
214 mrb_gc_arena_restore(mrb, ai); in create_mruby_context()
217 mrb_gc_protect(mrb, env); in create_mruby_context()
218 mrb_gc_protect(mrb, app); in create_mruby_context()
220 return std::make_unique<MRubyContext>(mrb, std::move(app), std::move(env)); in create_mruby_context()
223 mrb_sym intern_ptr(mrb_state *mrb, void *ptr) { in intern_ptr() argument
226 return mrb_intern(mrb, reinterpret_cast<const char *>(&p), sizeof(p)); in intern_ptr()
229 void check_phase(mrb_state *mrb, int phase, int phase_mask) { in check_phase() argument
231 mrb_raise(mrb, E_RUNTIME_ERROR, "operation was not allowed in this phase"); in check_phase()