vm_eval.c File Reference

Go to the source code of this file.

Data Structures

struct  rescue_funcall_args
struct  iter_method_arg
struct  eval_string_from_file_arg

Defines

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

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 VALUE vm_yield_with_block (rb_thread_t *th, int argc, const VALUE *argv, const rb_block_t *blockargptr)
static NODEvm_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 rb_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, ID 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_trb_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, const VALUE *argv)
VALUE rb_check_funcall (VALUE recv, ID mid, int argc, const VALUE *argv)
VALUE rb_check_funcall_with_hook (VALUE recv, ID mid, int argc, const 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.
VALUE rb_funcall (VALUE recv, ID mid, int n,...)
 Calls a method.
VALUE rb_funcallv (VALUE recv, ID mid, int argc, const VALUE *argv)
 Calls a method.
VALUE rb_funcallv_public (VALUE recv, ID mid, int argc, const VALUE *argv)
 Calls a method.
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)
VALUE rb_yield_block (VALUE val, VALUE arg, int argc, const VALUE *argv, VALUE blockarg)
static VALUE loop_i (void)
static VALUE rb_f_loop_size (VALUE self, VALUE args, VALUE eobj)
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, const 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, const 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 *const cref_arg, volatile VALUE file, volatile int line)
static VALUE eval_string (VALUE self, VALUE src, VALUE scope, VALUE 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 (VALUE 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.
VALUE rb_eval_string_protect (const char *str, int *state)
 Evaluates the given string in an isolated binding.
VALUE rb_eval_string_wrap (const char *str, int *state)
 Evaluates the given string under a module binding in an isolated binding.
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, VALUE 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 t, VALUE(*func)(), VALUE data)
VALUE rb_catch_protect (VALUE t, rb_block_call_func *func, VALUE data, int *stateptr)
static VALUE rb_f_local_variables (void)
VALUE rb_f_block_given_p (void)
VALUE rb_current_realfilepath (void)
void Init_vm_eval (void)


Define Documentation

#define NOEX_MISSING   0x80

Definition at line 633 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 294 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 (  )     case t: return #t;

Referenced by rb_type_str().


Enumeration Type Documentation

enum call_type

Enumerator:
CALL_PUBLIC 
CALL_FCALL 
CALL_VCALL 
CALL_TYPE_MAX 

Definition at line 26 of file vm_eval.c.


Function Documentation

static VALUE catch_i ( VALUE  tag,
VALUE  data 
) [static]

Definition at line 1761 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 383 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 336 of file vm_eval.c.

References args, new_args, RARRAY_PTR, rb_ary_new4, rb_ary_unshift(), rb_funcall2, RB_GC_GUARD, and VALUE.

Referenced by check_funcall_missing().

static VALUE check_funcall_failed ( struct rescue_funcall_args args,
VALUE  e 
) [static]

Definition at line 347 of file vm_eval.c.

References args, Qundef, rb_exc_raise(), rb_respond_to(), and SYM2ID.

Referenced by check_funcall_missing().

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

Definition at line 389 of file vm_eval.c.

References args, check_funcall_exec(), check_funcall_failed(), ID2SYM, rb_thread_struct::method_missing_reason, Qundef, rb_eNoMethodError, rb_method_basic_definition_p(), rb_rescue2(), and VALUE.

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 356 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, VALUE, and vm_call0().

Referenced by rb_check_funcall(), and rb_check_funcall_with_hook().

static VALUE eval_string ( VALUE  self,
VALUE  src,
VALUE  scope,
VALUE  file,
int  line 
) [static]

Definition at line 1318 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 ( VALUE  data  )  [static]

Definition at line 1376 of file vm_eval.c.

References eval_string(), eval_string_from_file_arg::filename, Qnil, 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 *const   cref_arg,
volatile VALUE  file,
volatile int  line 
) [static]

Definition at line 1181 of file vm_eval.c.

