Ruby: method.h File Reference

Ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c52d4d35cc6a173c89eda98ceffa2dcf)

Data Structures | Macros | Typedefs | Enumerations | Functions
method.h File Reference
`#include "internal.h"`
`#include "internal/imemo.h"`
`#include "internal/compilers.h"`
`#include "internal/static_assert.h"`

Go to the source code of this file.

## Data Structures
struct | rb_scope_visi_struct
struct | rb_cref_struct
| CREF (Class REFerence) More...
struct | rb_method_entry_struct
struct | rb_callable_method_entry_struct
struct | rb_method_iseq_struct
struct | rb_method_cfunc_struct
struct | rb_method_attr_struct
struct | rb_method_alias_struct
struct | rb_method_refined_struct
struct | rb_method_bmethod_struct
struct | rb_method_definition_struct

## Macros
#define | END_OF_ENUMERATION(key)
#define | METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
#define | METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
#define | METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
#define | METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags |= IMEMO_FL_USER3)
#define | METHOD_ENTRY_CACHED(me) ((me)->flags & IMEMO_FL_USER4)
#define | METHOD_ENTRY_CACHED_SET(me) ((me)->flags |= IMEMO_FL_USER4)
#define | METHOD_ENTRY_INVALIDATED(me) ((me)->flags & IMEMO_FL_USER5)
#define | METHOD_ENTRY_INVALIDATED_SET(me) ((me)->flags |= IMEMO_FL_USER5)
#define | METHOD_ENTRY_CACHEABLE(me) !(METHOD_ENTRY_VISI(me) == METHOD_VISI_PROTECTED)
#define | VM_METHOD_TYPE_MINIMUM_BITS 4
#define | rb_iseq_t rb_iseq_t
#define | UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
#define | UNDEFINED_REFINED_METHOD_P(def)

## Typedefs
typedef struct rb_scope_visi_struct | rb_scope_visibility_t
typedef struct rb_cref_struct | rb_cref_t
| CREF (Class REFerence) More...
typedef struct rb_method_entry_struct | rb_method_entry_t
typedef struct rb_callable_method_entry_struct | rb_callable_method_entry_t
typedef struct rb_iseq_struct | rb_iseq_t
typedef struct rb_method_iseq_struct | rb_method_iseq_t
typedef struct rb_method_cfunc_struct | rb_method_cfunc_t
typedef struct rb_method_attr_struct | rb_method_attr_t
typedef struct rb_method_alias_struct | rb_method_alias_t
typedef struct rb_method_refined_struct | rb_method_refined_t
typedef struct rb_method_bmethod_struct | rb_method_bmethod_t
typedef struct rb_method_definition_struct | rb_method_definition_t

## Enumerations
enum | rb_method_visibility_t { METHOD_VISI_UNDEF = 0x00 , METHOD_VISI_PUBLIC = 0x01 , METHOD_VISI_PRIVATE = 0x02 , METHOD_VISI_PROTECTED = 0x03 , METHOD_VISI_MASK = 0x03 }
enum | rb_method_type_t { VM_METHOD_TYPE_ISEQ , VM_METHOD_TYPE_CFUNC , VM_METHOD_TYPE_ATTRSET , VM_METHOD_TYPE_IVAR , VM_METHOD_TYPE_BMETHOD , VM_METHOD_TYPE_ZSUPER , VM_METHOD_TYPE_ALIAS , VM_METHOD_TYPE_UNDEF , VM_METHOD_TYPE_NOTIMPLEMENTED , VM_METHOD_TYPE_OPTIMIZED , VM_METHOD_TYPE_MISSING , VM_METHOD_TYPE_REFINED }
enum | method_optimized_type { OPTIMIZED_METHOD_TYPE_SEND , OPTIMIZED_METHOD_TYPE_CALL , OPTIMIZED_METHOD_TYPE_BLOCK_CALL , OPTIMIZED_METHOD_TYPE__MAX }

