Ruby  2.7.2p137(2020-10-01revision5445e0435260b449decf2ac16f9d09bae3cafe72)
Macros | Enumerations | Functions | Variables
eval.c File Reference
#include "internal.h"
#include "eval_intern.h"
#include "iseq.h"
#include "gc.h"
#include "ruby/vm.h"
#include "vm_core.h"
#include "mjit.h"
#include "probes.h"
#include "probes_helper.h"
#include "eval_error.c"
#include "eval_jump.c"

Go to the source code of this file.

Macros

#define id_cause   ruby_static_id_cause
 
#define exception_error   GET_VM()->special_exceptions[ruby_error_reenter]
 
#define CLASS_OR_MODULE_P(obj)
 
#define get_ec_errinfo(ec)   rb_ec_get_errinfo(ec)
 

Enumerations

enum  {
  DBL_BIGDIG = ((DBL_MANT_DIG + BITSPERDIG) / BITSPERDIG), COROUTINE_REGISTERS = 6, COROUTINE_REGISTERS = 8, COROUTINE_REGISTERS = 0xb0 / 8,
  COROUTINE_REGISTERS, COROUTINE_REGISTERS = 4, COROUTINE_REGISTERS = 8, COROUTINE_XMM_REGISTERS = 1+10*2,
  COROUTINE_REGISTERS = 4, NAME_ERR_MESG__MESG, NAME_ERR_MESG__RECV, NAME_ERR_MESG__NAME,
  NAME_ERR_MESG_COUNT, raise_opt_cause, raise_max_opt, RAISED_EXCEPTION = 1,
  RAISED_STACKOVERFLOW = 2, RAISED_NOMEMORY = 4, DECIMAL_SIZE_OF_LONG = DECIMAL_SIZE_OF_BITS(CHAR_BIT*sizeof(long)), JISX0301_DATE_SIZE = DECIMAL_SIZE_OF_LONG+8,
  FLAG_RETURNS_128BITS = 1 << (31-31), FLAG_RETURNS_NOTHING = 1 << (31-30), FLAG_RETURNS_FP = 1 << (31-29), FLAG_RETURNS_64BITS = 1 << (31-28),
  FLAG_RETURNS_STRUCT = 1 << (31-27), FLAG_ARG_NEEDS_COPY = 1 << (31- 7), FLAG_FP_ARGUMENTS = 1 << (31- 6), FLAG_4_GPR_ARGUMENTS = 1 << (31- 5),
  FLAG_RETVAL_REFERENCE = 1 << (31- 4), FLAG_RETURNS_SMST = 1 << (31-31), FLAG_RETURNS_NOTHING = 1 << (31-30), FLAG_RETURNS_FP = 1 << (31-29),
  FLAG_RETURNS_64BITS = 1 << (31-28), FLAG_RETURNS_128BITS = 1 << (31-27), FLAG_COMPAT = 1 << (31- 8), FLAG_ARG_NEEDS_COPY = 1 << (31- 7),
  FLAG_ARG_NEEDS_PSAVE = FLAG_ARG_NEEDS_COPY, FLAG_FP_ARGUMENTS = 1 << (31- 6), FLAG_4_GPR_ARGUMENTS = 1 << (31- 5), FLAG_RETVAL_REFERENCE = 1 << (31- 4),
  JSON_object_start = 1, ossl_asn1_info_size = (sizeof(ossl_asn1_info)/sizeof(ossl_asn1_info[0])), tIGNORED_NL = tLAST_TOKEN + 1, tCOMMENT,
  tEMBDOC_BEG, tEMBDOC, tEMBDOC_END, tHEREDOC_BEG,
  tHEREDOC_END, k__END__, ORDINAL_PARAM = -1, NO_PARAM = 0,
  NUMPARAM_MAX = 9, BITS_SIZE = sizeof(bits_t), BITS_BITLENGTH = ( BITS_SIZE * CHAR_BIT ), RSTRUCT_EMBED_LEN_MAX = RVALUE_EMBED_LEN_MAX,
  RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1), RSTRUCT_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+1), RSTRUCT_TRANSIENT_FLAG = FL_USER3, RSTRUCT_ENUM_END,
  bom_prefix_len = (int)sizeof(bom_prefix) - 1, MT_MAX_STATE = N, PCH_NOT_READY, PCH_FAILED,
  PCH_SUCCESS, ORDINAL_PARAM = -1, NO_PARAM = 0, NUMPARAM_MAX = 9,
  COMPILATION_FEATURES, DEFAULT_FEATURES, LONGEST_SIGNAME = 7, LEFT,
  CHCASE, LOWER, UPPER, AREF_HASH_UNIT = 5,
  AREF_HASH_THRESHOLD = 10, TMOPT_IN, TMOPT_MAX_, CALLER_BINDING_SELF,
  CALLER_BINDING_CLASS, CALLER_BINDING_BINDING, CALLER_BINDING_ISEQ, CALLER_BINDING_CFP,
  VM_FRAME_MAGIC_METHOD = 0x11110001, VM_FRAME_MAGIC_BLOCK = 0x22220001, VM_FRAME_MAGIC_CLASS = 0x33330001, VM_FRAME_MAGIC_TOP = 0x44440001,
  VM_FRAME_MAGIC_CFUNC = 0x55550001, VM_FRAME_MAGIC_IFUNC = 0x66660001, VM_FRAME_MAGIC_EVAL = 0x77770001, VM_FRAME_MAGIC_RESCUE = 0x78880001,
  VM_FRAME_MAGIC_DUMMY = 0x79990001, VM_FRAME_MAGIC_MASK = 0x7fff0001, VM_FRAME_FLAG_PASSED = 0x0010, VM_FRAME_FLAG_FINISH = 0x0020,
  VM_FRAME_FLAG_BMETHOD = 0x0040, VM_FRAME_FLAG_CFRAME = 0x0080, VM_FRAME_FLAG_LAMBDA = 0x0100, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM = 0x0200,
  VM_FRAME_FLAG_CFRAME_KW = 0x0400, VM_FRAME_FLAG_CFRAME_EMPTY_KW = 0x0800, VM_ENV_FLAG_LOCAL = 0x0002, VM_ENV_FLAG_ESCAPED = 0x0004,
  VM_ENV_FLAG_WB_REQUIRED = 0x0008, MINIMUM_REPARSE_BUFFER_PATH_LEN = 4, SI_USER = 0, SI_ASYNCIO = 2,
  SI_MESGQ, SI_TIMER, SI_QUEUE, SI_KERNEL,
  ILL_ILLOPC = 7, ILL_ILLOPN, ILL_ILLADR, ILL_ILLTRP,
  ILL_PRVOPC, ILL_PRVREG, ILL_COPROC, ILL_BADSTK,
  FPE_INTDIV = 15, FPE_INTOVF, FPE_FLTDIV, FPE_FLTOVF,
  FPE_FLTUND, FPE_FLTRES, FPE_FLTINV, FPE_FLTSUB,
  SEGV_MAPERR = 23, SEGV_ACCERR, BUS_ADRALN = 25, BUS_ADRERR,
  BUS_OBJERR, CLD_EXITED = 28, CLD_KILLED, CLD_DUMPED,
  CLD_TRAPPED, CLD_STOPPED, CLD_CONTINUED
}
 

