vm_eval.c File Reference

Go to the source code of this file.

## Data Structures

struct | rescue_funcall_args
struct | iter_method_arg

## Macros

#define | NOEX_OK NOEX_NOSUPER
#define | type_case(t) case t: return #t;
#define | NOEX_MISSING 0x80

## Typedefs

typedef enum call_type | call_type

## Enumerations

enum | call_type { CALL_PUBLIC, CALL_FCALL, CALL_VCALL, CALL_TYPE_MAX }

## Functions

static VALUE | method_missing (VALUE obj, ID id, int argc, const VALUE *argv, int call_status)
static VALUE | rb_vm_set_finish_env (rb_thread_t *th)
static VALUE | vm_yield_with_cref (rb_thread_t *th, int argc, const VALUE *argv, const NODE *cref)
static VALUE | vm_yield (rb_thread_t *th, int argc, const VALUE *argv)
static VALUE | vm_backtrace (rb_thread_t *th, int lev)
static int | vm_backtrace_each (rb_thread_t *th, int lev, void(*init)(void *), rb_backtrace_iter_func *iter, void *arg)
static NODE * | vm_cref_push (rb_thread_t *th, VALUE klass, int noex, rb_block_t *blockptr)
static VALUE | vm_exec (rb_thread_t *th)
static void | vm_set_eval_stack (rb_thread_t *th, VALUE iseqval, const NODE *cref)
static int | vm_collect_local_variables_in_heap (rb_thread_t *th, VALUE *dfp, VALUE ary)
static VALUE | send_internal (int argc, const VALUE *argv, VALUE recv, call_type scope)
static VALUE | vm_call0 (rb_thread_t *th, VALUE recv, VALUE id, int argc, const VALUE *argv, const rb_method_entry_t *me)
VALUE | rb_vm_call (rb_thread_t *th, VALUE recv, VALUE id, int argc, const VALUE *argv, const rb_method_entry_t *me)
static VALUE | vm_call_super (rb_thread_t *th, int argc, const VALUE *argv)
VALUE | rb_call_super (int argc, const VALUE *argv)
static void | stack_check (void)
static rb_method_entry_t * | rb_search_method_entry (VALUE recv, ID mid)
static int | rb_method_call_status (rb_thread_t *th, const rb_method_entry_t *me, call_type scope, VALUE self)
static VALUE | rb_call0 (VALUE recv, ID mid, int argc, const VALUE *argv, call_type scope, VALUE self)
static VALUE | check_funcall_exec (struct rescue_funcall_args *args)
static VALUE | check_funcall_failed (struct rescue_funcall_args *args, VALUE e)
static VALUE | check_funcall (VALUE recv, ID mid, int argc, VALUE *argv)
VALUE | rb_check_funcall (VALUE recv, ID mid, int argc, VALUE *argv)
static const char * | rb_type_str (enum ruby_value_type type)
static VALUE | rb_call (VALUE recv, ID mid, int argc, const VALUE *argv, call_type scope)
| NORETURN (static void raise_method_missing(rb_thread_t *th, int argc, const VALUE *argv, VALUE obj, int call_status))
static VALUE | rb_method_missing (int argc, const VALUE *argv, VALUE obj)
static void | raise_method_missing (rb_thread_t *th, int argc, const VALUE *argv, VALUE obj, int last_call_status)
void | rb_raise_method_missing (rb_thread_t *th, int argc, VALUE *argv, VALUE obj, int call_status)
VALUE | rb_apply (VALUE recv, ID mid, VALUE args)
| Calls a method. More...
VALUE | rb_funcall (VALUE recv, ID mid, int n,...)
| Calls a method. More...
VALUE | rb_funcall2 (VALUE recv, ID mid, int argc, const VALUE *argv)
| Calls a method. More...
VALUE | rb_funcall3 (VALUE recv, ID mid, int argc, const VALUE *argv)
| Calls a method. More...
VALUE | rb_funcall_passing_block (VALUE recv, ID mid, int argc, const VALUE *argv)
VALUE | rb_f_send (int argc, VALUE *argv, VALUE recv)
VALUE | rb_f_public_send (int argc, VALUE *argv, VALUE recv)
static VALUE | rb_yield_0 (int argc, const VALUE *argv)
VALUE | rb_yield (VALUE val)
VALUE | rb_yield_values (int n,...)
VALUE | rb_yield_values2 (int argc, const VALUE *argv)
VALUE | rb_yield_splat (VALUE values)
static VALUE | loop_i (void)
static VALUE | rb_f_loop (VALUE self)
VALUE | rb_iterate (VALUE(*it_proc)(VALUE), VALUE data1, VALUE(*bl_proc)(ANYARGS), VALUE data2)
static VALUE | iterate_method (VALUE obj)
VALUE | rb_block_call (VALUE obj, ID mid, int argc, VALUE *argv, VALUE(*bl_proc)(ANYARGS), VALUE data2)
VALUE | rb_each (VALUE obj)
static VALUE | eval_string_with_cref (VALUE self, VALUE src, VALUE scope, NODE *cref, const char *volatile file, volatile int line)
static VALUE | eval_string (VALUE self, VALUE src, VALUE scope, const char *file, int line)
VALUE | rb_f_eval (int argc, VALUE *argv, VALUE self)
VALUE | rb_eval_string (const char *str)
VALUE | rb_eval_string_protect (const char *str, int *state)
VALUE | rb_eval_string_wrap (const char *str, int *state)
VALUE | rb_eval_cmd (VALUE cmd, VALUE arg, int level)
static VALUE | yield_under (VALUE under, VALUE self, VALUE values)
static VALUE | eval_under (VALUE under, VALUE self, VALUE src, const char *file, int line)
static VALUE | specific_eval (int argc, VALUE *argv, VALUE klass, VALUE self)
VALUE | rb_obj_instance_eval (int argc, VALUE *argv, VALUE self)
VALUE | rb_obj_instance_exec (int argc, VALUE *argv, VALUE self)
VALUE | rb_mod_module_eval (int argc, VALUE *argv, VALUE mod)
VALUE | rb_mod_module_exec (int argc, VALUE *argv, VALUE mod)
static VALUE | rb_f_throw (int argc, VALUE *argv)
void | rb_throw_obj (VALUE tag, VALUE value)
void | rb_throw (const char *tag, VALUE val)
static VALUE | catch_i (VALUE tag, VALUE data)
static VALUE | rb_f_catch (int argc, VALUE *argv)
VALUE | rb_catch (const char *tag, VALUE(*func)(), VALUE data)
VALUE | rb_catch_obj (VALUE tag, VALUE(*func)(), VALUE data)
static VALUE | rb_f_caller (int argc, VALUE *argv)
static int | print_backtrace (void *arg, VALUE file, int line, VALUE method)
void | rb_backtrace (void)
VALUE | rb_make_backtrace (void)
VALUE | rb_thread_backtrace (VALUE thval)
int | rb_backtrace_each (rb_backtrace_iter_func *iter, void *arg)
static VALUE | rb_f_local_variables (void)
VALUE | rb_f_block_given_p (void)
VALUE | rb_current_realfilepath (void)
void | Init_vm_eval (void)