## Functions
| STATIC_ASSERT (VM_METHOD_TYPE_MINIMUM_BITS, VM_METHOD_TYPE_REFINED<=(1<< VM_METHOD_TYPE_MINIMUM_BITS))
| STATIC_ASSERT (sizeof_method_def, offsetof(rb_method_definition_t, body)==8)
void | rb_add_method_cfunc (VALUE klass, ID mid, VALUE(*func)(ANYARGS), int argc, rb_method_visibility_t visi)
void | rb_add_method_iseq (VALUE klass, ID mid, const rb_iseq_t *iseq, rb_cref_t *cref, rb_method_visibility_t visi)
void | rb_add_refined_method_entry (VALUE refined_class, ID mid)
void | rb_add_method (VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_visibility_t visi)
rb_method_entry_t * | rb_method_entry_set (VALUE klass, ID mid, const rb_method_entry_t *, rb_method_visibility_t noex)
rb_method_entry_t * | rb_method_entry_create (ID called_id, VALUE klass, rb_method_visibility_t visi, const rb_method_definition_t *def)
const rb_method_entry_t * | rb_method_entry_at (VALUE obj, ID id)
const rb_method_entry_t * | rb_method_entry (VALUE klass, ID id)
const rb_method_entry_t * | rb_method_entry_with_refinements (VALUE klass, ID id, VALUE *defined_class)
const rb_method_entry_t * | rb_method_entry_without_refinements (VALUE klass, ID id, VALUE *defined_class)
const rb_method_entry_t * | rb_resolve_refined_method (VALUE refinements, const rb_method_entry_t *me)
const rb_method_entry_t * | rb_resolve_me_location (const rb_method_entry_t *, VALUE[5])
const rb_callable_method_entry_t * | rb_callable_method_entry (VALUE klass, ID id)
const rb_callable_method_entry_t * | rb_callable_method_entry_with_refinements (VALUE klass, ID id, VALUE *defined_class)
const rb_callable_method_entry_t * | rb_callable_method_entry_without_refinements (VALUE klass, ID id, VALUE *defined_class)
int | rb_method_entry_arity (const rb_method_entry_t *me)
int | rb_method_entry_eq (const rb_method_entry_t *m1, const rb_method_entry_t *m2)
st_index_t | rb_hash_method_entry (st_index_t hash, const rb_method_entry_t *me)
VALUE | rb_method_entry_location (const rb_method_entry_t *me)
void | rb_free_method_entry (const rb_method_entry_t *me)
const rb_method_entry_t * | rb_method_entry_clone (const rb_method_entry_t *me)
const rb_callable_method_entry_t * | rb_method_entry_complement_defined_class (const rb_method_entry_t *src_me, ID called_id, VALUE defined_class)
void | rb_method_entry_copy (rb_method_entry_t *dst, const rb_method_entry_t *src)
void | rb_method_table_insert (VALUE klass, struct rb_id_table *table, ID method_id, const rb_method_entry_t *me)
void | rb_scope_visibility_set (rb_method_visibility_t)
VALUE | rb_unnamed_parameters (int arity)
void | rb_clear_method_cache (VALUE klass_or_module, ID mid)
void | rb_clear_method_cache_all (void)

## Macro Definition Documentation

## ◆ END_OF_ENUMERATION

#define END_OF_ENUMERATION | ( |  | key | ) |

Definition at line 21 of file method.h.

## ◆ METHOD_ENTRY_BASIC

#define METHOD_ENTRY_BASIC | ( |  | me | ) | (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))

Definition at line 71 of file method.h.

## ◆ METHOD_ENTRY_CACHEABLE

#define METHOD_ENTRY_CACHEABLE | ( |  | me | ) | !(METHOD_ENTRY_VISI(me) == METHOD_VISI_PROTECTED)

Definition at line 78 of file method.h.

## ◆ METHOD_ENTRY_CACHED

#define METHOD_ENTRY_CACHED | ( |  | me | ) | ((me)->flags & IMEMO_FL_USER4)

Definition at line 74 of file method.h.

## ◆ METHOD_ENTRY_CACHED_SET

#define METHOD_ENTRY_CACHED_SET | ( |  | me | ) | ((me)->flags |= IMEMO_FL_USER4)

Definition at line 75 of file method.h.

## ◆ METHOD_ENTRY_COMPLEMENTED

#define METHOD_ENTRY_COMPLEMENTED | ( |  | me | ) | ((me)->flags & IMEMO_FL_USER3)