References rb_env_t::block, rb_thread_struct::cfp, Check_TypedStruct, CLASS_OF, CONST_ID, COPY_CREF, rb_binding_t::env, env, rb_block_struct::ep, rb_thread_struct::errinfo, rb_binding_t::first_lineno, GET_THREAD(), GetEnvPtr, GetISeqPtr, INT2FIX, rb_control_frame_struct::iseq, rb_block_struct::iseq, JUMP_TAG, rb_control_frame_struct::klass, rb_iseq_struct::local_table_size, rb_thread_struct::mild_compile_error, NEW_CREF, NIL_P, NULL, OBJ_FROZEN, rb_thread_struct::parse_in_eval, rb_binding_t::path, Qnil, Qundef, RARRAY_AREF, RARRAY_ASET, RARRAY_LEN, rb_attr_get(), rb_current_realfilepath(), rb_eRuntimeError, rb_exc_raise(), rb_fstring(), RB_GC_GUARD, rb_get_backtrace(), rb_iseq_compile_with_option(), rb_iseq_disasm(), rb_ivar_set(), rb_raise(), rb_sourcefilename(), rb_sourceline(), rb_str_append(), rb_str_cat(), rb_str_dup(), rb_str_new2, rb_str_update(), RB_TYPE_P, rb_usascii_str_new_cstr(), rb_vm_backtrace_str_ary(), rb_vm_get_cref(), rb_vm_get_ruby_level_next_cfp(), rb_vm_make_env_object(), result, RSTRING_LEN, RTEST, ruby_binding_data_type, RUBY_VM_GET_BLOCK_PTR_IN_CFP, rb_block_struct::self, StringValuePtr, T_ARRAY, T_STRING, TAG_RAISE, TH_EXEC_TAG, TH_POP_TAG, TH_PUSH_TAG, vm_exec(), and vm_set_eval_stack().

Referenced by eval_string(), and eval_under().

static VALUE eval_under ( VALUE  under,
VALUE  self,
VALUE  src,
VALUE  file,
int  line 
) [static]

Definition at line 1547 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, SafeStringValue, SPECIAL_CONST_P, and vm_cref_push().

Referenced by specific_eval().

void Init_vm_eval ( void   ) 

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

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

References 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 1005 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 636 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(), rb_str_new2, and VALUE.

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 696 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(), result, and VALUE.

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

NORETURN ( static void   raise_method_missing(rb_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 660 of file vm_eval.c.

References 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(), rb_vm_pop_cfunc_frame(), stack_check(), SYMBOL_P, and VALUE.

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

References ALLOCA_N, argc, CALL_FCALL, MEMCPY, OBJ_FREEZE, RARRAY_CONST_PTR, RARRAY_LENINT, RARRAY_PTR, rb_ary_subseq(), rb_call(), RB_GC_GUARD, RBASIC_CLEAR_CLASS, and VALUE.

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

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

Definition at line 1140 of file vm_eval.c.

References iter_method_arg::argc, 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]

For internal use only.

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 583 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_funcall_passing_block(), rb_funcall_with_block(), rb_funcallv(), and rb_funcallv_public().

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

For internal use only.

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

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

Referenced by rb_call(), and send_internal().

VALUE rb_call_super ( int  argc,
const VALUE *  argv 
)

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

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

VALUE rb_catch_obj ( VALUE  t,
VALUE(*)()  func,
VALUE  data 
)

Definition at line 1825 of file vm_eval.c.

References JUMP_TAG, and rb_catch_protect().

VALUE rb_catch_protect ( VALUE  t,
rb_block_call_func func,
VALUE  data,
int *  stateptr 
)

Definition at line 1835 of file vm_eval.c.

References rb_thread_struct::cfp, rb_thread_struct::errinfo, GET_THREAD(), Qnil, rb_vm_rewind_cfp(), RNODE, TAG_THROW, TH_EXEC_TAG, TH_POP_TAG, and TH_PUSH_TAG.

Referenced by exec_recursive(), and rb_catch_obj().

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

Definition at line 1162 of file vm_eval.c.

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

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

Definition at line 409 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(), VALUE, and vm_call0().

Referenced by convert_type(), enum_size(), enumerator_rewind(), enumerator_size(), error_print(), exc_equal(), flo_cmp(), invcmp_recursive(), io_call_close(), io_close(), 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,
const VALUE *  argv,
rb_check_funcall_hook hook,
VALUE  arg 
)

Definition at line 428 of file vm_eval.c.

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

VALUE rb_current_realfilepath ( void   ) 

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

References CALL_FCALL, and rb_call().

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

Definition at line 1464 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 1404 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 1420 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 1437 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 1942 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 1804 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 1342 of file vm_eval.c.

References eval_string(), NIL_P, NUM2INT, Qundef, rb_scan_args(), SafeStringValue, and StringValue.

Referenced by bind_eval(), and Init_vm_eval().

static VALUE rb_f_local_variables ( void   )  [static]

Definition at line 1878 of file vm_eval.c.

References rb_thread_struct::cfp, rb_control_frame_struct::ep, GET_THREAD(), ID2SYM, if(), 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 1039 of file vm_eval.c.

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

Referenced by Init_vm_eval().