## Macro Definition Documentation

#define NOEX_MISSING 0x80

Definition at line 503 of file vm_eval.c.

Referenced by method_missing(), raise_method_missing(), and rb_raise_method_missing().

#define NOEX_OK NOEX_NOSUPER

Definition at line 208 of file vm_eval.c.

Referenced by check_funcall(), rb_call0(), and rb_method_call_status().

#define type_case | ( |  | t | ) | case t: return #t;

Referenced by rb_type_str().

## Typedef Documentation

typedef enum call_type call_type

## Enumeration Type Documentation

enum call_type

Enumerator
CALL_PUBLIC |
CALL_FCALL |
CALL_VCALL |
CALL_TYPE_MAX |

Definition at line 25 of file vm_eval.c.

## Function Documentation

static VALUE catch_i | ( | VALUE | tag,
|  | VALUE | data
| ) |  |

static

Definition at line 1477 of file vm_eval.c.

References rb_yield_0().

Referenced by rb_f_catch().

static VALUE check_funcall | ( | VALUE | recv,
|  | ID | mid,
|  | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 267 of file vm_eval.c.

References argc, rescue_funcall_args::argc, args, argv, rescue_funcall_args::argv, CALL_FCALL, check_funcall_exec(), check_funcall_failed(), CLASS_OF, rb_method_entry_struct::flag, GET_THREAD, ID2SYM, idRespond_to, rb_thread_struct::method_missing_reason, NOEX_BASIC, NOEX_OK, Qtrue, Qundef, rb_eNoMethodError, rb_method_basic_definition_p(), rb_method_call_status(), rb_method_entry(), rb_method_entry_arity(), rb_rescue2(), rb_search_method_entry(), rescue_funcall_args::recv, RTEST, stack_check(), rescue_funcall_args::sym, and vm_call0().

Referenced by rb_check_funcall().

static VALUE check_funcall_exec | ( | struct rescue_funcall_args * | args | ) |

static

Definition at line 247 of file vm_eval.c.

References rescue_funcall_args::argc, rescue_funcall_args::argv, new_args, RARRAY_PTR, rb_ary_new4(), rb_ary_unshift(), rb_funcall2(), RB_GC_GUARD, rescue_funcall_args::recv, and rescue_funcall_args::sym.

Referenced by check_funcall().

static VALUE check_funcall_failed | ( | struct rescue_funcall_args * | args,
|  | VALUE | e
| ) |  |

static

Definition at line 258 of file vm_eval.c.

References Qundef, rb_exc_raise(), rb_respond_to(), rescue_funcall_args::recv, rescue_funcall_args::sym, and SYM2ID.

Referenced by check_funcall().

static VALUE eval_string | ( | VALUE | self,
|  | VALUE | src,
|  | VALUE | scope,
|  | const char * | file,
|  | int | line
| ) |  |

static

Definition at line 1089 of file vm_eval.c.

References eval_string_with_cref().

Referenced by rb_eval_cmd(), rb_eval_string(), and rb_f_eval().

static VALUE eval_string_with_cref | ( | VALUE | self,
|  | VALUE | src,
|  | VALUE | scope,
|  | NODE * | cref,
|  | const char *volatile | file,
|  | volatile int | line
| ) |  |

static

Definition at line 972 of file vm_eval.c.

References rb_thread_struct::base_block, rb_env_t::block, rb_thread_struct::cfp, CHECK_STACK_OVERFLOW, CONST_ID, env, rb_binding_t::env, rb_thread_struct::errinfo, EXEC_TAG, rb_binding_t::filename, GET_THREAD, GetBindingPtr, GetEnvPtr, GetISeqPtr, INT2FIX, rb_control_frame_t::iseq, rb_block_struct::iseq, JUMP_TAG, rb_binding_t::line_no, rb_iseq_struct::local_table_size, rb_thread_struct::mild_compile_error, NIL_P, NULL, OBJ_FROZEN, rb_thread_struct::parse_in_eval, POP_TAG, PUSH_TAG, Qnil, Qundef, RARRAY_LEN, RARRAY_PTR, rb_attr_get(), rb_cBinding, rb_eRuntimeError, rb_eTypeError, rb_exc_raise(), rb_get_backtrace(), rb_iseq_compile(), rb_iseq_disasm(), rb_ivar_set(), rb_obj_classname(), rb_obj_is_kind_of(), rb_raise(), rb_sourcefile, rb_sourceline(), rb_str_append(), rb_str_cat(), rb_str_dup(), rb_str_new2(), rb_str_update(), rb_vm_get_ruby_level_next_cfp(), rb_vm_make_env_object(), result, RSTRING_LEN, RSTRING_PTR, RUBY_VM_GET_BLOCK_PTR_IN_CFP, rb_block_struct::self, rb_iseq_struct::stack_max, StringValuePtr, T_ARRAY, T_STRING, TAG_RAISE, TYPE, vm_backtrace(), vm_exec(), and vm_set_eval_stack().

Referenced by eval_string(), and eval_under().

static VALUE eval_under | ( | VALUE | under,
|  | VALUE | self,
|  | VALUE | src,
|  | const char * | file,
|  | int | line
| ) |  |

static

Definition at line 1246 of file vm_eval.c.

References eval_string_with_cref(), GET_THREAD, NOEX_PUBLIC, NULL, Qnil, rb_safe_level, SafeStringValue, StringValue, and vm_cref_push().

Referenced by specific_eval().

void Init_vm_eval | ( | void |  | ) |

Definition at line 1775 of file vm_eval.c.

References rb_add_method(), rb_cBasicObject, rb_cModule, rb_define_global_function(), rb_define_method(), rb_define_private_method(), rb_f_block_given_p(), rb_f_caller(), rb_f_catch(), rb_f_eval(), rb_f_local_variables(), rb_f_loop(), rb_f_public_send(), rb_f_send(), rb_f_throw(), rb_intern, rb_method_missing(), rb_mKernel, rb_mod_module_eval(), rb_mod_module_exec(), rb_obj_instance_eval(), rb_obj_instance_exec(), and VM_METHOD_TYPE_OPTIMIZED.

Referenced by Init_eval().

static VALUE iterate_method | ( | VALUE | obj | ) |

static

Definition at line 944 of file vm_eval.c.

References arg, iter_method_arg::argc, iter_method_arg::argv, CALL_FCALL, iter_method_arg::mid, iter_method_arg::obj, and rb_call().

Referenced by rb_block_call().

static VALUE loop_i | ( | void |  | ) |

static

Definition at line 815 of file vm_eval.c.

References Qnil, and rb_yield_0().

Referenced by rb_f_loop().

static VALUE method_missing | ( | VALUE | obj,
|  | ID | id,
|  | int | argc,
|  | const VALUE * | argv,
|  | int | call_status
| ) |  |

inline static

Definition at line 564 of file vm_eval.c.

References ALLOCA_N, CLASS_OF, GET_THREAD, ID2SYM, ID_ALLOCATOR, MEMCPY, rb_thread_struct::method_missing_reason, NOEX_MISSING, rb_thread_struct::passed_block, raise_method_missing(), RARRAY_PTR, rb_ary_clear(), rb_ary_tmp_new(), rb_class2name(), rb_eTypeError, rb_funcall2(), rb_method_basic_definition_p(), rb_raise(), and result.

Referenced by rb_call0(), vm_call0(), and vm_call_super().

NORETURN | ( | static void | raise_method_missingrb_thread_t *th, int argc, const VALUE *argv, VALUE obj, int call_status | ) |

static int print_backtrace | ( | void * | arg,
|  | VALUE | file,
|  | int | line,
|  | VALUE | method
| ) |  |

static

Definition at line 1618 of file vm_eval.c.

References arg, FALSE, NIL_P, and RSTRING_PTR.

Referenced by rb_backtrace().

static void raise_method_missing | ( | rb_thread_t * | th,
|  | int | argc,
|  | const VALUE * | argv,
|  | VALUE | obj,
|  | int | last_call_status
| ) |  |

static

Definition at line 506 of file vm_eval.c.

References args, rb_thread_struct::cfp, CLASS_OF, id, NOEX_MISSING, NOEX_PRIVATE, NOEX_PROTECTED, NOEX_SUPER, NOEX_VCALL, rb_ary_new4(), rb_class_new_instance(), rb_const_get(), rb_eArgError, rb_eNameError, rb_eNoMethodError, rb_exc_raise(), rb_funcall(), rb_intern, rb_method_basic_definition_p(), rb_name_err_mesg_new(), rb_raise(), rb_str_new2(), RUBY_VM_PREVIOUS_CONTROL_FRAME, stack_check(), SYM2ID, and SYMBOL_P.

Referenced by method_missing(), rb_method_missing(), and rb_raise_method_missing().

VALUE rb_apply | ( | VALUE | recv,
|  | ID | mid,
|  | VALUE | args
| ) |  |

Calls a method.

Parameters

  recv | receiver of the method
  mid | an ID that represents the name of the method
  args | an Array object which contains method arguments

Precondition
  args must refer an Array object.

Definition at line 617 of file vm_eval.c.

References ALLOCA_N, argc, argv, CALL_FCALL, MEMCPY, RARRAY_LENINT, RARRAY_PTR, and rb_call().

Referenced by ary2list(), ary2list2(), exec_callback(), ip_ruby_cmd_core(), and tk_do_callback().

void rb_backtrace | ( | void |  | ) |

Definition at line 1634 of file vm_eval.c.

References GET_THREAD, NULL, print_backtrace(), and vm_backtrace_each().

Referenced by load_lock(), and rescue_callback().

int rb_backtrace_each | ( | rb_backtrace_iter_func * | iter,
|  | void * | arg
| ) |  |

Definition at line 1665 of file vm_eval.c.

References GET_THREAD, NULL, and vm_backtrace_each().

Referenced by rb_vm_bugreport().

VALUE rb_block_call | ( | VALUE | obj,
|  | ID | mid,
|  | int | argc,
|  | VALUE * | argv,
|  | VALUE(*)(ANYARGS) | bl_proc,
|  | VALUE | data2
| ) |  |

Definition at line 953 of file vm_eval.c.

References argc, iter_method_arg::argc, argv, iter_method_arg::argv, iterate_method(), iter_method_arg::mid, iter_method_arg::obj, and rb_iterate().

static VALUE rb_call | ( | VALUE | recv,
|  | ID | mid,
|  | int | argc,
|  | const VALUE * | argv,
|  | call_type | scope
| ) |  |

inline static

calls the specified method.

This function is called by functions in rb_call* family.

Parameters

  recv | receiver
  mid | an ID that represents the name of the method
  argc | the number of method arguments
  argv | a pointer to an array of method arguments
  scope |

Definition at line 454 of file vm_eval.c.

References Qundef, and rb_call0().

Referenced by iterate_method(), rb_apply(), rb_each(), rb_funcall(), rb_funcall2(), rb_funcall3(), and rb_funcall_passing_block().

static VALUE rb_call0 | ( | VALUE | recv,
|  | ID | mid,
|  | int | argc,
|  | const VALUE * | argv,
|  | call_type | scope,
|  | VALUE | self
| ) |  |

inline static

calls the specified method.

This function is called by functions in rb_call* family.

Parameters

  recv | receiver of the method
  mid | an ID that represents the name of the method
  argc | the number of method arguments
  argv | a pointer to an array of method arguments
  scope |
  self | self in the caller. Qundef means the current control frame's self.

Note
  self is used in order to controlling access to protected methods.

Definition at line 225 of file vm_eval.c.

References GET_THREAD, method_missing(), NOEX_OK, rb_method_call_status(), rb_search_method_entry(), stack_check(), and vm_call0().

Referenced by rb_call(), and send_internal().

VALUE rb_call_super | ( | int | argc,
|  | const VALUE * | argv
| ) |  |

Definition at line 189 of file vm_eval.c.

References GET_THREAD, PASS_PASSED_BLOCK, and vm_call_super().

Referenced by esignal_init(), exit_initialize(), float_denominator(), float_numerator(), fole_initialize(), gzfile_error_inspect(), iconv_failure_initialize(), interrupt_init(), name_err_initialize(), ossl_ssl_initialize(), path_freeze(), path_taint(), path_untaint(), range_include(), range_max(), range_min(), strio_initialize(), and syserr_initialize().

VALUE rb_catch | ( | const char * | tag,
|  | VALUE(*)() | func,
|  | VALUE | data
| ) |  |

Definition at line 1534 of file vm_eval.c.

References func, ID2SYM, rb_catch_obj(), rb_cObject, rb_intern, and rb_obj_alloc().

VALUE rb_catch_obj | ( | VALUE | tag,
|  | VALUE(*)() | func,
|  | VALUE | data
| ) |  |

Definition at line 1541 of file vm_eval.c.

References rb_thread_struct::cfp, rb_thread_struct::errinfo, EXEC_TAG, GET_THREAD, JUMP_TAG, POP_TAG, PUSH_TAG, Qnil, rb_vm_tag::retval, RNODE, rb_vm_tag::tag, rb_thread_struct::tag, and TAG_THROW.

VALUE rb_check_funcall | ( | VALUE | recv,
|  | ID | mid,
|  | int | argc,
|  | VALUE * | argv
| ) |  |

Definition at line 312 of file vm_eval.c.

References check_funcall().

Referenced by convert_type(), enumerator_rewind(), exc_equal(), flo_cmp(), make_exception(), num_exact(), path_initialize(), rb_dlptr_s_to_ptr(), rb_get_path_check(), and time_timespec().

VALUE rb_current_realfilepath | ( | void |  | ) |

Definition at line 1765 of file vm_eval.c.

References rb_thread_struct::cfp, rb_iseq_struct::filepath, GET_THREAD, rb_control_frame_t::iseq, Qnil, RUBY_VM_PREVIOUS_CONTROL_FRAME, and vm_get_ruby_level_caller_cfp().

Referenced by rb_f_require_relative().

VALUE rb_each | ( | VALUE | obj | ) |

Definition at line 966 of file vm_eval.c.

References CALL_FCALL, and rb_call().

VALUE rb_eval_cmd | ( | VALUE | cmd,
|  | VALUE | arg,
|  | int | level
| ) |  |

Definition at line 1182 of file vm_eval.c.

References eval_string(), EXEC_TAG, JUMP_TAG, OBJ_TAINTED, POP_TAG, PUSH_TAG, Qnil, RARRAY_LENINT, RARRAY_PTR, rb_funcall2(), rb_intern, rb_safe_level, rb_set_safe_level_force(), rb_vm_jump_tag_but_local_jump(), rb_vm_top_self(), T_STRING, and TYPE.

Referenced by rb_trace_eval(), run_single_final(), signal_exec(), and tk_eval_cmd().

VALUE rb_eval_string | ( | const char * | str | ) |

Definition at line 1143 of file vm_eval.c.

References eval_string(), Qnil, rb_str_new2(), and rb_vm_top_self().

Referenced by foletype_s_typelibs(), ip_ruby_eval(), and rb_eval_string_protect().

VALUE rb_eval_string_protect | ( | const char * | str,
|  | int * | state
| ) |  |

Definition at line 1149 of file vm_eval.c.

References rb_eval_string(), and rb_protect().

Referenced by ip_ruby_cmd_receiver_const_get(), and rb_eval_string_wrap().

VALUE rb_eval_string_wrap | ( | const char * | str,
|  | int * | state
| ) |  |

Definition at line 1155 of file vm_eval.c.

References GET_THREAD, JUMP_TAG, rb_eval_string_protect(), rb_extend_object(), rb_module_new(), rb_obj_clone(), rb_vm_top_self(), rb_thread_struct::top_self, and rb_thread_struct::top_wrapper.

VALUE rb_f_block_given_p | ( | void |  | ) |

Definition at line 1748 of file vm_eval.c.

References rb_thread_struct::cfp, GC_GUARDED_PTR_REF, GET_THREAD, rb_control_frame_t::lfp, Qfalse, Qtrue, RUBY_VM_PREVIOUS_CONTROL_FRAME, and vm_get_ruby_level_caller_cfp().

Referenced by Init_vm_eval().

static VALUE rb_f_caller | ( | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 1600 of file vm_eval.c.

References GET_THREAD, NIL_P, NUM2INT, rb_eArgError, rb_raise(), rb_scan_args(), and vm_backtrace().

Referenced by Init_vm_eval().

static VALUE rb_f_catch | ( | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 1520 of file vm_eval.c.

References catch_i(), rb_catch_obj(), rb_cObject, rb_obj_alloc(), rb_scan_args(), and rb_vm_tag::tag.

Referenced by Init_vm_eval().

VALUE rb_f_eval | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | self
| ) |  |

Definition at line 1113 of file vm_eval.c.

References eval_string(), NIL_P, NUM2INT, OBJ_TAINTED, rb_eSecurityError, rb_raise(), rb_safe_level, rb_scan_args(), RSTRING_PTR, SafeStringValue, and StringValue.

Referenced by bind_eval(), and Init_vm_eval().

static VALUE rb_f_local_variables | ( | void |  | ) |

static

Definition at line 1684 of file vm_eval.c.

References rb_thread_struct::cfp, rb_control_frame_t::dfp, GC_GUARDED_PTR_REF, GET_THREAD, i, ID2SYM, rb_control_frame_t::iseq, rb_control_frame_t::lfp, rb_iseq_struct::local_table, rb_iseq_struct::local_table_size, rb_ary_new(), rb_ary_push(), rb_id2name(), RUBY_VM_PREVIOUS_CONTROL_FRAME, vm_collect_local_variables_in_heap(), and vm_get_ruby_level_caller_cfp().

Referenced by Init_vm_eval().

static VALUE rb_f_loop | ( | VALUE | self | ) |

static

Definition at line 843 of file vm_eval.c.

References loop_i(), Qnil, rb_eStopIteration, rb_rescue2(), and RETURN_ENUMERATOR.

Referenced by Init_vm_eval().

VALUE rb_f_public_send | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | recv
| ) |  |

Definition at line 750 of file vm_eval.c.

References CALL_PUBLIC, and send_internal().

Referenced by Init_vm_eval().

VALUE rb_f_send | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | recv
| ) |  |

Definition at line 733 of file vm_eval.c.

References CALL_FCALL, and send_internal().

Referenced by Init_vm_eval().

static VALUE rb_f_throw | ( | int | argc,
|  | VALUE * | argv
| ) |  |

static

Definition at line 1437 of file vm_eval.c.

References Qnil, rb_scan_args(), and rb_throw_obj().

Referenced by Init_vm_eval().

VALUE rb_funcall | ( | VALUE | recv,
|  | ID | mid,
|  | int | n,
|  |  | ...
| ) |  |

Calls a method.

Parameters

  recv | receiver of the method
  mid | an ID that represents the name of the method
  n | the number of arguments
  ... | arbitrary number of method arguments

Precondition
  each of arguments after n must be a VALUE.

Definition at line 638 of file vm_eval.c.

References ALLOCA_N, argv, CALL_FCALL, i, rb_call(), and va_init_list.

Referenced by _thread_call_proc_core(), _thread_call_proc_value(), add(), argument_error(), ary2list(), ary2list2(), basic_obj_respond_to(), BigDecimal_power(), BigDecimal_to_i(), BigDecimal_to_r(), binop(), bsock_setsockopt(), call_next(), call_queue_handler(), callback(), cbsubst_def_attr_aliases(), cbsubst_get_subst_key(), cbsubst_scan_args(), chunk_i(), chunk_ii(), cmp(), cmp_eq(), cmp_ge(), cmp_gt(), cmp_le(), cmp_lt(), coerce_body(), const_missing(), convert_encoding(), copy_stream_fallback_body(), cParser_initialize(), create_encoding_table(), date_strftime_with_tmx(), default_inspect(), dir_inspect(), divmodv(), DupPrivPKeyPtr(), enum_find(), enum_zip(), eq(), error_print(), eval_queue_handler(), evs_length(), exc_message(), f_add(), f_cmp(), f_div(), f_eqeq_p(), f_ge_p(), f_gt_p(), f_le_p(), f_lt_p(), f_negative_p(), f_one_p(), f_sub(), f_to_f(), f_zero_p(), fix_pow(), flo_pow(), flo_quo(), fole_s_show_help(), foleparam_inspect(), foletype_s_ole_classes(), foletypelib_s_typelibs(), folevariable_inspect(), folevariant_value(), fun1(), fun2(), function_call(), generic_to_value(), get_backtrace(), get_eval_string_core(), GetConfigPtr(), GetPrivPKeyPtr(), GetVpValueWithPrec(), grep_i(), grep_iter_i(), gzfile_close(), gzfile_read_raw_partial(), gzfile_read_raw_rescue(), gzfile_reader_rewind(), gzfile_write_raw(), id_hash_new(), Init_parser(), Init_syck(), Init_win32ole(), inject_op_i(), int_dotimes(), int_downto(), int_even_p(), int_odd_p(), int_pred(), int_round_0(), int_succ(), int_upto(), invoke_queue_handler(), io_call_close(), io_reader(), io_write(), ip_eval(), ip_invoke_with_position(), ip_set_exc_message(), is_negative(), is_one(), is_zero(), JSON_parse_array(), JSON_parse_object(), JSON_parse_string(), key2keyname(), lexer_iter(), lib_eventloop_ensure(), lib_eventloop_launcher(), lib_fromUTF8_core(), lib_set_system_encoding(), lib_thread_callback(), lib_toUTF8_core(), lib_watchdog_core(), load_file_internal(), make_exception(), match_i(), max_by_i(), max_i(), min_by_i(), min_i(), minmax_by_i(), minmax_by_i_update(), minmax_i(), minmax_i_update(), mktime_do(), mktime_r(), mlambda(), mnew(), mod(), mproc(), mul(), negate_lit(), num_abs(), num_div(), num_equal(), num_fdiv(), num_modulo(), num_nonzero_p(), num_quo(), num_remainder(), num_step(), num_to_int(), num_uminus(), nurat_div(), ole_invoke(), ole_typelib_from_itypeinfo(), ossl_call_client_cert_cb(), ossl_call_session_get_cb(), ossl_call_session_new_cb(), ossl_call_session_remove_cb(), ossl_call_tmp_dh_callback(), ossl_call_verify_cb_proc(), ossl_pkey_sign(), ossl_ssl_close(), ossl_ssl_initialize(), ossl_ssl_read_internal(), ossl_ssl_session_get_time(), ossl_ssl_session_set_time(), ossl_ssl_write_internal(), ossl_sslctx_flush_sessions(), ossl_to_der(), ossl_x509attr_get_value(), ossl_x509attr_initialize(), ossl_x509ext_initialize(), ossl_x509store_verify(), parse(), parse_main(), path_atime(), path_basename(), path_blockdev_p(), path_chardev_p(), path_chmod(), path_chown(), path_ctime(), path_directory_p(), path_dirname(), path_entries(), path_executable_p(), path_executable_real_p(), path_exist_p(), path_expand_path(), path_extname(), path_file_p(), path_fnmatch(), path_ftype(), path_grpowned_p(), path_lchmod(), path_lchown(), path_lstat(), path_make_link(), path_make_symlink(), path_mkdir(), path_mtime(), path_owned_p(), path_pipe_p(), path_readable_p(), path_readable_real_p(), path_readlink(), path_realdirpath(), path_realpath(), path_rename(), path_rmdir(), path_s_getwd(), path_setgid_p(), path_setuid_p(), path_size(), path_size_p(), path_socket_p(), path_split(), path_stat(), path_sticky_p(), path_symlink_p(), path_truncate(), path_utime(), path_world_readable_p(), path_world_writable_p(), path_writable_p(), path_writable_real_p(), path_zero_p(), protected_alias(), protected_empty(), protected_end_document(), protected_end_mapping(), protected_end_sequence(), protected_end_stream(), protected_start_stream(), quo(), r_le(), r_leave(), r_lt(), r_object0(), raise_method_missing(), range_check(), range_each_func(), range_eqq(), range_max(), range_min(), range_step(), rb_big_pow(), rb_class_inherited(), rb_cmpint(), rb_digest_class_s_digest(), rb_digest_instance_bubblebabble(), rb_digest_instance_digest(), rb_digest_instance_digest_bang(), rb_digest_instance_hexdigest(), rb_digest_instance_hexdigest_bang(), rb_digest_instance_length(), rb_digest_instance_new(), rb_digest_instance_to_s(), rb_enc_get_index(), rb_eql(), rb_equal(), rb_exc_new(), rb_exc_new3(), rb_gzreader_initialize(), rb_gzwriter_flush(), rb_gzwriter_initialize(), rb_hash(), rb_hash_aref(), rb_hash_default(), rb_hash_shift(), rb_inspect(), rb_io_flush(), rb_io_write(), rb_mod_include(), rb_num_coerce_bin(), rb_num_coerce_cmp(), rb_num_coerce_relop(), rb_obj_alloc(), rb_obj_as_string(), rb_obj_clone(), rb_obj_dup(), rb_obj_extend(), rb_obj_init_dup_clone(), rb_obj_inspect(), rb_obj_not_equal(), rb_obj_not_match(), rb_obj_respond_to(), rb_range_values(), rb_str_cmp_m(), rb_str_match(), rb_str_sum(), rb_str_upto(), rb_strftime_with_timespec(), rb_syck_load_handler(), rbtime2vtdate(), readline_attempted_completion_function(), recursive_cmp(), reduce0(), rescue_callback(), rt_complete_frags(), set_backtrace(), set_max_block_time(), set_option_encoding_once(), shift(), slicebefore_i(), slicebefore_ii(), sockopt_unpack(), sort_2(), sort_by_cmp(), step_i(), sub(), syck_badalias_cmp(), syck_defaultresolver_node_import(), syck_emitter_emit(), syck_emitter_node_export(), syck_emitter_s_alloc(), syck_genericresolver_node_import(), syck_map_add_m(), syck_map_initialize(), syck_map_value_set(), syck_merge_i(), syck_node_transform(), syck_out_map(), syck_out_scalar(), syck_out_seq(), syck_parser_bufsize_set(), syck_parser_load_documents(), syck_resolver_node_import(), syck_resolver_transfer(), syck_scalar_initialize(), syck_seq_add_m(), syck_seq_initialize(), syck_set_model(), sym_step_i(), syserr_eqq(), tcl2rb_bool(), tcl_protect_core(), time_cmp(), time_timespec(), time_to_time(), tk_funcall(), tk_install_cmd_core(), TkStringValue(), to_strkey(), unlink_body(), unlink_rescue(), vtdate2rbtime(), w_object(), wadd(), wcmp(), wdivmod(), weq(), wmul(), wquo(), writer(), wsub(), and yaml_org_handler().