Functions

 NORETURN (void rb_raise_jump(VALUE, VALUE))
 
void rb_ec_clear_current_thread_trace_func (const rb_execution_context_t *ec)
 
void rb_ec_clear_all_trace_func (const rb_execution_context_t *ec)
 
int ruby_setup (void)
 Initializes the VM and builtin libraries. More...
 
void ruby_init (void)
 Calls ruby_setup() and check error. More...
 
voidruby_options (int argc, char **argv)
 Processes command line arguments and compiles the Ruby source to execute. More...
 
void ruby_finalize (void)
 Runs the VM finalization processes. More...
 
int ruby_cleanup (volatile int ex)
 Destructs the VM. More...
 
void ruby_stop (int ex)
 Calls ruby_cleanup() and exits the process. More...
 
int ruby_executable_node (void *n, int *status)
 Checks the return value of ruby_options(). More...
 
int ruby_run_node (void *n)
 Runs the given compiled source and exits this process. More...
 
int ruby_exec_node (void *n)
 Runs the given compiled source. More...
 
void rb_class_modify_check (VALUE klass)
 Asserts that klass is not a frozen class. More...
 
 NORETURN (static void rb_longjmp(rb_execution_context_t *, int, volatile VALUE, VALUE))
 
void rb_exc_raise (VALUE mesg)
 Raises an exception in the current thread. More...
 
