diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-06-23 20:25:34 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-06-23 20:25:34 +0900 |
| commit | 90ddc2810aa7ab2b91b99adc576025fa19c37451 (patch) | |
| tree | 4e03e5345024b756bd3ea6cdad8fbbd00b3ae00a /src | |
| parent | ad23483f32d251eb06abb9df7bd14749c45fe030 (diff) | |
| parent | ac0addd98ff93334aca192b1eb67d640cefcc5d1 (diff) | |
| download | mruby-90ddc2810aa7ab2b91b99adc576025fa19c37451.tar.gz mruby-90ddc2810aa7ab2b91b99adc576025fa19c37451.zip | |
Merge branch 'take-cheeze-mrb_open_without_mrbgems'
Diffstat (limited to 'src')
| -rw-r--r-- | src/init.c | 5 | ||||
| -rw-r--r-- | src/state.c | 22 |
2 files changed, 18 insertions, 9 deletions
diff --git a/src/init.c b/src/init.c index 9489cea10..955d6e3a1 100644 --- a/src/init.c +++ b/src/init.c @@ -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 } diff --git a/src/state.c b/src/state.c index 3e82a159d..8857d3294 100644 --- a/src/state.c +++ b/src/state.c @@ -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,8 +104,20 @@ 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; } |
