Ruby  2.4.2p198(2017-09-14revision59899)
Macros | Enumerations | Functions
eval_intern.h File Reference
#include "ruby/ruby.h"
#include "vm_core.h"
#include <stdio.h>
#include <setjmp.h>
#include <sys/types.h>
#include <signal.h>
#include <errno.h>
#include <sys/stat.h>
Include dependency graph for eval_intern.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define PASS_PASSED_BLOCK_HANDLER_TH(th)   pass_passed_block_handler(th)
 
#define PASS_PASSED_BLOCK_HANDLER()   pass_passed_block_handler(GET_THREAD())
 
#define EXIT_SUCCESS   0
 
#define EXIT_FAILURE   1
 
#define ruby_setjmp(env)   RUBY_SETJMP(env)
 
#define ruby_longjmp(env, val)   RUBY_LONGJMP((env),(val))
 
#define SAVE_ROOT_JMPBUF_BEFORE_STMT
 
#define SAVE_ROOT_JMPBUF_AFTER_STMT
 
#define SAVE_ROOT_JMPBUF(th, stmt)
 
#define TH_PUSH_TAG(th)
 
#define TH_POP_TAG()
 
#define TH_TMPPOP_TAG()   _th->tag = _tag.prev
 
#define TH_REPUSH_TAG()   (void)(_th->tag = &_tag)
 
#define PUSH_TAG()   TH_PUSH_TAG(GET_THREAD())
 
#define POP_TAG()   TH_POP_TAG()
 
#define VAR_FROM_MEMORY(var)   (var)
 
#define VAR_INITIALIZED(var)   ((void)&(var))
 
#define VAR_NOCLOBBERED(var)   var
 
#define TH_EXEC_TAG()   (ruby_setjmp(_tag.buf) ? rb_threadptr_tag_state(VAR_FROM_MEMORY(_th)) : (TH_REPUSH_TAG(), 0))
 
#define EXEC_TAG()   TH_EXEC_TAG()
 
#define TH_JUMP_TAG(th, st)   rb_threadptr_tag_jump(th, st)
 
#define JUMP_TAG(st)   TH_JUMP_TAG(GET_THREAD(), (st))
 
#define INTERNAL_EXCEPTION_P(exc)   FIXNUM_P(exc)
 
#define CREF_FL_PUSHED_BY_EVAL   IMEMO_FL_USER1
 
#define CREF_FL_OMOD_SHARED   IMEMO_FL_USER2
 
#define rb_thread_raised_set(th, f)   ((th)->raised_flag |= (f))
 
#define rb_thread_raised_reset(th, f)   ((th)->raised_flag &= ~(f))
 
#define rb_thread_raised_p(th, f)   (((th)->raised_flag & (f)) != 0)
 
#define rb_thread_raised_clear(th)   ((th)->raised_flag = 0)
 
#define CharNext(p)   ((p) + 1)
 

Enumerations

enum  { RAISED_EXCEPTION = 1, RAISED_STACKOVERFLOW = 2, RAISED_NOMEMORY = 4 }
 

Functions

static void vm_passed_block_handler_set (rb_thread_t *th, VALUE block_handler)
 
static void pass_passed_block_handler (rb_thread_t *th)
 
char * strrchr (const char *, const char)
 
static int rb_threadptr_tag_state (rb_thread_t *th)
 
 NORETURN (static inline void rb_threadptr_tag_jump(rb_thread_t *, int))
 
static void rb_threadptr_tag_jump (rb_thread_t *th, int st)
 
static VALUE CREF_CLASS (const rb_cref_t *cref)
 
static rb_cref_tCREF_NEXT (const rb_cref_t *cref)
 
static const rb_scope_visibility_tCREF_SCOPE_VISI (const rb_cref_t *cref)
 
static VALUE CREF_REFINEMENTS (const rb_cref_t *cref)
 
static void CREF_REFINEMENTS_SET (rb_cref_t *cref, VALUE refs)
 
static int CREF_PUSHED_BY_EVAL (const rb_cref_t *cref)
 
static void CREF_PUSHED_BY_EVAL_SET (rb_cref_t *cref)
 
static int CREF_OMOD_SHARED (const rb_cref_t *cref)
 
static void CREF_OMOD_SHARED_SET (rb_cref_t *cref)
 
static void CREF_OMOD_SHARED_UNSET (rb_cref_t *cref)
 
void rb_thread_cleanup (void)
 