void rb_exc_fatal (VALUE mesg)
 Raises a fatal error in the current thread. More...
 
void rb_interrupt (void)
 Raises an Interrupt exception. More...
 
VALUE rb_f_raise (int argc, VALUE *argv)
 
VALUE rb_make_exception (int argc, const VALUE *argv)
 Make an Exception object from the list of arguments in a manner similar to Kernel#raise. More...
 
void rb_jump_tag (int tag)
 Continues the exception caught by rb_protect() and rb_eval_string_protect(). More...
 
int rb_block_given_p (void)
 Determines if the current method is given a block. More...
 
int rb_vm_cframe_keyword_p (const rb_control_frame_t *cfp)
 
int rb_keyword_given_p (void)
 
int rb_vm_cframe_empty_keyword_p (const rb_control_frame_t *cfp)
 
int rb_empty_keyword_given_p (void)
 
void rb_need_block (void)
 Declares that the current method needs a block. More...
 
VALUE rb_rescue2 (VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*r_proc)(VALUE, VALUE), VALUE data2,...)
 An equivalent of rescue clause. More...
 
VALUE rb_vrescue2 (VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*r_proc)(VALUE, VALUE), VALUE data2, va_list args)
 An equivalent of rescue clause. More...
 
VALUE rb_rescue (VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*r_proc)(VALUE, VALUE), VALUE data2)
 An equivalent of rescue clause. More...
 
VALUE rb_protect (VALUE(*proc)(VALUE), VALUE data, int *pstate)
 Protects a function call from potential global escapes from the function. More...
 
VALUE rb_ensure (VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*e_proc)(VALUE), VALUE data2)
 An equivalent to ensure clause. More...
 
ID rb_frame_this_func (void)
 The original name of the current method. More...
 
ID rb_frame_callee (void)
 The name of the current method. More...
 
void rb_obj_call_init (VALUE obj, int argc, const VALUE *argv)
 Calls #initialize method of obj with the given arguments. More...
 
void rb_obj_call_init_kw (VALUE obj, int argc, const VALUE *argv, int kw_splat)
 
void rb_extend_object (VALUE obj, VALUE module)
 Extend the object with the module. More...
 
VALUE rb_ec_get_errinfo (const rb_execution_context_t *ec)
 
VALUE rb_errinfo (void)
 The current exception in the current thread. More...
 
void rb_set_errinfo (VALUE err)
 Sets the current exception ($!) to the given value. More...
 
void Init_eval (void)
 

Variables

VALUE rb_eLocalJumpError
 
VALUE rb_eSysStackError
 
ID ruby_static_id_signo
 
ID ruby_static_id_status
 
ID ruby_static_id_cause
 
VALUE rb_eThreadError
 

Macro Definition Documentation

◆ CLASS_OR_MODULE_P

#define CLASS_OR_MODULE_P (   obj)
Value:

Definition at line 46 of file eval.c.

◆ exception_error

#define exception_error   GET_VM()->special_exceptions[ruby_error_reenter]

Definition at line 41 of file eval.c.

◆ get_ec_errinfo

#define get_ec_errinfo (   ec)    rb_ec_get_errinfo(ec)

Definition at line 481 of file eval.c.

◆ id_cause

#define id_cause   ruby_static_id_cause

