Defines | 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.

Defines

#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 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, VALUE filepath)
void rb_vm_set_progname (VALUE filename)
void rb_thread_terminate_all (void)
VALUE rb_vm_top_self ()
VALUE rb_vm_cbase (void)
int rb_vm_get_sourceline (const rb_control_frame_t *)
void rb_trap_restore_mask (void)

Define Documentation

#define CharNext (   p  )     ((p) + mblen(p, RUBY_MBCHAR_MAXSIZE))
#define CHECK_STACK_OVERFLOW (   cfp,
  margin 
)
#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 167 of file eval_intern.h.

Referenced by rb_iterate(), and vm_exec().

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

Definition at line 168 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 166 of file eval_intern.h.

Referenced by thread_join(), and vm_exec().

#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 159 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(); \
    PASS_PASSED_BLOCK_TH(__th__); \
} while (0)

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)

Definition at line 7 of file eval_intern.h.

Referenced by rb_method_call(), 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 193 of file eval_intern.h.

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

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

Definition at line 192 of file eval_intern.h.

Referenced by rb_memerror(), and stack_check().

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

Definition at line 191 of file eval_intern.h.

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

Definition at line 190 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:
do \
  if (ruby_setjmp((th)->root_jmpbuf) == 0) { \
      stmt; \
  } \
  else { \
      rb_fiber_start(); \
  } while (0)

Definition at line 102 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 171 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 170 of file eval_intern.h.

Referenced by rb_attr().

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

Definition at line 161 of file eval_intern.h.

Referenced by vm_exec().

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

Definition at line 163 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 157 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 155 of file eval_intern.h.

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

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

Definition at line 127 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)

Definition at line 132 of file eval_intern.h.

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

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

Definition at line 117 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 121 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;

Definition at line 110 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 183 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 138 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 573 of file eval.c.

References make_exception(), and TRUE.

Referenced by parser_set_encode(), rb_f_raise(), and rb_threadptr_raise().

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  ) 

Definition at line 1409 of file thread.c.

References RAISED_EXCEPTION, and rb_thread_struct::raised_flag.

Referenced by error_handle(), ruby_suppress_tracing(), and setup_exception().

int rb_threadptr_set_raised ( rb_thread_t th  ) 

Definition at line 1399 of file thread.c.

References RAISED_EXCEPTION, and rb_thread_struct::raised_flag.

Referenced by error_handle(), ruby_suppress_tracing(), and setup_exception().

void rb_trap_restore_mask ( void   ) 

Definition at line 894 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  filepath 
)
VALUE rb_vm_cbase ( void   ) 
NODE* rb_vm_cref ( void   ) 
int rb_vm_get_sourceline ( const rb_control_frame_t  ) 
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 
)