Ruby
2.7.0p0(2019-12-25revision647ee6f091eafcce70ffb75ddf7e121e192ab217)
|
#include "ruby/encoding.h"
#include "ruby/re.h"
#include "ruby/util.h"
#include "internal.h"
#include "encindex.h"
#include <math.h>
#include "vm_core.h"
#include "vm_debug.h"
#include "builtin.h"
#include "iseq.h"
#include "insns.inc"
#include "insns_info.inc"
#include "id_table.h"
#include "gc.h"
#include "optinsn.inc"
Go to the source code of this file.
Data Structures | |
struct | iseq_link_element |
struct | iseq_link_anchor |
struct | iseq_label_data |
struct | iseq_insn_data |
struct | iseq_adjust_data |
struct | iseq_trace_data |
struct | ensure_range |
struct | iseq_compile_data_ensure_node_stack |
struct | cdhash_set_label_struct |
struct | accessor_args |
struct | ibf_header |
struct | ibf_dump_buffer |
struct | ibf_dump |
struct | ibf_load_buffer |
struct | ibf_load |
struct | ibf_object_header |
struct | ibf_object_regexp |
struct | ibf_object_hash |
struct | ibf_object_struct_range |
struct | ibf_object_bignum |
struct | ibf_object_complex_rational |
struct | ibf_object_symbol |
Macros | |
#define | RUBY_UNTYPED_DATA_WARNING 0 |
#define | FIXNUM_INC(n, i) ((n)+(INT2FIX(i)&~FIXNUM_FLAG)) |
#define | FIXNUM_OR(n, i) ((n)|INT2FIX(i)) |
#define | CPDEBUG 0 |
debug function(macro) interface depend on CPDEBUG if it is less than 0, runtime option is in effect. More... | |
#define | compile_debug CPDEBUG |
#define | debugi(header, id) ((void)0) |
#define | debugp(header, value) ((void)0) |
#define | debugp_verbose(header, value) ((void)0) |
#define | debugp_verbose_node(header, value) ((void)0) |
#define | debugp_param(header, value) ((void)0) |
#define | debug_node_start(node) ((void)0) |
#define | debug_node_end() ((void)0) |
#define | debugs if(0)printf |
#define | debug_compile(msg, v) (v) |
#define | LVAR_ERRINFO (1) |
#define | NEW_LABEL(l) new_label_body(iseq, (l)) |
#define | LABEL_FORMAT "<L%03d>" |
#define | NEW_ISEQ(node, name, type, line_no) new_child_iseq(iseq, (node), rb_fstring(name), 0, (type), (line_no)) |
#define | NEW_CHILD_ISEQ(node, name, type, line_no) new_child_iseq(iseq, (node), rb_fstring(name), iseq, (type), (line_no)) |
#define | ADD_SEQ(seq1, seq2) APPEND_LIST((seq1), (seq2)) |
#define | ADD_INSN(seq, line, insn) ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0)) |
#define | INSERT_BEFORE_INSN(next, line, insn) ELEM_INSERT_PREV(&(next)->link, (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0)) |
#define | INSERT_AFTER_INSN(prev, line, insn) ELEM_INSERT_NEXT(&(prev)->link, (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0)) |
#define | ADD_INSN1(seq, line, insn, op1) |
#define | INSERT_BEFORE_INSN1(next, line, insn, op1) |
#define | INSERT_AFTER_INSN1(prev, line, insn, op1) |
#define | LABEL_REF(label) ((label)->refcnt++) |
#define | ADD_INSNL(seq, line, insn, label) (ADD_INSN1(seq, line, insn, label), LABEL_REF(label)) |
#define | ADD_INSN2(seq, line, insn, op1, op2) |
#define | ADD_INSN3(seq, line, insn, op1, op2, op3) |
#define | ADD_SEND(seq, line, id, argc) ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)INT2FIX(0), NULL) |
#define | ADD_SEND_WITH_FLAG(seq, line, id, argc, flag) ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)(flag), NULL) |
#define | ADD_SEND_WITH_BLOCK(seq, line, id, argc, block) ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(0), NULL) |
#define | ADD_CALL_RECEIVER(seq, line) ADD_INSN((seq), (line), putself) |
#define | ADD_CALL(seq, line, id, argc) ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)INT2FIX(VM_CALL_FCALL), NULL) |
#define | ADD_CALL_WITH_BLOCK(seq, line, id, argc, block) ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(VM_CALL_FCALL), NULL) |
#define | ADD_SEND_R(seq, line, id, argc, block, flag, keywords) ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_send(iseq, (line), (id), (VALUE)(argc), (block), (VALUE)(flag), (keywords))) |
#define | ADD_TRACE(seq, event) ADD_ELEM((seq), (LINK_ELEMENT *)new_trace_body(iseq, (event), 0)) |
#define | ADD_TRACE_WITH_DATA(seq, event, data) ADD_ELEM((seq), (LINK_ELEMENT *)new_trace_body(iseq, (event), (data))) |
#define | DECL_BRANCH_BASE(branches, first_line, first_column, last_line, last_column, type) |
#define | ADD_TRACE_BRANCH_COVERAGE(seq, first_line, first_column, last_line, last_column, type, branches) |
#define | ADD_GETLOCAL(seq, line, idx, level) iseq_add_getlocal(iseq, (seq), (line), (idx), (level)) |
#define | ADD_SETLOCAL(seq, line, idx, level) iseq_add_setlocal(iseq, (seq), (line), (idx), (level)) |
#define | ADD_LABEL(seq, label) ADD_ELEM((seq), (LINK_ELEMENT *) (label)) |
#define | APPEND_LABEL(seq, before, label) APPEND_ELEM((seq), (before), (LINK_ELEMENT *) (label)) |
#define | ADD_ADJUST(seq, line, label) ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), (line))) |
#define | ADD_ADJUST_RESTORE(seq, label) ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), -1)) |
#define | LABEL_UNREMOVABLE(label) ((label) ? (LABEL_REF(label), (label)->unremovable=1) : 0) |
#define | ADD_CATCH_ENTRY(type, ls, le, iseqv, lc) |
#define | COMPILE(anchor, desc, node) |
#define | COMPILE_POPPED(anchor, desc, node) |
#define | COMPILE_(anchor, desc, node, popped) |
#define | COMPILE_RECV(anchor, desc, node) |
#define | OPERAND_AT(insn, idx) (((INSN*)(insn))->operands[(idx)]) |
#define | INSN_OF(insn) (((INSN*)(insn))->insn_id) |
#define | IS_INSN(link) ((link)->type == ISEQ_ELEMENT_INSN) |
#define | IS_LABEL(link) ((link)->type == ISEQ_ELEMENT_LABEL) |
#define | IS_ADJUST(link) ((link)->type == ISEQ_ELEMENT_ADJUST) |
#define | IS_TRACE(link) ((link)->type == ISEQ_ELEMENT_TRACE) |
#define | IS_INSN_ID(iobj, insn) (INSN_OF(iobj) == BIN(insn)) |
#define | IS_NEXT_INSN_ID(link, insn) ((link)->next && IS_INSN((link)->next) && IS_INSN_ID((link)->next, insn)) |
#define | COMPILE_ERROR append_compile_error |
#define | ERROR_ARGS_AT(n) iseq, nd_line(n), |
#define | ERROR_ARGS ERROR_ARGS_AT(node) |
#define | EXPECT_NODE(prefix, node, ndtype, errval) |
#define | EXPECT_NODE_NONULL(prefix, parent, ndtype, errval) |
#define | UNKNOWN_NODE(prefix, node, errval) |
#define | COMPILE_OK 1 |
#define | COMPILE_NG 0 |
#define | CHECK(sub) if (!(sub)) {BEFORE_RETURN;return COMPILE_NG;} |
#define | NO_CHECK(sub) (void)(sub) |
#define | BEFORE_RETURN |
#define | DECL_ANCHOR(name) LINK_ANCHOR name[1] = {{{ISEQ_ELEMENT_ANCHOR,},}} |
#define | INIT_ANCHOR(name) (name->last = &name->anchor) |
#define | ISEQ_ARG |
#define | ISEQ_ARG_DECLARE |
#define | ISEQ_LAST_LINE(iseq) (ISEQ_COMPILE_DATA(iseq)->last_line) |
#define | INVALID_ISEQ_TYPE(type) ISEQ_TYPE_##type: m = #type; goto invalid_iseq_type |
#define | PADDING_SIZE_MAX 0 |
#define | debug_list(anc) ((void)0) |
#define | BADINSN_DUMP(anchor, list, dest) dump_disasm_list_with_cursor(FIRST_ELEMENT(anchor), list, dest) |
#define | BADINSN_ERROR |
#define | SP_INSN(opt) insn_set_specialized_instruction(iseq, iobj, BIN(opt_##opt)) |
#define | FLUSH_CHUNK(newarrayinsn) |
#define | FLUSH_CHUNK() |
#define | MEMORY(v) |
#define | BEFORE_RETURN debug_node_end() |
#define | rb_intern(str) rb_intern_const(str) |
#define | CHECK_EVENT(ev) if (sym == ID2SYM(rb_intern(#ev))) return ev; |
#define | CHECK_ARRAY(v) rb_to_array_type(v) |
#define | CHECK_SYMBOL(v) rb_to_symbol_type(v) |
#define | SYM(s) ID2SYM(rb_intern(#s)) |
#define | SYM(s) ID2SYM(rb_intern(#s)) |
#define | INT_PARAM(F) int_param(&iseq->body->param.F, params, SYM(F)) |
#define | INT_PARAM(F) F = (int_param(&x, misc, SYM(F)) ? (unsigned int)x : 0) |
#define | IBF_ISEQ_DEBUG 0 |
#define | IBF_ISEQ_ENABLE_LOCAL_BUFFER 0 |
#define | IBF_OFFSET(ptr) ((ibf_offset_t)(VALUE)(ptr)) |
#define | IBF_MAJOR_VERSION ISEQ_MAJOR_VERSION |
#define | IBF_MINOR_VERSION ISEQ_MINOR_VERSION |
#define | IBF_W_ALIGN(type) (RUBY_ALIGNOF(type) > 1 ? ibf_dump_align(dump, RUBY_ALIGNOF(type)) : (void)0) |
#define | IBF_W(b, type, n) (IBF_W_ALIGN(type), (type *)(VALUE)IBF_WP(b, type, n)) |
#define | IBF_WV(variable) ibf_dump_write(dump, &(variable), sizeof(variable)) |
#define | IBF_WP(b, type, n) ibf_dump_write(dump, (b), sizeof(type) * (n)) |
#define | IBF_R(val, type, n) (type *)ibf_load_alloc(load, IBF_OFFSET(val), sizeof(type), (n)) |
#define | IBF_ZERO(variable) memset(&(variable), 0, sizeof(variable)) |
#define | IBF_BODY_OFFSET(x) (body_offset - (x)) |
#define | IBF_BODY_OFFSET(x) (offset - (x)) |
#define | IBF_OBJECT_INTERNAL FL_PROMOTED0 |
#define | IBF_ALIGNED_OFFSET(align, offset) |
#define | IBF_OBJBODY(type, offset) |
Typedefs | |
typedef struct iseq_link_element | LINK_ELEMENT |
typedef struct iseq_link_anchor | LINK_ANCHOR |
typedef struct iseq_label_data | LABEL |
typedef struct iseq_insn_data | INSN |
typedef struct iseq_adjust_data | ADJUST |
typedef struct iseq_trace_data | TRACE |
typedef unsigned int | ibf_offset_t |
typedef void(* | ibf_dump_object_function) (struct ibf_dump *dump, VALUE obj) |
typedef VALUE(* | ibf_load_object_function) (const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset) |
Variables | |
const ID | rb_iseq_shared_exc_local_tbl [] = {idERROR_INFO} |
#define ADD_ADJUST | ( | seq, | |
line, | |||
label | |||
) | ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), (line))) |
#define ADD_ADJUST_RESTORE | ( | seq, | |
label | |||
) | ADD_ELEM((seq), (LINK_ELEMENT *) new_adjust_body(iseq, (label), -1)) |
#define ADD_CALL | ( | seq, | |
line, | |||
id, | |||
argc | |||
) | ADD_SEND_R((seq), (line), (id), (argc), NULL, (VALUE)INT2FIX(VM_CALL_FCALL), NULL) |
#define ADD_CALL_RECEIVER | ( | seq, | |
line | |||
) | ADD_INSN((seq), (line), putself) |
#define ADD_CALL_WITH_BLOCK | ( | seq, | |
line, | |||
id, | |||
argc, | |||
block | |||
) | ADD_SEND_R((seq), (line), (id), (argc), (block), (VALUE)INT2FIX(VM_CALL_FCALL), NULL) |
#define ADD_CATCH_ENTRY | ( | type, | |
ls, | |||
le, | |||
iseqv, | |||
lc | |||
) |
#define ADD_GETLOCAL | ( | seq, | |
line, | |||
idx, | |||
level | |||
) | iseq_add_getlocal(iseq, (seq), (line), (idx), (level)) |
#define ADD_INSN | ( | seq, | |
line, | |||
insn | |||
) | ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0)) |
#define ADD_INSN1 | ( | seq, | |
line, | |||
insn, | |||
op1 | |||
) |
#define ADD_INSN2 | ( | seq, | |
line, | |||
insn, | |||
op1, | |||
op2 | |||
) |
#define ADD_INSN3 | ( | seq, | |
line, | |||
insn, | |||
op1, | |||
op2, | |||
op3 | |||
) |
#define ADD_LABEL | ( | seq, | |
label | |||
) | ADD_ELEM((seq), (LINK_ELEMENT *) (label)) |
#define ADD_SEQ | ( | seq1, | |
seq2 | |||
) | APPEND_LIST((seq1), (seq2)) |
#define ADD_SETLOCAL | ( | seq, | |
line, | |||
idx, | |||
level | |||
) | iseq_add_setlocal(iseq, (seq), (line), (idx), (level)) |
#define ADD_TRACE | ( | seq, | |
event | |||
) | ADD_ELEM((seq), (LINK_ELEMENT *)new_trace_body(iseq, (event), 0)) |
#define ADD_TRACE_BRANCH_COVERAGE | ( | seq, | |
first_line, | |||
first_column, | |||
last_line, | |||
last_column, | |||
type, | |||
branches | |||
) |
#define ADD_TRACE_WITH_DATA | ( | seq, | |
event, | |||
data | |||
) | ADD_ELEM((seq), (LINK_ELEMENT *)new_trace_body(iseq, (event), (data))) |
#define APPEND_LABEL | ( | seq, | |
before, | |||
label | |||
) | APPEND_ELEM((seq), (before), (LINK_ELEMENT *) (label)) |
#define BADINSN_ERROR |
#define BEFORE_RETURN debug_node_end() |
#define CHECK | ( | sub | ) | if (!(sub)) {BEFORE_RETURN;return COMPILE_NG;} |
#define CHECK_ARRAY | ( | v | ) | rb_to_array_type(v) |
#define CHECK_SYMBOL | ( | v | ) | rb_to_symbol_type(v) |
#define COMPILE | ( | anchor, | |
desc, | |||
node | |||
) |
#define COMPILE_ | ( | anchor, | |
desc, | |||
node, | |||
popped | |||
) |
#define COMPILE_POPPED | ( | anchor, | |
desc, | |||
node | |||
) |
#define COMPILE_RECV | ( | anchor, | |
desc, | |||
node | |||
) |
#define CPDEBUG 0 |
#define DECL_ANCHOR | ( | name | ) | LINK_ANCHOR name[1] = {{{ISEQ_ELEMENT_ANCHOR,},}} |
#define DECL_BRANCH_BASE | ( | branches, | |
first_line, | |||
first_column, | |||
last_line, | |||
last_column, | |||
type | |||
) |
#define ERROR_ARGS ERROR_ARGS_AT(node) |
#define EXPECT_NODE | ( | prefix, | |
node, | |||
ndtype, | |||
errval | |||
) |
#define EXPECT_NODE_NONULL | ( | prefix, | |
parent, | |||
ndtype, | |||
errval | |||
) |
#define FLUSH_CHUNK | ( | ) |
#define FLUSH_CHUNK | ( | newarrayinsn | ) |
#define IBF_ALIGNED_OFFSET | ( | align, | |
offset | |||
) |
#define IBF_BODY_OFFSET | ( | x | ) | (body_offset - (x)) |
#define IBF_BODY_OFFSET | ( | x | ) | (offset - (x)) |
#define IBF_MAJOR_VERSION ISEQ_MAJOR_VERSION |
#define IBF_MINOR_VERSION ISEQ_MINOR_VERSION |
#define IBF_OBJBODY | ( | type, | |
offset | |||
) |
#define IBF_OBJECT_INTERNAL FL_PROMOTED0 |
#define IBF_R | ( | val, | |
type, | |||
n | |||
) | (type *)ibf_load_alloc(load, IBF_OFFSET(val), sizeof(type), (n)) |
#define IBF_W | ( | b, | |
type, | |||
n | |||
) | (IBF_W_ALIGN(type), (type *)(VALUE)IBF_WP(b, type, n)) |
#define IBF_W_ALIGN | ( | type | ) | (RUBY_ALIGNOF(type) > 1 ? ibf_dump_align(dump, RUBY_ALIGNOF(type)) : (void)0) |
#define IBF_WV | ( | variable | ) | ibf_dump_write(dump, &(variable), sizeof(variable)) |
#define IBF_ZERO | ( | variable | ) | memset(&(variable), 0, sizeof(variable)) |
#define INSERT_AFTER_INSN | ( | prev, | |
line, | |||
insn | |||
) | ELEM_INSERT_NEXT(&(prev)->link, (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0)) |
#define INSERT_AFTER_INSN1 | ( | prev, | |
line, | |||
insn, | |||
op1 | |||
) |
#define INSERT_BEFORE_INSN | ( | next, | |
line, | |||
insn | |||
) | ELEM_INSERT_PREV(&(next)->link, (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0)) |
#define INSERT_BEFORE_INSN1 | ( | next, | |
line, | |||
insn, | |||
op1 | |||
) |
#define INVALID_ISEQ_TYPE | ( | type | ) | ISEQ_TYPE_##type: m = #type; goto invalid_iseq_type |
#define LABEL_UNREMOVABLE | ( | label | ) | ((label) ? (LABEL_REF(label), (label)->unremovable=1) : 0) |
#define MEMORY | ( | v | ) |
#define NEW_CHILD_ISEQ | ( | node, | |
name, | |||
type, | |||
line_no | |||
) | new_child_iseq(iseq, (node), rb_fstring(name), iseq, (type), (line_no)) |
#define NEW_ISEQ | ( | node, | |
name, | |||
type, | |||
line_no | |||
) | new_child_iseq(iseq, (node), rb_fstring(name), 0, (type), (line_no)) |
#define OPERAND_AT | ( | insn, | |
idx | |||
) | (((INSN*)(insn))->operands[(idx)]) |
#define rb_intern | ( | str | ) | rb_intern_const(str) |
#define UNKNOWN_NODE | ( | prefix, | |
node, | |||
errval | |||
) |
typedef struct iseq_adjust_data ADJUST |
typedef VALUE(* ibf_load_object_function) (const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset) |
typedef unsigned int ibf_offset_t |
typedef struct iseq_insn_data INSN |
typedef struct iseq_label_data LABEL |
typedef struct iseq_link_anchor LINK_ANCHOR |
typedef struct iseq_link_element LINK_ELEMENT |
typedef struct iseq_trace_data TRACE |
enum ibf_object_data_type |
enum LABEL_RESCUE_TYPE |
Referenced by rb_iseq_new_with_callback(), and rb_iseq_new_with_opt().
NORETURN | ( | static void | ibf_dump_object_unsupportedstruct ibf_dump *dump, VALUE obj | ) |
Definition at line 9356 of file compile.c.
References rb_iseq_struct::body, i, iseq, rb_iseq_constant_body::ISEQ_TYPE_BLOCK, rb_iseq_constant_body::ISEQ_TYPE_ENSURE, rb_iseq_constant_body::ISEQ_TYPE_EVAL, rb_iseq_constant_body::ISEQ_TYPE_MAIN, rb_iseq_constant_body::ISEQ_TYPE_RESCUE, rb_iseq_constant_body::local_table, rb_iseq_constant_body::local_table_size, rb_iseq_constant_body::parent_iseq, and rb_iseq_constant_body::type.
Definition at line 11436 of file compile.c.
References rb_iseq_struct::aux, ibf_load::iseq, iseq, rb_iseq_struct::loader, and RTYPEDDATA_DATA.
Definition at line 8767 of file compile.c.
References i, rb_ary_new_capa(), rb_ary_push(), rb_fstring_cstr, rb_obj_freeze(), and VM_INSTRUCTION_SIZE.
void rb_iseq_build_from_ary | ( | rb_iseq_t * | iseq, |
VALUE | misc, | ||
VALUE | locals, | ||
VALUE | params, | ||
VALUE | exception, | ||
VALUE | body | ||
) |
Definition at line 9249 of file compile.c.
References ALLOC_N, rb_iseq_struct::body, CHECK_SYMBOL, Data_Wrap_Struct, DECL_ANCHOR, FIX2LONG, FIXNUM_P, rb_iseq_constant_body::flags, i, ID2SYM, INIT_ANCHOR, INT_PARAM, iseq, len, local_size, rb_iseq_constant_body::local_table, rb_iseq_constant_body::local_table_size, NULL, rb_iseq_constant_body::param, RARRAY_AREF, RARRAY_LENINT, rb_hash_aref(), rb_intern, rb_mark_set(), RB_TYPE_P, st_free_table(), st_init_numtable(), SYM, SYM2ID, T_ARRAY, and TRUE.
VALUE rb_iseq_compile_callback | ( | rb_iseq_t * | iseq, |
const struct rb_iseq_new_with_callback_callback_func * | ifunc | ||
) |
Definition at line 630 of file compile.c.
References ADD_INSN, rb_iseq_new_with_callback_callback_func::data, DECL_ANCHOR, rb_iseq_new_with_callback_callback_func::func, INIT_ANCHOR, and iseq.
Definition at line 644 of file compile.c.
References DECL_ANCHOR, and INIT_ANCHOR.
Definition at line 11378 of file compile.c.
References rb_iseq_struct::body, iseq, ISEQ_COVERAGE, rb_iseq_constant_body::local_iseq, NULL, rb_iseq_constant_body::parent_iseq, rb_eRuntimeError, rb_raise(), RTEST, str, and TypedData_Make_Struct.
Definition at line 11602 of file compile.c.
References iseq, ibf_load::loader_obj, and TypedData_Make_Struct.
Definition at line 11616 of file compile.c.
References iseq, ibf_load::loader_obj, and TypedData_Make_Struct.
Definition at line 11630 of file compile.c.
References ibf_load::loader_obj, and TypedData_Make_Struct.
void rb_iseq_mark_insn_storage | ( | struct iseq_compile_data_storage * | storage | ) |
Definition at line 9197 of file compile.c.
References iseq_compile_data_storage::buff, if(), iseq_insn_data::insn_id, int, iseq_compile_data_storage::next, OPERAND_AT, iseq_insn_data::operands, iseq_compile_data_storage::pos, rb_gc_mark(), size, iseq_compile_data_storage::size, SPECIAL_CONST_P, and types.
Definition at line 778 of file compile.c.
Referenced by rb_vmdebug_debug_print_pre().
Definition at line 9381 of file compile.c.
References rb_iseq_struct::body, i, iseq, rb_iseq_constant_body::local_iseq, rb_iseq_constant_body::local_table, and rb_iseq_constant_body::local_table_size.
const rb_iseq_t* rb_method_for_self_aref | ( | VALUE | name, |
VALUE | arg, | ||
rb_insn_func_t | func | ||
) |
const rb_iseq_t* rb_method_for_self_aset | ( | VALUE | name, |
VALUE | arg, | ||
rb_insn_func_t | func | ||
) |
Definition at line 4288 of file compile.c.
References FIXABLE, LONG2FIX, modf(), nd_type, NODE_FALSE, NODE_LIT, NODE_NIL, NODE_STR, NODE_TRUE, Qfalse, Qnil, Qtrue, Qundef, rb_cNumeric, rb_dbl2big(), rb_fstring(), rb_obj_is_kind_of(), RB_TYPE_P, RFLOAT_VALUE, SYMBOL_P, T_FLOAT, and v.
const ID rb_iseq_shared_exc_local_tbl[] = {idERROR_INFO} |
Definition at line 110 of file compile.c.
Referenced by rb_iseq_free().