Ruby 2.0.0p247(2013-06-27revision41674)

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

Data Structures | Macros | Typedefs | Enumerations | Functions
vm_eval.c File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Data Structures
struct | rescue_funcall_args
struct | iter_method_arg
struct | eval_string_from_file_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 | 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 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, rb_block_t *base_block)
static int | vm_collect_local_variables_in_heap (rb_thread_t *th, VALUE *dfp, VALUE ary)
VALUE | vm_backtrace_str_ary (rb_thread_t *th, int lev, int n)
static VALUE | send_internal (int argc, const VALUE *argv, VALUE recv, call_type scope)
static VALUE | vm_call0_body (rb_thread_t *th, rb_call_info_t *ci, const VALUE *argv)
static VALUE | vm_call0 (rb_thread_t *th, VALUE recv, VALUE id, int argc, const VALUE *argv, const rb_method_entry_t *me, VALUE defined_class)
static VALUE | vm_call0_cfunc_with_frame (rb_thread_t *th, rb_call_info_t *ci, const VALUE *argv)
static VALUE | vm_call0_cfunc (rb_thread_t *th, rb_call_info_t *ci, const VALUE *argv)
VALUE | rb_vm_call (rb_thread_t *th, VALUE recv, VALUE id, int argc, const VALUE *argv, const rb_method_entry_t *me, VALUE defined_class)
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, VALUE *defined_class_ptr)
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 int | check_funcall_respond_to (rb_thread_t *th, VALUE klass, VALUE recv, ID mid)
static int | check_funcall_callable (rb_thread_t *th, const rb_method_entry_t *me)
static VALUE | check_funcall_missing (rb_thread_t *th, VALUE klass, VALUE recv, ID mid, int argc, VALUE *argv)
VALUE | rb_check_funcall (VALUE recv, ID mid, int argc, VALUE *argv)
VALUE | rb_check_funcall_with_hook (VALUE recv, ID mid, int argc, VALUE *argv, rb_check_funcall_hook *hook, VALUE arg)
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 VALUE | make_no_method_exception (VALUE exc, const char *format, VALUE obj, int argc, const VALUE *argv)
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_funcall_with_block (VALUE recv, ID mid, int argc, const VALUE *argv, VALUE pass_procval)
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_size (VALUE self, VALUE args)
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)
static VALUE | iterate_check_method (VALUE obj)
VALUE | rb_check_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 | ruby_eval_string_from_file (const char *str, const char *filename)
static VALUE | eval_string_from_file_helper (void *data)
VALUE | ruby_eval_string_from_file_protect (const char *str, const char *filename, int *state)
VALUE | rb_eval_string (const char *str)
| Evaluates the given string in an isolated binding. More...
VALUE | rb_eval_string_protect (const char *str, int *state)
| Evaluates the given string in an isolated binding. More...
VALUE | rb_eval_string_wrap (const char *str, int *state)
| Evaluates the given string under a module binding in an isolated binding. More...
VALUE | rb_eval_cmd (VALUE cmd, VALUE arg, int level)
static VALUE | yield_under (VALUE under, VALUE self, VALUE values)
VALUE | rb_yield_refine_block (VALUE refinement, VALUE refinements)
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_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 632 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 293 of file vm_eval.c.

Referenced by check_funcall_callable(), rb_call0(), rb_check_funcall(), rb_check_funcall_with_hook(), 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 1749 of file vm_eval.c.

References rb_yield_0().

Referenced by rb_f_catch().

static int check_funcall_callable | ( | rb_thread_t * | th,
|  | const rb_method_entry_t * | me
| ) |  |
| static

Definition at line 382 of file vm_eval.c.

References CALL_FCALL, rb_thread_struct::cfp, NOEX_OK, rb_method_call_status(), and rb_control_frame_struct::self.

Referenced by rb_check_funcall(), and rb_check_funcall_with_hook().

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

Definition at line 335 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_missing().

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

Definition at line 346 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_missing().

static VALUE check_funcall_missing | ( | rb_thread_t * | th,
|  | VALUE | klass,
|  | VALUE | recv,
|  | ID | mid,
|  | int | argc,
|  | VALUE * | argv
| ) |  |
| static

Definition at line 388 of file vm_eval.c.

References argc, rescue_funcall_args::argc, argv, rescue_funcall_args::argv, check_funcall_exec(), check_funcall_failed(), ID2SYM, rb_thread_struct::method_missing_reason, Qundef, rb_eNoMethodError, rb_method_basic_definition_p(), rb_rescue2(), rescue_funcall_args::recv, and rescue_funcall_args::sym.

Referenced by rb_check_funcall(), and rb_check_funcall_with_hook().

static int check_funcall_respond_to | ( | rb_thread_t * | th,
|  | VALUE | klass,
|  | VALUE | recv,
|  | ID | mid
| ) |  |
| static

Definition at line 355 of file vm_eval.c.

References args, FALSE, rb_method_entry_struct::flag, ID2SYM, idRespond_to, NOEX_BASIC, rb_thread_struct::passed_block, Qtrue, rb_eArgError, rb_method_entry(), rb_method_entry_arity(), rb_raise(), result, RTEST, TRUE, and vm_call0().

Referenced by rb_check_funcall(), and rb_check_funcall_with_hook().

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

Definition at line 1290 of file vm_eval.c.

References eval_string_with_cref().

Referenced by eval_string_from_file_helper(), rb_eval_cmd(), rb_f_eval(), and ruby_eval_string_from_file().

static VALUE eval_string_from_file_helper | ( | void * | data) |  |
| static

Definition at line 1356 of file vm_eval.c.

References arg, eval_string(), eval_string_from_file_arg::filename, Qnil, rb_str_new2, rb_vm_top_self(), and eval_string_from_file_arg::str.

Referenced by ruby_eval_string_from_file_protect().

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 1172 of file vm_eval.c.

References rb_env_t::block, rb_thread_struct::cfp, CHECK_VM_STACK_OVERFLOW, CONST_ID, env, rb_binding_t::env, rb_thread_struct::errinfo, rb_binding_t::first_lineno, GET_THREAD(), GetBindingPtr, GetEnvPtr, GetISeqPtr, INT2FIX, rb_control_frame_struct::iseq, rb_block_struct::iseq, JUMP_TAG, rb_iseq_struct::local_table_size, rb_thread_struct::mild_compile_error, NIL_P, NULL, OBJ_FROZEN, rb_thread_struct::parse_in_eval, rb_binding_t::path, Qnil, Qundef, RARRAY_LEN, RARRAY_PTR, rb_attr_get(), rb_cBinding, rb_current_realfilepath(), rb_eRuntimeError, rb_eTypeError, rb_exc_raise(), rb_get_backtrace(), rb_iseq_compile_with_option(), 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_TYPE_P, 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, TH_EXEC_TAG, TH_POP_TAG, TH_PUSH_TAG, vm_backtrace_str_ary(), 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 1527 of file vm_eval.c.

References eval_string_with_cref(), RNode::flags, GET_THREAD(), NIL_P, NODE_FL_CREF_PUSHED_BY_EVAL, NOEX_PUBLIC, NULL, Qnil, rb_safe_level, SafeStringValue, SPECIAL_CONST_P, StringValue, and vm_cref_push().

Referenced by specific_eval().

void Init_vm_eval | ( | void | ) |  |

Definition at line 1944 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_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_check_method | ( | VALUE | obj) |  |
| static

Definition at line 1144 of file vm_eval.c.

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

Referenced by rb_check_block_call().

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

Definition at line 1122 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 985 of file vm_eval.c.

References Qnil, and rb_yield_0().

Referenced by rb_f_loop().