static VALUE rb_f_loop_size ( VALUE  self,
VALUE  args,
VALUE  eobj 
) [static]

Definition at line 1014 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 928 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 908 of file vm_eval.c.

References CALL_FCALL, and send_internal().

Referenced by Init_vm_eval(), and inject_op_i().

static VALUE rb_f_throw ( int  argc,
VALUE *  argv 
) [static]

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

References ALLOCA_N, CALL_FCALL, rb_call(), va_init_list, and VALUE.

Referenced by _thread_call_proc_core(), _thread_call_proc_value(), add(), argument_error(), ary2list(), ary2list2(), 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_ge(), cmp_gt(), cmp_le(), cmp_lt(), 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(), 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(), eval_queue_handler(), evs_length(), exc_message(), f_add(), f_cmp(), f_div(), f_eqeq_p(), f_gt_p(), f_lt_p(), f_minus_one_p(), f_mul(), 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_round_0(), int_upto(), invoke_queue_handler(), 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_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_from_me(), 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_modulo(), num_nonzero_p(), num_remainder(), num_step(), num_to_int(), num_uminus(), numeric_quo(), 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_lt(), r_post_proc(), range_bsearch(), range_check(), range_each_func(), range_eqq(), range_max(), range_min(), range_step(), range_step_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_new_str(), rb_gzreader_initialize(), rb_gzwriter_flush(), rb_gzwriter_initialize(), rb_hash_default(), rb_inspect(), rb_int_pred(), rb_int_succ(), rb_io_flush_raw(), 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(), reachable_object_from_root_i(), reachable_objects_from_root(), readline_attempted_completion_function(), reduce0(), rescue_callback(), ruby_num_interval_step_size(), set_backtrace(), set_max_block_time(), set_option_encoding_once(), set_state_ivars(), shift(), slicebefore_i(), slicebefore_ii(), sockopt_unpack(), sort_by_cmp(), ssl_renegotiation_cb(), step_i(), strscan_get_charpos(), sub(), sym_step_i(), syserr_eqq(), tcl2rb_bool(), tcl_protect_core(), time_timespec(), timetick2integer(), tk_funcall(), tk_install_cmd_core(), TkStringValue(), to_strkey(), unknown_keyword_error(), unlink_body(), unlink_rescue(), wadd(), wcmp(), wdivmod(), weq(), wmul(), wquo(), writer(), and wsub().

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

