Ruby  2.4.2p198(2017-09-14revision59899)
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
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  local_var_list
 
struct  rescue_funcall_args
 
struct  iter_method_arg
 
struct  eval_string_from_file_arg
 

Macros

#define id_mesg   idMesg
 
#define PRIV   Qfalse /* TODO: for rubyspec now, should be Qtrue */
 
#define type_case(t)   case t: return #t;
 

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, enum method_missing_reason call_status)
 
static VALUE vm_yield_with_cref (rb_thread_t *th, int argc, const VALUE *argv, const rb_cref_t *cref, int is_lambda)
 
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, VALUE block_handler)
 
static VALUE vm_yield_lambda_splattable (rb_thread_t *th, VALUE args)
 
static VALUE vm_exec (rb_thread_t *th)
 
static void vm_set_eval_stack (rb_thread_t *th, const rb_iseq_t *iseq, const rb_cref_t *cref, const struct rb_block *base_block)
 
static int vm_collect_local_variables_in_heap (rb_thread_t *th, const VALUE *dfp, const struct local_var_list *vars)
 
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, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc, const VALUE *argv)
 
static VALUE vm_call0 (rb_thread_t *th, VALUE recv, ID id, int argc, const VALUE *argv, const rb_callable_method_entry_t *me)
 
static VALUE vm_call0_cfunc_with_frame (rb_thread_t *th, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc, const VALUE *argv)
 
static VALUE vm_call0_cfunc (rb_thread_t *th, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc, const VALUE *argv)
 
VALUE rb_vm_call (rb_thread_t *th, VALUE recv, VALUE id, int argc, const VALUE *argv, const rb_callable_method_entry_t *me)
 
static VALUE vm_call_super (rb_thread_t *th, int argc, const VALUE *argv)
 
VALUE rb_call_super (int argc, const VALUE *argv)
 
VALUE rb_current_receiver (void)
 
static void stack_check (rb_thread_t *th)
 
static const rb_callable_method_entry_trb_search_method_entry (VALUE recv, ID mid)
 
static enum method_missing_reason rb_method_call_status (rb_thread_t *th, const rb_callable_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_callable_method_entry_t *me)
 
static VALUE check_funcall_missing (rb_thread_t *th, VALUE klass, VALUE recv, ID mid, int argc, const VALUE *argv, int respond, VALUE def)
 
VALUE rb_check_funcall (VALUE recv, ID mid, int argc, const VALUE *argv)
 
VALUE rb_check_funcall_default (VALUE recv, ID mid, int argc, const VALUE *argv, VALUE def)
 
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, enum method_missing_reason call_status))
 
static VALUE rb_method_missing (int argc, const VALUE *argv, VALUE obj)
 
static VALUE make_no_method_exception (VALUE exc, VALUE format, VALUE obj, int argc, const VALUE *argv, int priv)
 
static void raise_method_missing (rb_thread_t *th, int argc, const VALUE *argv, VALUE obj, enum method_missing_reason last_call_status)
 
void rb_raise_method_missing (rb_thread_t *th, int argc, const 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_funcallv (VALUE recv, ID mid, int argc, const VALUE *argv)
 Calls a method. More...
 
VALUE rb_funcallv_public (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 passed_procval)
 
static VALUEcurrent_vm_stack_arg (rb_thread_t *th, const VALUE *argv)
 
VALUE rb_f_send (int argc, VALUE *argv, VALUE recv)
 
VALUE rb_f_public_send (int argc, VALUE *argv, VALUE recv)
 
static VALUE rb_yield_0 (int argc, const VALUE *argv)
 
VALUE rb_yield_1 (VALUE val)
 
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_lambda (VALUE values)
 
VALUE rb_yield_block (VALUE val, VALUE arg, int argc, const VALUE *argv, VALUE blockarg)
 
static VALUE loop_i (void)
 
static VALUE loop_stop (VALUE dummy, VALUE exc)
 
static VALUE rb_f_loop_size (VALUE self, VALUE args, VALUE eobj)
 
static VALUE rb_f_loop (VALUE self)
 
static VALUE rb_iterate0 (VALUE(*it_proc)(VALUE), VALUE data1, const struct vm_ifunc *const ifunc, rb_thread_t *const th)
 
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)
 