static VALUE make_no_method_exception | ( | VALUE | exc,
|  | const char * | format,
|  | VALUE | obj,
|  | int | argc,
|  | const VALUE * | argv
| ) |  |
| static

Definition at line 635 of file vm_eval.c.

References args, CLASS_OF, rb_ary_new4(), rb_class_new_instance(), rb_const_get(), rb_eNoMethodError, rb_funcall(), rb_intern, rb_method_basic_definition_p(), rb_name_err_mesg_new(), and rb_str_new2.

Referenced by raise_method_missing(), send_internal(), and vm_call_opt_send().

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

Definition at line 695 of file vm_eval.c.

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

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

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

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

Definition at line 659 of file vm_eval.c.

References rb_thread_struct::cfp, make_no_method_exception(), NOEX_MISSING, NOEX_PRIVATE, NOEX_PROTECTED, NOEX_SUPER, NOEX_VCALL, rb_eArgError, rb_eNameError, rb_eNoMethodError, rb_exc_raise(), rb_raise(), RUBY_VM_PREVIOUS_CONTROL_FRAME, stack_check(), 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 745 of file vm_eval.c.

References ALLOCA_N, argc, argv, CALL_FCALL, MEMCPY, OBJ_FREEZE, RARRAY_LENINT, RARRAY_PTR, rb_ary_subseq(), rb_call(), RB_GC_GUARD, and RBASIC.

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

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

Definition at line 1131 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().

Referenced by argf_each_byte(), argf_each_char(), argf_each_codepoint(), argf_each_line(), chunk_i(), enum_all(), enum_any(), enum_chunk(), enum_collect(), enum_count(), enum_cycle(), enum_drop(), enum_drop_while(), enum_each_cons(), enum_each_entry(), enum_each_slice(), enum_each_with_index(), enum_each_with_object(), enum_find(), enum_find_all(), enum_find_index(), enum_first(), enum_flat_map(), enum_grep(), enum_group_by(), enum_inject(), enum_max(), enum_max_by(), enum_member(), enum_min(), enum_min_by(), enum_minmax(), enum_minmax_by(), enum_none(), enum_one(), enum_partition(), enum_reject(), enum_slice_before(), enum_sort_by(), enum_take(), enum_take_while(), enum_to_a(), enum_zip(), enumerator_block_call(), fdbm_replace(), fdbm_update(), fgdbm_replace(), fgdbm_update(), fsdbm_replace(), fsdbm_update(), join_der(), lazy_drop(), lazy_drop_while(), lazy_flat_map(), lazy_flat_map_each(), lazy_grep(), lazy_init_block_i(), lazy_initialize(), lazy_map(), lazy_reject(), lazy_select(), lazy_take(), lazy_take_while(), lazy_zip(), next_i(), ole_invoke(), ossl_pkcs7_set_certificates(), ossl_pkcs7_set_crls(), ossl_sslctx_setup(), ossl_x509name_initialize(), path_each_entry(), path_each_line(), path_open(), path_opendir(), path_s_glob(), path_sub(), range_each(), range_first(), range_step(), rb_ary_sort_by_bang(), save_env(), and slicebefore_i().

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 582 of file vm_eval.c.

References rb_thread_struct::cfp, GET_THREAD(), rb_call0(), and rb_control_frame_struct::self.

Referenced by iterate_method(), rb_apply(), rb_each(), rb_funcall(), rb_funcall2(), rb_funcall3(), rb_funcall_passing_block(), and rb_funcall_with_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 no self is considered and protected methods cannot be called

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

Definition at line 311 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 273 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(), interrupt_init(), lazy_super(), lazy_zip(), 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 1806 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 1813 of file vm_eval.c.

References rb_thread_struct::cfp, rb_thread_struct::errinfo, GET_THREAD(), JUMP_TAG, Qnil, rb_vm_tag::retval, RNODE, rb_vm_tag::tag, rb_thread_struct::tag, TAG_THROW, TH_EXEC_TAG, TH_POP_TAG, and TH_PUSH_TAG.

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

Definition at line 1153 of file vm_eval.c.

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

Referenced by take_items().

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

Definition at line 408 of file vm_eval.c.

References check_funcall_callable(), check_funcall_missing(), check_funcall_respond_to(), CLASS_OF, GET_THREAD(), NOEX_OK, Qundef, rb_search_method_entry(), stack_check(), and vm_call0().

Referenced by convert_type(), enum_size(), enumerator_rewind(), exc_equal(), flo_cmp(), invcmp_recursive(), is_integer_p(), iterate_check_method(), make_exception(), marshal_dump(), marshal_load(), num_exact(), path_initialize(), rb_dlptr_s_to_ptr(), rb_fiddle_ptr_s_to_ptr(), rb_get_path_check_to_string(), rb_str_cmp_m(), time_timespec(), and try_convert_to_exception().

VALUE rb_check_funcall_with_hook | ( | VALUE | recv,
|  | ID | mid,
|  | int | argc,
|  | VALUE * | argv,
|  | rb_check_funcall_hook * | hook,
|  | VALUE | arg
| ) |  |

Definition at line 427 of file vm_eval.c.

References arg, argc, argv, check_funcall_callable(), check_funcall_missing(), check_funcall_respond_to(), CLASS_OF, FALSE, GET_THREAD(), NOEX_OK, Qundef, rb_search_method_entry(), rescue_funcall_args::recv, stack_check(), TRUE, and vm_call0().

VALUE rb_current_realfilepath | ( | void | ) |  |

Definition at line 1934 of file vm_eval.c.

References rb_iseq_location_struct::absolute_path, rb_thread_struct::cfp, GET_THREAD(), rb_control_frame_struct::iseq, rb_iseq_struct::location, Qnil, RUBY_VM_PREVIOUS_CONTROL_FRAME, and vm_get_ruby_level_caller_cfp().

Referenced by eval_string_with_cref(), f_current_dirname(), and rb_f_require_relative().

VALUE rb_each | ( | VALUE | obj) |  |

Definition at line 1166 of file vm_eval.c.

References CALL_FCALL, and rb_call().

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

Definition at line 1444 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_TYPE_P, rb_vm_top_self(), and T_STRING.

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

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

Evaluates the given string in an isolated binding.

Here "isolated" means the binding does not inherit any other binding. This behaves same as the binding for required libraries.

FILE will be "(eval)", and LINE starts from 1 in the evaluation.

Parameters

  str | Ruby code to evaluate.

Returns
  The evaluated result.

Exceptions

  Exception | Raises an exception on error.

Definition at line 1384 of file vm_eval.c.

References ruby_eval_string_from_file().

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

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

Evaluates the given string in an isolated binding.

FILE will be "(eval)", and LINE starts from 1 in the evaluation.

See Also
  rb_eval_string

Parameters

  str | Ruby code to evaluate.
  state | Being set to zero if succeeded. Nonzero if an error occurred.

Returns
  The evaluated result if succeeded, an undefined value if otherwise.

Definition at line 1400 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
| ) |  |

Evaluates the given string under a module binding in an isolated binding.

This is same as the binding for required libraries on "require('foo', true)".

FILE will be "(eval)", and LINE starts from 1 in the evaluation.

See Also
  rb_eval_string

Parameters

  str | Ruby code to evaluate.
  state | Being set to zero if succeeded. Nonzero if an error occurred.

Returns
  The evaluated result if succeeded, an undefined value if otherwise.

Definition at line 1417 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 1919 of file vm_eval.c.

References rb_thread_struct::cfp, GET_THREAD(), Qfalse, Qtrue, RUBY_VM_PREVIOUS_CONTROL_FRAME, VM_CF_BLOCK_PTR(), and vm_get_ruby_level_caller_cfp().

Referenced by Init_vm_eval().

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

Definition at line 1792 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 1314 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 1855 of file vm_eval.c.

References rb_thread_struct::cfp, rb_control_frame_struct::ep, GET_THREAD(), i, ID2SYM, rb_control_frame_struct::iseq, 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_CF_PREV_EP(), vm_collect_local_variables_in_heap(), VM_EP_LEP_P, and vm_get_ruby_level_caller_cfp().

Referenced by Init_vm_eval().

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

Definition at line 1019 of file vm_eval.c.

References loop_i(), Qnil, rb_eStopIteration, rb_f_loop_size(), rb_rescue2(), and RETURN_SIZED_ENUMERATOR.

Referenced by Init_vm_eval().

static VALUE rb_f_loop_size | ( | VALUE | self,
|  | VALUE | args
| ) |  |
| static

Definition at line 994 of file vm_eval.c.

References DBL2NUM, and INFINITY.

Referenced by rb_f_loop().

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

Definition at line 920 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 903 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 1710 of file vm_eval.c.

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

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 774 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(), BigDecimal_power(), BigDecimal_to_i(), BigDecimal_to_r(), binomial_coefficient(), 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(), code_page(), coerce_body(), const_missing(), convert_encoding(), copy_stream_fallback_body(), cParser_initialize(), create_encoding_table(), cState_aref(), cState_aset(), cState_from_state_s(), default_inspect(), descending_factorial(), dir_inspect(), divmodv(), DupPrivPKeyPtr(), encoding_table_get_name_core(), enum_cycle_size(), enum_each_cons_size(), enum_each_slice_size(), 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_minus_one_p(), f_negative_p(), f_odd_p(), f_one_p(), f_sub(), f_to_f(), f_zero_p(), fix_and(), fix_or(), fix_pow(), fix_xor(), 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(), generate_json(), generate_json_bignum(), generate_json_float(), generate_json_object(), generate_json_string(), 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(), hash_default_value(), hidden_identity_hash_new(), Init_generator(), Init_parser(), Init_syslog(), Init_win32ole(), initialize(), inject_op_i(), int_dotimes(), int_dotimes_size(), 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(), lazy_drop_size(), lazy_flat_map_func(), lazy_flat_map_to_ary(), lazy_grep_func(), lazy_grep_iter(), lazy_map_func(), lazy_reject_func(), lazy_select_func(), lazy_zip_arrays_func(), lazy_zip_func(), 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(), make_no_method_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(), mlambda(), mnew(), mObject_to_json(), mod(), mString_Extend_json_create(), mString_included_s(), mString_to_json_raw_object(), mul(), negate_lit(), negative_int_p(), num_abs(), num_div(), num_equal(), num_fdiv(), num_interval_step_size(), 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(), positive_int_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(), range_bsearch(), range_check(), range_each_func(), range_eqq(), range_max(), range_min(), range_step(), range_step_size(), rb_ary_bsearch(), rb_ary_cycle_size(), rb_ary_repeated_permutation_size(), 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_default(), rb_inspect(), rb_io_flush(), rb_io_write(), rb_mod_include(), rb_mod_prepend(), rb_num_coerce_bin(), rb_num_coerce_bit(), rb_num_coerce_cmp(), rb_num_coerce_relop(), rb_obj_as_string(), rb_obj_clone(), rb_obj_dup(), rb_obj_extend(), rb_obj_init_dup_clone(), rb_obj_not_equal(), rb_obj_not_match(), rb_range_values(), rb_str_match(), rb_str_sum(), rb_str_upto(), rb_strftime_with_timespec(), rbtime2vtdate(), readline_attempted_completion_function(), recursive_cmp(), reduce0(), rescue_callback(), rt_complete_frags(), set_backtrace(), set_max_block_time(), set_option_encoding_once(), set_state_ivars(), shift(), slicebefore_i(), slicebefore_ii(), sockopt_unpack(), sort_2(), sort_by_cmp(), ssl_renegotiation_cb(), step_i(), strscan_get_charpos(), sub(), sym_step_i(), syserr_eqq(), tcl2rb_bool(), tcl_protect_core(), time_timespec(), tk_funcall(), tk_install_cmd_core(), TkStringValue(), to_strkey(), transcode_io(), unknown_keyword_error(), unlink_body(), unlink_rescue(), vtdate2rbtime(), wadd(), wcmp(), wdivmod(), weq(), wmul(), wquo(), writer(), and wsub().

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 805 of file vm_eval.c.

References CALL_FCALL, and rb_call().

Referenced by asn1time_to_time(), basic_obj_respond_to(), callback(), check_funcall_exec(), check_match(), cleanup_iseq_build(), dir_open_dir(), getc_call(), io_getch(), lazy_drop_func(), lazy_drop_while_func(), lazy_flat_map_i(), lazy_take_func(), lazy_take_while_func(), method_missing(), mproc(), nucomp_f_complex(), nucomp_rationalize(), nurat_f_rational(), obj_respond_to(), path_binread(), path_each_line(), path_open(), path_read(), path_readlines(), path_s_glob(), path_sub(), path_sysopen(), r_byte(), r_byte1_buffered(), r_bytes1(), r_bytes1_buffered(), r_object0(), 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_obj_respond_to(), rb_random_bytes(), rb_random_int32(), rb_random_real(), rb_random_ulong_limited(), rb_str_match_m(), require_libraries(), strio_readbyte(), strio_readchar(), strio_readline(), strio_sysread(), tk_do_callback(), tk_fromUTF8(), tk_toUTF8(), vm_call0_body(), and w_object().

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 820 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(), and rawmode_opt().

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

Definition at line 826 of file vm_eval.c.

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

Referenced by rb_f_chomp(), rb_f_chop(), rb_f_gsub(), and rb_f_sub().

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

Definition at line 834 of file vm_eval.c.

References rb_proc_t::block, CALL_PUBLIC, GET_THREAD(), GetProcPtr, NIL_P, rb_thread_struct::passed_block, and rb_call().

Referenced by sym_call().

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

Definition at line 1032 of file vm_eval.c.

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

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

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 527 of file vm_eval.c.

References CALL_PUBLIC, CALL_VCALL, rb_method_entry_struct::called_id, 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(), RB_TYPE_P, RBASIC, rb_thread_struct::safe_level, T_ICLASS, UNDEFINED_METHOD_ENTRY_P, and UNLIKELY.

Referenced by check_funcall_callable(), and rb_call0().

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

Definition at line 625 of file vm_eval.c.

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

Referenced by Init_vm_eval().

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

Definition at line 1666 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 1692 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 1595 of file vm_eval.c.

References rb_singleton_class(), rb_special_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 1627 of file vm_eval.c.

References rb_ary_new4(), rb_singleton_class(), rb_special_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 729 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,
|  | VALUE * | defined_class_ptr
| ) |  |
| inline static

Definition at line 484 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 rb_call0(), rb_check_funcall(), and rb_check_funcall_with_hook().

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

Definition at line 1743 of file vm_eval.c.

References ID2SYM, rb_intern, and rb_throw_obj().

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

Definition at line 1720 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_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 449 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,
|  | VALUE | defined_class
| ) |  |

Definition at line 243 of file vm_eval.c.

References vm_call0().

Referenced by rb_method_call_with_block().

VALUE rb_yield | ( | VALUE | val) |  |

Definition at line 934 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(), int_dotimes(), int_downto(), int_upto(), io_s_foreach(), lazy_grep_iter(), lazy_reject_func(), lazy_select_func(), 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_bsearch(), 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_fiddle_handle_initialize(), 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_mutex_synchronize_m(), rb_obj_tap(), rb_reg_match_m(), rb_str_enumerate_bytes(), rb_str_enumerate_chars(), rb_str_enumerate_codepoints(), rb_str_enumerate_lines(), rb_str_match_m(), rb_str_scan(), rb_str_sub_bang(), rb_str_upto(), rb_struct_each(), rb_struct_each_pair(), rb_struct_select(), rb_thread_s_handle_interrupt(), 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(), sym_each_i(), sym_step_i(), tracepoint_disable_m(), tracepoint_enable_m(), window_attron(), zip_ary(), zip_i(), zstream_detach_buffer(), and zstream_expand_buffer().

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

Definition at line 928 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_refine_block | ( | VALUE | refinement,
|  | VALUE | refinements
| ) |  |

Definition at line 1507 of file vm_eval.c.

References rb_thread_struct::cfp, RNode::flags, GET_THREAD(), NODE_FL_CREF_PUSHED_BY_EVAL, NOEX_PUBLIC, NULL, rb_block_struct::self, VM_CF_BLOCK_PTR(), VM_CF_LEP(), vm_cref_push(), VM_ENVVAL_BLOCK_PTR, and vm_yield_with_cref().

Referenced by rb_mod_refine().

VALUE rb_yield_splat | ( | VALUE | values) |  |

Definition at line 973 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 945 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(), rb_hash_update_block_callback(), select_i(), and sort_1().

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

Definition at line 967 of file vm_eval.c.

References rb_yield_0().

Referenced by lazy_drop_while_func(), lazy_flat_map_func(), lazy_init_iterator(), lazy_map_func(), lazy_take_while_func(), and yielder_yield_i().

VALUE ruby_eval_string_from_file | ( | const char * | str,
|  | const char * | filename
| ) |  |

Note
  This function name is not stable.

Definition at line 1345 of file vm_eval.c.

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

Referenced by rb_eval_string().

VALUE ruby_eval_string_from_file_protect | ( | const char * | str,
|  | const char * | filename,
|  | int * | state
| ) |  |

Definition at line 1363 of file vm_eval.c.

References eval_string_from_file_helper(), eval_string_from_file_arg::filename, rb_protect(), and eval_string_from_file_arg::str.

Referenced by pruby_eval().

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

Definition at line 851 of file vm_eval.c.

References CALL_PUBLIC, rb_thread_struct::cfp, CLASS_OF, GET_THREAD(), id, make_no_method_exception(), NULL, PASS_PASSED_BLOCK_TH, Qundef, rb_call0(), rb_check_id(), rb_eArgError, rb_eNoMethodError, rb_exc_raise(), rb_method_basic_definition_p(), rb_raise(), rb_to_id(), and RUBY_VM_PREVIOUS_CONTROL_FRAME.

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

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

Definition at line 1545 of file vm_eval.c.

References eval_under(), NUM2INT, Qundef, rb_block_given_p(), rb_check_arity, 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 280 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 raise_method_missing(), rb_call0(), rb_check_funcall(), and rb_check_funcall_with_hook().

VALUE vm_backtrace_str_ary | ( | rb_thread_t * | th,
|  | int | lev,
|  | int | n
| ) |  |

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

Definition at line 37 of file vm_eval.c.

References argc, rb_call_info_struct::argc, rb_call_info_struct::defined_class, rb_call_info_struct::flag, id, rb_call_info_struct::me, rb_call_info_struct::mid, rb_call_info_struct::recv, and vm_call0_body().

Referenced by check_funcall_respond_to(), rb_call0(), rb_check_funcall(), rb_check_funcall_with_hook(), rb_vm_call(), and vm_call_super().

static VALUE vm_call0_body | ( | rb_thread_t * | th,
|  | rb_call_info_t * | ci,
|  | const VALUE * | argv
| ) |  |
| static

Definition at line 140 of file vm_eval.c.

