Unverified Commit d0ba7b95 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto Committed by GitHub

Merge pull request #5314 from dearblue/presym_init

Introduced `MRB_PRESYM_INIT_SYMBOLS()`
parents 5cce4ad4 a9949f5d
...@@ -60,9 +60,11 @@ ...@@ -60,9 +60,11 @@
#define MRB_PRESYM_DEFINE_VAR_AND_INITER(name, size, ...) \ #define MRB_PRESYM_DEFINE_VAR_AND_INITER(name, size, ...) \
static mrb_sym name[size]; \ static mrb_sym name[size]; \
static void init_##name(mrb_state *mrb) { \ static void presym_init_##name(mrb_state *mrb) { \
mrb_sym name__[] = {__VA_ARGS__}; \ mrb_sym name__[] = {__VA_ARGS__}; \
memcpy(name, name__, sizeof(name)); \ memcpy(name, name__, sizeof(name)); \
} }
#define MRB_PRESYM_INIT_SYMBOLS(mrb, name) presym_init_##name(mrb)
#endif /* MRUBY_PRESYM_DISABLE_H */ #endif /* MRUBY_PRESYM_DISABLE_H */
...@@ -26,8 +26,9 @@ ...@@ -26,8 +26,9 @@
#define MRB_SYM_2(mrb, name) MRB_SYM__##name #define MRB_SYM_2(mrb, name) MRB_SYM__##name
#define MRB_PRESYM_DEFINE_VAR_AND_INITER(name, size, ...) \ #define MRB_PRESYM_DEFINE_VAR_AND_INITER(name, size, ...) \
static const mrb_sym name[] = {__VA_ARGS__}; \ static const mrb_sym name[] = {__VA_ARGS__};
static void init_##name(mrb_state *mrb) {}
#define MRB_PRESYM_INIT_SYMBOLS(mrb, name) (void)(mrb)
/* use MRB_SYM() for E_RUNTIME_ERROR etc. */ /* use MRB_SYM() for E_RUNTIME_ERROR etc. */
#undef MRB_ERROR_SYM #undef MRB_ERROR_SYM
......
...@@ -2817,7 +2817,7 @@ init_class_new(mrb_state *mrb, struct RClass *cls) ...@@ -2817,7 +2817,7 @@ init_class_new(mrb_state *mrb, struct RClass *cls)
struct RProc *p; struct RProc *p;
mrb_method_t m; mrb_method_t m;
init_new_syms(mrb); MRB_PRESYM_INIT_SYMBOLS(mrb, new_syms);
p = mrb_proc_new(mrb, &new_irep); p = mrb_proc_new(mrb, &new_irep);
MRB_METHOD_FROM_PROC(m, p); MRB_METHOD_FROM_PROC(m, p);
mrb_define_method_raw(mrb, cls, MRB_SYM(new), m); mrb_define_method_raw(mrb, cls, MRB_SYM(new), m);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment