Ruby  2.5.0dev(2017-10-22revision60238)
Data Structures | Macros | Typedefs | Enumerations | Functions
iseq.h File Reference

Go to the source code of this file.

Data Structures

struct  rb_compile_option_struct
 
struct  iseq_line_info_entry
 
struct  iseq_catch_table_entry
 
struct  iseq_compile_data_storage
 
struct  iseq_compile_data
 

Macros

#define ISEQ_MAJOR_VERSION   2
 
#define ISEQ_MINOR_VERSION   3
 
#define rb_iseq_t   rb_iseq_t
 
#define ISEQ_MARK_ARY(iseq)   (iseq)->body->mark_ary
 
#define ISEQ_COVERAGE(iseq)   RARRAY_AREF(ISEQ_MARK_ARY(iseq), ISEQ_MARK_ARY_COVERAGE)
 
#define ISEQ_COVERAGE_SET(iseq, cov)   RARRAY_ASET(ISEQ_MARK_ARY(iseq), ISEQ_MARK_ARY_COVERAGE, cov)
 
#define ISEQ_LINE_COVERAGE(iseq)   RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)
 
#define ISEQ_BRANCH_COVERAGE(iseq)   RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)
 
#define ISEQ_METHOD_COVERAGE(iseq)   RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_METHODS)
 
#define ISEQ_FLIP_CNT(iseq)   FIX2INT(RARRAY_AREF(ISEQ_MARK_ARY(iseq), ISEQ_MARK_ARY_FLIP_CNT))
 
#define ISEQ_COMPILE_DATA(iseq)   (iseq)->aux.compile_data
 
#define ISEQ_NOT_LOADED_YET   IMEMO_FL_USER1
 
#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE   (512)
 
#define SIZEOF_ISEQ_COMPILE_DATA_STORAGE   (sizeof(struct iseq_compile_data_storage) - 1)
 

Typedefs

typedef struct rb_iseq_struct rb_iseq_t
 

Enumerations

enum  iseq_mark_ary_index { ISEQ_MARK_ARY_COVERAGE, ISEQ_MARK_ARY_FLIP_CNT, ISEQ_MARK_ARY_ORIGINAL_ISEQ, ISEQ_MARK_ARY_INITIAL_SIZE }
 
enum  defined_type {
  DEFINED_NIL = 1, DEFINED_IVAR, DEFINED_LVAR, DEFINED_GVAR,
  DEFINED_CVAR, DEFINED_CONST, DEFINED_METHOD, DEFINED_YIELD,
  DEFINED_ZSUPER, DEFINED_SELF, DEFINED_TRUE, DEFINED_FALSE,
  DEFINED_ASGN, DEFINED_EXPR, DEFINED_IVAR2, DEFINED_REF,
  DEFINED_FUNC
}
 

Functions

VALUE iseq_ibf_dump (const rb_iseq_t *iseq, VALUE opt)
 
void ibf_load_iseq_complete (rb_iseq_t *iseq)
 
const rb_iseq_tiseq_ibf_load (VALUE str)
 
VALUE iseq_ibf_load_extra_data (VALUE str)
 
RUBY_SYMBOL_EXPORT_BEGIN VALUE rb_iseq_compile_node (rb_iseq_t *iseq, NODE *node)
 
int rb_iseq_translate_threaded_code (rb_iseq_t *iseq)
 
VALUErb_iseq_original_iseq (const rb_iseq_t *iseq)
 
void rb_iseq_build_from_ary (rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE args, VALUE exception, VALUE body)
 
void rb_iseq_add_mark_object (const rb_iseq_t *iseq, VALUE obj)
 
VALUE rb_iseq_load (VALUE data, VALUE parent, VALUE opt)
 
VALUE rb_iseq_parameters (const rb_iseq_t *iseq, int is_proc)
 
struct st_tableruby_insn_make_insn_table (void)
 
unsigned int rb_iseq_line_no (const rb_iseq_t *iseq, size_t pos)
 
int rb_iseqw_line_trace_each (VALUE iseqval, int(*func)(int line, rb_event_flag_t *events_ptr, void *d), void *data)
 
VALUE rb_iseqw_line_trace_all (VALUE iseqval)
 
VALUE rb_iseqw_line_trace_specify (VALUE iseqval, VALUE pos, VALUE set)
 
VALUE rb_iseqw_new (const rb_iseq_t *iseq)
 
const rb_iseq_trb_iseqw_to_iseq (VALUE iseqw)
 
VALUE rb_iseq_absolute_path (const rb_iseq_t *iseq)
 
VALUE rb_iseq_label (const rb_iseq_t *iseq)
 
VALUE rb_iseq_base_label (const rb_iseq_t *iseq)
 
VALUE rb_iseq_first_lineno (const rb_iseq_t *iseq)
 
VALUE rb_iseq_method_name (const rb_iseq_t *iseq)
 