References rb_call_info_struct::argc, rb_method_definition_struct::attr, rb_call_info_struct::blockptr, rb_method_definition_struct::body, CALL_FCALL, rb_thread_struct::cfp, CHECK_VM_STACK_OVERFLOW, rb_method_entry_struct::def, rb_call_info_struct::defined_class, rb_control_frame_struct::flag, GetProcPtr, i, rb_method_attr_struct::id, ID2SYM, rb_call_info_struct::me, method_missing(), rb_call_info_struct::mid, new_args, NOEX_SUPER, rb_method_definition_struct::optimize_type, rb_method_definition_struct::orig_me, rb_thread_struct::passed_block, Qnil, Qundef, RARRAY_PTR, rb_ary_new4(), rb_ary_unshift(), rb_attr_get(), rb_bug(), rb_check_arity, rb_funcall2(), RB_GC_GUARD, rb_ivar_set(), rb_method_entry(), rb_vm_invoke_proc(), RCLASS_SUPER, rb_call_info_struct::recv, RUBY_VM_CHECK_INTS, send_internal(), rb_control_frame_struct::sp, rb_method_definition_struct::type, vm_call0_cfunc(), vm_call_bmethod_body(), vm_call_iseq_setup(), vm_exec(), VM_FRAME_FLAG_FINISH, 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_REFINED, VM_METHOD_TYPE_UNDEF, and VM_METHOD_TYPE_ZSUPER.

Referenced by vm_call0().

static VALUE vm_call0_cfunc | ( | rb_thread_t * | th,
|  | rb_call_info_t * | ci,
|  | const VALUE * | argv
| ) |  |
| static

Definition at line 132 of file vm_eval.c.

References vm_call0_cfunc_with_frame().

Referenced by vm_call0_body().

static VALUE vm_call0_cfunc_with_frame | ( | rb_thread_t * | th,
|  | rb_call_info_t * | ci,
|  | const VALUE * | argv
| ) |  |
| static

Definition at line 94 of file vm_eval.c.

References rb_method_cfunc_struct::argc, argc, rb_call_info_struct::argc, rb_call_info_struct::blockptr, rb_method_definition_struct::body, rb_thread_struct::cfp, rb_method_definition_struct::cfunc, rb_method_entry_struct::def, rb_call_info_struct::defined_class, EXEC_EVENT_HOOK, rb_method_cfunc_struct::func, rb_method_cfunc_struct::invoker, rb_call_info_struct::me, rb_call_info_struct::mid, Qnil, rb_bug(), rb_check_arity, rb_call_info_struct::recv, RUBY_DTRACE_CMETHOD_ENTRY_HOOK, RUBY_DTRACE_CMETHOD_RETURN_HOOK, RUBY_EVENT_C_CALL, RUBY_EVENT_C_RETURN, rb_control_frame_struct::sp, UNLIKELY, VM_ENVVAL_BLOCK_PTR, VM_FRAME_MAGIC_CFUNC, vm_pop_frame(), VM_PROFILE_UP, and vm_push_frame().

Referenced by vm_call0_cfunc().

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

Definition at line 250 of file vm_eval.c.

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

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(), rb_yield_refine_block(), and yield_under().

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

Referenced by eval_string_with_cref(), and vm_call0_body().

static void vm_set_eval_stack | ( | rb_thread_t * | th,
|  | VALUE | iseqval,
|  | const NODE * | cref,
|  | rb_block_t * | base_block
| ) |  |
| 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 rb_yield_refine_block(), and yield_under().

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

Definition at line 1484 of file vm_eval.c.

References rb_thread_struct::cfp, RNode::flags, GET_THREAD(), NODE_FL_CREF_PUSHED_BY_EVAL, NOEX_PUBLIC, Qundef, RARRAY_LENINT, RARRAY_PTR, rb_block_struct::self, VM_CF_BLOCK_PTR(), VM_CF_LEP(), vm_cref_push(), VM_ENVVAL_BLOCK_PTR, and vm_yield_with_cref().

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