mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge branch 'take-cheeze-mrb_open_without_mrbgems'
This commit is contained in:
@@ -296,8 +296,11 @@ mrb_value mrb_str_new_static(mrb_state *mrb, const char *p, size_t len);
|
||||
|
||||
mrb_state* mrb_open(void);
|
||||
mrb_state* mrb_open_allocf(mrb_allocf, void *ud);
|
||||
mrb_state* mrb_open_core(mrb_allocf, void *ud);
|
||||
void mrb_close(mrb_state*);
|
||||
|
||||
void* mrb_default_allocf(mrb_state*, void*, size_t, void*);
|
||||
|
||||
mrb_value mrb_top_self(mrb_state *);
|
||||
mrb_value mrb_run(mrb_state*, struct RProc*, mrb_value);
|
||||
mrb_value mrb_toplevel_run(mrb_state*, struct RProc*);
|
||||
|
||||
@@ -24,8 +24,6 @@ void mrb_init_gc(mrb_state*);
|
||||
void mrb_init_math(mrb_state*);
|
||||
void mrb_init_version(mrb_state*);
|
||||
void mrb_init_mrblib(mrb_state*);
|
||||
void mrb_init_mrbgems(mrb_state*);
|
||||
void mrb_final_mrbgems(mrb_state*);
|
||||
|
||||
#define DONE mrb_gc_arena_restore(mrb, 0);
|
||||
void
|
||||
@@ -50,7 +48,4 @@ mrb_init_core(mrb_state *mrb)
|
||||
mrb_init_gc(mrb); DONE;
|
||||
mrb_init_version(mrb); DONE;
|
||||
mrb_init_mrblib(mrb); DONE;
|
||||
#ifndef DISABLE_GEMS
|
||||
mrb_init_mrbgems(mrb); DONE;
|
||||
#endif
|
||||
}
|
||||
|
||||
+18
-4
@@ -14,6 +14,7 @@
|
||||
|
||||
void mrb_init_heap(mrb_state*);
|
||||
void mrb_init_core(mrb_state*);
|
||||
void mrb_init_mrbgems(mrb_state*);
|
||||
|
||||
static mrb_value
|
||||
inspect_main(mrb_state *mrb, mrb_value mod)
|
||||
@@ -22,7 +23,7 @@ inspect_main(mrb_state *mrb, mrb_value mod)
|
||||
}
|
||||
|
||||
mrb_state*
|
||||
mrb_open_allocf(mrb_allocf f, void *ud)
|
||||
mrb_open_core(mrb_allocf f, void *ud)
|
||||
{
|
||||
static const mrb_state mrb_state_zero = { 0 };
|
||||
static const struct mrb_context mrb_context_zero = { 0 };
|
||||
@@ -50,13 +51,14 @@ mrb_open_allocf(mrb_allocf f, void *ud)
|
||||
mrb->c = (struct mrb_context*)mrb_malloc(mrb, sizeof(struct mrb_context));
|
||||
*mrb->c = mrb_context_zero;
|
||||
mrb->root_c = mrb->c;
|
||||
|
||||
mrb_init_core(mrb);
|
||||
|
||||
return mrb;
|
||||
}
|
||||
|
||||
static void*
|
||||
allocf(mrb_state *mrb, void *p, size_t size, void *ud)
|
||||
void*
|
||||
mrb_default_allocf(mrb_state *mrb, void *p, size_t size, void *ud)
|
||||
{
|
||||
if (size == 0) {
|
||||
free(p);
|
||||
@@ -102,11 +104,23 @@ mrb_alloca_free(mrb_state *mrb)
|
||||
mrb_state*
|
||||
mrb_open(void)
|
||||
{
|
||||
mrb_state *mrb = mrb_open_allocf(allocf, NULL);
|
||||
mrb_state *mrb = mrb_open_allocf(mrb_default_allocf, NULL);
|
||||
|
||||
return mrb;
|
||||
}
|
||||
|
||||
mrb_state*
|
||||
mrb_open_allocf(mrb_allocf f, void *ud)
|
||||
{
|
||||
mrb_state *mrb = mrb_open_core(f, ud);
|
||||
|
||||
#ifndef DISABLE_GEMS
|
||||
mrb_init_mrbgems(mrb);
|
||||
mrb_gc_arena_restore(mrb, 0);
|
||||
#endif
|
||||
return mrb;
|
||||
}
|
||||
|
||||
void mrb_free_symtbl(mrb_state *mrb);
|
||||
void mrb_free_heap(mrb_state *mrb);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user