VALUE rb_funcall2 | ( | VALUE | recv,
|  | ID | mid,
|  | int | argc,
|  | const VALUE * | argv
| ) |  |

Calls a method.

Parameters

  recv | receiver of the method
  mid | an ID that represents the name of the method
  argc | the number of arguments
  argv | pointer to an array of method arguments

Definition at line 669 of file vm_eval.c.

References CALL_FCALL, and rb_call().

Referenced by asn1time_to_time(), bug_funcall(), callback(), check_funcall_exec(), cleanup_iseq_build(), dir_open_dir(), getc_call(), io_getch(), map_charset(), marshal_dump(), marshal_load(), method_missing(), nucomp_f_complex(), nucomp_rationalize(), nurat_f_rational(), path_binread(), path_each_line(), path_open(), path_read(), path_readlines(), path_s_glob(), path_sub(), path_sysopen(), r_byte(), r_bytes0(), rand_range(), random_equal(), range_values(), rb_digest_class_s_bubblebabble(), rb_digest_class_s_hexdigest(), rb_eval_cmd(), rb_f_gets(), rb_f_open(), rb_f_putc(), rb_f_puts(), rb_f_readline(), rb_f_readlines(), rb_hash_flatten(), rb_io_set_encoding(), rb_obj_call_init(), rb_random_bytes(), rb_random_int32(), rb_random_real(), rb_str_match_m(), rb_syck_io_str_read(), require_libraries(), strio_readbyte(), strio_readchar(), strio_readline(), strio_sysread(), syck_parser_assign_io(), tk_do_callback(), tk_fromUTF8(), tk_toUTF8(), vm_call0(), vm_call_method(), vm_method_missing(), and with_funcall2().