Definition at line 39 of file eval.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
DBL_BIGDIG 
COROUTINE_REGISTERS 
COROUTINE_REGISTERS 
COROUTINE_REGISTERS 
COROUTINE_REGISTERS 
COROUTINE_REGISTERS 
COROUTINE_REGISTERS 
COROUTINE_XMM_REGISTERS 
COROUTINE_REGISTERS 
NAME_ERR_MESG__MESG 
NAME_ERR_MESG__RECV 
NAME_ERR_MESG__NAME 
NAME_ERR_MESG_COUNT 
raise_opt_cause 
raise_max_opt 
RAISED_EXCEPTION 
RAISED_STACKOVERFLOW 
RAISED_NOMEMORY 
DECIMAL_SIZE_OF_LONG 
JISX0301_DATE_SIZE 
FLAG_RETURNS_128BITS 
FLAG_RETURNS_NOTHING 
FLAG_RETURNS_FP 
FLAG_RETURNS_64BITS 
FLAG_RETURNS_STRUCT 
FLAG_ARG_NEEDS_COPY 
FLAG_FP_ARGUMENTS 
FLAG_4_GPR_ARGUMENTS 
FLAG_RETVAL_REFERENCE 
FLAG_RETURNS_SMST 
FLAG_RETURNS_NOTHING 
FLAG_RETURNS_FP 
FLAG_RETURNS_64BITS 
FLAG_RETURNS_128BITS 
FLAG_COMPAT 
FLAG_ARG_NEEDS_COPY 
FLAG_ARG_NEEDS_PSAVE 
FLAG_FP_ARGUMENTS 
FLAG_4_GPR_ARGUMENTS 
FLAG_RETVAL_REFERENCE 
JSON_object_start 
ossl_asn1_info_size 
tIGNORED_NL 
tCOMMENT 
tEMBDOC_BEG 
tEMBDOC 
tEMBDOC_END 
tHEREDOC_BEG 
tHEREDOC_END 
k__END__ 
ORDINAL_PARAM 
NO_PARAM 
NUMPARAM_MAX 
BITS_SIZE 
BITS_BITLENGTH 
RSTRUCT_EMBED_LEN_MAX 
RSTRUCT_EMBED_LEN_MASK 
RSTRUCT_EMBED_LEN_SHIFT 
RSTRUCT_TRANSIENT_FLAG 
RSTRUCT_ENUM_END 
bom_prefix_len 
MT_MAX_STATE 
PCH_NOT_READY 
PCH_FAILED 
PCH_SUCCESS 
ORDINAL_PARAM 
NO_PARAM 
NUMPARAM_MAX 
COMPILATION_FEATURES 
DEFAULT_FEATURES 
LONGEST_SIGNAME 
LEFT 
CHCASE 
LOWER 
UPPER 
AREF_HASH_UNIT 
AREF_HASH_THRESHOLD 
TMOPT_IN 
TMOPT_MAX_ 
CALLER_BINDING_SELF 
CALLER_BINDING_CLASS 
CALLER_BINDING_BINDING 
CALLER_BINDING_ISEQ 
CALLER_BINDING_CFP 
VM_FRAME_MAGIC_METHOD 
VM_FRAME_MAGIC_BLOCK 
VM_FRAME_MAGIC_CLASS 
VM_FRAME_MAGIC_TOP 
VM_FRAME_MAGIC_CFUNC 
VM_FRAME_MAGIC_IFUNC 
VM_FRAME_MAGIC_EVAL 
VM_FRAME_MAGIC_RESCUE 
VM_FRAME_MAGIC_DUMMY 
VM_FRAME_MAGIC_MASK 
VM_FRAME_FLAG_PASSED 
VM_FRAME_FLAG_FINISH 
VM_FRAME_FLAG_BMETHOD 
VM_FRAME_FLAG_CFRAME 
VM_FRAME_FLAG_LAMBDA 
VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM 
VM_FRAME_FLAG_CFRAME_KW 
VM_FRAME_FLAG_CFRAME_EMPTY_KW 
VM_ENV_FLAG_LOCAL 
VM_ENV_FLAG_ESCAPED 
VM_ENV_FLAG_WB_REQUIRED 
MINIMUM_REPARSE_BUFFER_PATH_LEN 
SI_USER 
SI_ASYNCIO 
SI_MESGQ 
SI_TIMER 
SI_QUEUE 
SI_KERNEL 
ILL_ILLOPC 
ILL_ILLOPN 
ILL_ILLADR 
ILL_ILLTRP 
ILL_PRVOPC 
ILL_PRVREG 
ILL_COPROC 
ILL_BADSTK 
FPE_INTDIV 
FPE_INTOVF 
FPE_FLTDIV 
FPE_FLTOVF 
FPE_FLTUND 
FPE_FLTRES 
FPE_FLTINV 
FPE_FLTSUB 
SEGV_MAPERR 
SEGV_ACCERR 
BUS_ADRALN 
BUS_ADRERR 
BUS_OBJERR 
CLD_EXITED 
CLD_KILLED 
CLD_DUMPED 
CLD_TRAPPED 
CLD_STOPPED 
CLD_CONTINUED 

