14 #ifndef END_OF_ENUMERATION
16 # define END_OF_ENUMERATION(key)
18 # define END_OF_ENUMERATION(key) END_OF_##key##_PLACEHOLDER = 0
39 #define NOEX_SAFE(n) ((int)((n) >> NOEX_SAFE_SHIFT_OFFSET) & 0x0F)
40 #define NOEX_WITH(n, s) (((s) << NOEX_SAFE_SHIFT_OFFSET) | (n) | (ruby_running ? 0 : NOEX_BASIC))
41 #define NOEX_WITH_SAFE(n) NOEX_WITH((n), rb_safe_level())
84 enum method_optimized_type {
108 #define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
109 #define UNDEFINED_REFINED_METHOD_P(def) \
110 ((def)->type == VM_METHOD_TYPE_REFINED && \
111 UNDEFINED_METHOD_ENTRY_P((def)->body.orig_me))
119 VALUE *defined_class_ptr);
121 VALUE *defined_class_ptr);
123 VALUE *defined_class_ptr);
struct unlinked_method_entry_list_entry * next
VALUE rb_mod_method_location(VALUE mod, ID id)
rb_method_entry_t * rb_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class_ptr)
struct rb_method_entry_struct * orig_me
struct rb_method_attr_struct rb_method_attr_t
SSL_METHOD *(* func)(void)
union rb_method_definition_struct::@90 body
void rb_mark_method_entry(const rb_method_entry_t *me)
void rb_sweep_method_entry(void *vm)
struct rb_method_entry_struct rb_method_entry_t
struct rb_method_definition_struct rb_method_definition_t
int rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2)
rb_method_entry_t * rb_method_entry_get_without_cache(VALUE klass, ID id, VALUE *define_class_ptr)
void rb_free_method_entry(rb_method_entry_t *me)
int rb_method_entry_arity(const rb_method_entry_t *me)
rb_method_entry_t * rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me, VALUE *defined_class_ptr)
rb_method_entry_t * rb_method_entry(VALUE klass, ID id, VALUE *define_class_ptr)
rb_method_entry_t * rb_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class_ptr)
VALUE(* invoker)(VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
rb_method_entry_t * rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_flag_t noex)
st_index_t rb_hash_method_entry(st_index_t hash, const rb_method_entry_t *me)
struct rb_method_cfunc_struct rb_method_cfunc_t
VALUE rb_method_entry_location(rb_method_entry_t *me)
void rb_free_m_table(st_table *tbl)
#define END_OF_ENUMERATION(key)
rb_method_definition_t * def
void rb_add_refined_method_entry(VALUE refined_class, ID mid)
static unsigned int hash(const char *str, unsigned int len)
rb_method_entry_t * rb_method_entry_set(VALUE klass, ID mid, const rb_method_entry_t *, rb_method_flag_t noex)
void rb_add_method_cfunc(VALUE klass, ID mid, VALUE(*func)(ANYARGS), int argc, rb_method_flag_t noex)
enum rb_method_definition_struct::@90::method_optimized_type optimize_type
VALUE rb_obj_method_location(VALUE obj, ID id)