Definition at line 827 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 835 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_funcallv ( 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 806 of file vm_eval.c.

References CALL_FCALL, and rb_call().

Referenced by binomial_coefficient(), cmp_eq_recursive(), descending_factorial(), dump_output(), hash_recursive(), rb_ary_bsearch(), rb_ary_cycle_size(), rb_ary_repeated_permutation_size(), rb_io_write(), recursive_cmp(), and sort_2().

VALUE rb_funcallv_public ( 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 821 of file vm_eval.c.

References CALL_PUBLIC, and rb_call().

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

Definition at line 1052 of file vm_eval.c.

References rb_thread_struct::cfp, rb_control_frame_struct::ep, err, rb_thread_struct::errinfo, GET_THREAD(), GET_THROWOBJ_CATCH_POINT, GET_THROWOBJ_VAL, rb_block_struct::iseq, NEW_IFUNC, node, rb_thread_struct::passed_block, rb_block_struct::proc, Qnil, rb_frame_this_func(), rb_vm_rewind_cfp(), RUBY_VM_GET_BLOCK_PTR_IN_CFP, rb_thread_struct::state, TAG_BREAK, TAG_RETRY, TH_EXEC_TAG, TH_JUMP_TAG, TH_POP_TAG, TH_PUSH_TAG, and VM_CF_BLOCK_PTR().

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 528 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, UNLIKELY, and VALUE.

Referenced by check_funcall_callable(), and rb_call0().

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

Definition at line 626 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 1677 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 1705 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 1606 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 1638 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 730 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 485 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, type, and VALUE.

Referenced by rb_call0(), rb_check_funcall(), and rb_check_funcall_with_hook().

void rb_throw ( const char *  tag,
VALUE  val 
)

Definition at line 1755 of file vm_eval.c.

References ID2SYM, rb_intern, and rb_throw_obj().

void rb_throw_obj ( VALUE  tag,
VALUE  value 
)

Definition at line 1733 of file vm_eval.c.

References rb_thread_struct::errinfo, GET_THREAD(), JUMP_TAG, NEW_THROW_OBJECT, rb_vm_tag::prev, PRIsVALUE, rb_eArgError, rb_inspect(), rb_raise(), rb_vm_tag::retval, 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 450 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_backtrace_str_ary ( rb_thread_t th,
int  lev,
int  n 
)

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

References vm_call0().

Referenced by rb_method_call_with_block().

VALUE rb_yield ( VALUE  val  ) 

Definition at line 942 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_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(), 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_scrub(), rb_str_sub_bang(), rb_str_upto(), rb_struct_each(), rb_struct_each_pair(), rb_struct_select(), rb_thread_s_handle_interrupt(), reject_i(), 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(), trace_object_allocations(), tracepoint_disable_m(), tracepoint_enable_m(), wmap_each_key_i(), wmap_each_value_i(), yield_indexed_values(), 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 936 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_block ( VALUE  val,
VALUE  arg,
int  argc,
const VALUE *  argv,
VALUE  blockarg 
)

Definition at line 993 of file vm_eval.c.

References rb_proc_t::block, GET_THREAD(), GetProcPtr, NIL_P, and vm_yield_with_block().

VALUE rb_yield_refine_block ( VALUE  refinement,
VALUE  refinements 
)

Definition at line 1527 of file vm_eval.c.

References rb_thread_struct::cfp, RNode::flags, GET_THREAD(), NODE_FL_CREF_PUSHED_BY_EVAL, NOEX_PUBLIC, NULL, RB_OBJ_WRITE, 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 981 of file vm_eval.c.

References NIL_P, RARRAY_CONST_PTR, RARRAY_LENINT, rb_check_array_type(), rb_eArgError, rb_raise(), rb_yield_0(), and VALUE.

VALUE rb_yield_values ( int  n,
  ... 
)

Definition at line 953 of file vm_eval.c.

References ALLOCA_N, args, rb_yield_0(), va_init_list, and VALUE.

Referenced by delete_if_i(), each_pair_i_fast(), each_with_index_i(), each_with_object_i(), enumerator_with_index_i(), enumerator_with_object_i(), env_each_pair(), 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(), rb_struct_each_pair(), reject_i(), select_i(), sort_1(), and wmap_each_i().

VALUE rb_yield_values2 ( int  argc,
const VALUE *  argv 
)

Definition at line 975 of file vm_eval.c.

References rb_yield_0().

Referenced by argf_block_call_i(), lazy_drop_while_func(), lazy_flat_map_func(), lazy_init_iterator(), lazy_map_func(), lazy_take_while_func(), rb_ary_zip(), 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 1364 of file vm_eval.c.

References eval_string(), Qnil, rb_str_new2, rb_str_new_cstr(), 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 1383 of file vm_eval.c.

References eval_string_from_file_helper(), eval_string_from_file_arg::filename, rb_protect(), rb_str_new_cstr(), 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 852 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(), RUBY_VM_PREVIOUS_CONTROL_FRAME, and VALUE.

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

References eval_under(), NIL_P, NUM2INT, Qundef, rb_block_given_p(), rb_check_arity, SafeStringValue, StringValue, and yield_under().

Referenced by rb_mod_module_eval(), and rb_obj_instance_eval().

static void stack_check ( void   )  [inline, static]

Definition at line 281 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.

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

Definition at line 38 of file vm_eval.c.

References rb_call_info_struct::argc, rb_call_info_struct::defined_class, rb_call_info_struct::flag, 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(), check_match(), 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 141 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, GetProcPtr, 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, VALUE, 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 133 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 95 of file vm_eval.c.

References rb_call_info_struct::argc, argc, rb_method_cfunc_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, VALUE, 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 251 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, VALUE, 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]

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]

static void vm_set_eval_stack ( rb_thread_t th,
VALUE  iseqval,
const NODE cref,
rb_block_t base_block 
) [static]

static VALUE vm_yield ( rb_thread_t th,
int  argc,
const VALUE *  argv 
) [inline, static]

static VALUE vm_yield_with_block ( rb_thread_t th,
int  argc,
const VALUE *  argv,
const rb_block_t blockargptr 
) [inline, static]

static VALUE vm_yield_with_cref ( rb_thread_t th,
int  argc,
const VALUE *  argv,
const NODE cref 
) [inline, static]

static VALUE yield_under ( VALUE  under,
VALUE  self,
VALUE  values 
) [static]

Definition at line 1504 of file vm_eval.c.

References rb_thread_struct::cfp, RNode::flags, GET_THREAD(), NODE_FL_CREF_PUSHED_BY_EVAL, NOEX_PUBLIC, Qundef, RARRAY_CONST_PTR, RARRAY_LENINT, 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().


Generated on 19 Jul 2016 for Ruby by  doxygen 1.4.7