VALUE rb_funcall3 | ( | VALUE | recv,
|  | ID | mid,
|  | int | argc,
|  | const VALUE * | argv
| ) |  |

Calls a method.

Same as rb_funcall2 but this function can call only public methods.

Parameters

  recv | receiver of the method
  mid | an ID that represents the name of the method
  argc | the number of arguments
  argv | pointer to an array of method arguments

Definition at line 684 of file vm_eval.c.

References CALL_PUBLIC, and rb_call().

Referenced by aref_fallback(), argf_close(), argf_forward(), argf_getbyte(), argf_getc(), argf_getline(), argf_readchar(), argf_readlines(), protected_scalar(), protected_start_document(), protected_start_mapping(), protected_start_sequence(), rawmode_opt(), rb_f_chomp(), rb_f_chop(), rb_f_gsub(), and rb_f_sub().

VALUE rb_funcall_passing_block | ( | VALUE | recv,
|  | ID | mid,
|  | int | argc,
|  | const VALUE * | argv
| ) |  |

Definition at line 690 of file vm_eval.c.

References CALL_PUBLIC, GET_THREAD, PASS_PASSED_BLOCK_TH, and rb_call().

Referenced by sym_call(), and with_funcall_passing_block().

VALUE rb_iterate | ( | VALUE(*)(VALUE) | it_proc,
|  | VALUE | data1,
|  | VALUE(*)(ANYARGS) | bl_proc,
|  | VALUE | data2
| ) |  |