Definition at line 72 of file method.h.

## ◆ METHOD_ENTRY_COMPLEMENTED_SET

#define METHOD_ENTRY_COMPLEMENTED_SET | ( |  | me | ) | ((me)->flags |= IMEMO_FL_USER3)

Definition at line 73 of file method.h.

## ◆ METHOD_ENTRY_INVALIDATED

#define METHOD_ENTRY_INVALIDATED | ( |  | me | ) | ((me)->flags & IMEMO_FL_USER5)

Definition at line 76 of file method.h.

## ◆ METHOD_ENTRY_INVALIDATED_SET

#define METHOD_ENTRY_INVALIDATED_SET | ( |  | me | ) | ((me)->flags |= IMEMO_FL_USER5)

Definition at line 77 of file method.h.

## ◆ METHOD_ENTRY_VISI

#define METHOD_ENTRY_VISI | ( |  | me | ) | (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))

Definition at line 70 of file method.h.

## ◆ rb_iseq_t

#define rb_iseq_t rb_iseq_t

Definition at line 131 of file method.h.

## ◆ UNDEFINED_METHOD_ENTRY_P

#define UNDEFINED_METHOD_ENTRY_P | ( |  | me | ) | (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)

Definition at line 198 of file method.h.

## ◆ UNDEFINED_REFINED_METHOD_P

#define UNDEFINED_REFINED_METHOD_P | ( |  | def | ) |

Value:
((def)->type == VM_METHOD_TYPE_REFINED && \
UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me))
VM_METHOD_TYPE_REFINED
@ VM_METHOD_TYPE_REFINED
refinement
Definition: method.h:121
UNDEFINED_METHOD_ENTRY_P
#define UNDEFINED_METHOD_ENTRY_P(me)
Definition: method.h:198
ruby::backward::cxxanyargs::type
VALUE type(ANYARGS)
ANYARGS-ed function type.
Definition: cxxanyargs.hpp:56
def
int def(FILE *source, FILE *dest, int level)
Definition: zpipe.c:36

Definition at line 199 of file method.h.

## ◆ VM_METHOD_TYPE_MINIMUM_BITS

#define VM_METHOD_TYPE_MINIMUM_BITS 4

Definition at line 125 of file method.h.

## Typedef Documentation

## ◆ rb_callable_method_entry_t

typedef struct rb_callable_method_entry_struct rb_callable_method_entry_t

## ◆ rb_cref_t

typedef struct rb_cref_struct rb_cref_t

CREF (Class REFerence)

## ◆ rb_iseq_t

typedef struct rb_iseq_struct rb_iseq_t

Definition at line 130 of file method.h.

## ◆ rb_method_alias_t

typedef struct rb_method_alias_struct rb_method_alias_t

## ◆ rb_method_attr_t

typedef struct rb_method_attr_struct rb_method_attr_t

## ◆ rb_method_bmethod_t

typedef struct rb_method_bmethod_struct rb_method_bmethod_t

## ◆ rb_method_cfunc_t

typedef struct rb_method_cfunc_struct rb_method_cfunc_t

## ◆ rb_method_definition_t

typedef struct rb_method_definition_struct rb_method_definition_t

Definition at line 195 of file method.h.

## ◆ rb_method_entry_t

typedef struct rb_method_entry_struct rb_method_entry_t

## ◆ rb_method_iseq_t

typedef struct rb_method_iseq_struct rb_method_iseq_t

## ◆ rb_method_refined_t

typedef struct rb_method_refined_struct rb_method_refined_t

## ◆ rb_scope_visibility_t

typedef struct rb_scope_visi_struct rb_scope_visibility_t

## Enumeration Type Documentation

## ◆ method_optimized_type

enum method_optimized_type

Enumerator
OPTIMIZED_METHOD_TYPE_SEND |
OPTIMIZED_METHOD_TYPE_CALL |
OPTIMIZED_METHOD_TYPE_BLOCK_CALL |
OPTIMIZED_METHOD_TYPE__MAX |

Definition at line 165 of file method.h.

## ◆ rb_method_type_t

enum rb_method_type_t

