Ruby  2.1.10p492(2016-04-01revision54464)
Macros | Functions
vm_insnhelper.c File Reference
#include "insns.inc"
#include <math.h>
#include "constant.h"
#include "internal.h"
#include "probes.h"
#include "probes_helper.h"

Go to the source code of this file.

Macros

#define INLINE   inline
 
#define USE_IC_FOR_IVAR   1
 
#define CHECK_CMP_NAN(a, b)   /* do nothing */
 
#define SAVE_RESTORE_CI(expr, ci)
 
#define VM_PROFILE   0
 
#define VM_PROFILE_UP(x)
 
#define VM_PROFILE_ATEXIT()
 

Functions

static rb_control_frame_tvm_get_ruby_level_caller_cfp (rb_thread_t *th, rb_control_frame_t *cfp)
 
static void vm_stackoverflow (void)
 
static rb_control_frame_tvm_push_frame (rb_thread_t *th, const rb_iseq_t *iseq, VALUE type, VALUE self, VALUE klass, VALUE specval, const VALUE *pc, VALUE *sp, int local_size, const rb_method_entry_t *me, size_t stack_max)
 
static void vm_pop_frame (rb_thread_t *th)
 
static VALUE rb_arg_error_new (int argc, int min, int max)
 
 NORETURN (static void argument_error(const rb_iseq_t *iseq, int miss_argc, int min_argc, int max_argc))
 
static void argument_error (const rb_iseq_t *iseq, int miss_argc, int min_argc, int max_argc)
 
void rb_error_arity (int argc, int min, int max)
 
static NODElep_svar_place (rb_thread_t *th, VALUE *lep)
 
static VALUE lep_svar_get (rb_thread_t *th, VALUE *lep, rb_num_t key)
 
static void lep_svar_set (rb_thread_t *th, VALUE *lep, rb_num_t key, VALUE val)
 
static VALUE vm_getspecial (rb_thread_t *th, VALUE *lep, rb_num_t key, rb_num_t type)
 
static NODEvm_get_cref0 (const rb_iseq_t *iseq, const VALUE *ep)
 
NODErb_vm_get_cref (const rb_iseq_t *iseq, const VALUE *ep)
 
void rb_vm_rewrite_cref_stack (NODE *node, VALUE old_klass, VALUE new_klass, NODE **new_cref_ptr)
 
static NODEvm_cref_push (rb_thread_t *th, VALUE klass, int noex, rb_block_t *blockptr)
 
static VALUE vm_get_cbase (const rb_iseq_t *iseq, const VALUE *ep)
 
static VALUE vm_get_const_base (const rb_iseq_t *iseq, const VALUE *ep)
 
static void vm_check_if_namespace (VALUE klass)
 
static VALUE vm_get_iclass (rb_control_frame_t *cfp, VALUE klass)
 
static VALUE vm_get_ev_const (rb_thread_t *th, const rb_iseq_t *iseq, VALUE orig_klass, ID id, int is_defined)
 
static VALUE vm_get_cvar_base (NODE *cref, rb_control_frame_t *cfp)
 
static VALUE vm_search_const_defined_class (const VALUE cbase, ID id)
 
static VALUE vm_getivar (VALUE obj, ID id, IC ic, rb_call_info_t *ci, int is_attr)
 
static VALUE vm_setivar (VALUE obj, ID id, VALUE val, IC ic, rb_call_info_t *ci, int is_attr)
 
static VALUE vm_getinstancevariable (VALUE obj, ID id, IC ic)
 
static void vm_setinstancevariable (VALUE obj, ID id, VALUE val, IC ic)
 
static VALUE vm_throw (rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_num_t throw_state, VALUE throwobj)
 
static void vm_expandarray (rb_control_frame_t *cfp, VALUE ary, rb_num_t num, int flag)
 
static VALUE vm_call_general (rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci)
 
static void vm_search_method (rb_call_info_t *ci, VALUE recv)
 
static int check_cfunc (const rb_method_entry_t *me, VALUE(*func)())
 
static VALUE opt_eq_func (VALUE recv, VALUE obj, CALL_INFO ci)
 
VALUE rb_equal_opt (VALUE obj1, VALUE obj2)
 
