Ruby  1.9.3p448(2013-06-27revision41675)
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_TH(th)
 
#define PASS_PASSED_BLOCK()
 
#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(th, stmt)
 
#define TH_PUSH_TAG(th)
 
#define TH_POP_TAG()
 
#define TH_POP_TAG2()   _th->tag = _tag.prev
 
#define PUSH_TAG()   TH_PUSH_TAG(GET_THREAD())
 
#define POP_TAG()   TH_POP_TAG()
 
#define TH_EXEC_TAG()   ruby_setjmp(_th->tag->buf)
 
#define EXEC_TAG()   TH_EXEC_TAG()
 
#define TH_JUMP_TAG(th, st)
 
#define JUMP_TAG(st)   TH_JUMP_TAG(GET_THREAD(), (st))
 
#define INTERNAL_EXCEPTION_P(exc)   FIXNUM_P(exc)
 
#define TAG_RETURN   RUBY_TAG_RETURN
 
#define TAG_BREAK   RUBY_TAG_BREAK
 
#define TAG_NEXT   RUBY_TAG_NEXT
 
#define TAG_RETRY   RUBY_TAG_RETRY
 
#define TAG_REDO   RUBY_TAG_REDO
 
#define TAG_RAISE   RUBY_TAG_RAISE
 
#define TAG_THROW   RUBY_TAG_THROW
 
#define TAG_FATAL   RUBY_TAG_FATAL
 
#define TAG_MASK   RUBY_TAG_MASK
 
#define NEW_THROW_OBJECT(val, pt, st)   ((VALUE)rb_node_newnode(NODE_LIT, (VALUE)(val), (VALUE)(pt), (VALUE)(st)))
 
#define SET_THROWOBJ_CATCH_POINT(obj, val)   (RNODE((obj))->u2.value = (val))
 
#define SET_THROWOBJ_STATE(obj, val)   (RNODE((obj))->u3.value = (val))
 
#define GET_THROWOBJ_VAL(obj)   ((VALUE)RNODE((obj))->u1.value)
 
#define GET_THROWOBJ_CATCH_POINT(obj)   ((VALUE*)RNODE((obj))->u2.value)
 
#define GET_THROWOBJ_STATE(obj)   ((int)RNODE((obj))->u3.value)
 
#define SCOPE_TEST(f)   (rb_vm_cref()->nd_visi & (f))
 
#define SCOPE_CHECK(f)   (rb_vm_cref()->nd_visi == (f))
 
#define SCOPE_SET(f)   (rb_vm_cref()->nd_visi = (f))
 
#define CHECK_STACK_OVERFLOW(cfp, margin)
 
#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) + mblen((p), RUBY_MBCHAR_MAXSIZE))
 

Enumerations

enum  ruby_tag_type {
  RUBY_TAG_RETURN = 0x1, RUBY_TAG_BREAK = 0x2, RUBY_TAG_NEXT = 0x3, RUBY_TAG_RETRY = 0x4,
  RUBY_TAG_REDO = 0x5, RUBY_TAG_RAISE = 0x6, RUBY_TAG_THROW = 0x7, RUBY_TAG_FATAL = 0x8,
  RUBY_TAG_MASK = 0xf
}
 
enum  { RAISED_EXCEPTION = 1, RAISED_STACKOVERFLOW = 2, RAISED_NOMEMORY = 4 }
 

Functions

void * alloca ()
 
char * strrchr (const char *, const char)
 
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, VALUE *argv, VALUE self)
 
VALUE rb_make_exception (int argc, VALUE *argv)
 
 NORETURN (void rb_fiber_start(void))
 
 NORETURN (void rb_print_undef(VALUE, ID, int))
 
 NORETURN (void rb_vm_localjump_error(const char *, VALUE, int))
 
 NORETURN (void rb_vm_jump_tag_but_local_jump(int, VALUE))
 
 NORETURN (void rb_raise_method_missing(rb_thread_t *th, int argc, VALUE *argv, VALUE obj, int call_status))
 
VALUE rb_vm_make_jump_tag_but_local_jump (int state, VALUE val)
 
NODErb_vm_cref (void)
 
VALUE rb_vm_call_cfunc (VALUE recv, VALUE(*func)(VALUE), VALUE arg, const rb_block_t *blockptr, VALUE filename)
 
void rb_vm_set_progname (VALUE filename)
 
void rb_thread_terminate_all (void)
 
VALUE rb_vm_top_self ()
 
VALUE rb_vm_cbase (void)
 
void rb_trap_restore_mask (void)
 

Macro Definition Documentation

#define CharNext (   p)    ((p) + mblen((p), RUBY_MBCHAR_MAXSIZE))
#define CHECK_STACK_OVERFLOW (   cfp,
  margin 
)
Value:
if ((VALUE *)((char *)(((VALUE *)(cfp)->sp) + (margin)) + sizeof(rb_control_frame_t)) >= ((VALUE *)(cfp))) { \
} \
while (0)
if(len<=MAX_WORD_LENGTH &&len >=MIN_WORD_LENGTH)
Definition: name2ctype.h:23841
#define sysstack_error
Definition: vm_core.h:681
void rb_exc_raise(VALUE mesg)
Definition: eval.c:460
unsigned long VALUE
Definition: ruby.h:88

