Ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5ad0e4688e963d9de019557c78feed9)
|
#include "ruby/encoding.h"
#include "ruby/st.h"
#include "ruby/util.h"
#include "internal.h"
#include "id_table.h"
#include "constant.h"
#include "id.h"
#include "ccan/list/list.h"
#include "debug_counter.h"
#include "vm_core.h"
#include "transient_heap.h"
#include "variable.h"
Go to the source code of this file.
Data Structures | |
struct | ivar_update |
struct | trace_var |
struct | rb_global_variable |
struct | trace_data |
struct | obj_ivar_tag |
struct | gen_ivar_tag |
struct | givar_copy |
struct | autoload_const |
struct | autoload_state |
struct | autoload_data_i |
Macros | |
#define | rb_is_constant_id rb_is_const_id |
#define | rb_is_constant_name rb_is_const_name |
#define | id_for_var(obj, name, part, type) id_for_var_message(obj, name, type, "`%1$s' is not allowed as "#part" "#type" variable name") |
#define | id_for_var_message(obj, name, type, message) check_id_type(obj, &(name), rb_is_##type##_id, rb_is_##type##_name, message, strlen(message)) |
#define | check_autoload_table(av) (struct st_table *)rb_check_typeddata((av), &autoload_data_type) |
#define | CVAR_FOREACH_ANCESTORS(klass, v, r) |
#define | CVAR_LOOKUP(v, r) |
Typedefs | |
typedef VALUE(* | fallback_func) (VALUE obj, VALUE name) |
typedef int | rb_ivar_foreach_callback_func(ID key, VALUE val, st_data_t arg) |
#define check_autoload_table | ( | av | ) | (struct st_table *)rb_check_typeddata((av), &autoload_data_type) |
Definition at line 1783 of file variable.c.
Definition at line 3072 of file variable.c.
#define CVAR_LOOKUP | ( | v, | |
r | |||
) |
#define id_for_var | ( | obj, | |
name, | |||
part, | |||
type | |||
) | id_for_var_message(obj, name, type, "`%1$s' is not allowed as "#part" "#type" variable name") |
Definition at line 1590 of file variable.c.
#define id_for_var_message | ( | obj, | |
name, | |||
type, | |||
message | |||
) | check_id_type(obj, &(name), rb_is_##type##_id, rb_is_##type##_name, message, strlen(message)) |
Definition at line 1592 of file variable.c.
#define rb_is_constant_id rb_is_const_id |
Definition at line 1588 of file variable.c.
#define rb_is_constant_name rb_is_const_name |
Definition at line 1589 of file variable.c.
Definition at line 1347 of file variable.c.
Definition at line 48 of file variable.c.
NORETURN | ( | static void | undefined_constantVALUE mod, VALUE name | ) |
NORETURN | ( | static void | uninitialized_constantVALUE, VALUE | ) |
Definition at line 756 of file variable.c.
References rb_global_entry(), and rb_id_table_lookup().
Definition at line 1126 of file variable.c.
Definition at line 1084 of file variable.c.
References obj, Qnil, and rb_ivar_lookup().
Referenced by rb_dtrace_setup(), rb_singleton_class_clone_and_attach(), and rb_singleton_class_internal_p().
Definition at line 1928 of file variable.c.
References mod, rb_autoload_str(), rb_eArgError, rb_fstring_cstr, and rb_raise().
Definition at line 2291 of file variable.c.
Referenced by rb_autoload_p().
Definition at line 2226 of file variable.c.
Definition at line 2285 of file variable.c.
References mod, rb_autoload_at_p(), and TRUE.
Definition at line 1937 of file variable.c.
References Check_Type, mod, PRIsVALUE, Qundef, QUOTE_ID, rb_const_lookup(), rb_const_set(), rb_eArgError, rb_eNameError, rb_is_const_id(), rb_raise(), RCLASS_IV_TBL, RSTRING_LEN, st_lookup(), T_STRING, and rb_const_entry_struct::value.
Referenced by rb_autoload().
MJIT_FUNC_EXPORTED int rb_autoloading_value | ( | VALUE | mod, |
ID | id, | ||
VALUE * | value, | ||
rb_const_flag_t * | flag | ||
) |
Definition at line 2078 of file variable.c.
Definition at line 3327 of file variable.c.
References obj, and RCLASS_IV_TBL.
Referenced by rb_singleton_class_attached().
Definition at line 274 of file variable.c.
References klass, rb_class_path(), and rb_class_real().
Referenced by rb_any_to_s(), and rb_const_warn_if_deprecated().
Definition at line 153 of file variable.c.
References path.
Referenced by rb_class_name(), rb_define_class_id_under(), and rb_dtrace_setup().
Definition at line 162 of file variable.c.
Definition at line 2686 of file variable.c.
Referenced by Init_cparse(), rb_define_class(), and rb_define_module().
Definition at line 2692 of file variable.c.
Referenced by rb_const_remove(), rb_define_class_id_under(), and rb_define_module_id_under().
Definition at line 2680 of file variable.c.
Definition at line 2391 of file variable.c.
Referenced by generic_to_value(), Init_cparse(), Init_objspace(), rb_define_class(), and rb_define_module().
Definition at line 2397 of file variable.c.
Referenced by Init_cparse(), rb_define_class_id_under(), and rb_define_module_id_under().
Definition at line 2385 of file variable.c.
Definition at line 2598 of file variable.c.
References st_table::num_entries, rb_ary_new2, and st_foreach_safe().
Referenced by rb_mod_constants().
MJIT_FUNC_EXPORTED rb_const_entry_t * rb_const_lookup | ( | VALUE | klass, |
ID | id | ||
) |
Definition at line 3352 of file variable.c.
References klass, rb_id_table_lookup(), and RCLASS_CONST_TBL.
Referenced by rb_autoload_str(), and rb_const_remove().
Definition at line 1694 of file variable.c.
References idConst_missing, klass, name, rb_funcallv, and rb_vm_inc_const_missing_count().
Definition at line 2494 of file variable.c.
References ID2SYM, mod, rb_check_frozen, rb_const_defined_at(), rb_const_lookup(), rb_id_table_delete(), rb_name_err_raise, and RCLASS_CONST_TBL.
Definition at line 2756 of file variable.c.
References klass, NIL_P, PRIsVALUE, QUOTE_ID, rb_eTypeError, rb_raise(), and RCLASS_CONST_TBL.
Referenced by rb_autoload_str(), rb_define_class(), rb_define_class_id_under(), rb_define_const(), rb_define_module(), and rb_define_module_id_under().
Definition at line 2461 of file variable.c.
MJIT_FUNC_EXPORTED VALUE rb_const_source_location_at | ( | VALUE | klass, |
ID | id | ||
) |
Definition at line 2467 of file variable.c.
MJIT_FUNC_EXPORTED void rb_const_warn_if_deprecated | ( | const rb_const_entry_t * | ce, |
VALUE | klass, | ||
ID | id | ||
) |
Definition at line 2307 of file variable.c.
References klass, PRIsVALUE, QUOTE_ID, rb_class_name(), rb_cObject, RB_CONST_DEPRECATED_P, rb_warn(), RB_WARN_CATEGORY_DEPRECATED, and rb_warning_category_enabled_p().
Definition at line 1447 of file variable.c.
References FL_EXIVAR, FL_TEST, FL_UNSET, obj, rb_check_frozen, and rb_free_generic_ivar().
Definition at line 3142 of file variable.c.
Definition at line 3123 of file variable.c.
References CVAR_LOOKUP, klass, Qfalse, and Qtrue.
Referenced by rb_mod_remove_cvar().
Definition at line 3107 of file variable.c.
References CVAR_LOOKUP, ID2SYM, klass, and rb_name_err_raise.
Definition at line 3085 of file variable.c.
References CVAR_LOOKUP, and klass.
Definition at line 3156 of file variable.c.
Definition at line 2958 of file variable.c.
References id, len, mod, name, NULL, rb_check_id_cstr(), rb_class_modify_check(), and strlen().
Referenced by Init_Bignum().
Definition at line 728 of file variable.c.
References rb_ary_new(), rb_backref_get(), rb_id_table_foreach(), and sym.
Definition at line 528 of file variable.c.
References ALLOC, argc, argv, trace_var::func, trace_var::next, NIL_P, rb_block_proc(), rb_f_untrace_var(), rb_global_entry(), rb_scan_args, rb_to_id(), rb_global_variable::trace, and rb_global_entry::var.
Definition at line 574 of file variable.c.
References argc, argv, trace_var::data, id, PRIsVALUE, QUOTE, rb_check_id(), rb_id_table_lookup(), rb_name_error_str(), and rb_scan_args.
Referenced by rb_f_trace_var().
Definition at line 993 of file variable.c.
References key, obj, and st_delete().
Referenced by rb_copy_generic_ivar().
Definition at line 434 of file variable.c.
RUBY_FUNC_EXPORTED size_t rb_generic_ivar_memsize | ( | VALUE | obj | ) |
Definition at line 1010 of file variable.c.
MJIT_FUNC_EXPORTED struct rb_global_entry * rb_global_entry | ( | ID | id | ) |
Definition at line 326 of file variable.c.
Referenced by rb_alias_variable(), rb_f_trace_var(), rb_gv_set(), rb_gvar_undef_setter(), and rb_gvar_val_setter().
MJIT_FUNC_EXPORTED VALUE rb_gvar_defined | ( | struct rb_global_entry * | entry | ) |
Definition at line 695 of file variable.c.
References rb_global_variable::getter, Qfalse, Qtrue, rb_gvar_undef_getter(), and rb_global_entry::var.
MJIT_FUNC_EXPORTED VALUE rb_gvar_get | ( | struct rb_global_entry * | entry | ) |
Definition at line 619 of file variable.c.
References rb_global_variable::data, rb_global_variable::getter, rb_global_entry::id, and rb_global_entry::var.
rb_gvar_getter_t * rb_gvar_getter_function_of | ( | const struct rb_global_entry * | entry | ) |
Definition at line 702 of file variable.c.
References rb_global_variable::getter, and rb_global_entry::var.
bool rb_gvar_is_traced | ( | const struct rb_global_entry * | entry | ) |
Definition at line 714 of file variable.c.
References rb_global_variable::trace, and rb_global_entry::var.
Definition at line 412 of file variable.c.
References PRIsVALUE, QUOTE_ID, and rb_name_error().
Referenced by rb_define_readonly_variable(), and rb_define_virtual_variable().
MJIT_FUNC_EXPORTED VALUE rb_gvar_set | ( | struct rb_global_entry * | entry, |
VALUE | val | ||
) |
Definition at line 654 of file variable.c.
References rb_global_variable::block_trace, rb_global_variable::data, rb_global_entry::id, rb_ensure(), rb_global_variable::setter, rb_global_variable::trace, trace_data::trace, and rb_global_entry::var.
rb_gvar_setter_t * rb_gvar_setter_function_of | ( | const struct rb_global_entry * | entry | ) |
Definition at line 708 of file variable.c.
References rb_global_variable::setter, and rb_global_entry::var.
Definition at line 349 of file variable.c.
References PRIsVALUE, Qnil, QUOTE_ID, and rb_warning().
Referenced by rb_gvar_defined().
Definition at line 368 of file variable.c.
Definition at line 357 of file variable.c.
References rb_global_variable::data, rb_global_variable::getter, rb_global_variable::marker, rb_global_entry(), rb_gvar_val_getter(), rb_gvar_val_marker(), rb_gvar_val_setter(), rb_global_variable::setter, and rb_global_entry::var.
Definition at line 373 of file variable.c.
References rb_global_variable::data.
Referenced by rb_define_virtual_variable(), and rb_gvar_undef_setter().
Definition at line 386 of file variable.c.
References rb_global_variable::data, and rb_gc_mark_maybe().
Referenced by rb_gvar_undef_setter().
Definition at line 379 of file variable.c.
References rb_global_variable::data, rb_global_entry(), and rb_global_entry::var.
Referenced by rb_gvar_undef_setter().
Definition at line 393 of file variable.c.
References Qnil.
Definition at line 406 of file variable.c.
References rb_gc_mark_maybe().
Definition at line 400 of file variable.c.
References rb_global_variable::data.
Definition at line 3343 of file variable.c.
References RCLASS_IV_TBL, src, st_copy(), and st_foreach().
st_index_t rb_ivar_count | ( | VALUE | obj | ) |
Definition at line 1511 of file variable.c.
References BUILTIN_TYPE, count, FL_EXIVAR, FL_TEST, i, st_table::num_entries, obj, Qundef, RCLASS_IV_TBL, ROBJECT_IV_INDEX_TBL, ROBJECT_IVPTR, ROBJECT_NUMIV, SPECIAL_CONST_P, T_CLASS, T_MODULE, and T_OBJECT.
Definition at line 1317 of file variable.c.
References BUILTIN_TYPE, FL_EXIVAR, FL_TEST, index, obj, Qfalse, Qtrue, Qundef, RCLASS_IV_TBL, ROBJECT_IV_INDEX_TBL, ROBJECT_IVPTR, ROBJECT_NUMIV, SPECIAL_CONST_P, st_is_member, st_lookup(), T_CLASS, T_MODULE, and T_OBJECT.
void rb_ivar_foreach | ( | VALUE | obj, |
rb_ivar_foreach_callback_func * | func, | ||
st_data_t | arg | ||
) |
Definition at line 1489 of file variable.c.
References BUILTIN_TYPE, obj, SPECIAL_CONST_P, and T_OBJECT.
Referenced by rb_obj_instance_variables().
MJIT_FUNC_EXPORTED struct st_table * rb_ivar_generic_ivtbl | ( | void | ) |
Definition at line 803 of file variable.c.
Definition at line 1070 of file variable.c.
References obj, PRIsVALUE, Qnil, Qundef, QUOTE_ID, RB_DEBUG_COUNTER_INC, rb_ivar_lookup(), rb_warning(), RTEST, and ruby_verbose.
Referenced by rb_class_modify_check(), rb_iv_get(), rb_method_name_error(), and rb_singleton_class_get().
Definition at line 1035 of file variable.c.
References BUILTIN_TYPE, FL_EXIVAR, FL_TEST, index, len, obj, ptr, Qundef, RCLASS_IV_TBL, ROBJECT_IV_INDEX_TBL, ROBJECT_IVPTR, ROBJECT_NUMIV, SPECIAL_CONST_P, st_lookup(), T_CLASS, T_MODULE, and T_OBJECT.
Referenced by rb_attr_get(), and rb_ivar_get().
Definition at line 1300 of file variable.c.
References obj, and rb_check_frozen.
Referenced by rb_error_frozen_object(), rb_frozen_error_raise(), rb_iv_set(), and rb_key_err_new().
Definition at line 1308 of file variable.c.
References rb_is_instance_id(), and VM_ASSERT.
Definition at line 973 of file variable.c.
Definition at line 3248 of file variable.c.
References argc, argv, rb_check_arity, and RTEST.
Definition at line 2563 of file variable.c.
References mod, rb_id_table_foreach(), RCLASS_CONST_TBL, and st_init_numtable().
Referenced by rb_mod_const_of().
Definition at line 1739 of file variable.c.
References GET_EC.
Definition at line 2576 of file variable.c.
References mod, rb_cObject, rb_mod_const_at(), and RCLASS_SUPER.
Referenced by rb_mod_constants().
Definition at line 2630 of file variable.c.
References argc, argv, mod, rb_check_arity, rb_const_list(), rb_mod_const_of(), and RTEST.
Definition at line 3022 of file variable.c.
Definition at line 102 of file variable.c.
Definition at line 2982 of file variable.c.
Definition at line 2996 of file variable.c.
Definition at line 2483 of file variable.c.
References id_for_var, mod, and name.
Definition at line 3284 of file variable.c.
References id, ID2SYM, id_for_var_message, mod, n, name, rb_check_frozen, rb_cvar_defined(), rb_name_err_raise, RCLASS_IV_TBL, and st_delete().
Definition at line 983 of file variable.c.
References key, and st_delete().
Definition at line 1579 of file variable.c.
References obj, rb_ary_new(), and rb_ivar_foreach().
Definition at line 1634 of file variable.c.
References BUILTIN_TYPE, FL_EXIVAR, FL_TEST, id, id_for_var, index, n, name, obj, Qnil, Qundef, rb_check_frozen, RCLASS_IV_TBL, ROBJECT_IV_INDEX_TBL, ROBJECT_IVPTR, ROBJECT_NUMIV, st_delete(), st_lookup(), T_CLASS, T_MODULE, T_OBJECT, and v.
Definition at line 1215 of file variable.c.
References ALLOC_N, len, obj, ROBJ_TRANSIENT_P, ROBJ_TRANSIENT_UNSET, ROBJECT_IVPTR, and ROBJECT_NUMIV.
Definition at line 268 of file variable.c.
References path, rb_path_to_class(), and rb_str_new_cstr.
Referenced by Init_ossl_digest().
Definition at line 226 of file variable.c.
References id, path, PRIsVALUE, QUOTE, rb_check_id_cstr(), rb_cObject, rb_eArgError, rb_enc_asciicompat, rb_enc_get(), rb_raise(), rb_str_subseq(), RSTRING_LEN, and RSTRING_PTR.
Referenced by rb_path2class().
MJIT_FUNC_EXPORTED int rb_public_const_defined_from | ( | VALUE | klass, |
ID | id | ||
) |
Definition at line 2698 of file variable.c.
MJIT_FUNC_EXPORTED VALUE rb_public_const_get_at | ( | VALUE | klass, |
ID | id | ||
) |
Definition at line 2409 of file variable.c.
MJIT_FUNC_EXPORTED VALUE rb_public_const_get_from | ( | VALUE | klass, |
ID | id | ||
) |
Definition at line 2403 of file variable.c.
Definition at line 175 of file variable.c.
Referenced by rb_vm_bugreport().
Definition at line 218 of file variable.c.
References klass, name, OBJ_FREEZE, rb_set_class_path_string(), rb_str_new2, and str.
Definition at line 198 of file variable.c.
References str.
Referenced by rb_define_class_id_under(), rb_define_module_id_under(), and rb_set_class_path().