VALUE rb_lambda_call (VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t bl_proc, int min_argc, int max_argc, 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 adjust_backtrace_in_eval (rb_thread_t *th, VALUE errinfo)
 
static VALUE eval_string_with_cref (VALUE self, VALUE src, VALUE scope, rb_cref_t *const cref_arg, VALUE filename, int lineno)
 
static VALUE eval_string (VALUE self, VALUE src, VALUE scope, VALUE file, int line)
 
VALUE rb_f_eval (int argc, const 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. 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, int argc, const VALUE *argv)
 
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, const VALUE *argv, VALUE klass, VALUE self)
 
static VALUE singleton_class_for_eval (VALUE self)
 
VALUE rb_obj_instance_eval (int argc, const VALUE *argv, VALUE self)
 
VALUE rb_obj_instance_exec (int argc, const VALUE *argv, VALUE self)
 
VALUE rb_mod_module_eval (int argc, const VALUE *argv, VALUE mod)
 
VALUE rb_mod_module_exec (int argc, const VALUE *argv, VALUE mod)
 
static VALUE uncaught_throw_init (int argc, const VALUE *argv, VALUE exc)
 
static VALUE uncaught_throw_tag (VALUE exc)
 
static VALUE uncaught_throw_value (VALUE exc)
 
static VALUE uncaught_throw_to_s (VALUE exc)
 
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)
 
static VALUE vm_catch_protect (VALUE, rb_block_call_func *, VALUE, int *, rb_thread_t *volatile)
 
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 void local_var_list_init (struct local_var_list *vars)
 
static VALUE local_var_list_finish (struct local_var_list *vars)
 
static int local_var_list_update (st_data_t *key, st_data_t *value, st_data_t arg, int existing)
 
static void local_var_list_add (const struct local_var_list *vars, ID lid)
 
static VALUE rb_f_local_variables (void)
 
VALUE rb_f_block_given_p (void)
 
VALUE rb_current_realfilepath (void)
 
void Init_vm_eval (void)
 

Variables

static VALUE rb_eUncaughtThrow
 
static ID id_result
 
static ID id_tag
 
static ID id_value
 

Macro Definition Documentation

◆ id_mesg

#define id_mesg   idMesg

Definition at line 29 of file vm_eval.c.

Referenced by adjust_backtrace_in_eval(), and uncaught_throw_to_s().

◆ PRIV

#define PRIV   Qfalse /* TODO: for rubyspec now, should be Qtrue */

Definition at line 366 of file vm_eval.c.

Referenced by check_funcall_missing().

◆ type_case

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

Referenced by rb_type_str().

Typedef Documentation

◆ call_type

typedef enum call_type call_type

Enumeration Type Documentation

◆ call_type

enum call_type
Enumerator
CALL_PUBLIC 
CALL_FCALL 
CALL_VCALL 
CALL_TYPE_MAX 

Definition at line 34 of file vm_eval.c.

Function Documentation

◆ adjust_backtrace_in_eval()

static VALUE adjust_backtrace_in_eval ( rb_thread_t th,
VALUE  errinfo 
)
static

◆ catch_i()

static VALUE catch_i ( VALUE  tag,
VALUE  data 
)
static

Definition at line 1950 of file vm_eval.c.

References rb_yield_0().

Referenced by rb_f_catch().

◆ check_funcall_callable()

static int check_funcall_callable ( rb_thread_t th,
const rb_callable_method_entry_t me 
)
static

◆ check_funcall_exec()

static VALUE check_funcall_exec ( struct rescue_funcall_args args)
static

◆ check_funcall_failed()

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

◆ check_funcall_missing()

static VALUE check_funcall_missing ( rb_thread_t th,
VALUE  klass,
VALUE  recv,
ID  mid,
int  argc,
const VALUE argv,
int  respond,
VALUE  def 
)
static

◆ check_funcall_respond_to()

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

Definition at line 393 of file vm_eval.c.

References TRUE, and vm_respond_to().

Referenced by rb_check_funcall_default(), and rb_check_funcall_with_hook().

◆ current_vm_stack_arg()

static VALUE* current_vm_stack_arg ( rb_thread_t th,
const VALUE argv 
)
static

◆ eval_string()

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

◆ eval_string_from_file_helper()

static VALUE eval_string_from_file_helper ( VALUE  data)
static

◆ eval_string_with_cref()

static VALUE eval_string_with_cref ( VALUE  self,
VALUE  src,
VALUE  scope,
rb_cref_t *const  cref_arg,
VALUE  filename,
int  lineno 
)
static

◆ eval_under()

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

◆ Init_vm_eval()

void Init_vm_eval ( void  )

◆ iterate_check_method()