Definition at line 702 of file eval.c.

Function Documentation

◆ Init_eval()

void Init_eval ( void  )

Definition at line 2053 of file eval.c.

References ruby::backward::cxxanyargs::rb_define_virtual_variable().

◆ NORETURN() [1/2]

NORETURN ( static void   rb_longjmprb_execution_context_t *, int, volatile VALUE, VALUE)

◆ NORETURN() [2/2]

NORETURN ( void   rb_raise_jumpVALUE, VALUE)

◆ rb_ec_clear_all_trace_func()

void rb_ec_clear_all_trace_func ( const rb_execution_context_t ec)

Definition at line 280 of file vm_trace.c.

◆ rb_ec_clear_current_thread_trace_func()

void rb_ec_clear_current_thread_trace_func ( const rb_execution_context_t ec)

Definition at line 274 of file vm_trace.c.

Referenced by ruby_options().

◆ rb_ec_get_errinfo()

VALUE rb_ec_get_errinfo ( const rb_execution_context_t ec)

Definition at line 1852 of file eval.c.

References ptr.

Referenced by rb_f_abort().

◆ rb_f_raise()

VALUE rb_f_raise ( int  argc,
VALUE argv 
)

Definition at line 727 of file eval.c.

References argc, err, raise_max_opt, and raise_opt_cause.

◆ rb_obj_call_init_kw()

void rb_obj_call_init_kw ( VALUE  obj,
int  argc,
const VALUE argv,
int  kw_splat 
)

Definition at line 1688 of file eval.c.

References argc, argv, idInitialize, obj, PASS_PASSED_BLOCK_HANDLER, and rb_funcallv_kw().

◆ rb_vm_cframe_empty_keyword_p()

int rb_vm_cframe_empty_keyword_p ( const rb_control_frame_t cfp)

Definition at line 109 of file vm.c.

Referenced by rb_empty_keyword_given_p().

◆ rb_vm_cframe_keyword_p()

int rb_vm_cframe_keyword_p ( const rb_control_frame_t cfp)

Definition at line 102 of file vm.c.

Referenced by rb_keyword_given_p().

◆ ruby_stop()

void ruby_stop ( int  ex)

Calls ruby_cleanup() and exits the process.

Definition at line 288 of file eval.c.

References exit(), and ruby_cleanup().

Referenced by rb_exit().

Variable Documentation

◆ rb_eLocalJumpError

VALUE rb_eLocalJumpError

Definition at line 34 of file eval.c.

◆ rb_eSysStackError

VALUE rb_eSysStackError

Definition at line 35 of file eval.c.

◆ rb_eThreadError

VALUE rb_eThreadError

Definition at line 924 of file eval.c.

Referenced by rb_thread_stop(), and rb_thread_wakeup().

◆ ruby_static_id_signo

ID ruby_static_id_signo

Definition at line 37 of file eval.c.

◆ ruby_static_id_status

ID ruby_static_id_status

Definition at line 37 of file eval.c.

SPECIAL_CONST_P
#define SPECIAL_CONST_P(x)
Definition: ruby.h:1313
T_CLASS
#define T_CLASS
Definition: ruby.h:524
T_MODULE
#define T_MODULE
Definition: ruby.h:526
obj
const VALUE VALUE obj
Definition: rb_mjit_min_header-2.7.2.h:5738
BUILTIN_TYPE
#define BUILTIN_TYPE(x)
Definition: ruby.h:551