Enumerator
VM_METHOD_TYPE_ISEQ | Ruby method.
VM_METHOD_TYPE_CFUNC | C method.
VM_METHOD_TYPE_ATTRSET | attr_writer or attr_accessor
VM_METHOD_TYPE_IVAR | attr_reader or attr_accessor
VM_METHOD_TYPE_BMETHOD |
VM_METHOD_TYPE_ZSUPER |
VM_METHOD_TYPE_ALIAS |
VM_METHOD_TYPE_UNDEF |
VM_METHOD_TYPE_NOTIMPLEMENTED |
VM_METHOD_TYPE_OPTIMIZED | Kernel::send, Proc::call, etc.
VM_METHOD_TYPE_MISSING | wrapper for method_missing(id)
VM_METHOD_TYPE_REFINED | refinement

Definition at line 109 of file method.h.

## ◆ rb_method_visibility_t

enum rb_method_visibility_t

Enumerator
METHOD_VISI_UNDEF |
METHOD_VISI_PUBLIC |
METHOD_VISI_PRIVATE |
METHOD_VISI_PROTECTED |
METHOD_VISI_MASK |

Definition at line 29 of file method.h.

## Function Documentation

## ◆ rb_add_method()

void rb_add_method | ( | VALUE | klass,
|  | ID | mid,
|  | rb_method_type_t | type,
|  | void * | option,
|  | rb_method_visibility_t | visi
| ) |  |

Definition at line 900 of file vm_method.c.

References NULL, VM_METHOD_TYPE_REFINED, and VM_METHOD_TYPE_UNDEF.

Referenced by Init_Proc(), Init_VM(), Init_vm_eval(), rb_add_method_cfunc(), rb_add_method_iseq(), rb_add_refined_method_entry(), rb_attr(), rb_undef(), and rb_undef_method().

## ◆ rb_add_method_cfunc()

void rb_add_method_cfunc | ( | VALUE | klass,
|  | ID | mid,
|  | VALUE(*)(ANYARGS) | func,
|  | int | argc,
|  | rb_method_visibility_t | visi
| ) |  |

Definition at line 313 of file vm_method.c.

References rb_method_cfunc_struct::argc, argc, rb_method_cfunc_struct::func, rb_add_method(), rb_eArgError, rb_f_notimplement(), rb_raise(), and VM_METHOD_TYPE_CFUNC.

Referenced by rb_define_method(), rb_define_method_id(), rb_define_private_method(), and rb_define_protected_method().

## ◆ rb_add_method_iseq()

void rb_add_method_iseq | ( | VALUE | klass,
|  | ID | mid,
|  | const rb_iseq_t * | iseq,
|  | rb_cref_t * | cref,
|  | rb_method_visibility_t | visi
| ) |  |

Definition at line 910 of file vm_method.c.

References rb_add_method(), and VM_METHOD_TYPE_ISEQ.

## ◆ rb_add_refined_method_entry()

void rb_add_refined_method_entry | ( | VALUE | refined_class,
|  | ID | mid
| ) |  |

Definition at line 709 of file vm_method.c.

References METHOD_VISI_PUBLIC, rb_add_method(), rb_clear_method_cache(), and VM_METHOD_TYPE_REFINED.

## ◆ rb_callable_method_entry()

const rb_callable_method_entry_t * rb_callable_method_entry | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 1177 of file vm_method.c.

References NULL.

Referenced by rb_check_funcall_basic_kw(), and rb_method_basic_definition_p().

## ◆ rb_callable_method_entry_with_refinements()

const rb_callable_method_entry_t * rb_callable_method_entry_with_refinements | ( | VALUE | klass,
|  | ID | id,
|  | VALUE * | defined_class
| ) |  |

Definition at line 1235 of file vm_method.c.

## ◆ rb_callable_method_entry_without_refinements()

const rb_callable_method_entry_t * rb_callable_method_entry_without_refinements | ( | VALUE | klass,
|  | ID | id,
|  | VALUE * | defined_class
| ) |  |

Definition at line 1253 of file vm_method.c.

References FALSE, and TRUE.

## ◆ rb_clear_method_cache()

void rb_clear_method_cache | ( | VALUE | klass_or_module,
|  | ID | mid
| ) |  |