const rb_iseq_trb_method_iseq (VALUE body)
 
const rb_iseq_trb_proc_get_iseq (VALUE proc, int *is_proc)
 
 PACKED_STRUCT_UNALIGNED (struct iseq_catch_table { unsigned int size;struct iseq_catch_table_entry entries[1];})
 
VALUE rb_iseq_defined_string (enum defined_type type)
 
void rb_iseq_make_compile_option (struct rb_compile_option_struct *option, VALUE opt)
 
VALUE rb_iseq_local_variables (const rb_iseq_t *iseq)
 

Macro Definition Documentation

◆ INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE

#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE   (512)

Definition at line 194 of file iseq.h.

◆ ISEQ_BRANCH_COVERAGE

#define ISEQ_BRANCH_COVERAGE (   iseq)    RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)

Definition at line 51 of file iseq.h.

◆ ISEQ_COMPILE_DATA

#define ISEQ_COMPILE_DATA (   iseq)    (iseq)->aux.compile_data

Definition at line 80 of file iseq.h.

Referenced by rb_iseq_mark().

◆ ISEQ_COVERAGE

#define ISEQ_COVERAGE (   iseq)    RARRAY_AREF(ISEQ_MARK_ARY(iseq), ISEQ_MARK_ARY_COVERAGE)

Definition at line 48 of file iseq.h.

Referenced by iseq_ibf_dump(), and rb_iseq_coverage().

◆ ISEQ_COVERAGE_SET

#define ISEQ_COVERAGE_SET (   iseq,
  cov 
)    RARRAY_ASET(ISEQ_MARK_ARY(iseq), ISEQ_MARK_ARY_COVERAGE, cov)

Definition at line 49 of file iseq.h.

◆ ISEQ_FLIP_CNT

#define ISEQ_FLIP_CNT (   iseq)    FIX2INT(RARRAY_AREF(ISEQ_MARK_ARY(iseq), ISEQ_MARK_ARY_FLIP_CNT))

Definition at line 54 of file iseq.h.

◆ ISEQ_LINE_COVERAGE

#define ISEQ_LINE_COVERAGE (   iseq)    RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)

Definition at line 50 of file iseq.h.

◆ ISEQ_MAJOR_VERSION

#define ISEQ_MAJOR_VERSION   2

Definition at line 15 of file iseq.h.

◆ ISEQ_MARK_ARY

#define ISEQ_MARK_ARY (   iseq)    (iseq)->body->mark_ary

Definition at line 46 of file iseq.h.

Referenced by rb_iseq_add_mark_object().

◆ ISEQ_METHOD_COVERAGE

#define ISEQ_METHOD_COVERAGE (   iseq)    RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_METHODS)

Definition at line 52 of file iseq.h.

◆ ISEQ_MINOR_VERSION

#define ISEQ_MINOR_VERSION   3

Definition at line 16 of file iseq.h.

◆ ISEQ_NOT_LOADED_YET

#define ISEQ_NOT_LOADED_YET   IMEMO_FL_USER1

Definition at line 88 of file iseq.h.

Referenced by rb_iseq_mark().

◆ rb_iseq_t

#define rb_iseq_t   rb_iseq_t

Definition at line 20 of file iseq.h.

◆ SIZEOF_ISEQ_COMPILE_DATA_STORAGE

#define SIZEOF_ISEQ_COMPILE_DATA_STORAGE   (sizeof(struct iseq_compile_data_storage) - 1)

Definition at line 204 of file iseq.h.

Typedef Documentation

◆ rb_iseq_t

typedef struct rb_iseq_struct rb_iseq_t

Definition at line 19 of file iseq.h.

Enumeration Type Documentation

◆ defined_type

Enumerator
DEFINED_NIL 
DEFINED_IVAR 
DEFINED_LVAR 
DEFINED_GVAR 
DEFINED_CVAR 
DEFINED_CONST 
DEFINED_METHOD 
DEFINED_YIELD 
DEFINED_ZSUPER 
DEFINED_SELF 
DEFINED_TRUE 
DEFINED_FALSE 
DEFINED_ASGN 
DEFINED_EXPR 
DEFINED_IVAR2 
DEFINED_REF 
DEFINED_FUNC 

Definition at line 240 of file iseq.h.

◆ iseq_mark_ary_index

Enumerator
ISEQ_MARK_ARY_COVERAGE 
ISEQ_MARK_ARY_FLIP_CNT 
ISEQ_MARK_ARY_ORIGINAL_ISEQ 
ISEQ_MARK_ARY_INITIAL_SIZE 

Definition at line 29 of file iseq.h.

Function Documentation

◆ ibf_load_iseq_complete()

void ibf_load_iseq_complete ( rb_iseq_t iseq)

◆ iseq_ibf_dump()

VALUE iseq_ibf_dump ( const rb_iseq_t iseq,
VALUE  opt 
)