static VALUE iterate_check_method ( VALUE  obj)
static

◆ iterate_method()

static VALUE iterate_method ( VALUE  obj)
static

◆ local_var_list_add()

static void local_var_list_add ( const struct local_var_list vars,
ID  lid 
)
static

◆ local_var_list_finish()

static VALUE local_var_list_finish ( struct local_var_list vars)
static

◆ local_var_list_init()

static void local_var_list_init ( struct local_var_list vars)
static

◆ local_var_list_update()

static int local_var_list_update ( st_data_t key,
st_data_t value,
st_data_t  arg,
int  existing 
)
static

Definition at line 2094 of file vm_eval.c.

References Qtrue, ST_CONTINUE, st_data_t, and ST_STOP.

Referenced by local_var_list_add().

◆ loop_i()

static VALUE loop_i ( void  )
static

Definition at line 1085 of file vm_eval.c.

References Qnil, and rb_yield_0().

Referenced by rb_f_loop().

◆ loop_stop()

static VALUE loop_stop ( VALUE  dummy,
VALUE  exc 
)
static

Definition at line 1094 of file vm_eval.c.

References id_result, and rb_attr_get().

Referenced by rb_f_loop().

◆ make_no_method_exception()

static VALUE make_no_method_exception ( VALUE  exc,
VALUE  format,
VALUE  obj,
int  argc,
const VALUE argv,
int  priv 
)
static

◆ method_missing()

static VALUE method_missing ( VALUE  obj,
ID  id,
int  argc,
const VALUE argv,
enum method_missing_reason  call_status 
)
inlinestatic

◆ NORETURN()

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

Referenced by rb_call().

◆ raise_method_missing()

static void raise_method_missing ( rb_thread_t th,
int  argc,
const VALUE argv,
VALUE  obj,
enum method_missing_reason  last_call_status 
)
static

◆ rb_apply()

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

Calls a method.

Parameters
recvreceiver of the method
midan ID that represents the name of the method
argsan Array object which contains method arguments
Precondition
args must refer an Array object.

Definition at line 792 of file vm_eval.c.

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

Referenced by exec_callback().

◆ rb_block_call()

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

◆ rb_call()

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

calls the specified method.

This function is called by functions in rb_call* family.

Parameters
recvreceiver
midan ID that represents the name of the method
argcthe number of method arguments
argva pointer to an array of method arguments
scope

Definition at line 626 of file vm_eval.c.

References argc, argv, rb_thread_struct::cfp, GET_THREAD, NORETURN(), raise_method_missing(), 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().

◆ rb_call0()

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

calls the specified method.

This function is called by functions in rb_call* family.

Parameters
recvreceiver of the method
midan ID that represents the name of the method
argcthe number of method arguments
argva pointer to an array of method arguments
scope
selfself 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 332 of file vm_eval.c.

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

Referenced by rb_call(), and send_internal().

◆ rb_call_super()

VALUE rb_call_super ( int  argc,
const VALUE argv 
)

◆ rb_catch()

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

◆ rb_catch_obj()

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

Definition at line 2030 of file vm_eval.c.

References func, GET_THREAD, TH_JUMP_TAG, val, and vm_catch_protect().

Referenced by rb_catch(), and rb_f_catch().

◆ rb_catch_protect()

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

Definition at line 2041 of file vm_eval.c.

References GET_THREAD, and vm_catch_protect().

Referenced by exec_recursive().

◆ rb_check_block_call()

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

◆ rb_check_funcall()

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

◆ rb_check_funcall_default()

VALUE rb_check_funcall_default ( VALUE  recv,
ID  mid,
int  argc,
const VALUE argv,
VALUE  def 
)

◆ rb_check_funcall_with_hook()

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

◆ rb_current_realfilepath()

VALUE rb_current_realfilepath ( void  )

◆ rb_current_receiver()

VALUE rb_current_receiver ( void  )

◆ rb_each()

VALUE rb_each ( VALUE  obj)

Definition at line 1279 of file vm_eval.c.

References CALL_FCALL, and rb_call().

Referenced by ssl_renegotiation_cb().

◆ rb_eval_cmd()

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

◆ rb_eval_string()

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
strRuby code to evaluate.
Returns
The evaluated result.
Exceptions
ExceptionRaises an exception on error.

Definition at line 1498 of file vm_eval.c.

References ruby_eval_string_from_file().

Referenced by foletype_s_typelibs(), and rb_eval_string_protect().