Definition at line 236 of file vm_method.c.

References FL_TEST, rb_class_foreach_subclass(), rb_clear_method_cache(), RMODULE_IS_REFINEMENT, and T_MODULE.

Referenced by rb_add_refined_method_entry(), and rb_clear_method_cache().

## ◆ rb_clear_method_cache_all()

void rb_clear_method_cache_all | ( | void |  | ) |

Definition at line 280 of file vm_method.c.

References NULL, and rb_objspace_each_objects().

## ◆ rb_free_method_entry()

void rb_free_method_entry | ( | const rb_method_entry_t * | me | ) |

Definition at line 358 of file vm_method.c.

References rb_method_entry_struct::def, and METHOD_ENTRY_COMPLEMENTED.

## ◆ rb_hash_method_entry()

st_index_t rb_hash_method_entry | ( | st_index_t | hash,
|  | const rb_method_entry_t * | me
| ) |  |

Definition at line 1920 of file vm_method.c.

References rb_method_entry_struct::def.

## ◆ rb_method_entry()

const rb_method_entry_t * rb_method_entry | ( | VALUE | klass,
|  | ID | id
| ) |  |

Definition at line 1023 of file vm_method.c.

References NULL.

## ◆ rb_method_entry_arity()

int rb_method_entry_arity | ( | const rb_method_entry_t * | me | ) |

Definition at line 2684 of file proc.c.

References max, and METHOD::me.

Referenced by rb_mod_method_arity(), and rb_tracearg_parameters().

## ◆ rb_method_entry_at()

const rb_method_entry_t * rb_method_entry_at | ( | VALUE | obj,
|  | ID | id
| ) |  |

Definition at line 973 of file vm_method.c.

Referenced by rb_obj_singleton_method().

## ◆ rb_method_entry_clone()

const rb_method_entry_t * rb_method_entry_clone | ( | const rb_method_entry_t * | me | ) |

Definition at line 606 of file vm_method.c.

References rb_method_entry_struct::called_id, rb_method_entry_struct::def, rb_method_entry_struct::defined_class, METHOD_ENTRY_COMPLEMENTED, and rb_method_entry_struct::owner.

Referenced by rb_alias(), and rb_method_entry_complement_defined_class().

## ◆ rb_method_entry_complement_defined_class()

const rb_callable_method_entry_t * rb_method_entry_complement_defined_class | ( | const rb_method_entry_t * | src_me,
|  | ID | called_id,
|  | VALUE | defined_class
| ) |  |

Definition at line 619 of file vm_method.c.

References rb_method_entry_struct::called_id, def(), rb_method_entry_struct::def, rb_method_entry_struct::defined_class, METHOD_ENTRY_COMPLEMENTED_SET, NULL, rb_method_entry_struct::owner, rb_method_definition_create(), rb_method_definition_set(), rb_method_entry_clone(), RB_OBJ_WRITE, T_MODULE, VM_ASSERT, and VM_METHOD_TYPE_REFINED.

Referenced by rb_resolve_refined_method_callable().

## ◆ rb_method_entry_copy()

void rb_method_entry_copy | ( | rb_method_entry_t * | dst,
|  | const rb_method_entry_t * | src
| ) |  |

Definition at line 655 of file vm_method.c.

References rb_method_entry_struct::called_id, rb_method_entry_struct::def, rb_method_entry_struct::defined_class, rb_method_entry_struct::owner, and RB_OBJ_WRITE.

## ◆ rb_method_entry_create()

rb_method_entry_t * rb_method_entry_create | ( | ID | called_id,
|  | VALUE | klass,
|  | rb_method_visibility_t | visi,
|  | const rb_method_definition_t * | def
| ) |  |

Definition at line 597 of file vm_method.c.

References def(), FALSE, NULL, ruby_running, and TRUE.

## ◆ rb_method_entry_eq()

int rb_method_entry_eq | ( | const rb_method_entry_t * | m1,
|  | const rb_method_entry_t * | m2
| ) |  |

Definition at line 1821 of file vm_method.c.

References rb_method_entry_struct::def, and rb_method_definition_eq().

## ◆ rb_method_entry_location()