void rb_thread_wait_other_threads (void)
 
int rb_threadptr_set_raised (rb_thread_t *th)
 
int rb_threadptr_reset_raised (rb_thread_t *th)
 
VALUE rb_f_eval (int argc, const VALUE *argv, VALUE self)
 
VALUE rb_make_exception (int argc, const VALUE *argv)
 
 NORETURN (void rb_method_name_error(VALUE, VALUE))
 
 NORETURN (void rb_fiber_start(void))
 
 NORETURN (void rb_print_undef(VALUE, ID, rb_method_visibility_t))
 
 NORETURN (void rb_vm_localjump_error(const char *, VALUE, int))
 
 NORETURN (void rb_vm_jump_tag_but_local_jump(int))
 
 NORETURN (void rb_raise_method_missing(rb_thread_t *th, int argc, const VALUE *argv, VALUE obj, int call_status))
 
VALUE rb_vm_make_jump_tag_but_local_jump (int state, VALUE val)
 
rb_cref_trb_vm_cref (void)
 
rb_cref_trb_vm_cref_replace_with_duplicated_cref (void)
 
VALUE rb_vm_call_cfunc (VALUE recv, VALUE(*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename)
 
void rb_vm_set_progname (VALUE filename)
 
void rb_thread_terminate_all (void)
 
VALUE rb_vm_cbase (void)
 

Macro Definition Documentation

◆ CharNext

#define CharNext (   p)    ((p) + 1)

Definition at line 299 of file eval_intern.h.

Referenced by dln_find_1(), and push_include().

◆ CREF_FL_OMOD_SHARED

#define CREF_FL_OMOD_SHARED   IMEMO_FL_USER2

Definition at line 195 of file eval_intern.h.

Referenced by CREF_OMOD_SHARED(), CREF_OMOD_SHARED_SET(), and CREF_OMOD_SHARED_UNSET().

◆ CREF_FL_PUSHED_BY_EVAL

#define CREF_FL_PUSHED_BY_EVAL   IMEMO_FL_USER1

Definition at line 194 of file eval_intern.h.

Referenced by CREF_PUSHED_BY_EVAL(), and CREF_PUSHED_BY_EVAL_SET().

◆ EXEC_TAG

#define EXEC_TAG ( )    TH_EXEC_TAG()

◆ EXIT_FAILURE

#define EXIT_FAILURE   1

◆ EXIT_SUCCESS

#define EXIT_SUCCESS   0

Definition at line 30 of file eval_intern.h.

◆ INTERNAL_EXCEPTION_P

#define INTERNAL_EXCEPTION_P (   exc)    FIXNUM_P(exc)

Definition at line 190 of file eval_intern.h.

Referenced by setup_exception().

◆ JUMP_TAG

#define JUMP_TAG (   st)    TH_JUMP_TAG(GET_THREAD(), (st))

◆ PASS_PASSED_BLOCK_HANDLER

#define PASS_PASSED_BLOCK_HANDLER ( )    pass_passed_block_handler(GET_THREAD())

Definition at line 24 of file eval_intern.h.

Referenced by rb_funcall_passing_block(), and rb_obj_call_init().

◆ PASS_PASSED_BLOCK_HANDLER_TH

#define PASS_PASSED_BLOCK_HANDLER_TH (   th)    pass_passed_block_handler(th)

Definition at line 23 of file eval_intern.h.

Referenced by rb_call_super(), and send_internal().

◆ POP_TAG

#define POP_TAG ( )    TH_POP_TAG()

◆ PUSH_TAG

#define PUSH_TAG ( )    TH_PUSH_TAG(GET_THREAD())

◆ rb_thread_raised_clear

#define rb_thread_raised_clear (   th)    ((th)->raised_flag = 0)

Definition at line 270 of file eval_intern.h.

Referenced by rb_longjmp(), rb_memerror(), rb_raise_jump(), and rb_threadptr_error_print().

◆ rb_thread_raised_p

#define rb_thread_raised_p (   th,
  f 
)    (((th)->raised_flag & (f)) != 0)

Definition at line 269 of file eval_intern.h.

Referenced by rb_memerror(), and stack_check().

◆ rb_thread_raised_reset

#define rb_thread_raised_reset (   th,
  f 
)    ((th)->raised_flag &= ~(f))

Definition at line 268 of file eval_intern.h.

◆ rb_thread_raised_set

#define rb_thread_raised_set (   th,
  f 
)    ((th)->raised_flag |= (f))