static VALUE vm_call0 (rb_thread_t *, VALUE, ID, int, const VALUE *, const rb_method_entry_t *, VALUE)
 
static VALUE check_match (VALUE pattern, VALUE target, enum vm_check_match_type type)
 
static VALUE double_cmp_lt (double a, double b)
 
static VALUE double_cmp_le (double a, double b)
 
static VALUE double_cmp_gt (double a, double b)
 
static VALUE double_cmp_ge (double a, double b)
 
static VALUEvm_base_ptr (rb_control_frame_t *cfp)
 
static void vm_caller_setup_args (const rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static int vm_callee_setup_keyword_arg (rb_thread_t *th, const rb_iseq_t *iseq, int argc, int m, VALUE *orig_argv, VALUE *kwd)
 
static int vm_callee_setup_arg_complex (rb_thread_t *th, rb_call_info_t *ci, const rb_iseq_t *iseq, VALUE *orig_argv)
 
static VALUE vm_call_iseq_setup_2 (rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static VALUE vm_call_iseq_setup_normal (rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static VALUE vm_call_iseq_setup_tailcall (rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static void vm_callee_setup_arg (rb_thread_t *th, rb_call_info_t *ci, const rb_iseq_t *iseq, VALUE *argv, int is_lambda)
 
static VALUE vm_call_iseq_setup (rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static VALUE call_cfunc_m2 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_m1 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_0 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_1 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_2 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_3 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_4 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_5 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_6 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_7 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_8 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_9 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_10 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_11 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_12 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_13 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_14 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static VALUE call_cfunc_15 (VALUE(*func)(ANYARGS), VALUE recv, int argc, const VALUE *argv)
 
static const rb_method_cfunc_tvm_method_cfunc_entry (const rb_method_entry_t *me)
 
static VALUE vm_call_cfunc_with_frame (rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci)
 
static VALUE vm_call_cfunc (rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci)
 
static VALUE vm_call_ivar (rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static VALUE vm_call_attrset (rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static VALUE vm_call_bmethod_body (rb_thread_t *th, rb_call_info_t *ci, const VALUE *argv)
 
static VALUE vm_call_bmethod (rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static VALUE vm_call_method (rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static VALUE vm_call_opt_send (rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci)
 
static VALUE vm_call_opt_call (rb_thread_t *th, rb_control_frame_t *cfp, rb_call_info_t *ci)
 
static VALUE vm_call_method_missing (rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci)
 
static VALUE find_refinement (VALUE refinements, VALUE klass)
 
static int rb_method_definition_eq (const rb_method_definition_t *d1, const rb_method_definition_t *d2)
 
static VALUE vm_call_super_method (rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci)
 
static rb_control_frame_tcurrent_method_entry (rb_thread_t *th, rb_control_frame_t *cfp)
 
static VALUE vm_search_normal_superclass (VALUE klass)
 
static void vm_super_outside (void)
 
static int vm_search_superclass (rb_control_frame_t *reg_cfp, rb_iseq_t *iseq, VALUE sigval, rb_call_info_t *ci)
 
static void vm_search_super_method (rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci)
 
static int block_proc_is_lambda (const VALUE procval)
 
static VALUE vm_yield_with_cfunc (rb_thread_t *th, const rb_block_t *block, VALUE self, int argc, const VALUE *argv, const rb_block_t *blockargptr)
 
static int vm_yield_setup_block_args_complex (rb_thread_t *th, const rb_iseq_t *iseq, int argc, VALUE *argv)
 
static int vm_yield_setup_block_args (rb_thread_t *th, const rb_iseq_t *iseq, int orig_argc, VALUE *argv, const rb_block_t *blockptr)
 
static int vm_yield_setup_args (rb_thread_t *const th, const rb_iseq_t *iseq, int argc, VALUE *argv, const rb_block_t *blockptr, int lambda)
 
static VALUE vm_invoke_block (rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci)
 
static VALUE vm_make_proc_with_iseq (rb_iseq_t *blockiseq)
 
static VALUE vm_once_exec (rb_iseq_t *iseq)
 
static VALUE vm_once_clear (VALUE data)
 

Macro Definition Documentation

#define CHECK_CMP_NAN (   a,
  b 
)    /* do nothing */

Definition at line 967 of file vm_insnhelper.c.

Referenced by double_cmp_ge(), double_cmp_gt(), double_cmp_le(), and double_cmp_lt().

#define INLINE   inline

Definition at line 22 of file vm_insnhelper.c.

#define SAVE_RESTORE_CI (   expr,
  ci 
)
Value:
do { \
int saved_argc = (ci)->argc; rb_block_t *saved_blockptr = (ci)->blockptr; /* save */ \
(ci)->argc = saved_argc; (ci)->blockptr = saved_blockptr; /* restore */ \
} while (0)
VP_EXPORT int
Definition: bigdecimal.c:5172
int argc
Definition: tcltklib.c:1968
expr expr keyword_or expr
Definition: ripper.y:1292

Referenced by vm_caller_setup_args().

#define USE_IC_FOR_IVAR   1

Definition at line 502 of file vm_insnhelper.c.

#define VM_PROFILE   0

Definition at line 1438 of file vm_insnhelper.c.

#define VM_PROFILE_ATEXIT ( )

Definition at line 1456 of file vm_insnhelper.c.

Referenced by Init_VM().

#define VM_PROFILE_UP (   x)

Definition at line 1455 of file vm_insnhelper.c.

Referenced by vm_call0_cfunc_with_frame(), and vm_call_cfunc_with_frame().

Function Documentation

static void argument_error ( const rb_iseq_t iseq,
int  miss_argc,
int  min_argc,
int  max_argc 
)
static
static int block_proc_is_lambda ( const VALUE  procval)
inlinestatic

Definition at line 2088 of file vm_insnhelper.c.

References GetProcPtr, rb_proc_t::is_lambda, and proc.

Referenced by invoke_block_from_c(), vm_invoke_block(), and vm_yield_with_cfunc().

static VALUE call_cfunc_0 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1342 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_1 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1348 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_10 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1402 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_11 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1408 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_12 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1414 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_13 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1420 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_14 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1426 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_15 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1432 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_2 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1354 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_3 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1360 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_4 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1366 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_5 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1372 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_6 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1378 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_7 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1384 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_8 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1390 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_9 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1396 of file vm_insnhelper.c.

References func.

static VALUE call_cfunc_m1 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1336 of file vm_insnhelper.c.

References argc, argv, and func.

static VALUE call_cfunc_m2 ( VALUE(*)(ANYARGS func,
VALUE  recv,
int  argc,
const VALUE argv 
)
static

Definition at line 1330 of file vm_insnhelper.c.

References func, and rb_ary_new4.

static int check_cfunc ( const rb_method_entry_t me,
VALUE(*)()  func 
)
inlinestatic
static VALUE check_match ( VALUE  pattern,
VALUE  target,
enum vm_check_match_type  type 
)
static
static rb_control_frame_t* current_method_entry ( rb_thread_t th,
rb_control_frame_t cfp 
)
static
static VALUE double_cmp_ge ( double  a,
double  b 
)
inlinestatic

Definition at line 992 of file vm_insnhelper.c.

References CHECK_CMP_NAN, Qfalse, and Qtrue.

static VALUE double_cmp_gt ( double  a,
double  b 
)
inlinestatic

Definition at line 985 of file vm_insnhelper.c.

References CHECK_CMP_NAN, Qfalse, and Qtrue.

static VALUE double_cmp_le ( double  a,
double  b 
)
inlinestatic

Definition at line 978 of file vm_insnhelper.c.

References CHECK_CMP_NAN, Qfalse, and Qtrue.

static VALUE double_cmp_lt ( double  a,
double  b 
)
inlinestatic

Definition at line 971 of file vm_insnhelper.c.

References CHECK_CMP_NAN, Qfalse, and Qtrue.

static VALUE find_refinement ( VALUE  refinements,
VALUE  klass 
)
inlinestatic

Definition at line 1733 of file vm_insnhelper.c.

References NIL_P(), Qnil, and rb_hash_lookup.

Referenced by rb_resolve_refined_method(), and vm_call_method().

static VALUE lep_svar_get ( rb_thread_t th,
VALUE lep,
rb_num_t  key 
)
static
static NODE* lep_svar_place ( rb_thread_t th,
VALUE lep 
)
inlinestatic

Definition at line 157 of file vm_insnhelper.c.

References NEW_IF, NIL_P(), Qnil, rb_thread_struct::root_lep, and rb_thread_struct::root_svar.

Referenced by lep_svar_get(), and lep_svar_set().

static void lep_svar_set ( rb_thread_t th,
VALUE lep,
rb_num_t  key,
VALUE  val 
)
static
NORETURN ( static void   argument_errorconst rb_iseq_t *iseq, int miss_argc, int min_argc, int max_argc)
static VALUE opt_eq_func ( VALUE  recv,
VALUE  obj,
CALL_INFO  ci 
)
inlinestatic
static VALUE rb_arg_error_new ( int  argc,
int  min,
int  max 
)
inlinestatic

Definition at line 110 of file vm_insnhelper.c.

References rb_eArgError, rb_exc_new3, rb_sprintf(), and UNLIMITED_ARGUMENTS.

Referenced by argument_error(), and rb_error_arity().

VALUE rb_equal_opt ( VALUE  obj1,
VALUE  obj2 
)
void rb_error_arity ( int  argc,
int  min,
int  max 
)
static int rb_method_definition_eq ( const rb_method_definition_t d1,
const rb_method_definition_t d2 
)
static

Referenced by vm_call_method().

NODE* rb_vm_get_cref ( const rb_iseq_t iseq,
const VALUE ep 
)
void rb_vm_rewrite_cref_stack ( NODE node,
VALUE  old_klass,
VALUE  new_klass,
NODE **  new_cref_ptr 
)

Definition at line 282 of file vm_insnhelper.c.

References COPY_CREF_OMOD, NEW_CREF, NULL, and RB_OBJ_WRITE.

Referenced by clone_method().

static VALUE* vm_base_ptr ( rb_control_frame_t cfp)
static
static VALUE vm_call0 ( rb_thread_t ,
VALUE  ,
ID  ,
int  ,
const VALUE ,
const rb_method_entry_t ,
VALUE   
)
static

Referenced by check_match().

static VALUE vm_call_attrset ( rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
static
static VALUE vm_call_bmethod ( rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
static
static VALUE vm_call_bmethod_body ( rb_thread_t th,
rb_call_info_t ci,
const VALUE argv 
)
inlinestatic
static VALUE vm_call_cfunc ( rb_thread_t th,
rb_control_frame_t reg_cfp,
rb_call_info_t ci 
)
static

Definition at line 1598 of file vm_insnhelper.c.

References vm_call_cfunc_with_frame().

Referenced by vm_call_method().

static VALUE vm_call_cfunc_with_frame ( rb_thread_t th,
rb_control_frame_t reg_cfp,
rb_call_info_t ci 
)
static
static VALUE vm_call_general ( rb_thread_t th,
rb_control_frame_t reg_cfp,
rb_call_info_t ci 
)
static

Definition at line 1945 of file vm_insnhelper.c.

References vm_call_method().

Referenced by vm_search_method().

static VALUE vm_call_iseq_setup ( rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
static
static VALUE vm_call_iseq_setup_2 ( rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
static
static VALUE vm_call_iseq_setup_normal ( rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
inlinestatic
static VALUE vm_call_iseq_setup_tailcall ( rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
inlinestatic
static VALUE vm_call_ivar ( rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
static
static VALUE vm_call_method ( rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
inlinestatic

Definition at line 1769 of file vm_insnhelper.c.

References rb_call_info_struct::argc, rb_call_info_struct::aux, rb_method_definition_struct::body, rb_call_info_struct::call, CI_SET_FASTPATH, current_method_entry(), rb_method_entry_struct::def, rb_call_info_struct::defined_class, rb_control_frame_struct::ep, find_refinement(), rb_method_entry_struct::flag, rb_call_info_struct::flag, rb_call_info_struct::index, rb_control_frame_struct::iseq, rb_method_entry_struct::klass, klass, rb_call_info_struct::me, rb_control_frame_struct::me, rb_call_info_struct::mid, rb_call_info_struct::missing_reason, NIL_P(), NOEX_MASK, NOEX_PRIVATE, NOEX_PROTECTED, NOEX_SAFE, NOEX_SUPER, NOEX_VCALL, rb_method_definition_struct::optimize_type, rb_method_definition_struct::orig_me, Qnil, rb_bug(), rb_check_arity, rb_eSecurityError, rb_id2name(), rb_method_definition_eq(), rb_method_entry(), rb_obj_is_kind_of(), rb_raise(), rb_raise_method_missing(), rb_vm_get_cref(), RCLASS_ORIGIN, RCLASS_SUPER, rb_call_info_struct::recv, rb_thread_struct::safe_level, rb_control_frame_struct::self, STACK_ADDR_FROM_TOP, stat, rb_method_definition_struct::type, UNDEFINED_METHOD_ENTRY_P, VM_CALL_ARGS_SPLAT, vm_call_attrset(), vm_call_bmethod(), vm_call_cfunc(), VM_CALL_FCALL, vm_call_iseq_setup(), vm_call_ivar(), vm_call_method_missing(), vm_call_opt_call(), VM_CALL_OPT_SEND, vm_call_opt_send(), VM_CALL_SUPER, vm_call_super_method(), VM_CALL_VCALL, 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_call_general(), vm_call_method_missing(), vm_call_opt_send(), and vm_call_super_method().

static VALUE vm_call_method_missing ( rb_thread_t th,
rb_control_frame_t reg_cfp,
rb_call_info_t ci 
)
static
static VALUE vm_call_opt_call ( rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
static
static VALUE vm_call_opt_send ( rb_thread_t th,
rb_control_frame_t reg_cfp,
rb_call_info_t ci 
)
static
static VALUE vm_call_super_method ( rb_thread_t th,
rb_control_frame_t reg_cfp,
rb_call_info_t ci 
)
static

Definition at line 1951 of file vm_insnhelper.c.

References vm_call_method().

Referenced by vm_call_method(), and vm_search_super_method().

static void vm_callee_setup_arg ( rb_thread_t th,
rb_call_info_t ci,
const rb_iseq_t iseq,
VALUE argv,
int  is_lambda 
)
inlinestatic
static int vm_callee_setup_arg_complex ( rb_thread_t th,
rb_call_info_t ci,
const rb_iseq_t iseq,
VALUE orig_argv 
)
inlinestatic
static int vm_callee_setup_keyword_arg ( rb_thread_t th,
const rb_iseq_t iseq,
int  argc,
int  m,
VALUE orig_argv,
VALUE kwd 
)
inlinestatic
static void vm_caller_setup_args ( const rb_thread_t th,
rb_control_frame_t cfp,
rb_call_info_t ci 
)
static
static void vm_check_if_namespace ( VALUE  klass)
inlinestatic

Definition at line 359 of file vm_insnhelper.c.

References rb_eTypeError, rb_inspect(), rb_raise(), RB_TYPE_P, str, StringValuePtr, T_CLASS, and T_MODULE.

Referenced by vm_get_ev_const().

static NODE* vm_cref_push ( rb_thread_t th,
VALUE  klass,
int  noex,
rb_block_t blockptr 
)
static
static void vm_expandarray ( rb_control_frame_t cfp,
VALUE  ary,
rb_num_t  num,
int  flag 
)
inlinestatic
static VALUE vm_get_cbase ( const rb_iseq_t iseq,
const VALUE ep 
)
inlinestatic

Definition at line 326 of file vm_insnhelper.c.

References klass, Qundef, and rb_vm_get_cref().

Referenced by rb_vm_cbase().

static VALUE vm_get_const_base ( const rb_iseq_t iseq,
const VALUE ep 
)
inlinestatic

Definition at line 342 of file vm_insnhelper.c.

References RNode::flags, klass, NODE_FL_CREF_PUSHED_BY_EVAL, Qundef, and rb_vm_get_cref().

static NODE* vm_get_cref0 ( const rb_iseq_t iseq,
const VALUE ep 
)
static
static VALUE vm_get_cvar_base ( NODE cref,
rb_control_frame_t cfp 
)
inlinestatic
static VALUE vm_get_ev_const ( rb_thread_t th,
const rb_iseq_t iseq,
VALUE  orig_klass,
ID  id,
int  is_defined 
)
inlinestatic
static VALUE vm_get_iclass ( rb_control_frame_t cfp,
VALUE  klass 
)
inlinestatic
static rb_control_frame_t* vm_get_ruby_level_caller_cfp ( rb_thread_t th,
rb_control_frame_t cfp 
)
static

Referenced by vm_cref_push().

static VALUE vm_getinstancevariable ( VALUE  obj,
ID  id,
IC  ic 
)
static

Definition at line 599 of file vm_insnhelper.c.

References vm_getivar().

static VALUE vm_getivar ( VALUE  obj,
ID  id,
IC  ic,
rb_call_info_t ci,
int  is_attr 
)
inlinestatic
static VALUE vm_getspecial ( rb_thread_t th,
VALUE lep,
rb_num_t  key,
rb_num_t  type 
)
inlinestatic
static VALUE vm_invoke_block ( rb_thread_t th,
rb_control_frame_t reg_cfp,
rb_call_info_t ci 
)
static
static VALUE vm_make_proc_with_iseq ( rb_iseq_t blockiseq)
static
static const rb_method_cfunc_t* vm_method_cfunc_entry ( const rb_method_entry_t me)
inlinestatic
static VALUE vm_once_clear ( VALUE  data)
static
static VALUE vm_once_exec ( rb_iseq_t iseq)
static

Definition at line 2411 of file vm_insnhelper.c.

References proc, Qnil, rb_proc_call_with_block(), and vm_make_proc_with_iseq().

static void vm_pop_frame ( rb_thread_t th)
inlinestatic
static rb_control_frame_t* vm_push_frame ( rb_thread_t th,
const rb_iseq_t iseq,
VALUE  type,
VALUE  self,
VALUE  klass,
VALUE  specval,
const VALUE pc,
VALUE sp,
int  local_size,
const rb_method_entry_t me,
size_t  stack_max 
)
inlinestatic
static VALUE vm_search_const_defined_class ( const VALUE  cbase,
ID  id 
)
static

Definition at line 488 of file vm_insnhelper.c.

References rb_cObject, rb_const_defined_at(), RCLASS_SUPER, and tmp.

static void vm_search_method ( rb_call_info_t ci,
VALUE  recv 
)
static
static VALUE vm_search_normal_superclass ( VALUE  klass)
inlinestatic
static void vm_search_super_method ( rb_thread_t th,
rb_control_frame_t reg_cfp,
rb_call_info_t ci 
)
static
static int vm_search_superclass ( rb_control_frame_t reg_cfp,
rb_iseq_t iseq,
VALUE  sigval,
rb_call_info_t ci 
)
static
static void vm_setinstancevariable ( VALUE  obj,
ID  id,
VALUE  val,
IC  ic 
)
static

Definition at line 605 of file vm_insnhelper.c.

References vm_setivar().

static VALUE vm_setivar ( VALUE  obj,
ID  id,
VALUE  val,
IC  ic,
rb_call_info_t ci,
int  is_attr 
)
inlinestatic
static void vm_stackoverflow ( void  )
static

Definition at line 28 of file vm_insnhelper.c.

References rb_exc_raise(), and sysstack_error.

static void vm_super_outside ( void  )
static

Definition at line 1970 of file vm_insnhelper.c.

References rb_eNoMethodError, and rb_raise().

Referenced by vm_search_super_method().

static VALUE vm_throw ( rb_thread_t th,
rb_control_frame_t reg_cfp,
rb_num_t  throw_state,
VALUE  throwobj 
)
static
static int vm_yield_setup_args ( rb_thread_t *const  th,
const rb_iseq_t iseq,
int  argc,
VALUE argv,
const rb_block_t blockptr,
int  lambda 
)
inlinestatic
static int vm_yield_setup_block_args ( rb_thread_t th,
const rb_iseq_t iseq,
int  orig_argc,
VALUE argv,
const rb_block_t blockptr 
)
inlinestatic
static int vm_yield_setup_block_args_complex ( rb_thread_t th,
const rb_iseq_t iseq,
int  argc,
VALUE argv 
)
inlinestatic
static VALUE vm_yield_with_cfunc ( rb_thread_t th,
const rb_block_t block,
VALUE  self,
int  argc,
const VALUE argv,
const rb_block_t blockargptr 
)
inlinestatic