◆ 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
strRuby code to evaluate.
stateBeing set to zero if succeeded. Nonzero if an error occurred.
Returns
The evaluated result if succeeded, an undefined value if otherwise.

Definition at line 1514 of file vm_eval.c.

References rb_eval_string(), and rb_protect().

Referenced by rb_eval_string_wrap().

◆ 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 loaded libraries on "load('foo', true)".

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

See also
rb_eval_string
Parameters
strRuby code to evaluate.
stateBeing set to zero if succeeded. Nonzero if an error occurred.
Returns
The evaluated result if succeeded, an undefined value if otherwise.

Definition at line 1531 of file vm_eval.c.

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

◆ rb_f_block_given_p()

VALUE rb_f_block_given_p ( void  )

◆ rb_f_catch()

static VALUE rb_f_catch ( int  argc,
VALUE argv 
)
static

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

◆ rb_f_eval()

VALUE rb_f_eval ( int  argc,
const VALUE argv,
VALUE  self 
)

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

◆ rb_f_local_variables()

static VALUE rb_f_local_variables ( void  )
static

◆ rb_f_loop()

static VALUE rb_f_loop ( VALUE  self)
static

◆ rb_f_loop_size()

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

Definition at line 1100 of file vm_eval.c.

References DBL2NUM, and INFINITY.

Referenced by rb_f_loop().

◆ rb_f_public_send()

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

Definition at line 1000 of file vm_eval.c.

References CALL_PUBLIC, and send_internal().

Referenced by Init_vm_eval().

◆ rb_f_send()

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

Definition at line 980 of file vm_eval.c.

References CALL_FCALL, and send_internal().

Referenced by Init_vm_eval().

◆ rb_f_throw()

static VALUE rb_f_throw ( int  argc,
VALUE argv 
)
static

Definition at line 1909 of file vm_eval.c.

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

Referenced by Init_vm_eval().

◆ rb_funcall()

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

Calls a method.

Parameters
recvreceiver of the method
midan ID that represents the name of the method
nthe number of arguments
...arbitrary number of method arguments
Precondition
each of arguments after n must be a VALUE.

Definition at line 821 of file vm_eval.c.

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