Definition at line 267 of file eval_intern.h.

Referenced by rb_memerror(), rb_threadptr_error_print(), and stack_check().

◆ ruby_longjmp

#define ruby_longjmp (   env,
  val 
)    RUBY_LONGJMP((env),(val))

Definition at line 60 of file eval_intern.h.

Referenced by cont_restore_1(), and rb_threadptr_tag_jump().

◆ ruby_setjmp

#define ruby_setjmp (   env)    RUBY_SETJMP(env)

Definition at line 59 of file eval_intern.h.

Referenced by cont_capture(), and fiber_store().

◆ SAVE_ROOT_JMPBUF

#define SAVE_ROOT_JMPBUF (   th,
  stmt 
)
Value:
if (ruby_setjmp((th)->root_jmpbuf) == 0) { \
SAVE_ROOT_JMPBUF_BEFORE_STMT \
stmt; \
SAVE_ROOT_JMPBUF_AFTER_STMT \
} \
else { \
rb_fiber_start(); \
} while (0)
if(len<=MAX_WORD_LENGTH &&len >=MIN_WORD_LENGTH)
Definition: zonetab.h:883
#define ruby_setjmp(env)
Definition: eval_intern.h:59

Definition at line 121 of file eval_intern.h.

Referenced by rb_protect(), ruby_cleanup(), ruby_exec_internal(), ruby_options(), and thread_start_func_2().

◆ SAVE_ROOT_JMPBUF_AFTER_STMT

#define SAVE_ROOT_JMPBUF_AFTER_STMT

Definition at line 118 of file eval_intern.h.

◆ SAVE_ROOT_JMPBUF_BEFORE_STMT

#define SAVE_ROOT_JMPBUF_BEFORE_STMT

Definition at line 117 of file eval_intern.h.

◆ TH_EXEC_TAG

#define TH_EXEC_TAG ( )    (ruby_setjmp(_tag.buf) ? rb_threadptr_tag_state(VAR_FROM_MEMORY(_th)) : (TH_REPUSH_TAG(), 0))

◆ TH_JUMP_TAG

#define TH_JUMP_TAG (   th,
  st 
)    rb_threadptr_tag_jump(th, st)

◆ TH_POP_TAG

#define TH_POP_TAG ( )

◆ TH_PUSH_TAG

#define TH_PUSH_TAG (   th)

◆ TH_REPUSH_TAG

#define TH_REPUSH_TAG ( )    (void)(_th->tag = &_tag)

Definition at line 144 of file eval_intern.h.

Referenced by rb_exec_end_proc().

◆ TH_TMPPOP_TAG

#define TH_TMPPOP_TAG ( )    _th->tag = _tag.prev

Definition at line 141 of file eval_intern.h.

Referenced by rb_exec_end_proc(), and vm_exec().

◆ VAR_FROM_MEMORY

#define VAR_FROM_MEMORY (   var)    (var)

Definition at line 154 of file eval_intern.h.

Referenced by rb_fiber_start().

◆ VAR_INITIALIZED

#define VAR_INITIALIZED (   var)    ((void)&(var))

Definition at line 155 of file eval_intern.h.

Referenced by cont_capture(), and rb_exec_end_proc().

◆ VAR_NOCLOBBERED

#define VAR_NOCLOBBERED (   var)    var

Definition at line 156 of file eval_intern.h.

Referenced by rb_eval_cmd().

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
RAISED_EXCEPTION 
RAISED_STACKOVERFLOW 
RAISED_NOMEMORY 

Definition at line 260 of file eval_intern.h.

Function Documentation

◆ CREF_CLASS()

static VALUE CREF_CLASS ( const rb_cref_t cref)
inlinestatic

◆ CREF_NEXT()

static rb_cref_t* CREF_NEXT ( const rb_cref_t cref)
inlinestatic

◆ CREF_OMOD_SHARED()

static int CREF_OMOD_SHARED ( const rb_cref_t cref)
inlinestatic

Definition at line 240 of file eval_intern.h.

References CREF_FL_OMOD_SHARED, and rb_cref_struct::flags.

Referenced by rb_using_refinement().

◆ CREF_OMOD_SHARED_SET()

static void CREF_OMOD_SHARED_SET ( rb_cref_t cref)
inlinestatic

Definition at line 246 of file eval_intern.h.

References CREF_FL_OMOD_SHARED, and rb_cref_struct::flags.

