void Init_load() { const char *var_load_path = "$:"; ID id_load_path = rb_intern(var_load_path); rbo_enabled = !ruby_is_miniruby && getenv("VM_DISABLE_RBO") == NULL; rb_define_virtual_variable("$:", rb_vm_load_path, 0); rb_alias_variable((rb_intern)("$-I"), id_load_path); rb_alias_variable((rb_intern)("$LOAD_PATH"), id_load_path); rb_define_virtual_variable("$\"", rb_vm_loaded_features, 0); rb_define_virtual_variable("$LOADED_FEATURES", rb_vm_loaded_features, 0); rb_objc_define_module_function(rb_mKernel, "load", rb_f_load, -1); rb_objc_define_module_function(rb_mKernel, "require", rb_f_require_imp, 1); rb_objc_define_method(rb_cModule, "autoload", rb_mod_autoload, 2); rb_objc_define_method(rb_cModule, "autoload?", rb_mod_autoload_p, 1); rb_objc_define_module_function(rb_mKernel, "autoload", rb_f_autoload, 2); rb_objc_define_module_function(rb_mKernel, "autoload?", rb_f_autoload_p, 1); rb_objc_define_module_function(rb_mKernel, "framework", rb_require_framework, -1); }
void Init_load(void) { #undef rb_intern #define rb_intern(str) rb_intern2((str), strlen(str)) rb_vm_t *vm = GET_VM(); static const char var_load_path[] = "$:"; ID id_load_path = rb_intern2(var_load_path, sizeof(var_load_path)-1); rb_define_hooked_variable(var_load_path, (VALUE*)vm, load_path_getter, rb_gvar_readonly_setter); rb_alias_variable(rb_intern("$-I"), id_load_path); rb_alias_variable(rb_intern("$LOAD_PATH"), id_load_path); vm->load_path = rb_ary_new(); vm->expanded_load_path = rb_ary_tmp_new(0); vm->load_path_snapshot = rb_ary_tmp_new(0); vm->load_path_check_cache = 0; rb_define_virtual_variable("$\"", get_loaded_features, 0); rb_define_virtual_variable("$LOADED_FEATURES", get_loaded_features, 0); vm->loaded_features = rb_ary_new(); vm->loaded_features_snapshot = rb_ary_tmp_new(0); vm->loaded_features_index = st_init_strtable(); rb_define_global_function("load", rb_f_load, -1); rb_define_global_function("require", rb_f_require, 1); rb_define_global_function("require_relative", rb_f_require_relative, 1); rb_define_method(rb_cModule, "autoload", rb_mod_autoload, 2); rb_define_method(rb_cModule, "autoload?", rb_mod_autoload_p, 1); rb_define_global_function("autoload", rb_f_autoload, 2); rb_define_global_function("autoload?", rb_f_autoload_p, 1); ruby_dln_librefs = rb_ary_tmp_new(0); rb_gc_register_mark_object(ruby_dln_librefs); }