Referenced by add(), ary_inject_op(), asn1time_to_time(), autoload_require(), BigDecimal_power(), BigDecimal_to_i(), BigDecimal_to_r(), bsock_setsockopt(), call_next(), call_verify_cb_proc(), call_verify_certificate_identity(), chunk_i(), chunk_ii(), cmp(), coerce_body(), copy_stream_fallback_body(), cParser_initialize(), cState_aref(), cState_aset(), cState_from_state_s(), datetime_to_time(), default_inspect(), define_final0(), divmodv(), DupConfigPtr(), enum_cycle_size(), enum_each_cons_size(), enum_each_slice_size(), enum_zip(), eq(), f_abs(), f_add(), f_cmp(), f_div(), f_eqeq_p(), f_ge_p(), f_gt_p(), f_le_p(), f_lt_p(), f_mul(), f_negative_p(), f_odd_p(), f_sub(), f_to_f(), f_zero_p(), fole_s_show_help(), foletype_s_ole_classes(), folevariant_value(), fun1(), function_call(), generate_json(), generate_json_bignum(), generate_json_float(), generate_json_object(), generate_json_string(), generic_to_value(), GetVpValueWithPrec(), grep_i(), grep_iter_i(), gzfile_close(), gzfile_read_raw_partial(), gzfile_read_raw_rescue(), gzfile_reader_rewind(), gzfile_write_raw(), Init_generator(), Init_syslog(), Init_win32ole_variant(), initialize(), inject_op_i(), int_dotimes(), int_dotimes_size(), int_downto(), int_even_p(), int_odd_p(), int_round_zero_p(), int_upto(), io_reader(), io_write(), is_negative(), is_one(), is_zero(), iseq_translate(), JSON_parse_array(), JSON_parse_object(), JSON_parse_string(), lazy_drop_size(), lazy_flat_map_proc(), lazy_flat_map_to_ary(), lazy_grep_iter_proc(), lazy_grep_proc(), lazy_grep_v_func(), lazy_grep_v_iter(), lazy_zip_arrays_func(), lazy_zip_func(), lexer_iter(), load_file_internal(), make_exception(), match_i(), max_by_i(), min_by_i(), minmax_by_i(), minmax_by_i_update(), mObject_to_json(), mod(), mString_Extend_json_create(), mString_included_s(), mString_to_json_raw_object(), mul(), nmin_cmp(), num_div(), num_fdiv(), num_funcall_op_0(), num_funcall_op_1(), num_modulo(), num_remainder(), num_step(), numeric_quo(), nurat_fdiv(), 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_ssl_initialize(), ossl_ssl_read_internal(), ossl_ssl_session_get_time(), ossl_ssl_session_set_time(), ossl_ssl_write_internal(), ossl_sslctx_add_extra_chain_cert_i(), ossl_sslctx_flush_sessions(), ossl_to_der(), ossl_x509attr_get_value(), ossl_x509attr_initialize(), ossl_x509ext_initialize(), ossl_x509store_verify(), parse(), parse_main(), parser_compile_error(), path_atime(), path_basename(), path_blockdev_p(), path_chardev_p(), path_chmod(), path_chown(), path_ctime(), path_directory_p(), path_dirname(), path_empty_p(), path_entries(), path_executable_p(), path_executable_real_p(), path_exist_p(), path_expand_path(), path_extname(), path_file_p(), path_fnmatch(), path_ftype(), path_grpowned_p(), path_lchmod(), path_lchown(), path_lstat(), path_make_link(), path_make_symlink(), path_mkdir(), path_mtime(), path_owned_p(), path_pipe_p(), path_readable_p(), path_readable_real_p(), path_readlink(), path_realdirpath(), path_realpath(), path_rename(), path_rmdir(), path_s_getwd(), path_setgid_p(), path_setuid_p(), path_size(), path_size_p(), path_socket_p(), path_split(), path_stat(), path_sticky_p(), path_symlink_p(), path_truncate(), path_utime(), path_world_readable_p(), path_world_writable_p(), path_writable_p(), path_writable_real_p(), path_zero_p(), protected_alias(), protected_empty(), protected_end_document(), protected_end_mapping(), protected_end_sequence(), protected_end_stream(), protected_start_stream(), quo(), r_less(), range_bsearch(), range_check(), range_eqq(), range_max(), range_min(), range_step(), rb_ary_sum(), rb_big_pow(), rb_class_inherited(), rb_cmpint(), rb_complex_finite_p(), rb_complex_infinite_p(), 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_eql(), rb_equal(), rb_exc_new(), rb_exc_new_str(), rb_get_backtrace(), rb_gzreader_initialize(), rb_gzwriter_flush(), rb_gzwriter_initialize(), rb_hash_default_value(), rb_io_flush_raw(), rb_mod_include(), rb_mod_prepend(), rb_mod_s_used_modules(), rb_num_coerce_bin(), rb_num_coerce_cmp(), rb_num_coerce_relop(), rb_obj_as_string(), rb_obj_clone2(), rb_obj_dup(), rb_obj_extend(), rb_obj_init_dup_clone(), rb_obj_not_equal(), rb_obj_not_match(), rb_range_values(), rb_rational_den(), rb_rational_num(), rb_str_match(), rb_str_sum(), rb_strftime_with_timespec(), rb_write_warning_str(), rbtime2vtdate(), readline_attempted_completion_function(), readline_s_set_output(), reduce0(), rescue_callback(), respond_to_missing_p(), rt_complete_frags(), ruby_num_interval_step_size(), set_option_encoding_once(), set_state_ivars(), shift(), sliceafter_i(), sliceafter_ii(), slicebefore_i(), slicebefore_ii(), slicewhen_i(), slicewhen_ii(), sockopt_unpack(), sort_by_cmp(), ssl_renegotiation_cb(), step_i(), str_upto_each(), strscan_get_charpos(), sub(), sum_iter(), sym_step_i(), time_timespec(), timetick2integer(), transcode_io(), unlink_body(), unlink_rescue(), vtdate2rbtime(), wadd(), wcmp(), weq(), with_gvl_callback(), writer(), and wsub().

◆ rb_funcall_passing_block()

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

Definition at line 873 of file vm_eval.c.

References CALL_PUBLIC, PASS_PASSED_BLOCK_HANDLER, and rb_call().

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

◆ rb_funcall_with_block()

VALUE rb_funcall_with_block ( VALUE  recv,
ID  mid,
int  argc,
const VALUE argv,
VALUE  passed_procval 
)

Definition at line 880 of file vm_eval.c.

References CALL_PUBLIC, GET_THREAD, NIL_P, rb_call(), and vm_passed_block_handler_set().

Referenced by rb_sym_proc_call().

◆ rb_funcallv()