VALUE rb_method_entry_location | ( | const rb_method_entry_t * | me | ) |

Definition at line 2869 of file proc.c.

References rb_method_entry_struct::def, METHOD::me, and Qnil.

## ◆ rb_method_entry_set()

rb_method_entry_t * rb_method_entry_set | ( | VALUE | klass,
|  | ID | mid,
|  | const rb_method_entry_t * | me,
|  | rb_method_visibility_t | noex
| ) |  |

Definition at line 939 of file vm_method.c.

## ◆ rb_method_entry_with_refinements()

const rb_method_entry_t * rb_method_entry_with_refinements | ( | VALUE | klass,
|  | ID | id,
|  | VALUE * | defined_class
| ) |  |

Definition at line 1208 of file vm_method.c.

References TRUE.

## ◆ rb_method_entry_without_refinements()

const rb_method_entry_t * rb_method_entry_without_refinements | ( | VALUE | klass,
|  | ID | id,
|  | VALUE * | defined_class
| ) |  |

Definition at line 1247 of file vm_method.c.

References FALSE.

Referenced by rb_tracearg_parameters().

## ◆ rb_method_table_insert()

void rb_method_table_insert | ( | VALUE | klass,
|  | struct rb_id_table * | table,
|  | ID | method_id,
|  | const rb_method_entry_t * | me
| ) |  |

Definition at line 286 of file vm_method.c.

References Qundef, rb_id_table_insert(), RB_OBJ_WRITTEN, RBASIC, RCLASS_M_TBL, T_CLASS, T_ICLASS, T_MODULE, and VM_ASSERT.

## ◆ rb_resolve_me_location()

const rb_method_entry_t * rb_resolve_me_location | ( | const rb_method_entry_t * | me,
|  | VALUE | resolved_location[5]
| ) |  |

Definition at line 5694 of file thread.c.

References rb_method_definition_struct::alias, rb_code_location_struct::beg_pos, rb_method_definition_struct::bmethod, rb_method_definition_struct::body, rb_iseq_struct::body, rb_iseq_location_struct::code_location, rb_code_position_struct::column, rb_method_entry_struct::def, rb_code_location_struct::end_pos, INT2FIX, rb_method_definition_struct::iseq, rb_method_iseq_struct::iseqptr, rb_code_position_struct::lineno, rb_iseq_constant_body::location, NULL, rb_method_refined_struct::orig_me, rb_method_alias_struct::original_me, rb_method_bmethod_struct::proc, rb_ary_entry(), rb_iseq_path(), rb_proc_get_iseq(), rb_method_definition_struct::refined, T_ARRAY, T_STRING, VM_METHOD_TYPE_ALIAS, VM_METHOD_TYPE_BMETHOD, VM_METHOD_TYPE_ISEQ, and VM_METHOD_TYPE_REFINED.

## ◆ rb_resolve_refined_method()

const rb_method_entry_t * rb_resolve_refined_method | ( | VALUE | refinements,
|  | const rb_method_entry_t * | me
| ) |  |

Definition at line 1294 of file vm_method.c.

References NULL.

Referenced by rb_alias(), and rb_undef().

## ◆ rb_scope_visibility_set()

void rb_scope_visibility_set | ( | rb_method_visibility_t | visi | ) |

Definition at line 1483 of file vm_method.c.

References FALSE.

## ◆ rb_unnamed_parameters()

VALUE rb_unnamed_parameters | ( | int | arity | ) |

Definition at line 1393 of file proc.c.

References CONST_ID, ID2SYM, OBJ_FREEZE, rb_ary_new2, rb_ary_new3, rb_ary_push(), and rb_ary_store().

Referenced by rb_tracearg_parameters().

## ◆ STATIC_ASSERT() [1/2]

STATIC_ASSERT | ( | sizeof_method_def | ,
|  | offsetof(rb_method_definition_t, body) | = `=8`
| ) |  |

## ◆ STATIC_ASSERT() [2/2]

STATIC_ASSERT | ( | VM_METHOD_TYPE_MINIMUM_BITS | ,
|  | VM_METHOD_TYPE_REFINED<= | 1<< VM_METHOD_TYPE_MINIMUM_BITS
| ) |  |