Definition at line 856 of file vm_eval.c.

References rb_method_entry_struct::called_id, rb_thread_struct::cfp, rb_control_frame_t::dfp, err, rb_thread_struct::errinfo, EXEC_EVENT_HOOK, GC_GUARDED_PTR_REF, GET_THREAD, GET_THROWOBJ_CATCH_POINT, rb_block_struct::iseq, rb_method_entry_struct::klass, rb_control_frame_t::lfp, rb_control_frame_t::me, NEW_IFUNC, rb_thread_struct::passed_block, rb_block_struct::proc, Qnil, rb_frame_this_func(), RUBY_EVENT_C_RETURN, RUBY_VM_GET_BLOCK_PTR_IN_CFP, RUBY_VM_PREVIOUS_CONTROL_FRAME, rb_control_frame_t::self, rb_thread_struct::state, TAG_BREAK, TAG_RETRY, TH_EXEC_TAG, TH_JUMP_TAG, TH_POP_TAG, TH_PUSH_TAG, UNLIKELY, VM_FRAME_MAGIC_CFUNC, and VM_FRAME_TYPE.

Referenced by call_lexer(), method_proc(), rb_block_call(), and rb_proc_new().

VALUE rb_make_backtrace | ( | void |  | ) |

Definition at line 1640 of file vm_eval.c.

References GET_THREAD, and vm_backtrace().

Referenced by argument_error(), parser_set_encode(), setup_exception(), and warn_deprecated().

static int rb_method_call_status | ( | rb_thread_t * | th,
|  | const rb_method_entry_t * | me,
|  | call_type | scope,
|  | VALUE | self
| ) |  |

inline static

Definition at line 396 of file vm_eval.c.

References CALL_PUBLIC, CALL_VCALL, rb_method_entry_struct::called_id, rb_thread_struct::cfp, rb_method_entry_struct::def, rb_method_entry_struct::flag, rb_method_entry_struct::klass, NOEX_MASK, NOEX_OK, NOEX_PRIVATE, NOEX_PROTECTED, NOEX_SAFE, NOEX_VCALL, rb_method_definition_struct::original_id, Qundef, rb_eSecurityError, rb_id2name(), rb_obj_is_kind_of(), rb_raise(), RBASIC, rb_thread_struct::safe_level, rb_control_frame_t::self, T_ICLASS, TYPE, UNDEFINED_METHOD_ENTRY_P, and UNLIKELY.

Referenced by check_funcall(), and rb_call0().

static VALUE rb_method_missing | ( | int | argc,
|  | const VALUE * | argv,
|  | VALUE | obj
| ) |  |

static

Definition at line 496 of file vm_eval.c.

References GET_THREAD, rb_thread_struct::method_missing_reason, Qnil, and raise_method_missing().

Referenced by Init_vm_eval().

VALUE rb_mod_module_eval | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | mod
| ) |  |

Definition at line 1393 of file vm_eval.c.

References specific_eval().

Referenced by Init_vm_eval(), and rb_struct_s_def().

VALUE rb_mod_module_exec | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | mod
| ) |  |

Definition at line 1419 of file vm_eval.c.

References rb_ary_new4(), and yield_under().

Referenced by Init_vm_eval(), and rb_mod_initialize().

VALUE rb_obj_instance_eval | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | self
| ) |  |

Definition at line 1323 of file vm_eval.c.

References Qnil, rb_singleton_class(), SPECIAL_CONST_P, and specific_eval().

Referenced by Init_vm_eval(), and tk_s_new().

VALUE rb_obj_instance_exec | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | self
| ) |  |

Definition at line 1355 of file vm_eval.c.

References Qnil, rb_ary_new4(), rb_singleton_class(), SPECIAL_CONST_P, and yield_under().

Referenced by Init_vm_eval(), and tk_s_new().

void rb_raise_method_missing | ( | rb_thread_t * | th,
|  | int | argc,
|  | VALUE * | argv,
|  | VALUE | obj,
|  | int | call_status
| ) |  |

Definition at line 601 of file vm_eval.c.

References NOEX_MISSING, rb_thread_struct::passed_block, and raise_method_missing().

Referenced by vm_call_method().

static rb_method_entry_t * rb_search_method_entry | ( | VALUE | recv,
|  | ID | mid
| ) |  |

inline static

Definition at line 353 of file vm_eval.c.

References BUILTIN_TYPE, CLASS_OF, IMMEDIATE_P, PRIxVALUE, rb_eNotImpError, rb_id2name(), rb_method_entry(), rb_raise(), rb_type_str(), RBASIC, T_NIL, T_OBJECT, and type.

Referenced by check_funcall(), and rb_call0().

VALUE rb_thread_backtrace | ( | VALUE | thval | ) |

Definition at line 1646 of file vm_eval.c.