VALUE rb_funcallv ( VALUE  recv,
ID  mid,
int  argc,
const VALUE argv 
)

Calls a method.

Parameters
recvreceiver of the method
midan ID that represents the name of the method
argcthe number of arguments
argvpointer to an array of method arguments

Definition at line 852 of file vm_eval.c.

References CALL_FCALL, and rb_call().

Referenced by rb_eval_cmd().

◆ rb_funcallv_public()

VALUE rb_funcallv_public ( VALUE  recv,
ID  mid,
int  argc,
const VALUE argv 
)

Calls a method.

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

Parameters
recvreceiver of the method
midan ID that represents the name of the method
argcthe number of arguments
argvpointer to an array of method arguments

Definition at line 867 of file vm_eval.c.

References CALL_PUBLIC, and rb_call().

Referenced by obj_random_bytes(), parser_compile_error(), and rb_random_ulong_limited().

◆ rb_iterate()

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

◆ rb_iterate0()

static VALUE rb_iterate0 ( VALUE(*)(VALUE it_proc,
VALUE  data1,
const struct vm_ifunc *const  ifunc,
rb_thread_t *const  th 
)
static

◆ rb_lambda_call()

VALUE rb_lambda_call ( VALUE  obj,
ID  mid,
int  argc,
const VALUE argv,
rb_block_call_func_t  bl_proc,
int  min_argc,
int  max_argc,
VALUE  data2 
)

◆ rb_method_call_status()

static enum method_missing_reason rb_method_call_status ( rb_thread_t th,
const rb_callable_method_entry_t me,
call_type  scope,
VALUE  self 
)
inlinestatic

◆ rb_method_missing()

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

◆ rb_mod_module_eval()

VALUE rb_mod_module_eval ( int  argc,
const VALUE argv,
VALUE  mod 
)

Definition at line 1799 of file vm_eval.c.

References specific_eval().

Referenced by Init_vm_eval(), and rb_struct_s_def().

◆ rb_mod_module_exec()

VALUE rb_mod_module_exec ( int  argc,
const VALUE argv,
VALUE  mod 
)

Definition at line 1827 of file vm_eval.c.

References yield_under().

Referenced by Init_vm_eval(), and rb_mod_initialize().

◆ rb_obj_instance_eval()

VALUE rb_obj_instance_eval ( int  argc,
const VALUE argv,
VALUE  self 
)

Definition at line 1740 of file vm_eval.c.

References singleton_class_for_eval(), and specific_eval().

Referenced by Init_vm_eval().

◆ rb_obj_instance_exec()

VALUE rb_obj_instance_exec ( int  argc,
const VALUE argv,
VALUE  self 
)

Definition at line 1765 of file vm_eval.c.

References singleton_class_for_eval(), and yield_under().

Referenced by Init_vm_eval().

◆ rb_raise_method_missing()

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

◆ rb_search_method_entry()

static const rb_callable_method_entry_t * rb_search_method_entry ( VALUE  recv,
ID  mid 
)
inlinestatic

◆ rb_throw()

void rb_throw ( const char *  tag,
VALUE  val 
)

Definition at line 1944 of file vm_eval.c.

References rb_sym_intern_ascii_cstr(), and rb_throw_obj().

◆ rb_throw_obj()

void rb_throw_obj ( VALUE  tag,
VALUE  value 
)

◆ rb_type_str()

static const char* rb_type_str ( enum ruby_value_type  type)
static

◆ rb_vm_backtrace_str_ary()

VALUE rb_vm_backtrace_str_ary ( rb_thread_t th,
int  lev,
int  n 
)

◆ rb_vm_call()

VALUE rb_vm_call ( rb_thread_t th,
VALUE  recv,
VALUE  id,
int  argc,
const VALUE argv,
const rb_callable_method_entry_t me 
)

Definition at line 255 of file vm_eval.c.

References vm_call0().

Referenced by call_method_data().

◆ rb_yield()

VALUE rb_yield ( VALUE  val)

Definition at line 1020 of file vm_eval.c.

References Qundef, rb_yield_0(), and rb_yield_1().

Referenced by any_p_i(), ary_add_hash_by(), ary_reject(), BigDecimal_save_exception_mode(), BigDecimal_save_limit(), BigDecimal_save_rounding_mode(), chdir_yield(), console_cooked(), console_noecho(), console_raw(), d_lite_downto(), d_lite_step(), d_lite_upto(), dir_each(), dir_s_open(), each_cons_i(), each_entry_i(), each_i(), each_key_i(), each_pair_i(), each_slice_i(), each_value_i(), enc_str_scrub(), enum_each_slice(), enum_reverse_each(), enum_yield(), enum_yield_array(), env_delete_m(), env_each_key(), env_each_pair(), env_each_value(), env_fetch(), etc_getgrnam(), etc_getpwnam(), 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(), fsdbm_delete(), fsdbm_delete_if(), fsdbm_each_key(), fsdbm_each_pair(), fsdbm_each_value(), fsdbm_fetch(), fsdbm_s_open(), fsdbm_select(), glob_i(), gzfile_wrap(), hist_each(), int_dotimes(), int_downto(), int_upto(), io_s_foreach(), lazy_grep_v_iter(), mSyslog_open(), num_step(), ole_each_sub(), os_obj_of_i(), ossl_asn1_decode0(), ossl_engine_s_by_id(), ossl_generate_cb_2(), ossl_pem_passwd_cb0(), p_gid_have_saved_id(), p_gid_switch(), p_uid_have_saved_id(), p_uid_switch(), pty_getpty(), pty_open(), range_each(), range_step(), rb_ary_any_p(), rb_ary_bsearch_index(), 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_sum(), rb_ary_take_while(), rb_ary_zip(), rb_callcc(), rb_exec_async_signal_safe(), rb_f_open(), rb_fiddle_handle_initialize(), rb_gzreader_each(), rb_gzreader_each_byte(), rb_gzreader_each_char(), rb_hash_delete_m(), 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_struct_each(), rb_struct_each_pair(), rb_struct_select(), rb_thread_s_handle_interrupt(), reject_bang_i(), ruby_float_step(), select_bang_i(), sock_initialize(), sort_by_i(), step_i(), str_gsub(), str_upto_i(), strio_each(), strio_each_byte(), strio_each_char(), strio_each_codepoint(), strio_s_open(), sum_iter(), sym_each_i(), sym_step_i(), trace_object_allocations(), tracepoint_disable_m(), tracepoint_enable_m(), transform_values_i(), wmap_each_key_i(), wmap_each_value_i(), yield_indexed_values(), zstream_detach_buffer(), and zstream_expand_buffer().

◆ rb_yield_0()

static VALUE rb_yield_0 ( int  argc,
const VALUE argv 
)
inlinestatic

Definition at line 1008 of file vm_eval.c.

References GET_THREAD, and vm_yield().

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

◆ rb_yield_1()

VALUE rb_yield_1 ( VALUE  val)

Definition at line 1014 of file vm_eval.c.

References rb_yield_0().

Referenced by int_dotimes(), and rb_yield().

◆ rb_yield_block()

VALUE rb_yield_block ( VALUE  val,
VALUE  arg,
int  argc,
const VALUE argv,
VALUE  blockarg 
)

Definition at line 1078 of file vm_eval.c.

References GET_THREAD, NIL_P, VM_BLOCK_HANDLER_NONE, and vm_yield_with_block().

◆ rb_yield_lambda()

VALUE rb_yield_lambda ( VALUE  values)

Definition at line 1072 of file vm_eval.c.

References GET_THREAD, and vm_yield_lambda_splattable().

Referenced by enum_yield(), and enum_yield_array().

◆ rb_yield_refine_block()

VALUE rb_yield_refine_block ( VALUE  refinement,
VALUE  refinements 
)

◆ rb_yield_splat()

VALUE rb_yield_splat ( VALUE  values)

◆ rb_yield_values()

VALUE rb_yield_values ( int  n,
  ... 
)

◆ rb_yield_values2()

VALUE rb_yield_values2 ( int  argc,
const VALUE argv 
)

◆ ruby_eval_string_from_file()

VALUE ruby_eval_string_from_file ( const char *  str,
const char *  filename 
)
Note
This function name is not stable.

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

◆ ruby_eval_string_from_file_protect()

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

◆ send_internal()

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

◆ singleton_class_for_eval()

static VALUE singleton_class_for_eval ( VALUE  self)
static

◆ specific_eval()

static VALUE specific_eval ( int  argc,
const VALUE argv,
VALUE  klass,
VALUE  self 
)
static

◆ stack_check()

static void stack_check ( rb_thread_t th)
inlinestatic

◆ uncaught_throw_init()

static VALUE uncaught_throw_init ( int  argc,
const VALUE argv,
VALUE  exc 
)
static

Definition at line 1846 of file vm_eval.c.

References id_tag, id_value, rb_call_super(), rb_check_arity, rb_ivar_set(), and UNLIMITED_ARGUMENTS.

Referenced by Init_vm_eval().

◆ uncaught_throw_tag()

static VALUE uncaught_throw_tag ( VALUE  exc)
static

Definition at line 1863 of file vm_eval.c.

References id_tag, and rb_ivar_get().

Referenced by Init_vm_eval(), and uncaught_throw_to_s().

◆ uncaught_throw_to_s()

static VALUE uncaught_throw_to_s ( VALUE  exc)
static

Definition at line 1889 of file vm_eval.c.

References id_mesg, rb_attr_get(), rb_str_format(), and uncaught_throw_tag().

Referenced by Init_vm_eval().

◆ uncaught_throw_value()

static VALUE uncaught_throw_value ( VALUE  exc)
static

Definition at line 1876 of file vm_eval.c.

References id_value, and rb_ivar_get().

Referenced by Init_vm_eval().

◆ vm_call0()

static VALUE vm_call0 ( rb_thread_t th,
VALUE  recv,
ID  id,
int  argc,
const VALUE argv,
const rb_callable_method_entry_t me 
)
static

◆ vm_call0_body()

static VALUE vm_call0_body ( rb_thread_t th,
struct rb_calling_info calling,
const struct rb_call_info ci,
struct rb_call_cache cc,
const VALUE argv 
)
static

◆ vm_call0_cfunc()

static VALUE vm_call0_cfunc ( rb_thread_t th,
struct rb_calling_info calling,
const struct rb_call_info ci,
struct rb_call_cache cc,
const VALUE argv 
)
static

Definition at line 147 of file vm_eval.c.

References vm_call0_cfunc_with_frame().

Referenced by vm_call0(), and vm_call0_body().

◆ vm_call0_cfunc_with_frame()

static VALUE vm_call0_cfunc_with_frame ( rb_thread_t th,
struct rb_calling_info calling,
const struct rb_call_info ci,
struct rb_call_cache cc,
const VALUE argv 
)
static

◆ vm_call_super()

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

◆ vm_catch_protect()

static VALUE vm_catch_protect ( VALUE  tag,
rb_block_call_func func,
VALUE  data,
int *  stateptr,
rb_thread_t * volatile  th 
)
static

◆ vm_collect_local_variables_in_heap()

static int vm_collect_local_variables_in_heap ( rb_thread_t th,
const VALUE dfp,
const struct local_var_list vars 
)
static

Referenced by rb_f_local_variables().

◆ vm_exec()

static VALUE vm_exec ( rb_thread_t th)
static

◆ vm_set_eval_stack()

static void vm_set_eval_stack ( rb_thread_t th,
const rb_iseq_t iseq,
const rb_cref_t cref,
const struct rb_block base_block 
)
static

Referenced by eval_string_with_cref().

◆ vm_yield()

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

Referenced by rb_yield_0().

◆ vm_yield_lambda_splattable()

static VALUE vm_yield_lambda_splattable ( rb_thread_t th,
VALUE  args 
)
inlinestatic

Referenced by rb_yield_lambda().

◆ vm_yield_with_block()

static VALUE vm_yield_with_block ( rb_thread_t th,
int  argc,
const VALUE argv,
VALUE  block_handler 
)
inlinestatic

Referenced by rb_yield_block().

◆ vm_yield_with_cref()

static VALUE vm_yield_with_cref ( rb_thread_t th,
int  argc,
const VALUE argv,
const rb_cref_t cref,
int  is_lambda 
)
inlinestatic

◆ yield_under()

static VALUE yield_under ( VALUE  under,
VALUE  self,
int  argc,
const VALUE argv 
)
static

Variable Documentation

◆ id_result

ID id_result
static

Definition at line 28 of file vm_eval.c.

Referenced by Init_vm_eval(), and loop_stop().

◆ id_tag

ID id_tag
static

Definition at line 28 of file vm_eval.c.

Referenced by Init_vm_eval(), uncaught_throw_init(), and uncaught_throw_tag().

◆ id_value

ID id_value
static

Definition at line 28 of file vm_eval.c.

Referenced by Init_vm_eval(), uncaught_throw_init(), and uncaught_throw_value().

◆ rb_eUncaughtThrow

VALUE rb_eUncaughtThrow
static

Definition at line 27 of file vm_eval.c.

Referenced by Init_vm_eval(), and rb_throw_obj().