15 #define ISEQ_MAJOR_VERSION 2 16 #define ISEQ_MINOR_VERSION 3 20 #define rb_iseq_t rb_iseq_t 24 rb_call_info_kw_arg_bytes(
int keyword_len)
37 iseq_mark_ary_create(
int flip_cnt)
46 #define ISEQ_MARK_ARY(iseq) (iseq)->body->mark_ary 48 #define ISEQ_COVERAGE(iseq) RARRAY_AREF(ISEQ_MARK_ARY(iseq), ISEQ_MARK_ARY_COVERAGE) 49 #define ISEQ_COVERAGE_SET(iseq, cov) RARRAY_ASET(ISEQ_MARK_ARY(iseq), ISEQ_MARK_ARY_COVERAGE, cov) 50 #define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES) 51 #define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES) 52 #define ISEQ_METHOD_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_METHODS) 54 #define ISEQ_FLIP_CNT(iseq) FIX2INT(RARRAY_AREF(ISEQ_MARK_ARY(iseq), ISEQ_MARK_ARY_FLIP_CNT)) 57 ISEQ_FLIP_CNT_INCREMENT(
const rb_iseq_t *iseq)
80 #define ISEQ_COMPILE_DATA(iseq) (iseq)->aux.compile_data 83 iseq_imemo_alloc(
void)
88 #define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1 184 iseq_catch_table_bytes(
int n)
187 catch_table_entries_max = (INT_MAX -
sizeof(
struct iseq_catch_table)) / sizeof(struct iseq_catch_table_entry)
189 if (n > catch_table_entries_max)
rb_fatal(
"too large iseq_catch_table - %d", n);
190 return (
int)(
sizeof(
struct iseq_catch_table) +
191 (n - 1) *
sizeof(
struct iseq_catch_table_entry));
194 #define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512) 204 #define SIZEOF_ISEQ_COMPILE_DATA_STORAGE \ 205 (sizeof(struct iseq_compile_data_storage) - 1)
void rb_fatal(const char *fmt,...)
PACKED_STRUCT_UNALIGNED(struct iseq_catch_table { unsigned int size;struct iseq_catch_table_entry entries[1];})
VALUE rb_iseqw_line_trace_all(VALUE iseqval)
void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE args, VALUE exception, VALUE body)
const rb_iseq_t * rb_method_iseq(VALUE body)
unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos)
const rb_iseq_t * rb_proc_get_iseq(VALUE proc, int *is_proc)
VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0)
struct iseq_compile_data_storage * storage_head
unsigned int operands_unification
struct st_table * ruby_insn_make_insn_table(void)
const rb_iseq_t * iseq_ibf_load(VALUE str)
VALUE rb_ary_push(VALUE ary, VALUE item)
const rb_iseq_t * current_block
VALUE rb_iseq_local_variables(const rb_iseq_t *iseq)
VALUE rb_ary_tmp_new(long capa)
struct iseq_label_data * start_label
struct iseq_compile_data_storage * next
VALUE rb_iseq_base_label(const rb_iseq_t *iseq)
struct iseq_compile_data_ensure_node_stack * ensure_node_stack
VALUE rb_str_tmp_new(long)
VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq)
VALUE rb_iseq_method_name(const rb_iseq_t *iseq)
const rb_compile_option_t * option
VALUE iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt)
const VALUE catch_table_ary
struct rb_id_table * ivar_cache_table
VALUE rb_iseqw_new(const rb_iseq_t *iseq)
unsigned int trace_instruction
VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
unsigned int specialized_instruction
void rb_iseq_make_compile_option(struct rb_compile_option_struct *option, VALUE opt)
VALUE rb_iseqw_line_trace_specify(VALUE iseqval, VALUE pos, VALUE set)
VALUE rb_iseq_defined_string(enum defined_type type)
rb_atomic_t cnt[RUBY_NSIG]
unsigned int tailcall_optimization
unsigned int frozen_string_literal
void ibf_load_iseq_complete(rb_iseq_t *iseq)
VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt)
unsigned int instructions_unification
unsigned int coverage_enabled
const rb_iseq_t * rb_iseqw_to_iseq(VALUE iseqw)
#define RUBY_SYMBOL_EXPORT_END
VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq)
struct iseq_label_data * redo_label
unsigned int peephole_optimization
void rb_iseq_add_mark_object(const rb_iseq_t *iseq, VALUE obj)
#define RUBY_SYMBOL_EXPORT_BEGIN
VALUE * rb_iseq_original_iseq(const rb_iseq_t *iseq)
#define RARRAY_ASET(a, i, v)
#define RARRAY_AREF(a, i)
struct iseq_compile_data_storage * storage_current
#define ISEQ_FLIP_CNT(iseq)
RUBY_SYMBOL_EXPORT_BEGIN VALUE rb_iseq_compile_node(rb_iseq_t *iseq, NODE *node)
VALUE rb_iseq_label(const rb_iseq_t *iseq)
unsigned int inline_const_cache
unsigned int stack_caching
int rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
struct iseq_label_data * end_label
unsigned int debug_frozen_string_literal
#define ISEQ_MARK_ARY(iseq)
VALUE iseq_ibf_load_extra_data(VALUE str)
int rb_iseqw_line_trace_each(VALUE iseqval, int(*func)(int line, rb_event_flag_t *events_ptr, void *d), void *data)