Definition at line 177 of file eval_intern.h.

Referenced by caller_setup_args(), eval_string_with_cref(), invoke_block_from_c(), vm_call0(), vm_invoke_block(), vm_set_eval_stack(), vm_set_main_stack(), vm_set_top_stack(), vm_setup_method(), and vm_yield_setup_block_args().

#define EXEC_TAG ( )    TH_EXEC_TAG()
#define EXIT_FAILURE   1
#define EXIT_SUCCESS   0

Definition at line 21 of file eval_intern.h.

#define GET_THROWOBJ_CATCH_POINT (   obj)    ((VALUE*)RNODE((obj))->u2.value)

Definition at line 170 of file eval_intern.h.

Referenced by rb_iterate(), rb_vm_rewrite_dfp_in_errinfo(), and vm_exec().

#define GET_THROWOBJ_STATE (   obj)    ((int)RNODE((obj))->u3.value)

Definition at line 171 of file eval_intern.h.

Referenced by thread_join(), and vm_throw().

#define GET_THROWOBJ_VAL (   obj)    ((VALUE)RNODE((obj))->u1.value)

Definition at line 169 of file eval_intern.h.

Referenced by thread_join(), and vm_exec().

#define INTERNAL_EXCEPTION_P (   exc)    FIXNUM_P(exc)

Definition at line 139 of file eval_intern.h.

Referenced by setup_exception().

#define JUMP_TAG (   st)    TH_JUMP_TAG(GET_THREAD(), (st))
#define NEW_THROW_OBJECT (   val,
  pt,
  st 
)    ((VALUE)rb_node_newnode(NODE_LIT, (VALUE)(val), (VALUE)(pt), (VALUE)(st)))

Definition at line 162 of file eval_intern.h.

Referenced by rb_throw_obj(), vm_iter_break(), and vm_throw().

#define PASS_PASSED_BLOCK ( )
Value:
do { \
rb_thread_t * const __th__ = GET_THREAD(); \
} while (0)
#define GET_THREAD()
Definition: vm_core.h:690
struct rb_thread_struct rb_thread_t
#define PASS_PASSED_BLOCK_TH(th)
Definition: eval_intern.h:7

Definition at line 12 of file eval_intern.h.

Referenced by rb_call_super(), and rb_obj_call_init().

#define PASS_PASSED_BLOCK_TH (   th)
Value:
do { \
(th)->passed_block = GC_GUARDED_PTR_REF((rb_block_t *)(th)->cfp->lfp[0]); \
(th)->cfp->flag |= VM_FRAME_FLAG_PASSED; \
} while (0)
#define VM_FRAME_FLAG_PASSED
Definition: vm_core.h:588
#define GC_GUARDED_PTR_REF(p)
Definition: vm_core.h:608

Definition at line 7 of file eval_intern.h.

Referenced by rb_funcall_passing_block(), and send_internal().

#define POP_TAG ( )    TH_POP_TAG()
#define PUSH_TAG ( )    TH_PUSH_TAG(GET_THREAD())
#define rb_thread_raised_clear (   th)    ((th)->raised_flag = 0)

Definition at line 196 of file eval_intern.h.

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

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

Definition at line 195 of file eval_intern.h.

Referenced by rb_memerror(), and stack_check().

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

Definition at line 194 of file eval_intern.h.

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

Definition at line 193 of file eval_intern.h.

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

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

Definition at line 68 of file eval_intern.h.

Referenced by cont_restore_1().

#define ruby_setjmp (   env)    RUBY_SETJMP(env)

Definition at line 67 of file eval_intern.h.

Referenced by cont_capture(), and fiber_store().

#define SAVE_ROOT_JMPBUF (   th,
  stmt 
)
Value:
if (ruby_setjmp((th)->root_jmpbuf) == 0) { \
} \
else { \
} while (0)
if(len<=MAX_WORD_LENGTH &&len >=MIN_WORD_LENGTH)
Definition: name2ctype.h:23841
stmt
Definition: ripper.y:934
void rb_fiber_start(void)
Definition: cont.c:1139
#define ruby_setjmp(env)
Definition: eval_intern.h:67

Definition at line 103 of file eval_intern.h.

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

#define SCOPE_CHECK (   f)    (rb_vm_cref()->nd_visi == (f))

Definition at line 174 of file eval_intern.h.

Referenced by rb_attr().

#define SCOPE_SET (   f)    (rb_vm_cref()->nd_visi = (f))
#define SCOPE_TEST (   f)    (rb_vm_cref()->nd_visi & (f))

Definition at line 173 of file eval_intern.h.

Referenced by rb_attr().

