|
Ruby
2.7.2p137(2020-10-01revision5445e0435260b449decf2ac16f9d09bae3cafe72)
|
#include "internal.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) END_OF_##key##_PLACEHOLDER = 0 |
| #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 = (me)->flags | IMEMO_FL_USER3) |
| #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 |
| #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 = (me)->flags | IMEMO_FL_USER3) |
| #define METHOD_ENTRY_VISI | ( | me | ) | (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0)) |
| #define UNDEFINED_METHOD_ENTRY_P | ( | me | ) | (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF) |
| #define UNDEFINED_REFINED_METHOD_P | ( | def | ) |
| typedef struct rb_callable_method_entry_struct rb_callable_method_entry_t |
| typedef struct rb_cref_struct rb_cref_t |
CREF (Class REFerence)
| typedef struct rb_iseq_struct rb_iseq_t |
| typedef struct rb_method_alias_struct rb_method_alias_t |
| typedef struct rb_method_attr_struct rb_method_attr_t |
| typedef struct rb_method_bmethod_struct rb_method_bmethod_t |
| typedef struct rb_method_cfunc_struct rb_method_cfunc_t |
| typedef struct rb_method_definition_struct rb_method_definition_t |
| typedef struct rb_method_entry_struct rb_method_entry_t |
| typedef struct rb_method_iseq_struct rb_method_iseq_t |
| typedef struct rb_method_refined_struct rb_method_refined_t |
| typedef struct rb_scope_visi_struct rb_scope_visibility_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 |
| void rb_add_method | ( | VALUE | klass, |
| ID | mid, | ||
| rb_method_type_t | type, | ||
| void * | option, | ||
| rb_method_visibility_t | visi | ||
| ) |
Definition at line 674 of file vm_method.c.
Referenced by rb_add_method_cfunc(), rb_add_method_iseq(), and rb_undef_method().
| void rb_add_method_cfunc | ( | VALUE | klass, |
| ID | mid, | ||
| VALUE(*)(ANYARGS) | func, | ||
| int | argc, | ||
| rb_method_visibility_t | visi | ||
| ) |
Definition at line 134 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().
| 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 684 of file vm_method.c.
References rb_add_method(), and VM_METHOD_TYPE_ISEQ.
Definition at line 491 of file vm_method.c.
| RUBY_SYMBOL_EXPORT_END const rb_callable_method_entry_t* rb_callable_method_entry | ( | VALUE | klass, |
| ID | id | ||
| ) |
Definition at line 878 of file vm_method.c.
Referenced by rb_vm_search_method_slowpath().
| const rb_callable_method_entry_t* rb_callable_method_entry_with_refinements | ( | VALUE | klass, |
| ID | id, | ||
| VALUE * | defined_class | ||
| ) |
Definition at line 917 of file vm_method.c.
| const rb_callable_method_entry_t* rb_callable_method_entry_without_refinements | ( | VALUE | klass, |
| ID | id, | ||
| VALUE * | defined_class | ||
| ) |
Definition at line 931 of file vm_method.c.
| void rb_free_method_entry | ( | const rb_method_entry_t * | me | ) |
Definition at line 174 of file vm_method.c.
| st_index_t rb_hash_method_entry | ( | st_index_t | hash, |
| const rb_method_entry_t * | me | ||
| ) |
Definition at line 1575 of file vm_method.c.
| const rb_method_entry_t* rb_method_entry | ( | VALUE | klass, |
| ID | id | ||
| ) |
Definition at line 837 of file vm_method.c.
Referenced by rb_method_basic_definition_p().
| int rb_method_entry_arity | ( | const rb_method_entry_t * | me | ) |
| const rb_method_entry_t* rb_method_entry_at | ( | VALUE | obj, |
| ID | id | ||
| ) |
Definition at line 756 of file vm_method.c.
| const rb_method_entry_t* rb_method_entry_clone | ( | const rb_method_entry_t * | me | ) |
Definition at line 406 of file vm_method.c.
Referenced by 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 415 of file vm_method.c.
References rb_method_definition_struct::body, rb_method_entry_struct::def, rb_method_entry_struct::defined_class, NULL, rb_method_refined_struct::orig_me, rb_method_entry_struct::owner, rb_method_entry_clone(), RB_OBJ_WRITE, rb_method_definition_struct::refined, and VM_METHOD_TYPE_REFINED.
| void rb_method_entry_copy | ( | rb_method_entry_t * | dst, |
| const rb_method_entry_t * | src | ||
| ) |
Definition at line 451 of file vm_method.c.
References rb_method_entry_struct::def.
| 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 397 of file vm_method.c.
| int rb_method_entry_eq | ( | const rb_method_entry_t * | m1, |
| const rb_method_entry_t * | m2 | ||
| ) |
Definition at line 1476 of file vm_method.c.
References rb_method_entry_struct::def, and rb_method_definition_eq().
| VALUE rb_method_entry_location | ( | const rb_method_entry_t * | me | ) |
Definition at line 2725 of file proc.c.
References METHOD::me, and Qnil.
| rb_method_entry_t* rb_method_entry_set | ( | VALUE | klass, |
| ID | mid, | ||
| const rb_method_entry_t * | , | ||
| rb_method_visibility_t | noex | ||
| ) |
Definition at line 707 of file vm_method.c.
| const rb_method_entry_t* rb_method_entry_with_refinements | ( | VALUE | klass, |
| ID | id, | ||
| VALUE * | defined_class | ||
| ) |
Definition at line 911 of file vm_method.c.
| const rb_method_entry_t* rb_method_entry_without_refinements | ( | VALUE | klass, |
| ID | id, | ||
| VALUE * | defined_class | ||
| ) |
Definition at line 925 of file vm_method.c.
| RUBY_SYMBOL_EXPORT_BEGIN const rb_method_entry_t* rb_resolve_me_location | ( | const rb_method_entry_t * | , |
| VALUE | [5] | ||
| ) |
Definition at line 5400 of file thread.c.
References 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, rb_method_bmethod_struct::proc, rb_iseq_path(), rb_proc_get_iseq(), VM_METHOD_TYPE_BMETHOD, and VM_METHOD_TYPE_ISEQ.
| const rb_method_entry_t* rb_resolve_refined_method | ( | VALUE | refinements, |
| const rb_method_entry_t * | me | ||
| ) |
Definition at line 972 of file vm_method.c.
| void rb_scope_visibility_set | ( | rb_method_visibility_t | ) |
Definition at line 1138 of file vm_method.c.
| VALUE rb_unnamed_parameters | ( | int | arity | ) |
Definition at line 1262 of file proc.c.
References CONST_ID, ID2SYM, OBJ_FREEZE, rb_ary_new2, rb_ary_new3, rb_ary_push(), and rb_ary_store().
| STATIC_ASSERT | ( | sizeof_method_def | , |
| offsetof(rb_method_definition_t, body) | = =8 |
||
| ) |
| STATIC_ASSERT | ( | VM_METHOD_TYPE_MINIMUM_BITS | , |
| VM_METHOD_TYPE_REFINED<= | 1<< VM_METHOD_TYPE_MINIMUM_BITS | ||
| ) |