References GetThreadPtr, Qnil, rb_thread_struct::status, THREAD_KILLED, THREAD_RUNNABLE, THREAD_STOPPED, THREAD_STOPPED_FOREVER, THREAD_TO_KILL, and vm_backtrace().

Referenced by rb_thread_backtrace_m().

void rb_throw | ( | const char * | tag,
|  | VALUE | val
| ) |  |

Definition at line 1471 of file vm_eval.c.

References ID2SYM, rb_intern, and rb_throw_obj().

void rb_throw_obj | ( | VALUE | tag,
|  | VALUE | value
| ) |  |

Definition at line 1447 of file vm_eval.c.

References rb_thread_struct::errinfo, GET_THREAD, JUMP_TAG, NEW_THROW_OBJECT, rb_vm_tag::prev, rb_eArgError, RB_GC_GUARD, rb_inspect(), rb_raise(), rb_trap_restore_mask(), rb_vm_tag::retval, RSTRING_PTR, rb_vm_tag::tag, rb_thread_struct::tag, and TAG_THROW.

Referenced by exec_recursive(), rb_f_throw(), and rb_throw().

static const char* rb_type_str | ( | enum ruby_value_type | type | ) |

static

Definition at line 318 of file vm_eval.c.

References NULL, T_ARRAY, T_BIGNUM, T_CLASS, T_COMPLEX, T_DATA, T_FALSE, T_FILE, T_FIXNUM, T_FLOAT, T_HASH, T_ICLASS, T_MATCH, T_MODULE, T_NIL, T_NODE, T_NONE, T_OBJECT, T_RATIONAL, T_REGEXP, T_STRING, T_STRUCT, T_SYMBOL, T_TRUE, T_UNDEF, T_ZOMBIE, and type_case.

Referenced by rb_search_method_entry().

VALUE rb_vm_call | ( | rb_thread_t * | th,
|  | VALUE | recv,
|  | VALUE | id,
|  | int | argc,
|  | const VALUE * | argv,
|  | const rb_method_entry_t * | me
| ) |  |

Definition at line 152 of file vm_eval.c.

References vm_call0().

Referenced by rb_method_call().

static VALUE rb_vm_set_finish_env | ( | rb_thread_t * | th | ) |

inline static

Referenced by vm_call0().

VALUE rb_yield | ( | VALUE | val | ) |

Definition at line 764 of file vm_eval.c.

References Qundef, and rb_yield_0().

Referenced by ary_add_hash_by(), ary_reject(), ary_reject_bang(), BigDecimal_save_exception_mode(), BigDecimal_save_limit(), BigDecimal_save_rounding_mode(), chdir_yield(), console_cooked(), console_noecho(), console_raw(), cycle_i(), d_lite_downto(), d_lite_step(), d_lite_upto(), dir_each(), dir_s_open(), drop_while_i(), each_cons_i(), each_entry_i(), each_i(), each_key_i(), each_pair_i(), each_slice_i(), each_val_i(), each_value_i(), enum_cycle(), enum_each_slice(), enum_reverse_each(), env_delete_m(), env_each_key(), env_each_pair(), env_each_value(), env_fetch(), fdbm_delete(), fdbm_delete_if(), fdbm_each_key(), fdbm_each_pair(), fdbm_each_value(), fdbm_fetch(), fdbm_s_open(), fdbm_select(), fgdbm_delete_if(), fgdbm_each_key(), fgdbm_each_pair(), fgdbm_each_value(), fgdbm_fetch(), fgdbm_s_open(), fgdbm_select(), find_all_i(), find_i(), fsdbm_delete(), fsdbm_delete_if(), fsdbm_each_key(), fsdbm_each_pair(), fsdbm_each_value(), fsdbm_fetch(), fsdbm_s_open(), fsdbm_select(), glob_i(), grep_iter_i(), group_by_i(), gzfile_wrap(), hist_each(), iconv_fail_retry(), iconv_s_open(), int_dotimes(), int_downto(), int_upto(), io_s_foreach(), max_by_i(), min_by_i(), minmax_by_i(), mSyslog_open(), num_step(), ole_each_sub(), os_obj_of_i(), ossl_asn1_decode0(), ossl_generate_cb(), ossl_pem_passwd_cb0(), p_gid_switch(), p_uid_switch(), partition_i(), permute0(), pty_getpty(), pty_open(), range_each(), range_step(), rb_ary_collect(), rb_ary_collect_bang(), rb_ary_combination(), rb_ary_count(), rb_ary_cycle(), rb_ary_delete(), rb_ary_drop_while(), rb_ary_each(), rb_ary_each_index(), rb_ary_fetch(), rb_ary_fill(), rb_ary_index(), rb_ary_initialize(), rb_ary_permutation(), rb_ary_product(), rb_ary_repeated_combination(), rb_ary_repeated_permutation(), rb_ary_reverse_each(), rb_ary_rindex(), rb_ary_select(), rb_ary_select_bang(), rb_ary_take_while(), rb_ary_zip(), rb_callcc(), rb_dlhandle_initialize(), rb_f_open(), rb_gzreader_each(), rb_gzreader_each_byte(), rb_gzreader_each_char(), rb_hash_delete(), rb_hash_fetch_m(), rb_io_each_byte(), rb_io_each_char(), rb_io_each_codepoint(), rb_io_each_line(), rb_io_s_open(), rb_io_s_pipe(), rb_io_s_popen(), rb_obj_tap(), rb_reg_match_m(), rb_str_each_byte(), rb_str_each_char(), rb_str_each_codepoint(), rb_str_each_line(), rb_str_match_m(), rb_str_scan(), rb_str_sub_bang(), rb_str_upto(), rb_struct_each(), rb_struct_select(), rcombinate0(), reject_i(), rpermute0(), ruby_float_step(), sort_by_i(), step_i(), str_gsub(), strio_each(), strio_each_byte(), strio_each_char(), strio_each_codepoint(), strio_s_open(), syck_out_map(), syck_out_seq(), sym_each_i(), sym_step_i(), window_attron(), zip_ary(), and zip_i().

static VALUE rb_yield_0 | ( | int | argc,
|  | const VALUE * | argv
| ) |  |

inline static

Definition at line 758 of file vm_eval.c.

References GET_THREAD, and vm_yield().

Referenced by catch_i(), loop_i(), rb_yield(), rb_yield_splat(), rb_yield_values(), and rb_yield_values2().

VALUE rb_yield_splat | ( | VALUE | values | ) |

Definition at line 803 of file vm_eval.c.

References NIL_P, RARRAY_LENINT, RARRAY_PTR, rb_check_array_type(), rb_eArgError, rb_raise(), rb_yield_0(), and v.

VALUE rb_yield_values | ( | int | n,
|  |  | ...
| ) |  |

Definition at line 775 of file vm_eval.c.

References ALLOCA_N, args, argv, i, rb_yield_0(), and va_init_list.

Referenced by delete_if_i(), each_with_index_i(), each_with_object_i(), enumerator_with_index_i(), enumerator_with_object_i(), env_reject_bang(), env_select(), env_select_bang(), env_update_i(), inject_i(), keep_if_i(), max_ii(), min_ii(), minmax_ii(), minmax_ii_update(), numhash_i(), rb_hash_update_block_i(), rb_struct_each_pair(), select_i(), and sort_1().