Referenced by vm_cref_new0().

◆ CREF_OMOD_SHARED_UNSET()

static void CREF_OMOD_SHARED_UNSET ( rb_cref_t cref)
inlinestatic

◆ CREF_PUSHED_BY_EVAL()

static int CREF_PUSHED_BY_EVAL ( const rb_cref_t cref)
inlinestatic

◆ CREF_PUSHED_BY_EVAL_SET()

static void CREF_PUSHED_BY_EVAL_SET ( rb_cref_t cref)
inlinestatic

Definition at line 234 of file eval_intern.h.

References CREF_FL_PUSHED_BY_EVAL, and rb_cref_struct::flags.

Referenced by vm_cref_new0().

◆ CREF_REFINEMENTS()

static VALUE CREF_REFINEMENTS ( const rb_cref_t cref)
inlinestatic

◆ CREF_REFINEMENTS_SET()

static void CREF_REFINEMENTS_SET ( rb_cref_t cref,
VALUE  refs 
)
inlinestatic

◆ CREF_SCOPE_VISI()

static const rb_scope_visibility_t* CREF_SCOPE_VISI ( const rb_cref_t cref)
inlinestatic

◆ NORETURN() [1/7]

NORETURN ( static inline void   rb_threadptr_tag_jumprb_thread_t *, int)

Referenced by rb_threadptr_tag_state().

◆ NORETURN() [2/7]

NORETURN ( void   rb_method_name_errorVALUE, VALUE)

◆ NORETURN() [3/7]

NORETURN ( void   rb_fiber_startvoid)

◆ NORETURN() [4/7]

NORETURN ( void   rb_print_undefVALUE, ID, rb_method_visibility_t)

◆ NORETURN() [5/7]

NORETURN ( void   rb_vm_localjump_errorconst char *, VALUE, int)

◆ NORETURN() [6/7]

NORETURN ( void   rb_vm_jump_tag_but_local_jumpint)

◆ NORETURN() [7/7]

NORETURN ( void   rb_raise_method_missingrb_thread_t *th, int argc, const VALUE *argv, VALUE obj, int call_status)

◆ pass_passed_block_handler()

static void pass_passed_block_handler ( rb_thread_t th)
inlinestatic

◆ 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_make_exception()

VALUE rb_make_exception ( int  argc,
const VALUE argv 
)

Definition at line 763 of file eval.c.

◆ rb_thread_cleanup()

void rb_thread_cleanup ( void  )

Referenced by CREF_OMOD_SHARED_UNSET().

◆ rb_thread_terminate_all()

void rb_thread_terminate_all ( void  )

◆ rb_thread_wait_other_threads()

void rb_thread_wait_other_threads ( void  )

Referenced by CREF_OMOD_SHARED_UNSET().

◆ rb_threadptr_reset_raised()

int rb_threadptr_reset_raised ( rb_thread_t th)

◆ rb_threadptr_set_raised()

int rb_threadptr_set_raised ( rb_thread_t th)

◆ rb_threadptr_tag_jump()

static void rb_threadptr_tag_jump ( rb_thread_t th,
int  st 
)
inlinestatic

◆ rb_threadptr_tag_state()

static int rb_threadptr_tag_state ( rb_thread_t th)
inlinestatic

Definition at line 161 of file eval_intern.h.

References NORETURN(), rb_threadptr_tag_jump(), and rb_thread_struct::state.

◆ rb_vm_call_cfunc()

VALUE rb_vm_call_cfunc ( VALUE  recv,
VALUE(*)(VALUE func,
VALUE  arg,
VALUE  block_handler,
VALUE  filename 
)

◆ rb_vm_cbase()

VALUE rb_vm_cbase ( void  )

◆ rb_vm_cref()

rb_cref_t* rb_vm_cref ( void  )

◆ rb_vm_cref_replace_with_duplicated_cref()

rb_cref_t* rb_vm_cref_replace_with_duplicated_cref ( void  )

◆ rb_vm_make_jump_tag_but_local_jump()

VALUE rb_vm_make_jump_tag_but_local_jump ( int  state,
VALUE  val 
)

◆ rb_vm_set_progname()

void rb_vm_set_progname ( VALUE  filename)

◆ strrchr()

char* strrchr ( const char *  ,
const char   
)

◆ vm_passed_block_handler_set()

static void vm_passed_block_handler_set ( rb_thread_t th,
VALUE  block_handler 
)
inlinestatic