From 4a097525df94764871941d3e0567cf1974809f1d Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 20 Feb 2026 13:49:17 +0900 Subject: [PATCH] proc.h: unify method flag layout; eliminate aspec shifting Move MRB_METHOD_FUNC_FL to bit 24 and visibility flags to bits 25-26 so that MRB_ARGS_*() values (bits 0-23) can be stored directly without shifting. This makes MRB_MT_PRIVATE and MRB_METHOD_PRIVATE_FL the same value, eliminating the dual-constant confusion and simplifying the MRB_MT_ENTRY() macro to a single OR operation. Co-authored-by: Claude --- doc/guides/rom-method-table.md | 41 ++++++++-------- include/mruby/internal.h | 16 +++--- include/mruby/proc.h | 14 +++--- mrbgems/mruby-io/src/io.c | 2 +- mrbgems/mruby-kernel-ext/src/kernel.c | 18 +++---- mrbgems/mruby-metaprog/src/metaprog.c | 16 +++--- mrbgems/mruby-struct/src/struct.c | 2 +- mrbgems/mruby-time/src/time.c | 4 +- src/array.c | 4 +- src/class.c | 70 +++++++++++++-------------- src/error.c | 2 +- src/hash.c | 4 +- src/kernel.c | 14 +++--- src/proc.c | 2 +- src/range.c | 4 +- src/string.c | 4 +- src/vm.c | 2 +- 17 files changed, 107 insertions(+), 112 deletions(-) diff --git a/doc/guides/rom-method-table.md b/doc/guides/rom-method-table.md index 2c9cef8da..3a694dff1 100644 --- a/doc/guides/rom-method-table.md +++ b/doc/guides/rom-method-table.md @@ -132,16 +132,13 @@ typedef struct mrb_mt_tbl { ### Macros ```c -/* ROM table entry: stores aspec in bits 4+, auto-sets MRB_MT_FUNC */ -#define MRB_MT_ENTRY(fn, sym, aspec) \ - { { .func = (fn) }, (sym), ((aspec) << 4) | MRB_MT_FUNC } - -/* ROM table entry for private methods */ -#define MRB_MT_ENTRY_PRIVATE(fn, sym, aspec) \ - { { .func = (fn) }, (sym), ((aspec) << 4) | MRB_MT_FUNC | MRB_MT_PRIVATE } +/* ROM table entry: 3rd param is MRB_ARGS_*() optionally OR'd with + MRB_MT_PRIVATE. The macro OR's in MRB_MT_FUNC automatically. */ +#define MRB_MT_ENTRY(fn, sym, flags) \ + { { .func = (fn) }, (sym), (flags) | MRB_MT_FUNC } /* Extract aspec from combined flags */ -#define MRB_MT_ASPEC(flags) ((mrb_aspec)((flags) >> 4)) +#define MRB_MT_ASPEC(flags) ((mrb_aspec)((flags) & 0xffffff)) /* ROM table initializer (auto-computes size from entries array) */ #define MRB_MT_ROM_TAB(entries) { \ @@ -150,23 +147,26 @@ typedef struct mrb_mt_tbl { (mrb_mt_entry*)(entries), NULL } ``` -### Flags (bits 0-3 of uint32_t) +### Flags -| Flag | Value | Description | -| ---------------- | ----- | ------------------------------- | -| `MRB_MT_FUNC` | 8 | C function (auto-set by macros) | -| `MRB_MT_PUBLIC` | 0 | Public visibility (default) | -| `MRB_MT_PRIVATE` | 1 | Private visibility | +| Flag | Value | Description | +| ---------------- | -------- | ----------------------------------- | +| `MRB_MT_FUNC` | (1<<24) | C function (auto-set by macro) | +| `MRB_MT_PUBLIC` | 0 | Public visibility (default) | +| `MRB_MT_PRIVATE` | (1<<25) | Private visibility (in entry param) | -Bits 4-27 store the `mrb_aspec` argument specification (shifted left -by 4). `MRB_MT_FUNC` is set automatically by the macros. The no-arg -optimization is derived at runtime from `aspec == 0` -(`MRB_ARGS_NONE()`). +The third parameter to `MRB_MT_ENTRY()` is an `MRB_ARGS_*()` +expression optionally OR'd with `MRB_MT_PRIVATE`. The aspec value +occupies bits 0-23 and the visibility flag occupies bit 25; these +ranges do not overlap, so the values are simply OR'd together. +`MRB_MT_FUNC` is set automatically. The no-arg optimization is +derived at runtime from `aspec == 0` (`MRB_ARGS_NONE()`). **How to write entries:** - **`MRB_MT_ENTRY(fn, sym, MRB_ARGS_*(...))`**: Public method. -- **`MRB_MT_ENTRY_PRIVATE(fn, sym, MRB_ARGS_*(...))`**: Private method. +- **`MRB_MT_ENTRY(fn, sym, MRB_ARGS_*(...) | MRB_MT_PRIVATE)`**: + Private method. - Use the same `MRB_ARGS_*()` macros as `mrb_define_method_id()`. ### Symbol Macros @@ -371,7 +371,8 @@ To convert existing `mrb_define_method_id()` calls to a ROM table: - `func` is the function pointer - `sym` is the symbol macro (e.g., `MRB_SYM(name)`) - `aspec` is the original `MRB_ARGS_*()` macro - - Use `MRB_MT_ENTRY_PRIVATE()` for private methods + - For private methods, OR `MRB_MT_PRIVATE` into the aspec: + `MRB_MT_ENTRY(func, sym, aspec | MRB_MT_PRIVATE)` 4. **Create** the table with `MRB_MT_ROM_TAB(entries)`. diff --git a/include/mruby/internal.h b/include/mruby/internal.h index d9dd574ba..886e72342 100644 --- a/include/mruby/internal.h +++ b/include/mruby/internal.h @@ -50,16 +50,14 @@ typedef struct mrb_mt_tbl { #define MRB_MT_READONLY_BIT (1 << 30) #define MRB_MT_FROZEN_BIT (1 << 29) -#define MRB_MT_FUNC 8 /* MRB_METHOD_FUNC_FL */ -#define MRB_MT_PUBLIC 0 /* MRB_METHOD_PUBLIC_FL */ -#define MRB_MT_PRIVATE 1 /* MRB_METHOD_PRIVATE_FL */ +#define MRB_MT_FUNC (1 << 24) /* MRB_METHOD_FUNC_FL */ +#define MRB_MT_PUBLIC 0 +#define MRB_MT_PRIVATE (1 << 25) /* MRB_METHOD_PRIVATE_FL */ -/* ROM table entry: stores aspec in bits 4+, auto-sets MRB_MT_FUNC */ -#define MRB_MT_ENTRY(fn, sym, aspec) \ - { { .func = (fn) }, (sym), ((aspec) << 4) | MRB_MT_FUNC } -#define MRB_MT_ENTRY_PRIVATE(fn, sym, aspec) \ - { { .func = (fn) }, (sym), ((aspec) << 4) | MRB_MT_FUNC | MRB_MT_PRIVATE } -#define MRB_MT_ASPEC(flags) ((mrb_aspec)((flags) >> 4)) +/* ROM table entry: 3rd param is MRB_ARGS_*() optionally OR'd with MRB_MT_PRIVATE. */ +#define MRB_MT_ENTRY(fn, sym, flags) \ + { { .func = (fn) }, (sym), (flags) | MRB_MT_FUNC } +#define MRB_MT_ASPEC(flags) ((mrb_aspec)((flags) & 0xffffff)) /* ROM table initializer from const entries array (auto-computes size). Casts away const because mrb_mt_tbl.ptr is shared with mutable layers; diff --git a/include/mruby/proc.h b/include/mruby/proc.h index 029815332..53cc9a4de 100644 --- a/include/mruby/proc.h +++ b/include/mruby/proc.h @@ -114,15 +114,15 @@ MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx); /* old name */ #define mrb_cfunc_env_get(mrb, idx) mrb_proc_cfunc_env_get(mrb, idx) -#define MRB_METHOD_FUNC_FL 8 -#define MRB_METHOD_PUBLIC_FL 0 -#define MRB_METHOD_PRIVATE_FL 1 -#define MRB_METHOD_PROTECTED_FL 2 -#define MRB_METHOD_VDEFAULT_FL 3 -#define MRB_METHOD_VISIBILITY_MASK 3 +#define MRB_METHOD_FUNC_FL (1 << 24) +#define MRB_METHOD_PUBLIC_FL 0 +#define MRB_METHOD_PRIVATE_FL (1 << 25) +#define MRB_METHOD_PROTECTED_FL (1 << 26) +#define MRB_METHOD_VDEFAULT_FL ((1 << 25) | (1 << 26)) +#define MRB_METHOD_VISIBILITY_MASK ((1 << 25) | (1 << 26)) #define MRB_METHOD_FUNC_P(m) ((m).flags&MRB_METHOD_FUNC_FL) -#define MRB_METHOD_NOARG_P(m) ((m).flags>>4==0) +#define MRB_METHOD_NOARG_P(m) (((m).flags&0xffffff)==0) #define MRB_METHOD_FUNC(m) ((m).as.func) #define MRB_METHOD_FROM_FUNC(m,fn) do{(m).flags=MRB_METHOD_FUNC_FL;(m).as.func=(fn);}while(0) #define MRB_METHOD_FROM_PROC(m,pr) do{(m).flags=0;(m).as.proc=(pr);}while(0) diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index de2cfd26b..aacc8cd0e 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -2199,7 +2199,7 @@ io_flush(mrb_state *mrb, mrb_value io) /* ---------------------------*/ static const mrb_mt_entry io_rom_entries[] = { MRB_MT_ENTRY(io_init, MRB_SYM(initialize), MRB_ARGS_ARG(1,2)), - MRB_MT_ENTRY_PRIVATE(io_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1)), + MRB_MT_ENTRY(io_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), MRB_MT_ENTRY(io_isatty, MRB_SYM(isatty), MRB_ARGS_NONE()), MRB_MT_ENTRY(io_eof, MRB_SYM_Q(eof), MRB_ARGS_NONE()), /* 15.2.20.5.6 */ MRB_MT_ENTRY(io_getc, MRB_SYM(getc), MRB_ARGS_NONE()), /* 15.2.20.5.8 */ diff --git a/mrbgems/mruby-kernel-ext/src/kernel.c b/mrbgems/mruby-kernel-ext/src/kernel.c index 2859c136a..d55ec440c 100644 --- a/mrbgems/mruby-kernel-ext/src/kernel.c +++ b/mrbgems/mruby-kernel-ext/src/kernel.c @@ -289,17 +289,17 @@ mrb_f_hash(mrb_state *mrb, mrb_value self) } static const mrb_mt_entry kernel_ext_rom_entries[] = { - MRB_MT_ENTRY_PRIVATE(mrb_f_raise, MRB_SYM(fail), MRB_ARGS_OPT(2)), - MRB_MT_ENTRY_PRIVATE(mrb_f_caller, MRB_SYM(caller), MRB_ARGS_OPT(2)), - MRB_MT_ENTRY_PRIVATE(mrb_f_method, MRB_SYM(__method__), MRB_ARGS_NONE()), - MRB_MT_ENTRY_PRIVATE(mrb_f_callee, MRB_SYM(__callee__), MRB_ARGS_NONE()), - MRB_MT_ENTRY_PRIVATE(mrb_f_integer, MRB_SYM(Integer), MRB_ARGS_ARG(1,1)), - MRB_MT_ENTRY_PRIVATE(mrb_f_string, MRB_SYM(String), MRB_ARGS_REQ(1)), - MRB_MT_ENTRY_PRIVATE(mrb_f_array, MRB_SYM(Array), MRB_ARGS_REQ(1)), + MRB_MT_ENTRY(mrb_f_raise, MRB_SYM(fail), MRB_ARGS_OPT(2) | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_f_caller, MRB_SYM(caller), MRB_ARGS_OPT(2) | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_f_method, MRB_SYM(__method__), MRB_ARGS_NONE() | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_f_callee, MRB_SYM(__callee__), MRB_ARGS_NONE() | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_f_integer, MRB_SYM(Integer), MRB_ARGS_ARG(1,1) | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_f_string, MRB_SYM(String), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_f_array, MRB_SYM(Array), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), #ifndef MRB_NO_FLOAT - MRB_MT_ENTRY_PRIVATE(mrb_f_float, MRB_SYM(Float), MRB_ARGS_REQ(1)), + MRB_MT_ENTRY(mrb_f_float, MRB_SYM(Float), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), #endif - MRB_MT_ENTRY_PRIVATE(mrb_f_hash, MRB_SYM(Hash), MRB_ARGS_REQ(1)), + MRB_MT_ENTRY(mrb_f_hash, MRB_SYM(Hash), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), }; static mrb_mt_tbl kernel_ext_rom_mt = MRB_MT_ROM_TAB(kernel_ext_rom_entries); diff --git a/mrbgems/mruby-metaprog/src/metaprog.c b/mrbgems/mruby-metaprog/src/metaprog.c index 69d9ddb92..ae1cc0c5c 100644 --- a/mrbgems/mruby-metaprog/src/metaprog.c +++ b/mrbgems/mruby-metaprog/src/metaprog.c @@ -9,12 +9,8 @@ #include #include -#undef MRB_MT_PUBLIC -#undef MRB_MT_PRIVATE -#define MRB_MT_PUBLIC MRB_METHOD_PUBLIC_FL -#define MRB_MT_PRIVATE MRB_METHOD_PRIVATE_FL #define MT_PROTECTED MRB_METHOD_PROTECTED_FL -#define MT_NOPRIV (MRB_MT_PRIVATE|MT_PROTECTED) +#define MT_NOPRIV (MRB_METHOD_PRIVATE_FL|MT_PROTECTED) static mrb_value mrb_f_nil(mrb_state *mrb, mrb_value cv) @@ -139,7 +135,7 @@ struct mt_set { khash_t(st) *set; }; -#define vicheck(flags, visi) (((visi)==MT_NOPRIV) ? (((flags)&0x3)!=MRB_MT_PRIVATE) : (((flags)&0x3)==(visi))) +#define vicheck(flags, visi) (((visi)==MT_NOPRIV) ? (((flags)&MRB_METHOD_VISIBILITY_MASK)!=MRB_METHOD_PRIVATE_FL) : (((flags)&MRB_METHOD_VISIBILITY_MASK)==(visi))) static int method_entry_i(mrb_state *mrb, mrb_sym mid, mrb_method_t m, void *p) @@ -243,7 +239,7 @@ mrb_obj_methods_m(mrb_state *mrb, mrb_value self) static mrb_value mrb_obj_private_methods(mrb_state *mrb, mrb_value self) { - return mrb_obj_methods(mrb, self, MRB_MT_PRIVATE); + return mrb_obj_methods(mrb, self, MRB_METHOD_PRIVATE_FL); } /* 15.3.1.3.37 */ @@ -569,7 +565,7 @@ mrb_mod_public_instance_methods(mrb_state *mrb, mrb_value mod) static mrb_value mrb_mod_private_instance_methods(mrb_state *mrb, mrb_value mod) { - return mod_instance_methods(mrb, mod, MRB_MT_PRIVATE); + return mod_instance_methods(mrb, mod, MRB_METHOD_PRIVATE_FL); } static mrb_value @@ -691,8 +687,8 @@ mrb_mod_s_nesting(mrb_state *mrb, mrb_value mod) /* ---------------------------*/ static const mrb_mt_entry metaprog_krn_rom_entries[] = { - MRB_MT_ENTRY_PRIVATE(mrb_f_global_variables, MRB_SYM(global_variables), MRB_ARGS_NONE()), /* 15.3.1.3.14 (15.3.1.2.4) */ - MRB_MT_ENTRY_PRIVATE(mrb_local_variables, MRB_SYM(local_variables), MRB_ARGS_NONE()), /* 15.3.1.3.28 (15.3.1.2.7) */ + MRB_MT_ENTRY(mrb_f_global_variables, MRB_SYM(global_variables), MRB_ARGS_NONE() | MRB_MT_PRIVATE), /* 15.3.1.3.14 (15.3.1.2.4) */ + MRB_MT_ENTRY(mrb_local_variables, MRB_SYM(local_variables), MRB_ARGS_NONE() | MRB_MT_PRIVATE), /* 15.3.1.3.28 (15.3.1.2.7) */ MRB_MT_ENTRY(mrb_singleton_class, MRB_SYM(singleton_class), MRB_ARGS_NONE()), MRB_MT_ENTRY(mrb_obj_ivar_defined, MRB_SYM_Q(instance_variable_defined), MRB_ARGS_REQ(1)), /* 15.3.1.3.20 */ MRB_MT_ENTRY(mrb_obj_ivar_get, MRB_SYM(instance_variable_get), MRB_ARGS_REQ(1)), /* 15.3.1.3.21 */ diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index 7b1a04b07..457e3a22e 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -782,7 +782,7 @@ static const mrb_mt_entry struct_rom_entries[] = { MRB_MT_ENTRY(mrb_struct_aset, MRB_OPSYM(aset), MRB_ARGS_REQ(2)), /* 15.2.18.4.3 */ MRB_MT_ENTRY(mrb_struct_members, MRB_SYM(members), MRB_ARGS_NONE()), /* 15.2.18.4.6 */ MRB_MT_ENTRY(mrb_struct_initialize, MRB_SYM(initialize), MRB_ARGS_ANY()), /* 15.2.18.4.8 */ - MRB_MT_ENTRY_PRIVATE(mrb_struct_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1)), /* 15.2.18.4.9 */ + MRB_MT_ENTRY(mrb_struct_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.18.4.9 */ MRB_MT_ENTRY(mrb_struct_eql, MRB_SYM_Q(eql), MRB_ARGS_REQ(1)), /* 15.2.18.4.12(x) */ MRB_MT_ENTRY(mrb_struct_to_s, MRB_SYM(to_s), MRB_ARGS_NONE()), /* 15.2.18.4.11(x) */ MRB_MT_ENTRY(mrb_struct_to_s, MRB_SYM(inspect), MRB_ARGS_NONE()), /* 15.2.18.4.10(x) */ diff --git a/mrbgems/mruby-time/src/time.c b/mrbgems/mruby-time/src/time.c index 1d23133df..98809be1a 100644 --- a/mrbgems/mruby-time/src/time.c +++ b/mrbgems/mruby-time/src/time.c @@ -1699,8 +1699,8 @@ static const mrb_mt_entry time_rom_entries[] = { MRB_MT_ENTRY(time_yday, MRB_SYM(yday), MRB_ARGS_NONE()), /* 15.2.19.7.31 */ MRB_MT_ENTRY(time_year, MRB_SYM(year), MRB_ARGS_NONE()), /* 15.2.19.7.32 */ MRB_MT_ENTRY(time_zone, MRB_SYM(zone), MRB_ARGS_NONE()), /* 15.2.19.7.33 */ - MRB_MT_ENTRY_PRIVATE(time_init, MRB_SYM(initialize), MRB_ARGS_REQ(1)), /* 15.2.19.7.16 */ - MRB_MT_ENTRY_PRIVATE(time_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1)), /* 15.2.19.7.17 */ + MRB_MT_ENTRY(time_init, MRB_SYM(initialize), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.19.7.16 */ + MRB_MT_ENTRY(time_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.19.7.17 */ MRB_MT_ENTRY(time_sunday, MRB_SYM_Q(sunday), MRB_ARGS_NONE()), MRB_MT_ENTRY(time_monday, MRB_SYM_Q(monday), MRB_ARGS_NONE()), MRB_MT_ENTRY(time_tuesday, MRB_SYM_Q(tuesday), MRB_ARGS_NONE()), diff --git a/src/array.c b/src/array.c index 915cba155..048f5c375 100644 --- a/src/array.c +++ b/src/array.c @@ -2265,8 +2265,8 @@ static const mrb_mt_entry array_rom_entries[] = { MRB_MT_ENTRY(mrb_ary_eql, MRB_SYM_Q(eql), MRB_ARGS_REQ(1)), MRB_MT_ENTRY(mrb_ary_first, MRB_SYM(first), MRB_ARGS_OPT(1)), /* 15.2.12.5.13 */ MRB_MT_ENTRY(mrb_ary_index_m, MRB_SYM(index), MRB_ARGS_REQ(1)), /* 15.2.12.5.14 */ - MRB_MT_ENTRY_PRIVATE(mrb_ary_init, MRB_SYM(initialize), MRB_ARGS_OPT(2)), /* 15.2.12.5.15 */ - MRB_MT_ENTRY_PRIVATE(mrb_ary_replace_m, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1)), /* 15.2.12.5.16 */ + MRB_MT_ENTRY(mrb_ary_init, MRB_SYM(initialize), MRB_ARGS_OPT(2) | MRB_MT_PRIVATE), /* 15.2.12.5.15 */ + MRB_MT_ENTRY(mrb_ary_replace_m, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.12.5.16 */ MRB_MT_ENTRY(mrb_ary_join_m, MRB_SYM(join), MRB_ARGS_OPT(1)), /* 15.2.12.5.17 */ MRB_MT_ENTRY(mrb_ary_last, MRB_SYM(last), MRB_ARGS_OPT(1)), /* 15.2.12.5.18 */ MRB_MT_ENTRY(mrb_ary_size, MRB_SYM(length), MRB_ARGS_NONE()), /* 15.2.12.5.19 */ diff --git a/src/class.c b/src/class.c index 379385ed6..7a626abe3 100644 --- a/src/class.c +++ b/src/class.c @@ -1026,19 +1026,19 @@ mrb_define_method_raw(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_method_ if (mid == MRB_SYM(initialize) || mid == MRB_SYM(initialize_copy) || mid == MRB_SYM_Q(respond_to_missing)) { - MRB_SET_VISIBILITY_FLAGS(flags, MRB_MT_PRIVATE); + MRB_SET_VISIBILITY_FLAGS(flags, MRB_METHOD_PRIVATE_FL); } else if ((flags & MT_VMASK) == MT_VDEFAULT) { /* singleton methods are always public */ if (c->tt == MRB_TT_SCLASS) { - MRB_SET_VISIBILITY_FLAGS(flags, MRB_MT_PUBLIC); + MRB_SET_VISIBILITY_FLAGS(flags, MRB_METHOD_PUBLIC_FL); } else { mrb_callinfo *ci; struct REnv *e; find_visibility_scope(mrb, c, 0, &ci, &e); mrb_assert(ci || e); - MRB_SET_VISIBILITY_FLAGS(flags, (e ? MRB_ENV_VISIBILITY(e) : MRB_CI_VISIBILITY(ci))); + MRB_SET_VISIBILITY_FLAGS(flags, (uint32_t)(e ? MRB_ENV_VISIBILITY(e) : MRB_CI_VISIBILITY(ci)) << 25); } } mt_put(mrb, h, mid, flags, ptr); @@ -1052,7 +1052,7 @@ define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, int ai = mrb_gc_arena_save(mrb); MRB_METHOD_FROM_FUNC(m, func); - m.flags |= (aspec << 4); + m.flags |= aspec; MRB_METHOD_SET_VISIBILITY(m, vis); mrb_define_method_raw(mrb, c, mid, m); mrb_gc_arena_restore(mrb, ai); @@ -1072,7 +1072,7 @@ define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec) { - define_method_id(mrb, c, mid, func, aspec, MRB_MT_PUBLIC); + define_method_id(mrb, c, mid, func, aspec, MRB_METHOD_PUBLIC_FL); } /* @@ -1107,7 +1107,7 @@ mrb_define_method(mrb_state *mrb, struct RClass *c, const char *name, mrb_func_t MRB_API void mrb_define_private_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec) { - define_method_id(mrb, c, mid, func, aspec, MRB_MT_PRIVATE); + define_method_id(mrb, c, mid, func, aspec, MRB_METHOD_PRIVATE_FL); } /* @@ -2262,10 +2262,10 @@ mrb_mod_visibility(mrb_state *mrb, mrb_value mod, int vis) struct REnv *e; find_visibility_scope(mrb, NULL, 1, &ci, &e); if (e) { - MRB_ENV_SET_VISIBILITY(e, vis); + MRB_ENV_SET_VISIBILITY(e, vis >> 25); } else { - MRB_CI_SET_VISIBILITY(ci, vis); + MRB_CI_SET_VISIBILITY(ci, vis >> 25); } } else { @@ -2291,14 +2291,14 @@ mrb_mod_visibility(mrb_state *mrb, mrb_value mod, int vis) static mrb_value mrb_mod_public(mrb_state *mrb, mrb_value mod) { - mrb_mod_visibility(mrb, mod, MRB_MT_PUBLIC); + mrb_mod_visibility(mrb, mod, MRB_METHOD_PUBLIC_FL); return mod; } static mrb_value mrb_mod_private(mrb_state *mrb, mrb_value mod) { - mrb_mod_visibility(mrb, mod, MRB_MT_PRIVATE); + mrb_mod_visibility(mrb, mod, MRB_METHOD_PRIVATE_FL); return mod; } @@ -2313,7 +2313,7 @@ static mrb_value top_public(mrb_state *mrb, mrb_value self) { self = mrb_obj_value(mrb->object_class); - mrb_mod_visibility(mrb, self, MRB_MT_PUBLIC); + mrb_mod_visibility(mrb, self, MRB_METHOD_PUBLIC_FL); return self; } @@ -2321,7 +2321,7 @@ static mrb_value top_private(mrb_state *mrb, mrb_value self) { self = mrb_obj_value(mrb->object_class); - mrb_mod_visibility(mrb, self, MRB_MT_PRIVATE); + mrb_mod_visibility(mrb, self, MRB_METHOD_PRIVATE_FL); return self; } @@ -3812,7 +3812,7 @@ define_method_m(mrb_state *mrb, struct RClass *c, int vis) mrb_value mrb_mod_define_method_m(mrb_state *mrb, struct RClass *c) { - return define_method_m(mrb, c, MRB_MT_PUBLIC); + return define_method_m(mrb, c, MRB_METHOD_PUBLIC_FL); } static mrb_value @@ -3824,7 +3824,7 @@ mod_define_method(mrb_state *mrb, mrb_value self) static mrb_value top_define_method(mrb_state *mrb, mrb_value self) { - return define_method_m(mrb, mrb->object_class, MRB_MT_PRIVATE); + return define_method_m(mrb, mrb->object_class, MRB_METHOD_PRIVATE_FL); } static mrb_value @@ -3870,7 +3870,7 @@ mrb_mod_module_function(mrb_state *mrb, mrb_value mod) mrb_method_t m = mrb_method_search(mrb, rclass, mid); prepare_singleton_class(mrb, (struct RBasic*)rclass); - MRB_METHOD_SET_VISIBILITY(m, MRB_MT_PUBLIC); + MRB_METHOD_SET_VISIBILITY(m, MRB_METHOD_PUBLIC_FL); mrb_define_method_raw(mrb, rclass->c, mid, m); mrb_gc_arena_restore(mrb, ai); } @@ -4263,19 +4263,19 @@ static const mrb_mt_entry bob_rom_entries[] = { MRB_MT_ENTRY(mrb_obj_id_m, MRB_SYM(__id__), MRB_ARGS_NONE()), /* 15.3.1.3.4 */ MRB_MT_ENTRY(mrb_f_send, MRB_SYM(__send__), MRB_ARGS_REQ(1)|MRB_ARGS_REST()|MRB_ARGS_BLOCK()), /* 15.3.1.3.5 */ MRB_MT_ENTRY(mrb_obj_equal_m, MRB_SYM_Q(equal), MRB_ARGS_REQ(1)), /* 15.3.1.3.11 */ - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(initialize), MRB_ARGS_NONE()), + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(initialize), MRB_ARGS_NONE() | MRB_MT_PRIVATE), MRB_MT_ENTRY(mrb_obj_instance_eval, MRB_SYM(instance_eval), MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK()), /* 15.3.1.3.18 */ - MRB_MT_ENTRY_PRIVATE(mrb_obj_missing, MRB_SYM(method_missing), MRB_ARGS_ANY()), /* 15.3.1.3.30 */ - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(singleton_method_added), MRB_ARGS_REQ(1)), - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(singleton_method_removed), MRB_ARGS_REQ(1)), - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(singleton_method_undefined), MRB_ARGS_REQ(1)), + MRB_MT_ENTRY(mrb_obj_missing, MRB_SYM(method_missing), MRB_ARGS_ANY() | MRB_MT_PRIVATE), /* 15.3.1.3.30 */ + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(singleton_method_added), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(singleton_method_removed), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(singleton_method_undefined), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), }; static mrb_mt_tbl bob_rom_mt = MRB_MT_ROM_TAB(bob_rom_entries); static const mrb_mt_entry cls_rom_entries[] = { MRB_MT_ENTRY(mrb_instance_alloc, MRB_SYM(allocate), MRB_ARGS_NONE()), - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(inherited), MRB_ARGS_REQ(1)), - MRB_MT_ENTRY_PRIVATE(mrb_class_initialize, MRB_SYM(initialize), MRB_ARGS_OPT(1)), /* 15.2.3.3.1 */ + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(inherited), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_class_initialize, MRB_SYM(initialize), MRB_ARGS_OPT(1) | MRB_MT_PRIVATE), /* 15.2.3.3.1 */ MRB_MT_ENTRY(mrb_class_superclass, MRB_SYM(superclass), MRB_ARGS_NONE()), /* 15.2.3.3.4 */ }; static mrb_mt_tbl cls_rom_mt = MRB_MT_ROM_TAB(cls_rom_entries); @@ -4288,31 +4288,31 @@ static const mrb_mt_entry mod_rom_entries[] = { MRB_MT_ENTRY(mrb_mod_attr_reader, MRB_SYM(attr_reader), MRB_ARGS_ANY()), /* 15.2.2.4.13 */ MRB_MT_ENTRY(mrb_mod_attr_writer, MRB_SYM(attr_writer), MRB_ARGS_ANY()), /* 15.2.2.4.14 */ MRB_MT_ENTRY(mrb_mod_module_eval, MRB_SYM(class_eval), MRB_ARGS_ANY()), /* 15.2.2.4.15 */ - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(const_added), MRB_ARGS_REQ(1)), + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(const_added), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), MRB_MT_ENTRY(mrb_mod_const_defined, MRB_SYM_Q(const_defined), MRB_ARGS_ARG(1,1)), /* 15.2.2.4.20 */ MRB_MT_ENTRY(mrb_mod_const_get, MRB_SYM(const_get), MRB_ARGS_REQ(1)), /* 15.2.2.4.21 */ MRB_MT_ENTRY(mrb_mod_const_missing, MRB_SYM(const_missing), MRB_ARGS_REQ(1)), MRB_MT_ENTRY(mrb_mod_const_set, MRB_SYM(const_set), MRB_ARGS_REQ(2)), /* 15.2.2.4.23 */ MRB_MT_ENTRY(mod_define_method, MRB_SYM(define_method), MRB_ARGS_ARG(1,1)), MRB_MT_ENTRY(mrb_mod_dup, MRB_SYM(dup), MRB_ARGS_NONE()), - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(extended), MRB_ARGS_REQ(1)), /* 15.2.2.4.26 */ + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(extended), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.2.4.26 */ MRB_MT_ENTRY(mrb_mod_include, MRB_SYM(include), MRB_ARGS_REQ(1)), /* 15.2.2.4.27 */ MRB_MT_ENTRY(mrb_mod_include_p, MRB_SYM_Q(include), MRB_ARGS_REQ(1)), /* 15.2.2.4.28 */ - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(included), MRB_ARGS_REQ(1)), /* 15.2.2.4.29 */ - MRB_MT_ENTRY_PRIVATE(mrb_mod_initialize, MRB_SYM(initialize), MRB_ARGS_NONE()), /* 15.2.2.4.31 */ + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(included), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.2.4.29 */ + MRB_MT_ENTRY(mrb_mod_initialize, MRB_SYM(initialize), MRB_ARGS_NONE() | MRB_MT_PRIVATE), /* 15.2.2.4.31 */ MRB_MT_ENTRY(mrb_mod_to_s, MRB_SYM(inspect), MRB_ARGS_NONE()), - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(method_added), MRB_ARGS_REQ(1)), - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(method_removed), MRB_ARGS_REQ(1)), + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(method_added), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(method_removed), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), MRB_MT_ENTRY(mrb_mod_method_defined, MRB_SYM_Q(method_defined), MRB_ARGS_REQ(1)), /* 15.2.2.4.34 */ - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(method_undefined), MRB_ARGS_REQ(1)), + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(method_undefined), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), MRB_MT_ENTRY(mrb_mod_module_eval, MRB_SYM(module_eval), MRB_ARGS_ANY()), /* 15.2.2.4.35 */ - MRB_MT_ENTRY_PRIVATE(mrb_mod_module_function, MRB_SYM(module_function), MRB_ARGS_ANY()), + MRB_MT_ENTRY(mrb_mod_module_function, MRB_SYM(module_function), MRB_ARGS_ANY() | MRB_MT_PRIVATE), MRB_MT_ENTRY(mrb_mod_prepend, MRB_SYM(prepend), MRB_ARGS_REQ(1)), - MRB_MT_ENTRY_PRIVATE(mrb_do_nothing, MRB_SYM(prepended), MRB_ARGS_REQ(1)), - MRB_MT_ENTRY_PRIVATE(mrb_mod_private, MRB_SYM(private), MRB_ARGS_ANY()), /* 15.2.2.4.36 */ - MRB_MT_ENTRY_PRIVATE(mrb_mod_protected, MRB_SYM(protected), MRB_ARGS_ANY()), /* 15.2.2.4.37 */ - MRB_MT_ENTRY_PRIVATE(mrb_mod_public, MRB_SYM(public), MRB_ARGS_ANY()), /* 15.2.2.4.38 */ - MRB_MT_ENTRY_PRIVATE(mrb_mod_remove_const, MRB_SYM(remove_const), MRB_ARGS_REQ(1)), /* 15.2.2.4.40 */ + MRB_MT_ENTRY(mrb_do_nothing, MRB_SYM(prepended), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), + MRB_MT_ENTRY(mrb_mod_private, MRB_SYM(private), MRB_ARGS_ANY() | MRB_MT_PRIVATE), /* 15.2.2.4.36 */ + MRB_MT_ENTRY(mrb_mod_protected, MRB_SYM(protected), MRB_ARGS_ANY() | MRB_MT_PRIVATE), /* 15.2.2.4.37 */ + MRB_MT_ENTRY(mrb_mod_public, MRB_SYM(public), MRB_ARGS_ANY() | MRB_MT_PRIVATE), /* 15.2.2.4.38 */ + MRB_MT_ENTRY(mrb_mod_remove_const, MRB_SYM(remove_const), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.2.4.40 */ MRB_MT_ENTRY(mrb_mod_to_s, MRB_SYM(to_s), MRB_ARGS_NONE()), MRB_MT_ENTRY(mrb_mod_undef, MRB_SYM(undef_method), MRB_ARGS_ANY()), /* 15.2.2.4.41 */ }; diff --git a/src/error.c b/src/error.c index 1e12e2266..b62d4c3a0 100644 --- a/src/error.c +++ b/src/error.c @@ -894,7 +894,7 @@ mrb_check_error(mrb_state *mrb) /* ---------------------------*/ static const mrb_mt_entry exception_rom_entries[] = { MRB_MT_ENTRY(exc_exception, MRB_SYM(exception), MRB_ARGS_OPT(1)), - MRB_MT_ENTRY_PRIVATE(exc_initialize, MRB_SYM(initialize), MRB_ARGS_OPT(1)), + MRB_MT_ENTRY(exc_initialize, MRB_SYM(initialize), MRB_ARGS_OPT(1) | MRB_MT_PRIVATE), MRB_MT_ENTRY(exc_to_s, MRB_SYM(to_s), MRB_ARGS_NONE()), MRB_MT_ENTRY(exc_to_s, MRB_SYM(message), MRB_ARGS_NONE()), MRB_MT_ENTRY(mrb_exc_inspect, MRB_SYM(inspect), MRB_ARGS_NONE()), diff --git a/src/hash.c b/src/hash.c index b628ab365..597059540 100644 --- a/src/hash.c +++ b/src/hash.c @@ -2318,8 +2318,8 @@ static const mrb_mt_entry hash_rom_entries[] = { MRB_MT_ENTRY(mrb_hash_has_key, MRB_SYM_Q(has_key), MRB_ARGS_REQ(1)), /* 15.2.13.4.13 */ MRB_MT_ENTRY(mrb_hash_has_value, MRB_SYM_Q(has_value), MRB_ARGS_REQ(1)), /* 15.2.13.4.14 */ MRB_MT_ENTRY(mrb_hash_has_key, MRB_SYM_Q(include), MRB_ARGS_REQ(1)), /* 15.2.13.4.15 */ - MRB_MT_ENTRY_PRIVATE(mrb_hash_init, MRB_SYM(initialize), MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK()), /* 15.2.13.4.16 */ - MRB_MT_ENTRY_PRIVATE(mrb_hash_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1)), /* 15.2.13.4.17 */ + MRB_MT_ENTRY(mrb_hash_init, MRB_SYM(initialize), MRB_ARGS_OPT(1)|MRB_ARGS_BLOCK() | MRB_MT_PRIVATE), /* 15.2.13.4.16 */ + MRB_MT_ENTRY(mrb_hash_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.13.4.17 */ MRB_MT_ENTRY(mrb_hash_has_key, MRB_SYM_Q(key), MRB_ARGS_REQ(1)), /* 15.2.13.4.18 */ MRB_MT_ENTRY(mrb_hash_keys, MRB_SYM(keys), MRB_ARGS_NONE()), /* 15.2.13.4.19 */ MRB_MT_ENTRY(mrb_hash_size_m, MRB_SYM(length), MRB_ARGS_NONE()), /* 15.2.13.4.20 */ diff --git a/src/kernel.c b/src/kernel.c index 56f0ebc1d..bfc1713d9 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -669,7 +669,7 @@ mrb_p_m(mrb_state *mrb, mrb_value self) static const mrb_mt_entry kernel_rom_entries[] = { MRB_MT_ENTRY(mrb_eqq_m, MRB_OPSYM(eqq), MRB_ARGS_REQ(1)), /* 15.3.1.3.2 */ MRB_MT_ENTRY(mrb_cmp_m, MRB_OPSYM(cmp), MRB_ARGS_REQ(1)), - MRB_MT_ENTRY_PRIVATE(mrb_f_block_given_p_m, MRB_SYM_Q(block_given), MRB_ARGS_NONE()), /* 15.3.1.3.6 */ + MRB_MT_ENTRY(mrb_f_block_given_p_m, MRB_SYM_Q(block_given), MRB_ARGS_NONE() | MRB_MT_PRIVATE), /* 15.3.1.3.6 */ MRB_MT_ENTRY(mrb_obj_class_m, MRB_SYM(class), MRB_ARGS_NONE()), /* 15.3.1.3.7 */ MRB_MT_ENTRY(mrb_obj_clone, MRB_SYM(clone), MRB_ARGS_NONE()), /* 15.3.1.3.8 */ MRB_MT_ENTRY(mrb_obj_dup, MRB_SYM(dup), MRB_ARGS_NONE()), /* 15.3.1.3.9 */ @@ -678,25 +678,25 @@ static const mrb_mt_entry kernel_rom_entries[] = { MRB_MT_ENTRY(mrb_obj_frozen, MRB_SYM_Q(frozen), MRB_ARGS_NONE()), MRB_MT_ENTRY(mrb_obj_extend, MRB_SYM(extend), MRB_ARGS_ANY()), /* 15.3.1.3.13 */ MRB_MT_ENTRY(mrb_obj_hash, MRB_SYM(hash), MRB_ARGS_NONE()), /* 15.3.1.3.15 */ - MRB_MT_ENTRY_PRIVATE(mrb_obj_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1)), /* 15.3.1.3.16 */ + MRB_MT_ENTRY(mrb_obj_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.3.1.3.16 */ MRB_MT_ENTRY(mrb_obj_inspect, MRB_SYM(inspect), MRB_ARGS_NONE()), /* 15.3.1.3.17 */ MRB_MT_ENTRY(obj_is_instance_of, MRB_SYM_Q(instance_of), MRB_ARGS_REQ(1)), /* 15.3.1.3.19 */ MRB_MT_ENTRY(mrb_obj_is_kind_of_m, MRB_SYM_Q(is_a), MRB_ARGS_REQ(1)), /* 15.3.1.3.24 */ - MRB_MT_ENTRY_PRIVATE(mrb_f_block_given_p_m, MRB_SYM_Q(iterator), MRB_ARGS_NONE()), /* 15.3.1.3.25 */ + MRB_MT_ENTRY(mrb_f_block_given_p_m, MRB_SYM_Q(iterator), MRB_ARGS_NONE() | MRB_MT_PRIVATE), /* 15.3.1.3.25 */ MRB_MT_ENTRY(mrb_obj_is_kind_of_m, MRB_SYM_Q(kind_of), MRB_ARGS_REQ(1)), /* 15.3.1.3.26 */ MRB_MT_ENTRY(mrb_false, MRB_SYM_Q(nil), MRB_ARGS_NONE()), /* 15.3.1.3.32 */ MRB_MT_ENTRY(mrb_obj_id_m, MRB_SYM(object_id), MRB_ARGS_NONE()), /* 15.3.1.3.33 */ - MRB_MT_ENTRY_PRIVATE(mrb_f_raise, MRB_SYM(raise), MRB_ARGS_OPT(2)), /* 15.3.1.3.40 */ + MRB_MT_ENTRY(mrb_f_raise, MRB_SYM(raise), MRB_ARGS_OPT(2) | MRB_MT_PRIVATE), /* 15.3.1.3.40 */ MRB_MT_ENTRY(mrb_obj_remove_instance_variable, MRB_SYM(remove_instance_variable), MRB_ARGS_REQ(1)), /* 15.3.1.3.41 */ MRB_MT_ENTRY(obj_respond_to, MRB_SYM_Q(respond_to), MRB_ARGS_ARG(1,1)), /* 15.3.1.3.43 */ MRB_MT_ENTRY(mrb_any_to_s, MRB_SYM(to_s), MRB_ARGS_NONE()), /* 15.3.1.3.46 */ MRB_MT_ENTRY(mrb_obj_ceqq, MRB_SYM(__case_eqq), MRB_ARGS_REQ(1)), /* internal */ MRB_MT_ENTRY(mrb_ensure_int_type, MRB_SYM(__to_int), MRB_ARGS_NONE()), /* internal */ - MRB_MT_ENTRY_PRIVATE(mrb_false, MRB_SYM_Q(respond_to_missing), MRB_ARGS_ARG(1,1)), + MRB_MT_ENTRY(mrb_false, MRB_SYM_Q(respond_to_missing), MRB_ARGS_ARG(1,1) | MRB_MT_PRIVATE), MRB_MT_ENTRY(mrb_obj_method_recursive_p, MRB_SYM_Q(__method_recursive), MRB_ARGS_ARG(1,1)), #ifndef HAVE_MRUBY_IO_GEM - MRB_MT_ENTRY_PRIVATE(mrb_p_m, MRB_SYM(p), MRB_ARGS_ANY()), /* 15.3.1.3.34 */ - MRB_MT_ENTRY_PRIVATE(mrb_print_m, MRB_SYM(print), MRB_ARGS_ANY()), /* 15.3.1.3.35 */ + MRB_MT_ENTRY(mrb_p_m, MRB_SYM(p), MRB_ARGS_ANY() | MRB_MT_PRIVATE), /* 15.3.1.3.34 */ + MRB_MT_ENTRY(mrb_print_m, MRB_SYM(print), MRB_ARGS_ANY() | MRB_MT_PRIVATE), /* 15.3.1.3.35 */ #endif }; static mrb_mt_tbl kernel_rom_mt = MRB_MT_ROM_TAB(kernel_rom_entries); diff --git a/src/proc.c b/src/proc.c index 101da44a3..41028d7dc 100644 --- a/src/proc.c +++ b/src/proc.c @@ -546,7 +546,7 @@ mrb_proc_merge_lvar(mrb_state *mrb, mrb_irep *irep, struct REnv *env, int num, c /* ---------------------------*/ static const mrb_mt_entry proc_rom_entries[] = { - MRB_MT_ENTRY_PRIVATE(mrb_proc_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1)), + MRB_MT_ENTRY(mrb_proc_init_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), MRB_MT_ENTRY(proc_arity, MRB_SYM(arity), MRB_ARGS_NONE()), /* 15.2.17.4.2 */ MRB_MT_ENTRY(proc_eql, MRB_OPSYM(eq), MRB_ARGS_REQ(1)), MRB_MT_ENTRY(proc_eql, MRB_SYM_Q(eql), MRB_ARGS_REQ(1)), diff --git a/src/range.c b/src/range.c index 185ed8345..c95b322d7 100644 --- a/src/range.c +++ b/src/range.c @@ -574,13 +574,13 @@ static const mrb_mt_entry range_rom_entries[] = { MRB_MT_ENTRY(range_excl, MRB_SYM_Q(exclude_end), MRB_ARGS_NONE()), /* 15.2.14.4.6 */ MRB_MT_ENTRY(range_beg, MRB_SYM(first), MRB_ARGS_NONE()), /* 15.2.14.4.7 */ MRB_MT_ENTRY(range_include, MRB_SYM_Q(include), MRB_ARGS_REQ(1)), /* 15.2.14.4.8 */ - MRB_MT_ENTRY_PRIVATE(range_initialize, MRB_SYM(initialize), MRB_ARGS_ANY()), /* 15.2.14.4.9 */ + MRB_MT_ENTRY(range_initialize, MRB_SYM(initialize), MRB_ARGS_ANY() | MRB_MT_PRIVATE), /* 15.2.14.4.9 */ MRB_MT_ENTRY(range_end, MRB_SYM(last), MRB_ARGS_NONE()), /* 15.2.14.4.10 */ MRB_MT_ENTRY(range_include, MRB_SYM_Q(member), MRB_ARGS_REQ(1)), /* 15.2.14.4.11 */ MRB_MT_ENTRY(range_to_s, MRB_SYM(to_s), MRB_ARGS_NONE()), /* 15.2.14.4.12(x) */ MRB_MT_ENTRY(range_inspect, MRB_SYM(inspect), MRB_ARGS_NONE()), /* 15.2.14.4.13(x) */ MRB_MT_ENTRY(range_eql, MRB_SYM_Q(eql), MRB_ARGS_REQ(1)), /* 15.2.14.4.14(x) */ - MRB_MT_ENTRY_PRIVATE(range_initialize_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1)), /* 15.2.14.4.15(x) */ + MRB_MT_ENTRY(range_initialize_copy, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.14.4.15(x) */ MRB_MT_ENTRY(range_num_to_a, MRB_SYM(__num_to_a), MRB_ARGS_NONE()), }; static mrb_mt_tbl range_rom_mt = MRB_MT_ROM_TAB(range_rom_entries); diff --git a/src/string.c b/src/string.c index 170085719..1262b9819 100644 --- a/src/string.c +++ b/src/string.c @@ -3529,8 +3529,8 @@ static const mrb_mt_entry string_rom_entries[] = { MRB_MT_ENTRY(mrb_str_hash_m, MRB_SYM(hash), MRB_ARGS_NONE()), /* 15.2.10.5.20 */ MRB_MT_ENTRY(mrb_str_include, MRB_SYM_Q(include), MRB_ARGS_REQ(1)), /* 15.2.10.5.21 */ MRB_MT_ENTRY(mrb_str_index_m, MRB_SYM(index), MRB_ARGS_ARG(1,1)), /* 15.2.10.5.22 */ - MRB_MT_ENTRY_PRIVATE(mrb_str_init, MRB_SYM(initialize), MRB_ARGS_REQ(1)), /* 15.2.10.5.23 */ - MRB_MT_ENTRY_PRIVATE(mrb_str_replace, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1)), /* 15.2.10.5.24 */ + MRB_MT_ENTRY(mrb_str_init, MRB_SYM(initialize), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.10.5.23 */ + MRB_MT_ENTRY(mrb_str_replace, MRB_SYM(initialize_copy), MRB_ARGS_REQ(1) | MRB_MT_PRIVATE), /* 15.2.10.5.24 */ MRB_MT_ENTRY(mrb_str_intern, MRB_SYM(intern), MRB_ARGS_NONE()), /* 15.2.10.5.25 */ MRB_MT_ENTRY(mrb_str_size, MRB_SYM(length), MRB_ARGS_NONE()), /* 15.2.10.5.26 */ MRB_MT_ENTRY(mrb_str_replace, MRB_SYM(replace), MRB_ARGS_REQ(1)), /* 15.2.10.5.28 */ diff --git a/src/vm.c b/src/vm.c index bee3e08c4..63b5f8401 100644 --- a/src/vm.c +++ b/src/vm.c @@ -128,7 +128,7 @@ stack_init(mrb_state *mrb) c->ci = c->cibase; c->ci->u.target_class = mrb->object_class; c->ci->stack = c->stbase; - c->ci->vis = MRB_METHOD_PRIVATE_FL; + c->ci->vis = 1; /* private (2-bit packed) */ } static inline void