VALUE rb_yield_values2 | ( | int | argc,
|  | const VALUE * | argv
| ) |  |

Definition at line 797 of file vm_eval.c.

References rb_yield_0().

Referenced by yielder_yield_i().

static VALUE send_internal | ( | int | argc,
|  | const VALUE * | argv,
|  | VALUE | recv,
|  | call_type | scope
| ) |  |

static

Definition at line 698 of file vm_eval.c.

References GET_THREAD, PASS_PASSED_BLOCK_TH, rb_call0(), rb_eArgError, rb_raise(), rb_to_id(), and RUBY_VM_PREVIOUS_CONTROL_FRAME.

Referenced by rb_f_public_send(), rb_f_send(), and vm_call0().

static VALUE specific_eval | ( | int | argc,
|  | VALUE * | argv,
|  | VALUE | klass,
|  | VALUE | self
| ) |  |

static

Definition at line 1261 of file vm_eval.c.

References eval_under(), name, NUM2INT, Qundef, rb_block_given_p(), rb_eArgError, rb_frame_callee(), rb_id2name(), rb_raise(), rb_safe_level, SafeStringValue, StringValue, StringValuePtr, and yield_under().

Referenced by rb_mod_module_eval(), and rb_obj_instance_eval().

static void stack_check | ( | void |  | ) |

inline static

Definition at line 196 of file vm_eval.c.

References GET_THREAD, RAISED_STACKOVERFLOW, rb_exc_raise(), rb_thread_raised_p, rb_thread_raised_set, ruby_stack_check(), and sysstack_error.

Referenced by check_funcall(), raise_method_missing(), and rb_call0().

static VALUE vm_backtrace | ( | rb_thread_t * | th,
|  | int | lev
| ) |  |

inline static

Referenced by eval_string_with_cref(), rb_f_caller(), rb_make_backtrace(), and rb_thread_backtrace().

static int vm_backtrace_each | ( | rb_thread_t * | th,
|  | int | lev,
|  | void(*)(void *) | init,
|  | rb_backtrace_iter_func * | iter,
|  | void * | arg
| ) |  |

static

Referenced by rb_backtrace(), and rb_backtrace_each().

static VALUE vm_call0 | ( | rb_thread_t * | th,
|  | VALUE | recv,
|  | VALUE | id,
|  | int | argc,
|  | const VALUE * | argv,
|  | const rb_method_entry_t * | me
| ) |  |

inline static

Definition at line 35 of file vm_eval.c.

References rb_method_cfunc_struct::argc, argc, rb_method_definition_struct::attr, rb_proc_t::block, rb_method_definition_struct::body, call_cfunc(), CALL_FCALL, rb_thread_struct::cfp, rb_method_definition_struct::cfunc, CHECK_STACK_OVERFLOW, rb_method_entry_struct::def, EXEC_EVENT_HOOK, rb_method_cfunc_struct::func, GetProcPtr, i, rb_method_attr_struct::id, ID2SYM, rb_method_entry_struct::klass, rb_control_frame_t::me, method_missing(), new_args, NOEX_SUPER, rb_method_definition_struct::optimize_type, rb_thread_struct::passed_block, Qnil, Qundef, RARRAY_PTR, rb_ary_new4(), rb_ary_unshift(), rb_attr_get(), rb_bug(), rb_eArgError, rb_funcall2(), RB_GC_GUARD, rb_ivar_set(), rb_method_entry(), rb_raise(), rb_vm_invoke_proc(), rb_vm_set_finish_env(), RCLASS_SUPER, RUBY_EVENT_C_CALL, RUBY_EVENT_C_RETURN, RUBY_VM_CHECK_INTS, rb_block_struct::self, send_internal(), rb_control_frame_t::sp, rb_method_definition_struct::type, vm_call_bmethod(), vm_exec(), VM_FRAME_MAGIC_CFUNC, VM_METHOD_TYPE_ATTRSET, VM_METHOD_TYPE_BMETHOD, VM_METHOD_TYPE_CFUNC, VM_METHOD_TYPE_ISEQ, VM_METHOD_TYPE_IVAR, VM_METHOD_TYPE_MISSING, VM_METHOD_TYPE_NOTIMPLEMENTED, VM_METHOD_TYPE_OPTIMIZED, VM_METHOD_TYPE_ZSUPER, vm_pop_frame(), vm_push_frame(), and vm_setup_method().

Referenced by check_funcall(), rb_call0(), rb_vm_call(), and vm_call_super().

static VALUE vm_call_super | ( | rb_thread_t * | th,
|  | int | argc,
|  | const VALUE * | argv
| ) |  |

inline static

Definition at line 159 of file vm_eval.c.

References rb_thread_struct::cfp, rb_method_entry_struct::def, id, rb_control_frame_t::iseq, rb_method_entry_struct::klass, rb_control_frame_t::me, method_missing(), NOEX_SUPER, rb_method_definition_struct::original_id, rb_bug(), rb_method_entry(), RCLASS_SUPER, rb_control_frame_t::self, vm_call0(), and vm_search_normal_superclass().

Referenced by rb_call_super().

static int vm_collect_local_variables_in_heap | ( | rb_thread_t * | th,
|  | VALUE * | dfp,
|  | VALUE | ary
| ) |  |

static

Referenced by rb_f_local_variables().

static NODE* vm_cref_push | ( | rb_thread_t * | th,
|  | VALUE | klass,
|  | int | noex,
|  | rb_block_t * | blockptr
| ) |  |

static

Referenced by eval_under(), and yield_under().

static VALUE vm_exec | ( | rb_thread_t * | th | ) |

static

Referenced by eval_string_with_cref(), and vm_call0().

static void vm_set_eval_stack | ( | rb_thread_t * | th,
|  | VALUE | iseqval,
|  | const NODE * | cref
| ) |  |

static

Referenced by eval_string_with_cref().

static VALUE vm_yield | ( | rb_thread_t * | th,
|  | int | argc,
|  | const VALUE * | argv
| ) |  |

inline static

Referenced by rb_yield_0().

static VALUE vm_yield_with_cref | ( | rb_thread_t * | th,
|  | int | argc,
|  | const VALUE * | argv,
|  | const NODE * | cref
| ) |  |

inline static

Referenced by yield_under().

static VALUE yield_under | ( | VALUE | under,
|  | VALUE | self,
|  | VALUE | values
| ) |  |

static

Definition at line 1222 of file vm_eval.c.

References rb_thread_struct::cfp, RNode::flags, GC_GUARDED_PTR, GC_GUARDED_PTR_REF, GET_THREAD, rb_control_frame_t::lfp, NODE_FL_CREF_PUSHED_BY_EVAL, NOEX_PUBLIC, Qundef, RARRAY_LENINT, RARRAY_PTR, rb_block_struct::self, vm_cref_push(), and vm_yield_with_cref().

Referenced by rb_mod_module_exec(), rb_obj_instance_exec(), and specific_eval().