File: //usr/local/rvm/src/ruby-2.5.9/vm.inc
/* -*-c-*- *********************************************************/
/*******************************************************************/
/*******************************************************************/
/**
This file is VM main loop.
----
This file is auto generated by insns2vm.rb
DO NOT TOUCH!
If you want to fix something, you must edit 'insns.def'
*/
INSN_ENTRY(nop){START_OF_ORIGINAL_INSN(nop);
{
DEBUG_ENTER_INSN("nop");
ADD_PC(1+0);
PREFETCH(GET_PC());
#define CURRENT_INSN_nop 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_nop_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(nop));
{
#line 40 "insns.def"
/* none */
#line 32 "vm.inc"
#undef CURRENT_INSN_nop
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(nop);}}}
INSN_ENTRY(getlocal){START_OF_ORIGINAL_INSN(getlocal);
{
VALUE val;
rb_num_t level = (rb_num_t)GET_OPERAND(2);
lindex_t idx = (lindex_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("getlocal");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_getlocal 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getlocal_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getlocal));
COLLECT_USAGE_OPERAND(BIN(getlocal), 0, idx);
COLLECT_USAGE_OPERAND(BIN(getlocal), 1, level);
{
#line 60 "insns.def"
val = *(vm_get_ep(GET_EP(), level) - idx);
RB_DEBUG_COUNTER_INC(lvar_get);
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
#line 60 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_getlocal
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getlocal);}}}
INSN_ENTRY(setlocal){START_OF_ORIGINAL_INSN(setlocal);
{
rb_num_t level = (rb_num_t)GET_OPERAND(2);
lindex_t idx = (lindex_t)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("setlocal");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setlocal 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setlocal_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setlocal));
COLLECT_USAGE_OPERAND(BIN(setlocal), 0, idx);
COLLECT_USAGE_OPERAND(BIN(setlocal), 1, level);
{
#line 78 "insns.def"
vm_env_write(vm_get_ep(GET_EP(), level), -(int)idx, val);
RB_DEBUG_COUNTER_INC(lvar_set);
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
#line 90 "vm.inc"
#undef CURRENT_INSN_setlocal
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setlocal);}}}
INSN_ENTRY(getblockparam){START_OF_ORIGINAL_INSN(getblockparam);
{
VALUE val;
rb_num_t level = (rb_num_t)GET_OPERAND(2);
lindex_t idx = (lindex_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("getblockparam");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_getblockparam 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getblockparam_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getblockparam));
COLLECT_USAGE_OPERAND(BIN(getblockparam), 0, idx);
COLLECT_USAGE_OPERAND(BIN(getblockparam), 1, level);
{
#line 94 "insns.def"
const VALUE *ep = vm_get_ep(GET_EP(), level);
VM_ASSERT(VM_ENV_LOCAL_P(ep));
if (!VM_ENV_FLAGS(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM)) {
val = rb_vm_bh_to_procval(ec, VM_ENV_BLOCK_HANDLER(ep));
vm_env_write(ep, -(int)idx, val);
VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);
}
else {
val = *(ep - idx);
RB_DEBUG_COUNTER_INC(lvar_get);
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
}
#line 128 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_getblockparam
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getblockparam);}}}
INSN_ENTRY(setblockparam){START_OF_ORIGINAL_INSN(setblockparam);
{
rb_num_t level = (rb_num_t)GET_OPERAND(2);
lindex_t idx = (lindex_t)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("setblockparam");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setblockparam 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setblockparam_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setblockparam));
COLLECT_USAGE_OPERAND(BIN(setblockparam), 0, idx);
COLLECT_USAGE_OPERAND(BIN(setblockparam), 1, level);
{
#line 120 "insns.def"
const VALUE *ep = vm_get_ep(GET_EP(), level);
VM_ASSERT(VM_ENV_LOCAL_P(ep));
vm_env_write(ep, -(int)idx, val);
RB_DEBUG_COUNTER_INC(lvar_set);
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);
#line 163 "vm.inc"
#undef CURRENT_INSN_setblockparam
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setblockparam);}}}
INSN_ENTRY(getspecial){START_OF_ORIGINAL_INSN(getspecial);
{
VALUE val;
rb_num_t type = (rb_num_t)GET_OPERAND(2);
rb_num_t key = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("getspecial");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_getspecial 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getspecial_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getspecial));
COLLECT_USAGE_OPERAND(BIN(getspecial), 0, key);
COLLECT_USAGE_OPERAND(BIN(getspecial), 1, type);
{
#line 141 "insns.def"
val = vm_getspecial(ec, GET_LEP(), key, type);
#line 189 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_getspecial
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getspecial);}}}
INSN_ENTRY(setspecial){START_OF_ORIGINAL_INSN(setspecial);
{
rb_num_t key = (rb_num_t)GET_OPERAND(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("setspecial");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setspecial 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setspecial_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setspecial));
COLLECT_USAGE_OPERAND(BIN(setspecial), 0, key);
{
#line 155 "insns.def"
lep_svar_set(ec, GET_LEP(), key, obj);
#line 215 "vm.inc"
#undef CURRENT_INSN_setspecial
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setspecial);}}}
INSN_ENTRY(getinstancevariable){START_OF_ORIGINAL_INSN(getinstancevariable);
{
VALUE val;
IC ic = (IC)GET_OPERAND(2);
ID id = (ID)GET_OPERAND(1);
DEBUG_ENTER_INSN("getinstancevariable");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_getinstancevariable 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getinstancevariable_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getinstancevariable));
COLLECT_USAGE_OPERAND(BIN(getinstancevariable), 0, id);
COLLECT_USAGE_OPERAND(BIN(getinstancevariable), 1, ic);
{
#line 169 "insns.def"
val = vm_getinstancevariable(GET_SELF(), id, ic);
#line 241 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_getinstancevariable
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getinstancevariable);}}}
INSN_ENTRY(setinstancevariable){START_OF_ORIGINAL_INSN(setinstancevariable);
{
IC ic = (IC)GET_OPERAND(2);
ID id = (ID)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("setinstancevariable");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setinstancevariable 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setinstancevariable_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setinstancevariable));
COLLECT_USAGE_OPERAND(BIN(setinstancevariable), 0, id);
COLLECT_USAGE_OPERAND(BIN(setinstancevariable), 1, ic);
{
#line 183 "insns.def"
vm_setinstancevariable(GET_SELF(), id, val, ic);
#line 269 "vm.inc"
#undef CURRENT_INSN_setinstancevariable
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setinstancevariable);}}}
INSN_ENTRY(getclassvariable){START_OF_ORIGINAL_INSN(getclassvariable);
{
VALUE val;
ID id = (ID)GET_OPERAND(1);
DEBUG_ENTER_INSN("getclassvariable");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_getclassvariable 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getclassvariable_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getclassvariable));
COLLECT_USAGE_OPERAND(BIN(getclassvariable), 0, id);
{
#line 197 "insns.def"
val = rb_cvar_get(vm_get_cvar_base(rb_vm_get_cref(GET_EP()), GET_CFP()), id);
#line 293 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_getclassvariable
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getclassvariable);}}}
INSN_ENTRY(setclassvariable){START_OF_ORIGINAL_INSN(setclassvariable);
{
ID id = (ID)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("setclassvariable");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setclassvariable 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setclassvariable_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setclassvariable));
COLLECT_USAGE_OPERAND(BIN(setclassvariable), 0, id);
{
#line 211 "insns.def"
vm_ensure_not_refinement_module(GET_SELF());
rb_cvar_set(vm_get_cvar_base(rb_vm_get_cref(GET_EP()), GET_CFP()), id, val);
#line 320 "vm.inc"
#undef CURRENT_INSN_setclassvariable
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setclassvariable);}}}
INSN_ENTRY(getconstant){START_OF_ORIGINAL_INSN(getconstant);
{
VALUE val;
ID id = (ID)GET_OPERAND(1);
VALUE klass = TOPN(0);
DEBUG_ENTER_INSN("getconstant");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_getconstant 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getconstant_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getconstant));
COLLECT_USAGE_OPERAND(BIN(getconstant), 0, id);
{
#line 233 "insns.def"
val = vm_get_ev_const(ec, klass, id, 0);
#line 345 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_getconstant
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getconstant);}}}
INSN_ENTRY(setconstant){START_OF_ORIGINAL_INSN(setconstant);
{
ID id = (ID)GET_OPERAND(1);
VALUE val = TOPN(1);
VALUE cbase = TOPN(0);
DEBUG_ENTER_INSN("setconstant");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_setconstant 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setconstant_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setconstant));
COLLECT_USAGE_OPERAND(BIN(setconstant), 0, id);
{
#line 255 "insns.def"
vm_check_if_namespace(cbase);
vm_ensure_not_refinement_module(GET_SELF());
rb_const_set(cbase, id, val);
#line 374 "vm.inc"
#undef CURRENT_INSN_setconstant
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setconstant);}}}
INSN_ENTRY(getglobal){START_OF_ORIGINAL_INSN(getglobal);
{
VALUE val;
GENTRY entry = (GENTRY)GET_OPERAND(1);
DEBUG_ENTER_INSN("getglobal");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_getglobal 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getglobal_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getglobal));
COLLECT_USAGE_OPERAND(BIN(getglobal), 0, entry);
{
#line 271 "insns.def"
val = GET_GLOBAL((VALUE)entry);
#line 398 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_getglobal
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getglobal);}}}
INSN_ENTRY(setglobal){START_OF_ORIGINAL_INSN(setglobal);
{
GENTRY entry = (GENTRY)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("setglobal");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setglobal 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setglobal_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setglobal));
COLLECT_USAGE_OPERAND(BIN(setglobal), 0, entry);
{
#line 285 "insns.def"
SET_GLOBAL((VALUE)entry, val);
#line 424 "vm.inc"
#undef CURRENT_INSN_setglobal
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setglobal);}}}
INSN_ENTRY(putnil){START_OF_ORIGINAL_INSN(putnil);
{
VALUE val;
DEBUG_ENTER_INSN("putnil");
ADD_PC(1+0);
PREFETCH(GET_PC());
#define CURRENT_INSN_putnil 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_putnil_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(putnil));
{
#line 304 "insns.def"
val = Qnil;
#line 447 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_putnil
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(putnil);}}}
INSN_ENTRY(putself){START_OF_ORIGINAL_INSN(putself);
{
VALUE val;
DEBUG_ENTER_INSN("putself");
ADD_PC(1+0);
PREFETCH(GET_PC());
#define CURRENT_INSN_putself 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_putself_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(putself));
{
#line 318 "insns.def"
val = GET_SELF();
#line 472 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_putself
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(putself);}}}
INSN_ENTRY(putobject){START_OF_ORIGINAL_INSN(putobject);
{
VALUE val = (VALUE)GET_OPERAND(1);
DEBUG_ENTER_INSN("putobject");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_putobject 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_putobject_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(putobject));
COLLECT_USAGE_OPERAND(BIN(putobject), 0, val);
{
#line 334 "insns.def"
/* */
#line 497 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_putobject
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(putobject);}}}
INSN_ENTRY(putspecialobject){START_OF_ORIGINAL_INSN(putspecialobject);
{
VALUE val;
rb_num_t value_type = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("putspecialobject");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_putspecialobject 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_putspecialobject_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(putspecialobject));
COLLECT_USAGE_OPERAND(BIN(putspecialobject), 0, value_type);
{
#line 349 "insns.def"
enum vm_special_object_type type;
type = (enum vm_special_object_type)value_type;
val = vm_get_special_object(GET_EP(), type);
#line 526 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_putspecialobject
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(putspecialobject);}}}
INSN_ENTRY(putiseq){START_OF_ORIGINAL_INSN(putiseq);
{
VALUE ret;
ISEQ iseq = (ISEQ)GET_OPERAND(1);
DEBUG_ENTER_INSN("putiseq");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_putiseq 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_putiseq_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(putiseq));
COLLECT_USAGE_OPERAND(BIN(putiseq), 0, iseq);
{
#line 366 "insns.def"
ret = (VALUE)iseq;
#line 552 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(ret);
#undef CURRENT_INSN_putiseq
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(putiseq);}}}
INSN_ENTRY(putstring){START_OF_ORIGINAL_INSN(putstring);
{
VALUE val;
VALUE str = (VALUE)GET_OPERAND(1);
DEBUG_ENTER_INSN("putstring");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_putstring 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_putstring_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(putstring));
COLLECT_USAGE_OPERAND(BIN(putstring), 0, str);
{
#line 380 "insns.def"
val = rb_str_resurrect(str);
#line 578 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_putstring
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(putstring);}}}
INSN_ENTRY(concatstrings){START_OF_ORIGINAL_INSN(concatstrings);
{
VALUE val;
rb_num_t num = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("concatstrings");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_concatstrings 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_concatstrings_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(concatstrings));
COLLECT_USAGE_OPERAND(BIN(concatstrings), 0, num);
{
#line 394 "insns.def"
val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));
POPN(num);
#line 605 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_concatstrings
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(concatstrings);}}}
INSN_ENTRY(tostring){START_OF_ORIGINAL_INSN(tostring);
{
VALUE val = TOPN(1);
VALUE str = TOPN(0);
DEBUG_ENTER_INSN("tostring");
ADD_PC(1+0);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_tostring 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_tostring_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(tostring));
{
#line 409 "insns.def"
VALUE rb_obj_as_string_result(VALUE str, VALUE obj);
val = rb_obj_as_string_result(str, val);
#line 632 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_tostring
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(tostring);}}}
INSN_ENTRY(freezestring){START_OF_ORIGINAL_INSN(freezestring);
{
VALUE debug_info = (VALUE)GET_OPERAND(1);
VALUE str = TOPN(0);
DEBUG_ENTER_INSN("freezestring");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_freezestring 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_freezestring_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(freezestring));
COLLECT_USAGE_OPERAND(BIN(freezestring), 0, debug_info);
{
#line 424 "insns.def"
vm_freezestring(str, debug_info);
#line 658 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(str);
#undef CURRENT_INSN_freezestring
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(freezestring);}}}
INSN_ENTRY(toregexp){START_OF_ORIGINAL_INSN(toregexp);
{
VALUE val;
rb_num_t cnt = (rb_num_t)GET_OPERAND(2);
rb_num_t opt = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("toregexp");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_toregexp 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_toregexp_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(toregexp));
COLLECT_USAGE_OPERAND(BIN(toregexp), 0, opt);
COLLECT_USAGE_OPERAND(BIN(toregexp), 1, cnt);
{
#line 440 "insns.def"
VALUE rb_reg_new_ary(VALUE ary, int options);
VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *);
const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));
POPN(cnt);
val = rb_reg_new_ary(ary, (int)opt);
rb_ary_clear(ary);
#line 691 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_toregexp
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(toregexp);}}}
INSN_ENTRY(intern){START_OF_ORIGINAL_INSN(intern);
{
VALUE sym;
VALUE str = TOPN(0);
DEBUG_ENTER_INSN("intern");
ADD_PC(1+0);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_intern 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_intern_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(intern));
{
#line 459 "insns.def"
sym = rb_str_intern(str);
#line 717 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(sym);
#undef CURRENT_INSN_intern
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(intern);}}}
INSN_ENTRY(newarray){START_OF_ORIGINAL_INSN(newarray);
{
VALUE val;
rb_num_t num = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("newarray");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_newarray 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_newarray_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(newarray));
COLLECT_USAGE_OPERAND(BIN(newarray), 0, num);
{
#line 473 "insns.def"
val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));
POPN(num);
#line 744 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_newarray
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(newarray);}}}
INSN_ENTRY(duparray){START_OF_ORIGINAL_INSN(duparray);
{
VALUE val;
VALUE ary = (VALUE)GET_OPERAND(1);
DEBUG_ENTER_INSN("duparray");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_duparray 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_duparray_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(duparray));
COLLECT_USAGE_OPERAND(BIN(duparray), 0, ary);
{
#line 488 "insns.def"
val = rb_ary_resurrect(ary);
#line 770 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_duparray
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(duparray);}}}
INSN_ENTRY(expandarray){START_OF_ORIGINAL_INSN(expandarray);
{
rb_num_t flag = (rb_num_t)GET_OPERAND(2);
rb_num_t num = (rb_num_t)GET_OPERAND(1);
VALUE ary = TOPN(0);
DEBUG_ENTER_INSN("expandarray");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_expandarray 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_expandarray_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(expandarray));
COLLECT_USAGE_OPERAND(BIN(expandarray), 0, num);
COLLECT_USAGE_OPERAND(BIN(expandarray), 1, flag);
{
#line 516 "insns.def"
vm_expandarray(GET_CFP(), ary, num, (int)flag);
#line 798 "vm.inc"
#undef CURRENT_INSN_expandarray
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(expandarray);}}}
INSN_ENTRY(concatarray){START_OF_ORIGINAL_INSN(concatarray);
{
VALUE ary;
VALUE ary1 = TOPN(1);
VALUE ary2 = TOPN(0);
DEBUG_ENTER_INSN("concatarray");
ADD_PC(1+0);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_concatarray 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_concatarray_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(concatarray));
{
#line 530 "insns.def"
ary = vm_concat_array(ary1, ary2);
#line 823 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(ary);
#undef CURRENT_INSN_concatarray
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(concatarray);}}}
INSN_ENTRY(splatarray){START_OF_ORIGINAL_INSN(splatarray);
{
VALUE obj;
VALUE flag = (VALUE)GET_OPERAND(1);
VALUE ary = TOPN(0);
DEBUG_ENTER_INSN("splatarray");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_splatarray 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_splatarray_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(splatarray));
COLLECT_USAGE_OPERAND(BIN(splatarray), 0, flag);
{
#line 544 "insns.def"
obj = vm_splat_array(flag, ary);
#line 850 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(obj);
#undef CURRENT_INSN_splatarray
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(splatarray);}}}
INSN_ENTRY(newhash){START_OF_ORIGINAL_INSN(newhash);
{
VALUE val;
rb_num_t num = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("newhash");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_newhash 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_newhash_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(newhash));
COLLECT_USAGE_OPERAND(BIN(newhash), 0, num);
{
#line 559 "insns.def"
RUBY_DTRACE_CREATE_HOOK(HASH, num);
val = rb_hash_new_with_size(num / 2);
if (num) {
rb_hash_bulk_insert(num, STACK_ADDR_FROM_TOP(num), val);
}
POPN(num);
#line 883 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_newhash
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(newhash);}}}
INSN_ENTRY(newrange){START_OF_ORIGINAL_INSN(newrange);
{
VALUE val;
rb_num_t flag = (rb_num_t)GET_OPERAND(1);
VALUE low = TOPN(1);
VALUE high = TOPN(0);
DEBUG_ENTER_INSN("newrange");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_newrange 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_newrange_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(newrange));
COLLECT_USAGE_OPERAND(BIN(newrange), 0, flag);
{
#line 580 "insns.def"
val = rb_range_new(low, high, (int)flag);
#line 911 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_newrange
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(newrange);}}}
INSN_ENTRY(pop){START_OF_ORIGINAL_INSN(pop);
{
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("pop");
ADD_PC(1+0);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_pop 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_pop_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(pop));
{
#line 598 "insns.def"
(void)val;
/* none */
#line 937 "vm.inc"
#undef CURRENT_INSN_pop
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(pop);}}}
INSN_ENTRY(dup){START_OF_ORIGINAL_INSN(dup);
{
VALUE val2;
VALUE val1;
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("dup");
ADD_PC(1+0);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_dup 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_dup_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(dup));
{
#line 613 "insns.def"
val1 = val2 = val;
#line 962 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 2);
PUSH(val1);
PUSH(val2);
#undef CURRENT_INSN_dup
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(dup);}}}
INSN_ENTRY(dupn){START_OF_ORIGINAL_INSN(dupn);
{
rb_num_t n = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("dupn");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_dupn 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_dupn_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(dupn));
COLLECT_USAGE_OPERAND(BIN(dupn), 0, n);
{
#line 627 "insns.def"
void *dst = GET_SP();
void *src = STACK_ADDR_FROM_TOP(n);
INC_SP(n); /* alloca */
MEMCPY(dst, src, VALUE, n);
#line 992 "vm.inc"
#undef CURRENT_INSN_dupn
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(dupn);}}}
INSN_ENTRY(swap){START_OF_ORIGINAL_INSN(swap);
{
VALUE val = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("swap");
ADD_PC(1+0);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_swap 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_swap_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(swap));
{
#line 646 "insns.def"
/* none */
#line 1016 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 2);
PUSH(obj);
PUSH(val);
#undef CURRENT_INSN_swap
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(swap);}}}
INSN_ENTRY(reverse){START_OF_ORIGINAL_INSN(reverse);
{
rb_num_t n = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("reverse");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_reverse 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_reverse_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(reverse));
COLLECT_USAGE_OPERAND(BIN(reverse), 0, n);
{
#line 660 "insns.def"
rb_num_t i;
VALUE *sp = STACK_ADDR_FROM_TOP(n);
for (i=0; i<n/2; i++) {
VALUE v0 = sp[i];
VALUE v1 = TOPN(i);
sp[i] = v1;
TOPN(i) = v0;
}
#line 1050 "vm.inc"
#undef CURRENT_INSN_reverse
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(reverse);}}}
INSN_ENTRY(reput){START_OF_ORIGINAL_INSN(reput);
{
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("reput");
ADD_PC(1+0);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_reput 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_reput_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(reput));
{
#line 682 "insns.def"
/* none */
#line 1073 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_reput
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(reput);}}}
INSN_ENTRY(topn){START_OF_ORIGINAL_INSN(topn);
{
VALUE val;
rb_num_t n = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("topn");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_topn 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_topn_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(topn));
COLLECT_USAGE_OPERAND(BIN(topn), 0, n);
{
#line 696 "insns.def"
val = TOPN(n);
#line 1099 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_topn
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(topn);}}}
INSN_ENTRY(setn){START_OF_ORIGINAL_INSN(setn);
{
rb_num_t n = (rb_num_t)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("setn");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setn 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setn_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setn));
COLLECT_USAGE_OPERAND(BIN(setn), 0, n);
{
#line 710 "insns.def"
TOPN(n-1) = val;
#line 1125 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_setn
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setn);}}}
INSN_ENTRY(adjuststack){START_OF_ORIGINAL_INSN(adjuststack);
{
rb_num_t n = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("adjuststack");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_adjuststack 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_adjuststack_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(adjuststack));
COLLECT_USAGE_OPERAND(BIN(adjuststack), 0, n);
{
#line 724 "insns.def"
DEC_SP(n);
#line 1150 "vm.inc"
#undef CURRENT_INSN_adjuststack
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(adjuststack);}}}
INSN_ENTRY(defined){START_OF_ORIGINAL_INSN(defined);
{
VALUE val;
VALUE needstr = (VALUE)GET_OPERAND(3);
VALUE obj = (VALUE)GET_OPERAND(2);
rb_num_t op_type = (rb_num_t)GET_OPERAND(1);
VALUE v = TOPN(0);
DEBUG_ENTER_INSN("defined");
ADD_PC(1+3);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_defined 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_defined_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(defined));
COLLECT_USAGE_OPERAND(BIN(defined), 0, op_type);
COLLECT_USAGE_OPERAND(BIN(defined), 1, obj);
COLLECT_USAGE_OPERAND(BIN(defined), 2, needstr);
{
#line 743 "insns.def"
val = vm_defined(ec, GET_CFP(), op_type, obj, needstr, v);
#line 1179 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_defined
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(defined);}}}
INSN_ENTRY(checkmatch){START_OF_ORIGINAL_INSN(checkmatch);
{
VALUE result;
rb_num_t flag = (rb_num_t)GET_OPERAND(1);
VALUE target = TOPN(1);
VALUE pattern = TOPN(0);
DEBUG_ENTER_INSN("checkmatch");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_checkmatch 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_checkmatch_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(checkmatch));
COLLECT_USAGE_OPERAND(BIN(checkmatch), 0, flag);
{
#line 762 "insns.def"
result = vm_check_match(ec, target, pattern, flag);
#line 1207 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(result);
#undef CURRENT_INSN_checkmatch
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(checkmatch);}}}
INSN_ENTRY(checkkeyword){START_OF_ORIGINAL_INSN(checkkeyword);
{
VALUE ret;
lindex_t keyword_index = (lindex_t)GET_OPERAND(2);
lindex_t kw_bits_index = (lindex_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("checkkeyword");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_checkkeyword 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_checkkeyword_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(checkkeyword));
COLLECT_USAGE_OPERAND(BIN(checkkeyword), 0, kw_bits_index);
COLLECT_USAGE_OPERAND(BIN(checkkeyword), 1, keyword_index);
{
#line 776 "insns.def"
ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());
#line 1235 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(ret);
#undef CURRENT_INSN_checkkeyword
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(checkkeyword);}}}
INSN_ENTRY(tracecoverage){START_OF_ORIGINAL_INSN(tracecoverage);
{
VALUE data = (VALUE)GET_OPERAND(2);
rb_num_t nf = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("tracecoverage");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_tracecoverage 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_tracecoverage_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(tracecoverage));
COLLECT_USAGE_OPERAND(BIN(tracecoverage), 0, nf);
COLLECT_USAGE_OPERAND(BIN(tracecoverage), 1, data);
{
#line 790 "insns.def"
rb_event_flag_t flag = (rb_event_flag_t)nf;
vm_dtrace(flag, ec);
EXEC_EVENT_HOOK(ec, flag, GET_SELF(), 0, 0, 0 /* id and klass are resolved at callee */, data);
#line 1265 "vm.inc"
#undef CURRENT_INSN_tracecoverage
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(tracecoverage);}}}
INSN_ENTRY(defineclass){START_OF_ORIGINAL_INSN(defineclass);
{
VALUE val;
rb_num_t flags = (rb_num_t)GET_OPERAND(3);
ISEQ class_iseq = (ISEQ)GET_OPERAND(2);
ID id = (ID)GET_OPERAND(1);
VALUE cbase = TOPN(1);
VALUE super = TOPN(0);
DEBUG_ENTER_INSN("defineclass");
ADD_PC(1+3);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_defineclass 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_defineclass_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(defineclass));
COLLECT_USAGE_OPERAND(BIN(defineclass), 0, id);
COLLECT_USAGE_OPERAND(BIN(defineclass), 1, class_iseq);
COLLECT_USAGE_OPERAND(BIN(defineclass), 2, flags);
{
#line 815 "insns.def"
VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);
rb_iseq_check(class_iseq);
/* enter scope */
vm_push_frame(ec, class_iseq, VM_FRAME_MAGIC_CLASS | VM_ENV_FLAG_LOCAL, klass,
GET_BLOCK_HANDLER(),
(VALUE)vm_cref_push(ec, klass, NULL, FALSE),
class_iseq->body->iseq_encoded, GET_SP(),
class_iseq->body->local_table_size,
class_iseq->body->stack_max);
RESTORE_REGS();
NEXT_INSN();
#line 1307 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_defineclass
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(defineclass);}}}
INSN_ENTRY(send){START_OF_ORIGINAL_INSN(send);
{
VALUE val;
ISEQ blockiseq = (ISEQ)GET_OPERAND(3);
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
DEBUG_ENTER_INSN("send");
ADD_PC(1+3);
PREFETCH(GET_PC());
#define CURRENT_INSN_send 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_send_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(send));
COLLECT_USAGE_OPERAND(BIN(send), 0, ci);
COLLECT_USAGE_OPERAND(BIN(send), 1, cc);
COLLECT_USAGE_OPERAND(BIN(send), 2, blockiseq);
{
#line 846 "insns.def"
struct rb_calling_info calling;
vm_caller_setup_arg_block(ec, reg_cfp, &calling, ci, blockiseq, FALSE);
vm_search_method(ci, cc, calling.recv = TOPN(calling.argc = ci->orig_argc));
CALL_METHOD(&calling, ci, cc);
#line 1341 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_send
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(send);}}}
INSN_ENTRY(opt_str_freeze){START_OF_ORIGINAL_INSN(opt_str_freeze);
{
VALUE val;
VALUE str = (VALUE)GET_OPERAND(1);
DEBUG_ENTER_INSN("opt_str_freeze");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_opt_str_freeze 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_str_freeze_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_str_freeze));
COLLECT_USAGE_OPERAND(BIN(opt_str_freeze), 0, str);
{
#line 859 "insns.def"
if (BASIC_OP_UNREDEFINED_P(BOP_FREEZE, STRING_REDEFINED_OP_FLAG)) {
val = str;
}
else {
val = rb_funcall(rb_str_resurrect(str), idFreeze, 0);
}
#line 1372 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_str_freeze
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_str_freeze);}}}
INSN_ENTRY(opt_str_uminus){START_OF_ORIGINAL_INSN(opt_str_uminus);
{
VALUE val;
VALUE str = (VALUE)GET_OPERAND(1);
DEBUG_ENTER_INSN("opt_str_uminus");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_opt_str_uminus 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_str_uminus_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_str_uminus));
COLLECT_USAGE_OPERAND(BIN(opt_str_uminus), 0, str);
{
#line 873 "insns.def"
if (BASIC_OP_UNREDEFINED_P(BOP_UMINUS, STRING_REDEFINED_OP_FLAG)) {
val = str;
}
else {
val = rb_funcall(rb_str_resurrect(str), idUMinus, 0);
}
#line 1403 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_str_uminus
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_str_uminus);}}}
INSN_ENTRY(opt_newarray_max){START_OF_ORIGINAL_INSN(opt_newarray_max);
{
VALUE val;
rb_num_t num = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("opt_newarray_max");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_opt_newarray_max 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_newarray_max_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_newarray_max));
COLLECT_USAGE_OPERAND(BIN(opt_newarray_max), 0, num);
{
#line 887 "insns.def"
val = vm_opt_newarray_max(num, STACK_ADDR_FROM_TOP(num));
POPN(num);
#line 1430 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_newarray_max
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_newarray_max);}}}
INSN_ENTRY(opt_newarray_min){START_OF_ORIGINAL_INSN(opt_newarray_min);
{
VALUE val;
rb_num_t num = (rb_num_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("opt_newarray_min");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_opt_newarray_min 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_newarray_min_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_newarray_min));
COLLECT_USAGE_OPERAND(BIN(opt_newarray_min), 0, num);
{
#line 897 "insns.def"
val = vm_opt_newarray_min(num, STACK_ADDR_FROM_TOP(num));
POPN(num);
#line 1457 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_newarray_min
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_newarray_min);}}}
INSN_ENTRY(opt_send_without_block){START_OF_ORIGINAL_INSN(opt_send_without_block);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
DEBUG_ENTER_INSN("opt_send_without_block");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_opt_send_without_block 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_send_without_block_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_send_without_block));
COLLECT_USAGE_OPERAND(BIN(opt_send_without_block), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_send_without_block), 1, cc);
{
#line 912 "insns.def"
struct rb_calling_info calling;
calling.block_handler = VM_BLOCK_HANDLER_NONE;
vm_search_method(ci, cc, calling.recv = TOPN(calling.argc = ci->orig_argc));
CALL_METHOD(&calling, ci, cc);
#line 1488 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_send_without_block
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_send_without_block);}}}
INSN_ENTRY(invokesuper){START_OF_ORIGINAL_INSN(invokesuper);
{
VALUE val;
ISEQ blockiseq = (ISEQ)GET_OPERAND(3);
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
DEBUG_ENTER_INSN("invokesuper");
ADD_PC(1+3);
PREFETCH(GET_PC());
#define CURRENT_INSN_invokesuper 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_invokesuper_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(invokesuper));
COLLECT_USAGE_OPERAND(BIN(invokesuper), 0, ci);
COLLECT_USAGE_OPERAND(BIN(invokesuper), 1, cc);
COLLECT_USAGE_OPERAND(BIN(invokesuper), 2, blockiseq);
{
#line 929 "insns.def"
struct rb_calling_info calling;
calling.argc = ci->orig_argc;
vm_caller_setup_arg_block(ec, reg_cfp, &calling, ci, blockiseq, TRUE);
calling.recv = GET_SELF();
vm_search_super_method(ec, GET_CFP(), &calling, ci, cc);
CALL_METHOD(&calling, ci, cc);
#line 1524 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_invokesuper
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(invokesuper);}}}
INSN_ENTRY(invokeblock){START_OF_ORIGINAL_INSN(invokeblock);
{
VALUE val;
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
DEBUG_ENTER_INSN("invokeblock");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_invokeblock 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_invokeblock_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(invokeblock));
COLLECT_USAGE_OPERAND(BIN(invokeblock), 0, ci);
{
#line 949 "insns.def"
struct rb_calling_info calling;
calling.argc = ci->orig_argc;
calling.block_handler = VM_BLOCK_HANDLER_NONE;
calling.recv = GET_SELF();
val = vm_invoke_block(ec, GET_CFP(), &calling, ci);
if (val == Qundef) {
RESTORE_REGS();
NEXT_INSN();
}
#line 1559 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_invokeblock
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(invokeblock);}}}
INSN_ENTRY(leave){START_OF_ORIGINAL_INSN(leave);
{
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("leave");
ADD_PC(1+0);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_leave 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_leave_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(leave));
{
#line 972 "insns.def"
if (OPT_CHECKED_RUN) {
const VALUE *const bp = vm_base_ptr(reg_cfp);
if (reg_cfp->sp != bp) {
vm_stack_consistency_error(ec, reg_cfp, bp);
}
}
RUBY_VM_CHECK_INTS(ec);
if (vm_pop_frame(ec, GET_CFP(), GET_EP())) {
#if OPT_CALL_THREADED_CODE
rb_ec_thread_ptr(ec)->retval = val;
return 0;
#else
return val;
#endif
}
else {
RESTORE_REGS();
}
#line 1603 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_leave
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(leave);}}}
INSN_ENTRY(throw){START_OF_ORIGINAL_INSN(throw);
{
VALUE val;
rb_num_t throw_state = (rb_num_t)GET_OPERAND(1);
VALUE throwobj = TOPN(0);
DEBUG_ENTER_INSN("throw");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_throw 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_throw_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(throw));
COLLECT_USAGE_OPERAND(BIN(throw), 0, throw_state);
{
#line 1009 "insns.def"
RUBY_VM_CHECK_INTS(ec);
val = vm_throw(ec, GET_CFP(), throw_state, throwobj);
THROW_EXCEPTION(val);
/* unreachable */
#line 1633 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_throw
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(throw);}}}
INSN_ENTRY(jump){START_OF_ORIGINAL_INSN(jump);
{
OFFSET dst = (OFFSET)GET_OPERAND(1);
DEBUG_ENTER_INSN("jump");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_jump 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_jump_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(jump));
COLLECT_USAGE_OPERAND(BIN(jump), 0, dst);
{
#line 1030 "insns.def"
RUBY_VM_CHECK_INTS(ec);
JUMP(dst);
#line 1659 "vm.inc"
#undef CURRENT_INSN_jump
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(jump);}}}
INSN_ENTRY(branchif){START_OF_ORIGINAL_INSN(branchif);
{
OFFSET dst = (OFFSET)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("branchif");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_branchif 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_branchif_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(branchif));
COLLECT_USAGE_OPERAND(BIN(branchif), 0, dst);
{
#line 1045 "insns.def"
if (RTEST(val)) {
RUBY_VM_CHECK_INTS(ec);
JUMP(dst);
}
#line 1686 "vm.inc"
#undef CURRENT_INSN_branchif
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(branchif);}}}
INSN_ENTRY(branchunless){START_OF_ORIGINAL_INSN(branchunless);
{
OFFSET dst = (OFFSET)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("branchunless");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_branchunless 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_branchunless_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(branchunless));
COLLECT_USAGE_OPERAND(BIN(branchunless), 0, dst);
{
#line 1062 "insns.def"
if (!RTEST(val)) {
RUBY_VM_CHECK_INTS(ec);
JUMP(dst);
}
#line 1713 "vm.inc"
#undef CURRENT_INSN_branchunless
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(branchunless);}}}
INSN_ENTRY(branchnil){START_OF_ORIGINAL_INSN(branchnil);
{
OFFSET dst = (OFFSET)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("branchnil");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_branchnil 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_branchnil_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(branchnil));
COLLECT_USAGE_OPERAND(BIN(branchnil), 0, dst);
{
#line 1079 "insns.def"
if (NIL_P(val)) {
RUBY_VM_CHECK_INTS(ec);
JUMP(dst);
}
#line 1740 "vm.inc"
#undef CURRENT_INSN_branchnil
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(branchnil);}}}
INSN_ENTRY(branchiftype){START_OF_ORIGINAL_INSN(branchiftype);
{
OFFSET dst = (OFFSET)GET_OPERAND(2);
rb_num_t type = (rb_num_t)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("branchiftype");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_branchiftype 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_branchiftype_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(branchiftype));
COLLECT_USAGE_OPERAND(BIN(branchiftype), 0, type);
COLLECT_USAGE_OPERAND(BIN(branchiftype), 1, dst);
{
#line 1096 "insns.def"
if (TYPE(val) == (int)type) {
RUBY_VM_CHECK_INTS(ec);
JUMP(dst);
}
#line 1769 "vm.inc"
#undef CURRENT_INSN_branchiftype
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(branchiftype);}}}
INSN_ENTRY(getinlinecache){START_OF_ORIGINAL_INSN(getinlinecache);
{
VALUE val;
IC ic = (IC)GET_OPERAND(2);
OFFSET dst = (OFFSET)GET_OPERAND(1);
DEBUG_ENTER_INSN("getinlinecache");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_getinlinecache 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getinlinecache_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getinlinecache));
COLLECT_USAGE_OPERAND(BIN(getinlinecache), 0, dst);
COLLECT_USAGE_OPERAND(BIN(getinlinecache), 1, ic);
{
#line 1118 "insns.def"
val = vm_ic_hit_p(ic, GET_EP());
if (val != Qnil) {
JUMP(dst);
}
#line 1798 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_getinlinecache
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getinlinecache);}}}
INSN_ENTRY(setinlinecache){START_OF_ORIGINAL_INSN(setinlinecache);
{
IC ic = (IC)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("setinlinecache");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setinlinecache 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setinlinecache_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setinlinecache));
COLLECT_USAGE_OPERAND(BIN(setinlinecache), 0, ic);
{
#line 1135 "insns.def"
vm_ic_update(ic, val, GET_EP());
#line 1824 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_setinlinecache
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setinlinecache);}}}
INSN_ENTRY(once){START_OF_ORIGINAL_INSN(once);
{
VALUE val;
IC ic = (IC)GET_OPERAND(2);
ISEQ iseq = (ISEQ)GET_OPERAND(1);
DEBUG_ENTER_INSN("once");
ADD_PC(1+2);
PREFETCH(GET_PC());
#define CURRENT_INSN_once 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_once_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(once));
COLLECT_USAGE_OPERAND(BIN(once), 0, iseq);
COLLECT_USAGE_OPERAND(BIN(once), 1, ic);
{
#line 1149 "insns.def"
val = vm_once_dispatch(ec, iseq, ic);
#line 1852 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_once
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(once);}}}
INSN_ENTRY(opt_case_dispatch){START_OF_ORIGINAL_INSN(opt_case_dispatch);
{
OFFSET else_offset = (OFFSET)GET_OPERAND(2);
CDHASH hash = (CDHASH)GET_OPERAND(1);
VALUE key = TOPN(0);
DEBUG_ENTER_INSN("opt_case_dispatch");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_opt_case_dispatch 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_case_dispatch_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_case_dispatch));
COLLECT_USAGE_OPERAND(BIN(opt_case_dispatch), 0, hash);
COLLECT_USAGE_OPERAND(BIN(opt_case_dispatch), 1, else_offset);
{
#line 1163 "insns.def"
OFFSET dst = vm_case_dispatch(hash, else_offset, key);
if (dst) {
JUMP(dst);
}
#line 1884 "vm.inc"
#undef CURRENT_INSN_opt_case_dispatch
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_case_dispatch);}}}
INSN_ENTRY(opt_plus){START_OF_ORIGINAL_INSN(opt_plus);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_plus");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_plus 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_plus_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_plus));
COLLECT_USAGE_OPERAND(BIN(opt_plus), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_plus), 1, cc);
{
#line 1183 "insns.def"
val = vm_opt_plus(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 1919 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_plus
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_plus);}}}
INSN_ENTRY(opt_minus){START_OF_ORIGINAL_INSN(opt_minus);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_minus");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_minus 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_minus_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_minus));
COLLECT_USAGE_OPERAND(BIN(opt_minus), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_minus), 1, cc);
{
#line 1204 "insns.def"
val = vm_opt_minus(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 1956 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_minus
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_minus);}}}
INSN_ENTRY(opt_mult){START_OF_ORIGINAL_INSN(opt_mult);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_mult");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_mult 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_mult_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_mult));
COLLECT_USAGE_OPERAND(BIN(opt_mult), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_mult), 1, cc);
{
#line 1225 "insns.def"
val = vm_opt_mult(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 1993 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_mult
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_mult);}}}
INSN_ENTRY(opt_div){START_OF_ORIGINAL_INSN(opt_div);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_div");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_div 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_div_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_div));
COLLECT_USAGE_OPERAND(BIN(opt_div), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_div), 1, cc);
{
#line 1246 "insns.def"
val = vm_opt_div(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2030 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_div
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_div);}}}
INSN_ENTRY(opt_mod){START_OF_ORIGINAL_INSN(opt_mod);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_mod");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_mod 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_mod_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_mod));
COLLECT_USAGE_OPERAND(BIN(opt_mod), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_mod), 1, cc);
{
#line 1267 "insns.def"
val = vm_opt_mod(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2067 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_mod
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_mod);}}}
INSN_ENTRY(opt_eq){START_OF_ORIGINAL_INSN(opt_eq);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_eq");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_eq 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_eq_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_eq));
COLLECT_USAGE_OPERAND(BIN(opt_eq), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_eq), 1, cc);
{
#line 1288 "insns.def"
val = opt_eq_func(recv, obj, ci, cc);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2104 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_eq
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_eq);}}}
INSN_ENTRY(opt_neq){START_OF_ORIGINAL_INSN(opt_neq);
{
VALUE val;
CALL_CACHE cc_eq = (CALL_CACHE)GET_OPERAND(4);
CALL_INFO ci_eq = (CALL_INFO)GET_OPERAND(3);
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_neq");
ADD_PC(1+4);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_neq 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_neq_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_neq));
COLLECT_USAGE_OPERAND(BIN(opt_neq), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_neq), 1, cc);
COLLECT_USAGE_OPERAND(BIN(opt_neq), 2, ci_eq);
COLLECT_USAGE_OPERAND(BIN(opt_neq), 3, cc_eq);
{
#line 1309 "insns.def"
val = vm_opt_neq(ci, cc, ci_eq, cc_eq, recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2145 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_neq
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_neq);}}}
INSN_ENTRY(opt_lt){START_OF_ORIGINAL_INSN(opt_lt);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_lt");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_lt 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_lt_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_lt));
COLLECT_USAGE_OPERAND(BIN(opt_lt), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_lt), 1, cc);
{
#line 1330 "insns.def"
val = vm_opt_lt(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2182 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_lt
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_lt);}}}
INSN_ENTRY(opt_le){START_OF_ORIGINAL_INSN(opt_le);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_le");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_le 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_le_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_le));
COLLECT_USAGE_OPERAND(BIN(opt_le), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_le), 1, cc);
{
#line 1351 "insns.def"
val = vm_opt_le(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2219 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_le
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_le);}}}
INSN_ENTRY(opt_gt){START_OF_ORIGINAL_INSN(opt_gt);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_gt");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_gt 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_gt_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_gt));
COLLECT_USAGE_OPERAND(BIN(opt_gt), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_gt), 1, cc);
{
#line 1372 "insns.def"
val = vm_opt_gt(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2256 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_gt
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_gt);}}}
INSN_ENTRY(opt_ge){START_OF_ORIGINAL_INSN(opt_ge);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_ge");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_ge 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_ge_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_ge));
COLLECT_USAGE_OPERAND(BIN(opt_ge), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_ge), 1, cc);
{
#line 1393 "insns.def"
val = vm_opt_ge(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2293 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_ge
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_ge);}}}
INSN_ENTRY(opt_ltlt){START_OF_ORIGINAL_INSN(opt_ltlt);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_ltlt");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_ltlt 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_ltlt_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_ltlt));
COLLECT_USAGE_OPERAND(BIN(opt_ltlt), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_ltlt), 1, cc);
{
#line 1414 "insns.def"
val = vm_opt_ltlt(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2330 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_ltlt
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_ltlt);}}}
INSN_ENTRY(opt_aref){START_OF_ORIGINAL_INSN(opt_aref);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_aref");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_aref 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_aref_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_aref));
COLLECT_USAGE_OPERAND(BIN(opt_aref), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_aref), 1, cc);
{
#line 1435 "insns.def"
val = vm_opt_aref(recv, obj);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
CALL_SIMPLE_METHOD(recv);
}
#line 2367 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_aref
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_aref);}}}
INSN_ENTRY(opt_aset){START_OF_ORIGINAL_INSN(opt_aset);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(2);
VALUE obj = TOPN(1);
VALUE set = TOPN(0);
DEBUG_ENTER_INSN("opt_aset");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(3);
#define CURRENT_INSN_opt_aset 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_aset_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_aset));
COLLECT_USAGE_OPERAND(BIN(opt_aset), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_aset), 1, cc);
{
#line 1456 "insns.def"
val = vm_opt_aset(recv, obj, set);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(obj);
PUSH(set);
CALL_SIMPLE_METHOD(recv);
}
#line 2406 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_aset
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_aset);}}}
INSN_ENTRY(opt_aset_with){START_OF_ORIGINAL_INSN(opt_aset_with);
{
VALUE key = (VALUE)GET_OPERAND(3);
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("opt_aset_with");
ADD_PC(1+3);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_aset_with 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_aset_with_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_aset_with));
COLLECT_USAGE_OPERAND(BIN(opt_aset_with), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_aset_with), 1, cc);
COLLECT_USAGE_OPERAND(BIN(opt_aset_with), 2, key);
{
#line 1478 "insns.def"
VALUE tmp = vm_opt_aset_with(recv, key, val);
if (tmp != Qundef) {
val = tmp;
}
else {
/* other */
PUSH(recv);
PUSH(rb_str_resurrect(key));
PUSH(val);
CALL_SIMPLE_METHOD(recv);
}
#line 2448 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_aset_with
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_aset_with);}}}
INSN_ENTRY(opt_aref_with){START_OF_ORIGINAL_INSN(opt_aref_with);
{
VALUE val;
VALUE key = (VALUE)GET_OPERAND(3);
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(0);
DEBUG_ENTER_INSN("opt_aref_with");
ADD_PC(1+3);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_opt_aref_with 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_aref_with_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_aref_with));
COLLECT_USAGE_OPERAND(BIN(opt_aref_with), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_aref_with), 1, cc);
COLLECT_USAGE_OPERAND(BIN(opt_aref_with), 2, key);
{
#line 1503 "insns.def"
val = vm_opt_aref_with(recv, key);
if (val == Qundef) {
/* other */
PUSH(recv);
PUSH(rb_str_resurrect(key));
CALL_SIMPLE_METHOD(recv);
}
#line 2486 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_aref_with
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_aref_with);}}}
INSN_ENTRY(opt_length){START_OF_ORIGINAL_INSN(opt_length);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(0);
DEBUG_ENTER_INSN("opt_length");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_opt_length 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_length_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_length));
COLLECT_USAGE_OPERAND(BIN(opt_length), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_length), 1, cc);
{
#line 1524 "insns.def"
val = vm_opt_length(recv, BOP_LENGTH);
if (val == Qundef) {
/* other */
PUSH(recv);
CALL_SIMPLE_METHOD(recv);
}
#line 2521 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_length
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_length);}}}
INSN_ENTRY(opt_size){START_OF_ORIGINAL_INSN(opt_size);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(0);
DEBUG_ENTER_INSN("opt_size");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_opt_size 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_size_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_size));
COLLECT_USAGE_OPERAND(BIN(opt_size), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_size), 1, cc);
{
#line 1544 "insns.def"
val = vm_opt_length(recv, BOP_SIZE);
if (val == Qundef) {
/* other */
PUSH(recv);
CALL_SIMPLE_METHOD(recv);
}
#line 2556 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_size
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_size);}}}
INSN_ENTRY(opt_empty_p){START_OF_ORIGINAL_INSN(opt_empty_p);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(0);
DEBUG_ENTER_INSN("opt_empty_p");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_opt_empty_p 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_empty_p_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_empty_p));
COLLECT_USAGE_OPERAND(BIN(opt_empty_p), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_empty_p), 1, cc);
{
#line 1564 "insns.def"
val = vm_opt_empty_p(recv);
if (val == Qundef) {
/* other */
PUSH(recv);
CALL_SIMPLE_METHOD(recv);
}
#line 2591 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_empty_p
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_empty_p);}}}
INSN_ENTRY(opt_succ){START_OF_ORIGINAL_INSN(opt_succ);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(0);
DEBUG_ENTER_INSN("opt_succ");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_opt_succ 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_succ_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_succ));
COLLECT_USAGE_OPERAND(BIN(opt_succ), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_succ), 1, cc);
{
#line 1584 "insns.def"
val = vm_opt_succ(recv);
if (val == Qundef) {
/* other */
PUSH(recv);
CALL_SIMPLE_METHOD(recv);
}
#line 2626 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_succ
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_succ);}}}
INSN_ENTRY(opt_not){START_OF_ORIGINAL_INSN(opt_not);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE recv = TOPN(0);
DEBUG_ENTER_INSN("opt_not");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_opt_not 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_not_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_not));
COLLECT_USAGE_OPERAND(BIN(opt_not), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_not), 1, cc);
{
#line 1604 "insns.def"
val = vm_opt_not(ci, cc, recv);
if (val == Qundef) {
/* other */
PUSH(recv);
CALL_SIMPLE_METHOD(recv);
}
#line 2661 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_not
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_not);}}}
INSN_ENTRY(opt_regexpmatch1){START_OF_ORIGINAL_INSN(opt_regexpmatch1);
{
VALUE val;
VALUE recv = (VALUE)GET_OPERAND(1);
VALUE obj = TOPN(0);
DEBUG_ENTER_INSN("opt_regexpmatch1");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_opt_regexpmatch1 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_regexpmatch1_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_regexpmatch1));
COLLECT_USAGE_OPERAND(BIN(opt_regexpmatch1), 0, recv);
{
#line 1625 "insns.def"
val = vm_opt_regexpmatch1(recv, obj);
#line 2688 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_regexpmatch1
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_regexpmatch1);}}}
INSN_ENTRY(opt_regexpmatch2){START_OF_ORIGINAL_INSN(opt_regexpmatch2);
{
VALUE val;
CALL_CACHE cc = (CALL_CACHE)GET_OPERAND(2);
CALL_INFO ci = (CALL_INFO)GET_OPERAND(1);
VALUE obj2 = TOPN(1);
VALUE obj1 = TOPN(0);
DEBUG_ENTER_INSN("opt_regexpmatch2");
ADD_PC(1+2);
PREFETCH(GET_PC());
POPN(2);
#define CURRENT_INSN_opt_regexpmatch2 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_regexpmatch2_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_regexpmatch2));
COLLECT_USAGE_OPERAND(BIN(opt_regexpmatch2), 0, ci);
COLLECT_USAGE_OPERAND(BIN(opt_regexpmatch2), 1, cc);
{
#line 1639 "insns.def"
val = vm_opt_regexpmatch2(obj2, obj1);
if (val == Qundef) {
/* other */
PUSH(obj2);
PUSH(obj1);
CALL_SIMPLE_METHOD(obj2);
}
#line 2725 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef CURRENT_INSN_opt_regexpmatch2
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_regexpmatch2);}}}
INSN_ENTRY(opt_call_c_function){START_OF_ORIGINAL_INSN(opt_call_c_function);
{
rb_insn_func_t funcptr = (rb_insn_func_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("opt_call_c_function");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_opt_call_c_function 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_opt_call_c_function_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(opt_call_c_function));
COLLECT_USAGE_OPERAND(BIN(opt_call_c_function), 0, funcptr);
{
#line 1660 "insns.def"
reg_cfp = (funcptr)(ec, reg_cfp);
if (reg_cfp == 0) {
VALUE err = ec->errinfo;
ec->errinfo = Qnil;
THROW_EXCEPTION(err);
}
RESTORE_REGS();
NEXT_INSN();
#line 2759 "vm.inc"
#undef CURRENT_INSN_opt_call_c_function
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(opt_call_c_function);}}}
INSN_ENTRY(bitblt){START_OF_ORIGINAL_INSN(bitblt);
{
VALUE ret;
DEBUG_ENTER_INSN("bitblt");
ADD_PC(1+0);
PREFETCH(GET_PC());
#define CURRENT_INSN_bitblt 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_bitblt_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(bitblt));
{
#line 1683 "insns.def"
ret = rb_str_new2("a bit of bacon, lettuce and tomato");
#line 2782 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(ret);
#undef CURRENT_INSN_bitblt
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(bitblt);}}}
INSN_ENTRY(answer){START_OF_ORIGINAL_INSN(answer);
{
VALUE ret;
DEBUG_ENTER_INSN("answer");
ADD_PC(1+0);
PREFETCH(GET_PC());
#define CURRENT_INSN_answer 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_answer_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(answer));
{
#line 1697 "insns.def"
ret = INT2FIX(42);
#line 2807 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(ret);
#undef CURRENT_INSN_answer
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(answer);}}}
INSN_ENTRY(getlocal_OP__WC__0){START_OF_ORIGINAL_INSN(getlocal_OP__WC__0);
{
VALUE val;
#define level 0
lindex_t idx = (lindex_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("getlocal_OP__WC__0");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_getlocal_OP__WC__0 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getlocal_OP__WC__0_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getlocal_OP__WC__0));
COLLECT_USAGE_OPERAND(BIN(getlocal_OP__WC__0), 0, idx);
{
#line 60 "insns.def"
val = *(vm_get_ep(GET_EP(), level) - idx);
RB_DEBUG_COUNTER_INC(lvar_get);
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
#line 2836 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef level
#undef CURRENT_INSN_getlocal_OP__WC__0
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getlocal_OP__WC__0);}}}
INSN_ENTRY(getlocal_OP__WC__1){START_OF_ORIGINAL_INSN(getlocal_OP__WC__1);
{
VALUE val;
#define level 1
lindex_t idx = (lindex_t)GET_OPERAND(1);
DEBUG_ENTER_INSN("getlocal_OP__WC__1");
ADD_PC(1+1);
PREFETCH(GET_PC());
#define CURRENT_INSN_getlocal_OP__WC__1 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_getlocal_OP__WC__1_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(getlocal_OP__WC__1));
COLLECT_USAGE_OPERAND(BIN(getlocal_OP__WC__1), 0, idx);
{
#line 60 "insns.def"
val = *(vm_get_ep(GET_EP(), level) - idx);
RB_DEBUG_COUNTER_INC(lvar_get);
(void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);
#line 2866 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef level
#undef CURRENT_INSN_getlocal_OP__WC__1
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(getlocal_OP__WC__1);}}}
INSN_ENTRY(setlocal_OP__WC__0){START_OF_ORIGINAL_INSN(setlocal_OP__WC__0);
{
#define level 0
lindex_t idx = (lindex_t)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("setlocal_OP__WC__0");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setlocal_OP__WC__0 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setlocal_OP__WC__0_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setlocal_OP__WC__0));
COLLECT_USAGE_OPERAND(BIN(setlocal_OP__WC__0), 0, idx);
{
#line 78 "insns.def"
vm_env_write(vm_get_ep(GET_EP(), level), -(int)idx, val);
RB_DEBUG_COUNTER_INC(lvar_set);
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
#line 2896 "vm.inc"
#undef level
#undef CURRENT_INSN_setlocal_OP__WC__0
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setlocal_OP__WC__0);}}}
INSN_ENTRY(setlocal_OP__WC__1){START_OF_ORIGINAL_INSN(setlocal_OP__WC__1);
{
#define level 1
lindex_t idx = (lindex_t)GET_OPERAND(1);
VALUE val = TOPN(0);
DEBUG_ENTER_INSN("setlocal_OP__WC__1");
ADD_PC(1+1);
PREFETCH(GET_PC());
POPN(1);
#define CURRENT_INSN_setlocal_OP__WC__1 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_setlocal_OP__WC__1_##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(setlocal_OP__WC__1));
COLLECT_USAGE_OPERAND(BIN(setlocal_OP__WC__1), 0, idx);
{
#line 78 "insns.def"
vm_env_write(vm_get_ep(GET_EP(), level), -(int)idx, val);
RB_DEBUG_COUNTER_INC(lvar_set);
(void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);
#line 2924 "vm.inc"
#undef level
#undef CURRENT_INSN_setlocal_OP__WC__1
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(setlocal_OP__WC__1);}}}
INSN_ENTRY(putobject_OP_INT2FIX_O_0_C_){START_OF_ORIGINAL_INSN(putobject_OP_INT2FIX_O_0_C_);
{
#define val INT2FIX(0)
DEBUG_ENTER_INSN("putobject_OP_INT2FIX_O_0_C_");
ADD_PC(1+0);
PREFETCH(GET_PC());
#define CURRENT_INSN_putobject_OP_INT2FIX_O_0_C_ 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_putobject_OP_INT2FIX_O_0_C__##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(putobject_OP_INT2FIX_O_0_C_));
{
#line 334 "insns.def"
/* */
#line 2948 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef val
#undef CURRENT_INSN_putobject_OP_INT2FIX_O_0_C_
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(putobject_OP_INT2FIX_O_0_C_);}}}
INSN_ENTRY(putobject_OP_INT2FIX_O_1_C_){START_OF_ORIGINAL_INSN(putobject_OP_INT2FIX_O_1_C_);
{
#define val INT2FIX(1)
DEBUG_ENTER_INSN("putobject_OP_INT2FIX_O_1_C_");
ADD_PC(1+0);
PREFETCH(GET_PC());
#define CURRENT_INSN_putobject_OP_INT2FIX_O_1_C_ 1
#define INSN_IS_SC() 0
#define INSN_LABEL(lab) LABEL_putobject_OP_INT2FIX_O_1_C__##lab
#define LABEL_IS_SC(lab) LABEL_##lab##_##t
COLLECT_USAGE_INSN(BIN(putobject_OP_INT2FIX_O_1_C_));
{
#line 334 "insns.def"
/* */
#line 2974 "vm.inc"
CHECK_VM_STACK_OVERFLOW_FOR_INSN(VM_REG_CFP, 1);
PUSH(val);
#undef val
#undef CURRENT_INSN_putobject_OP_INT2FIX_O_1_C_
#undef INSN_IS_SC
#undef INSN_LABEL
#undef LABEL_IS_SC
END_INSN(putobject_OP_INT2FIX_O_1_C_);}}}
INSN_ENTRY(trace_nop){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(nop);
END_INSN(trace_nop);}}}
INSN_ENTRY(trace_getlocal){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getlocal);
END_INSN(trace_getlocal);}}}
INSN_ENTRY(trace_setlocal){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setlocal);
END_INSN(trace_setlocal);}}}
INSN_ENTRY(trace_getblockparam){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getblockparam);
END_INSN(trace_getblockparam);}}}
INSN_ENTRY(trace_setblockparam){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setblockparam);
END_INSN(trace_setblockparam);}}}
INSN_ENTRY(trace_getspecial){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getspecial);
END_INSN(trace_getspecial);}}}
INSN_ENTRY(trace_setspecial){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setspecial);
END_INSN(trace_setspecial);}}}
INSN_ENTRY(trace_getinstancevariable){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getinstancevariable);
END_INSN(trace_getinstancevariable);}}}
INSN_ENTRY(trace_setinstancevariable){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setinstancevariable);
END_INSN(trace_setinstancevariable);}}}
INSN_ENTRY(trace_getclassvariable){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getclassvariable);
END_INSN(trace_getclassvariable);}}}
INSN_ENTRY(trace_setclassvariable){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setclassvariable);
END_INSN(trace_setclassvariable);}}}
INSN_ENTRY(trace_getconstant){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getconstant);
END_INSN(trace_getconstant);}}}
INSN_ENTRY(trace_setconstant){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setconstant);
END_INSN(trace_setconstant);}}}
INSN_ENTRY(trace_getglobal){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getglobal);
END_INSN(trace_getglobal);}}}
INSN_ENTRY(trace_setglobal){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setglobal);
END_INSN(trace_setglobal);}}}
INSN_ENTRY(trace_putnil){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(putnil);
END_INSN(trace_putnil);}}}
INSN_ENTRY(trace_putself){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(putself);
END_INSN(trace_putself);}}}
INSN_ENTRY(trace_putobject){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(putobject);
END_INSN(trace_putobject);}}}
INSN_ENTRY(trace_putspecialobject){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(putspecialobject);
END_INSN(trace_putspecialobject);}}}
INSN_ENTRY(trace_putiseq){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(putiseq);
END_INSN(trace_putiseq);}}}
INSN_ENTRY(trace_putstring){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(putstring);
END_INSN(trace_putstring);}}}
INSN_ENTRY(trace_concatstrings){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(concatstrings);
END_INSN(trace_concatstrings);}}}
INSN_ENTRY(trace_tostring){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(tostring);
END_INSN(trace_tostring);}}}
INSN_ENTRY(trace_freezestring){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(freezestring);
END_INSN(trace_freezestring);}}}
INSN_ENTRY(trace_toregexp){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(toregexp);
END_INSN(trace_toregexp);}}}
INSN_ENTRY(trace_intern){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(intern);
END_INSN(trace_intern);}}}
INSN_ENTRY(trace_newarray){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(newarray);
END_INSN(trace_newarray);}}}
INSN_ENTRY(trace_duparray){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(duparray);
END_INSN(trace_duparray);}}}
INSN_ENTRY(trace_expandarray){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(expandarray);
END_INSN(trace_expandarray);}}}
INSN_ENTRY(trace_concatarray){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(concatarray);
END_INSN(trace_concatarray);}}}
INSN_ENTRY(trace_splatarray){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(splatarray);
END_INSN(trace_splatarray);}}}
INSN_ENTRY(trace_newhash){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(newhash);
END_INSN(trace_newhash);}}}
INSN_ENTRY(trace_newrange){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(newrange);
END_INSN(trace_newrange);}}}
INSN_ENTRY(trace_pop){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(pop);
END_INSN(trace_pop);}}}
INSN_ENTRY(trace_dup){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(dup);
END_INSN(trace_dup);}}}
INSN_ENTRY(trace_dupn){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(dupn);
END_INSN(trace_dupn);}}}
INSN_ENTRY(trace_swap){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(swap);
END_INSN(trace_swap);}}}
INSN_ENTRY(trace_reverse){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(reverse);
END_INSN(trace_reverse);}}}
INSN_ENTRY(trace_reput){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(reput);
END_INSN(trace_reput);}}}
INSN_ENTRY(trace_topn){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(topn);
END_INSN(trace_topn);}}}
INSN_ENTRY(trace_setn){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setn);
END_INSN(trace_setn);}}}
INSN_ENTRY(trace_adjuststack){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(adjuststack);
END_INSN(trace_adjuststack);}}}
INSN_ENTRY(trace_defined){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(defined);
END_INSN(trace_defined);}}}
INSN_ENTRY(trace_checkmatch){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(checkmatch);
END_INSN(trace_checkmatch);}}}
INSN_ENTRY(trace_checkkeyword){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(checkkeyword);
END_INSN(trace_checkkeyword);}}}
INSN_ENTRY(trace_tracecoverage){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(tracecoverage);
END_INSN(trace_tracecoverage);}}}
INSN_ENTRY(trace_defineclass){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(defineclass);
END_INSN(trace_defineclass);}}}
INSN_ENTRY(trace_send){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(send);
END_INSN(trace_send);}}}
INSN_ENTRY(trace_opt_str_freeze){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_str_freeze);
END_INSN(trace_opt_str_freeze);}}}
INSN_ENTRY(trace_opt_str_uminus){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_str_uminus);
END_INSN(trace_opt_str_uminus);}}}
INSN_ENTRY(trace_opt_newarray_max){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_newarray_max);
END_INSN(trace_opt_newarray_max);}}}
INSN_ENTRY(trace_opt_newarray_min){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_newarray_min);
END_INSN(trace_opt_newarray_min);}}}
INSN_ENTRY(trace_opt_send_without_block){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_send_without_block);
END_INSN(trace_opt_send_without_block);}}}
INSN_ENTRY(trace_invokesuper){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(invokesuper);
END_INSN(trace_invokesuper);}}}
INSN_ENTRY(trace_invokeblock){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(invokeblock);
END_INSN(trace_invokeblock);}}}
INSN_ENTRY(trace_leave){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(leave);
END_INSN(trace_leave);}}}
INSN_ENTRY(trace_throw){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(throw);
END_INSN(trace_throw);}}}
INSN_ENTRY(trace_jump){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(jump);
END_INSN(trace_jump);}}}
INSN_ENTRY(trace_branchif){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(branchif);
END_INSN(trace_branchif);}}}
INSN_ENTRY(trace_branchunless){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(branchunless);
END_INSN(trace_branchunless);}}}
INSN_ENTRY(trace_branchnil){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(branchnil);
END_INSN(trace_branchnil);}}}
INSN_ENTRY(trace_branchiftype){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(branchiftype);
END_INSN(trace_branchiftype);}}}
INSN_ENTRY(trace_getinlinecache){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getinlinecache);
END_INSN(trace_getinlinecache);}}}
INSN_ENTRY(trace_setinlinecache){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setinlinecache);
END_INSN(trace_setinlinecache);}}}
INSN_ENTRY(trace_once){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(once);
END_INSN(trace_once);}}}
INSN_ENTRY(trace_opt_case_dispatch){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_case_dispatch);
END_INSN(trace_opt_case_dispatch);}}}
INSN_ENTRY(trace_opt_plus){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_plus);
END_INSN(trace_opt_plus);}}}
INSN_ENTRY(trace_opt_minus){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_minus);
END_INSN(trace_opt_minus);}}}
INSN_ENTRY(trace_opt_mult){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_mult);
END_INSN(trace_opt_mult);}}}
INSN_ENTRY(trace_opt_div){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_div);
END_INSN(trace_opt_div);}}}
INSN_ENTRY(trace_opt_mod){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_mod);
END_INSN(trace_opt_mod);}}}
INSN_ENTRY(trace_opt_eq){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_eq);
END_INSN(trace_opt_eq);}}}
INSN_ENTRY(trace_opt_neq){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_neq);
END_INSN(trace_opt_neq);}}}
INSN_ENTRY(trace_opt_lt){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_lt);
END_INSN(trace_opt_lt);}}}
INSN_ENTRY(trace_opt_le){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_le);
END_INSN(trace_opt_le);}}}
INSN_ENTRY(trace_opt_gt){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_gt);
END_INSN(trace_opt_gt);}}}
INSN_ENTRY(trace_opt_ge){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_ge);
END_INSN(trace_opt_ge);}}}
INSN_ENTRY(trace_opt_ltlt){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_ltlt);
END_INSN(trace_opt_ltlt);}}}
INSN_ENTRY(trace_opt_aref){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_aref);
END_INSN(trace_opt_aref);}}}
INSN_ENTRY(trace_opt_aset){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_aset);
END_INSN(trace_opt_aset);}}}
INSN_ENTRY(trace_opt_aset_with){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_aset_with);
END_INSN(trace_opt_aset_with);}}}
INSN_ENTRY(trace_opt_aref_with){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_aref_with);
END_INSN(trace_opt_aref_with);}}}
INSN_ENTRY(trace_opt_length){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_length);
END_INSN(trace_opt_length);}}}
INSN_ENTRY(trace_opt_size){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_size);
END_INSN(trace_opt_size);}}}
INSN_ENTRY(trace_opt_empty_p){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_empty_p);
END_INSN(trace_opt_empty_p);}}}
INSN_ENTRY(trace_opt_succ){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_succ);
END_INSN(trace_opt_succ);}}}
INSN_ENTRY(trace_opt_not){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_not);
END_INSN(trace_opt_not);}}}
INSN_ENTRY(trace_opt_regexpmatch1){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_regexpmatch1);
END_INSN(trace_opt_regexpmatch1);}}}
INSN_ENTRY(trace_opt_regexpmatch2){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_regexpmatch2);
END_INSN(trace_opt_regexpmatch2);}}}
INSN_ENTRY(trace_opt_call_c_function){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(opt_call_c_function);
END_INSN(trace_opt_call_c_function);}}}
INSN_ENTRY(trace_bitblt){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(bitblt);
END_INSN(trace_bitblt);}}}
INSN_ENTRY(trace_answer){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(answer);
END_INSN(trace_answer);}}}
INSN_ENTRY(trace_getlocal_OP__WC__0){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getlocal_OP__WC__0);
END_INSN(trace_getlocal_OP__WC__0);}}}
INSN_ENTRY(trace_getlocal_OP__WC__1){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(getlocal_OP__WC__1);
END_INSN(trace_getlocal_OP__WC__1);}}}
INSN_ENTRY(trace_setlocal_OP__WC__0){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setlocal_OP__WC__0);
END_INSN(trace_setlocal_OP__WC__0);}}}
INSN_ENTRY(trace_setlocal_OP__WC__1){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(setlocal_OP__WC__1);
END_INSN(trace_setlocal_OP__WC__1);}}}
INSN_ENTRY(trace_putobject_OP_INT2FIX_O_0_C_){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(putobject_OP_INT2FIX_O_0_C_);
END_INSN(trace_putobject_OP_INT2FIX_O_0_C_);}}}
INSN_ENTRY(trace_putobject_OP_INT2FIX_O_1_C_){
{
{
vm_trace(ec, GET_CFP(), GET_PC());
DISPATCH_ORIGINAL_INSN(putobject_OP_INT2FIX_O_1_C_);
END_INSN(trace_putobject_OP_INT2FIX_O_1_C_);}}}