#define SET_THROWOBJ_CATCH_POINT (   obj,
  val 
)    (RNODE((obj))->u2.value = (val))

Definition at line 164 of file eval_intern.h.

Referenced by rb_vm_rewrite_dfp_in_errinfo(), and vm_exec().

#define SET_THROWOBJ_STATE (   obj,
  val 
)    (RNODE((obj))->u3.value = (val))

Definition at line 166 of file eval_intern.h.

Referenced by vm_exec().

#define TAG_BREAK   RUBY_TAG_BREAK
#define TAG_FATAL   RUBY_TAG_FATAL
#define TAG_MASK   RUBY_TAG_MASK

Definition at line 160 of file eval_intern.h.

Referenced by error_handle().

#define TAG_NEXT   RUBY_TAG_NEXT
#define TAG_RAISE   RUBY_TAG_RAISE
#define TAG_REDO   RUBY_TAG_REDO
#define TAG_RETRY   RUBY_TAG_RETRY
#define TAG_RETURN   RUBY_TAG_RETURN
#define TAG_THROW   RUBY_TAG_THROW

Definition at line 158 of file eval_intern.h.

Referenced by error_handle(), rb_catch_obj(), rb_throw_obj(), and vm_throw().

#define TH_EXEC_TAG ( )    ruby_setjmp(_th->tag->buf)

Definition at line 128 of file eval_intern.h.

Referenced by rb_iterate().

#define TH_JUMP_TAG (   th,
  st 
)
Value:
do { \
ruby_longjmp((th)->tag->buf,(st)); \
} while (0)
#define ruby_longjmp(env, val)
Definition: eval_intern.h:68

Definition at line 133 of file eval_intern.h.

Referenced by rb_iterate(), rb_threadptr_execute_interrupts_common(), ruby_thread_stack_overflow(), and vm_iter_break().

#define TH_POP_TAG ( )
Value:
_th->tag = _tag.prev; \
} while (0)

Definition at line 118 of file eval_intern.h.

Referenced by rb_fiber_start(), rb_iterate(), rb_vm_invoke_proc(), thread_start_func_2(), and vm_exec().

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

Definition at line 122 of file eval_intern.h.

Referenced by vm_exec().

#define TH_PUSH_TAG (   th)
Value:
do { \
rb_thread_t * const _th = (th); \
struct rb_vm_tag _tag; \
_tag.tag = 0; \
_tag.prev = _th->tag; \
_th->tag = &_tag;
VALUE tag
Definition: vm_core.h:371
struct rb_thread_struct rb_thread_t

Definition at line 111 of file eval_intern.h.

Referenced by rb_fiber_start(), rb_iterate(), rb_vm_invoke_proc(), thread_start_func_2(), and vm_exec().

Enumeration Type Documentation

anonymous enum
Enumerator
RAISED_EXCEPTION 
RAISED_STACKOVERFLOW 
RAISED_NOMEMORY 

Definition at line 186 of file eval_intern.h.

Enumerator
RUBY_TAG_RETURN 
RUBY_TAG_BREAK 
RUBY_TAG_NEXT 
RUBY_TAG_RETRY 
RUBY_TAG_REDO 
RUBY_TAG_RAISE 
RUBY_TAG_THROW 
RUBY_TAG_FATAL 
RUBY_TAG_MASK 

Definition at line 141 of file eval_intern.h.

Function Documentation

void* alloca ( )
NORETURN ( void   rb_fiber_startvoid)
NORETURN ( void   rb_print_undefVALUE, ID, int)
NORETURN ( void   rb_vm_localjump_errorconst char *, VALUE, int)
NORETURN ( void   rb_vm_jump_tag_but_local_jumpint, VALUE)
NORETURN ( void   rb_raise_method_missingrb_thread_t *th, int argc, VALUE *argv, VALUE obj, int call_status)
VALUE rb_f_eval ( int  argc,
VALUE argv,
VALUE  self 
)
VALUE rb_make_exception ( int  argc,
VALUE argv 
)

Definition at line 574 of file eval.c.

void rb_thread_cleanup ( void  )
void rb_thread_terminate_all ( void  )
void rb_thread_wait_other_threads ( void  )
int rb_threadptr_reset_raised ( rb_thread_t th)
int rb_threadptr_set_raised ( rb_thread_t th)
void rb_trap_restore_mask ( void  )

Definition at line 897 of file signal.c.

References NULL, and pthread_sigmask().

Referenced by rb_throw_obj(), and setup_exception().

VALUE rb_vm_call_cfunc ( VALUE  recv,
VALUE(*)(VALUE func,
VALUE  arg,
const rb_block_t blockptr,
VALUE  filename 
)
VALUE rb_vm_cbase ( void  )
NODE* rb_vm_cref ( void  )
VALUE rb_vm_make_jump_tag_but_local_jump ( int  state,
VALUE  val 
)
void rb_vm_set_progname ( VALUE  filename)
VALUE rb_vm_top_self ( )
char* strrchr ( const char *  ,
const char   
)