◆ iseq_ibf_load()

const rb_iseq_t* iseq_ibf_load ( VALUE  str)

Definition at line 9112 of file compile.c.

References ibf_load::iseq, and TypedData_Make_Struct.

◆ iseq_ibf_load_extra_data()

VALUE iseq_ibf_load_extra_data ( VALUE  str)

Definition at line 9126 of file compile.c.

References TypedData_Make_Struct.

◆ PACKED_STRUCT_UNALIGNED()

PACKED_STRUCT_UNALIGNED ( struct iseq_catch_table { unsigned int size;struct iseq_catch_table_entry entries[1];}  )

◆ rb_iseq_absolute_path()

VALUE rb_iseq_absolute_path ( const rb_iseq_t iseq)

Definition at line 704 of file iseq.c.

References rb_iseq_realpath().

◆ rb_iseq_add_mark_object()

void rb_iseq_add_mark_object ( const rb_iseq_t iseq,
VALUE  obj 
)

Definition at line 280 of file iseq.c.

References ISEQ_MARK_ARY, and rb_ary_push().

◆ rb_iseq_base_label()

VALUE rb_iseq_base_label ( const rb_iseq_t iseq)

◆ rb_iseq_build_from_ary()

void rb_iseq_build_from_ary ( rb_iseq_t iseq,
VALUE  misc,
VALUE  locals,
VALUE  args,
VALUE  exception,
VALUE  body 
)

◆ rb_iseq_compile_node()

RUBY_SYMBOL_EXPORT_BEGIN VALUE rb_iseq_compile_node ( rb_iseq_t iseq,
NODE node 
)

Definition at line 611 of file compile.c.

References COMPILE, DECL_ANCHOR, and INIT_ANCHOR.

◆ rb_iseq_defined_string()

VALUE rb_iseq_defined_string ( enum defined_type  type)

◆ rb_iseq_first_lineno()

VALUE rb_iseq_first_lineno ( const rb_iseq_t iseq)

◆ rb_iseq_label()

VALUE rb_iseq_label ( const rb_iseq_t iseq)

◆ rb_iseq_line_no()

unsigned int rb_iseq_line_no ( const rb_iseq_t iseq,
size_t  pos 
)

Definition at line 1263 of file iseq.c.

◆ rb_iseq_load()

VALUE rb_iseq_load ( VALUE  data,
VALUE  parent,
VALUE  opt 
)

Definition at line 626 of file iseq.c.

◆ rb_iseq_local_variables()

VALUE rb_iseq_local_variables ( const rb_iseq_t iseq)

Definition at line 794 of file vm.c.

Referenced by rb_iseqw_local_variables().

◆ rb_iseq_make_compile_option()

void rb_iseq_make_compile_option ( struct rb_compile_option_struct option,
VALUE  opt 
)

Definition at line 401 of file iseq.c.

References Check_Type, and T_HASH.

◆ rb_iseq_method_name()

VALUE rb_iseq_method_name ( const rb_iseq_t iseq)

◆ rb_iseq_original_iseq()

VALUE* rb_iseq_original_iseq ( const rb_iseq_t iseq)

Definition at line 753 of file compile.c.

Referenced by rb_vmdebug_debug_print_pre().

◆ rb_iseq_parameters()

VALUE rb_iseq_parameters ( const rb_iseq_t iseq,
int  is_proc 
)

◆ rb_iseq_translate_threaded_code()

int rb_iseq_translate_threaded_code ( rb_iseq_t iseq)

◆ rb_iseqw_line_trace_all()

VALUE rb_iseqw_line_trace_all ( VALUE  iseqval)

Definition at line 2307 of file iseq.c.

◆ rb_iseqw_line_trace_each()

int rb_iseqw_line_trace_each ( VALUE  iseqval,
int(*)(int line, rb_event_flag_t *events_ptr, void *d)  func,
void *  data 
)

Definition at line 2255 of file iseq.c.

Referenced by rb_iseqw_line_trace_specify().

◆ rb_iseqw_line_trace_specify()

VALUE rb_iseqw_line_trace_specify ( VALUE  iseqval,
VALUE  pos,
VALUE  set 
)

◆ rb_iseqw_to_iseq()

const rb_iseq_t* rb_iseqw_to_iseq ( VALUE  iseqw)

Definition at line 958 of file iseq.c.

◆ rb_method_iseq()

const rb_iseq_t* rb_method_iseq ( VALUE  body)

Definition at line 2460 of file proc.c.

◆ rb_proc_get_iseq()

const rb_iseq_t* rb_proc_get_iseq ( VALUE  proc,
int *  is_proc 
)

Definition at line 1086 of file proc.c.

References rb_proc_t::block, GetProcPtr, rb_proc_t::is_lambda, and rb_block::proc.

◆ ruby_insn_make_insn_table()

struct st_table* ruby_insn_make_insn_table ( void  )