Module: RubyVM::MJIT

Defined in:
lib/mjit/instruction.rb

Defined Under Namespace

Classes: Instruction

Constant Summary collapse

INSNS =
{
  0 => Instruction.new(
    name: :nop,
    bin: 0, # BIN(nop)
    len: 1, # insn_len
    expr: "{\n  /* none */\n}\n    EXPR\n    declarations: [],\n    preamble: [],\n    opes: [],\n    pops: [],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  1 => Instruction.new(\n    name: :getlocal,\n    bin: 1, # BIN(getlocal)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = *(vm_get_ep(GET_EP(), level) - idx);\n  RB_DEBUG_COUNTER_INC(lvar_get);\n  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(lindex_t) idx\", \"MAYBE_UNUSED(rb_num_t) level\"],\n    preamble: [],\n    opes: [{:decl=>\"lindex_t idx\", :type=>\"lindex_t\", :name=>\"idx\"}, {:decl=>\"rb_num_t level\", :type=>\"rb_num_t\", :name=>\"level\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  2 => Instruction.new(\n    name: :setlocal,\n    bin: 2, # BIN(setlocal)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  vm_env_write(vm_get_ep(GET_EP(), level), -(int)idx, val);\n  RB_DEBUG_COUNTER_INC(lvar_set);\n  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(lindex_t) idx\", \"MAYBE_UNUSED(rb_num_t) level\"],\n    preamble: [],\n    opes: [{:decl=>\"lindex_t idx\", :type=>\"lindex_t\", :name=>\"idx\"}, {:decl=>\"rb_num_t level\", :type=>\"rb_num_t\", :name=>\"level\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  3 => Instruction.new(\n    name: :getblockparam,\n    bin: 3, # BIN(getblockparam)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  const VALUE *ep = vm_get_ep(GET_EP(), level);\n  VM_ASSERT(VM_ENV_LOCAL_P(ep));\n\n  if (!VM_ENV_FLAGS(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM)) {\n      val = rb_vm_bh_to_procval(ec, VM_ENV_BLOCK_HANDLER(ep));\n      vm_env_write(ep, -(int)idx, val);\n      VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);\n  }\n  else {\n      val = *(ep - idx);\n      RB_DEBUG_COUNTER_INC(lvar_get);\n      (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(lindex_t) idx\", \"MAYBE_UNUSED(rb_num_t) level\"],\n    preamble: [],\n    opes: [{:decl=>\"lindex_t idx\", :type=>\"lindex_t\", :name=>\"idx\"}, {:decl=>\"rb_num_t level\", :type=>\"rb_num_t\", :name=>\"level\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  4 => Instruction.new(\n    name: :setblockparam,\n    bin: 4, # BIN(setblockparam)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  const VALUE *ep = vm_get_ep(GET_EP(), level);\n  VM_ASSERT(VM_ENV_LOCAL_P(ep));\n\n  vm_env_write(ep, -(int)idx, val);\n  RB_DEBUG_COUNTER_INC(lvar_set);\n  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);\n\n  VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(lindex_t) idx\", \"MAYBE_UNUSED(rb_num_t) level\"],\n    preamble: [],\n    opes: [{:decl=>\"lindex_t idx\", :type=>\"lindex_t\", :name=>\"idx\"}, {:decl=>\"rb_num_t level\", :type=>\"rb_num_t\", :name=>\"level\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  5 => Instruction.new(\n    name: :getblockparamproxy,\n    bin: 5, # BIN(getblockparamproxy)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  const VALUE *ep = vm_get_ep(GET_EP(), level);\n  VM_ASSERT(VM_ENV_LOCAL_P(ep));\n\n  if (!VM_ENV_FLAGS(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM)) {\n      VALUE block_handler = VM_ENV_BLOCK_HANDLER(ep);\n\n      if (block_handler) {\n          switch (vm_block_handler_type(block_handler)) {\n            case block_handler_type_iseq:\n            case block_handler_type_ifunc:\n              val = rb_block_param_proxy;\n              break;\n            case block_handler_type_symbol:\n              val = rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler));\n              goto INSN_LABEL(set);\n            case block_handler_type_proc:\n              val = VM_BH_TO_PROC(block_handler);\n              goto INSN_LABEL(set);\n            default:\n              VM_UNREACHABLE(getblockparamproxy);\n          }\n      }\n      else {\n          val = Qnil;\n        INSN_LABEL(set):\n          vm_env_write(ep, -(int)idx, val);\n          VM_ENV_FLAGS_SET(ep, VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM);\n      }\n  }\n  else {\n      val = *(ep - idx);\n      RB_DEBUG_COUNTER_INC(lvar_get);\n      (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(lindex_t) idx\", \"MAYBE_UNUSED(rb_num_t) level\"],\n    preamble: [],\n    opes: [{:decl=>\"lindex_t idx\", :type=>\"lindex_t\", :name=>\"idx\"}, {:decl=>\"rb_num_t level\", :type=>\"rb_num_t\", :name=>\"level\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  6 => Instruction.new(\n    name: :getspecial,\n    bin: 6, # BIN(getspecial)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_getspecial(ec, GET_LEP(), key, type);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) key, type\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t key\", :type=>\"rb_num_t\", :name=>\"key\"}, {:decl=>\"rb_num_t type\", :type=>\"rb_num_t\", :name=>\"type\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  7 => Instruction.new(\n    name: :setspecial,\n    bin: 7, # BIN(setspecial)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  lep_svar_set(ec, GET_LEP(), key, obj);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) obj\", \"MAYBE_UNUSED(rb_num_t) key\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t key\", :type=>\"rb_num_t\", :name=>\"key\"}],\n    pops: [{:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  8 => Instruction.new(\n    name: :getinstancevariable,\n    bin: 8, # BIN(getinstancevariable)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_getinstancevariable(GET_ISEQ(), GET_SELF(), id, ic);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ID) id\", \"MAYBE_UNUSED(IVC) ic\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"ID id\", :type=>\"ID\", :name=>\"id\"}, {:decl=>\"IVC ic\", :type=>\"IVC\", :name=>\"ic\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  9 => Instruction.new(\n    name: :setinstancevariable,\n    bin: 9, # BIN(setinstancevariable)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  vm_setinstancevariable(GET_ISEQ(), GET_SELF(), id, val, ic);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ID) id\", \"MAYBE_UNUSED(IVC) ic\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"ID id\", :type=>\"ID\", :name=>\"id\"}, {:decl=>\"IVC ic\", :type=>\"IVC\", :name=>\"ic\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  10 => Instruction.new(\n    name: :getclassvariable,\n    bin: 10, # BIN(getclassvariable)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  rb_control_frame_t *cfp = GET_CFP();\n  val = vm_getclassvariable(GET_ISEQ(), cfp, id, ic);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ICVARC) ic\", \"MAYBE_UNUSED(ID) id\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"ID id\", :type=>\"ID\", :name=>\"id\"}, {:decl=>\"ICVARC ic\", :type=>\"ICVARC\", :name=>\"ic\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  11 => Instruction.new(\n    name: :setclassvariable,\n    bin: 11, # BIN(setclassvariable)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  vm_ensure_not_refinement_module(GET_SELF());\n  vm_setclassvariable(GET_ISEQ(), GET_CFP(), id,  val, ic);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ICVARC) ic\", \"MAYBE_UNUSED(ID) id\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"ID id\", :type=>\"ID\", :name=>\"id\"}, {:decl=>\"ICVARC ic\", :type=>\"ICVARC\", :name=>\"ic\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  12 => Instruction.new(\n    name: :opt_getconstant_path,\n    bin: 12, # BIN(opt_getconstant_path)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  const ID *segments = ic->segments;\n  struct iseq_inline_constant_cache_entry *ice = ic->entry;\n  if (ice && vm_ic_hit_p(ice, GET_EP())) {\n      val = ice->value;\n\n      VM_ASSERT(val == vm_get_ev_const_chain(ec, segments));\n  } else {\n      ruby_vm_constant_cache_misses++;\n      val = vm_get_ev_const_chain(ec, segments);\n      vm_ic_track_const_chain(GET_CFP(), ic, segments);\n      // Because leaf=false, we need to undo the PC increment to get the address to this instruction\n      // INSN_ATTR(width) == 2\n      vm_ic_update(GET_ISEQ(), ic, val, GET_EP(), GET_PC() - 2);\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(IC) ic\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"IC ic\", :type=>\"IC\", :name=>\"ic\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  13 => Instruction.new(\n    name: :getconstant,\n    bin: 13, # BIN(getconstant)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_get_ev_const(ec, klass, id, allow_nil == Qtrue, 0);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ID) id\", \"MAYBE_UNUSED(VALUE) allow_nil, klass, val\"],\n    preamble: [],\n    opes: [{:decl=>\"ID id\", :type=>\"ID\", :name=>\"id\"}],\n    pops: [{:decl=>\"VALUE klass\", :type=>\"VALUE\", :name=>\"klass\"}, {:decl=>\"VALUE allow_nil\", :type=>\"VALUE\", :name=>\"allow_nil\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  14 => Instruction.new(\n    name: :setconstant,\n    bin: 14, # BIN(setconstant)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  vm_check_if_namespace(cbase);\n  vm_ensure_not_refinement_module(GET_SELF());\n  rb_const_set(cbase, id, val);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ID) id\", \"MAYBE_UNUSED(VALUE) cbase, val\"],\n    preamble: [],\n    opes: [{:decl=>\"ID id\", :type=>\"ID\", :name=>\"id\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}, {:decl=>\"VALUE cbase\", :type=>\"VALUE\", :name=>\"cbase\"}],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  15 => Instruction.new(\n    name: :getglobal,\n    bin: 15, # BIN(getglobal)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = rb_gvar_get(gid);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ID) gid\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"ID gid\", :type=>\"ID\", :name=>\"gid\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  16 => Instruction.new(\n    name: :setglobal,\n    bin: 16, # BIN(setglobal)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  rb_gvar_set(gid, val);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ID) gid\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"ID gid\", :type=>\"ID\", :name=>\"gid\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  17 => Instruction.new(\n    name: :putnil,\n    bin: 17, # BIN(putnil)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  val = Qnil;\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  18 => Instruction.new(\n    name: :putself,\n    bin: 18, # BIN(putself)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  val = GET_SELF();\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  19 => Instruction.new(\n    name: :putobject,\n    bin: 19, # BIN(putobject)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  /* */\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  20 => Instruction.new(\n    name: :putspecialobject,\n    bin: 20, # BIN(putspecialobject)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  enum vm_special_object_type type;\n\n  type = (enum vm_special_object_type)value_type;\n  val = vm_get_special_object(GET_EP(), type);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) value_type\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t value_type\", :type=>\"rb_num_t\", :name=>\"value_type\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  21 => Instruction.new(\n    name: :putstring,\n    bin: 21, # BIN(putstring)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = rb_ec_str_resurrect(ec, str);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) str, val\"],\n    preamble: [],\n    opes: [{:decl=>\"VALUE str\", :type=>\"VALUE\", :name=>\"str\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  22 => Instruction.new(\n    name: :concatstrings,\n    bin: 22, # BIN(concatstrings)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = rb_str_concat_literals(num, STACK_ADDR_FROM_TOP(num));\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) num\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t num\", :type=>\"rb_num_t\", :name=>\"num\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  23 => Instruction.new(\n    name: :anytostring,\n    bin: 23, # BIN(anytostring)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  val = rb_obj_as_string_result(str, val);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) str, val\"],\n    preamble: [],\n    opes: [],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}, {:decl=>\"VALUE str\", :type=>\"VALUE\", :name=>\"str\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  24 => Instruction.new(\n    name: :toregexp,\n    bin: 24, # BIN(toregexp)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  const VALUE ary = rb_ary_tmp_new_from_values(0, cnt, STACK_ADDR_FROM_TOP(cnt));\n  val = rb_reg_new_ary(ary, (int)opt);\n  rb_ary_clear(ary);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) cnt, opt\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t opt\", :type=>\"rb_num_t\", :name=>\"opt\"}, {:decl=>\"rb_num_t cnt\", :type=>\"rb_num_t\", :name=>\"cnt\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  25 => Instruction.new(\n    name: :intern,\n    bin: 25, # BIN(intern)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  sym = rb_str_intern(str);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) str, sym\"],\n    preamble: [],\n    opes: [],\n    pops: [{:decl=>\"VALUE str\", :type=>\"VALUE\", :name=>\"str\"}],\n    rets: [{:decl=>\"VALUE sym\", :type=>\"VALUE\", :name=>\"sym\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  26 => Instruction.new(\n    name: :newarray,\n    bin: 26, # BIN(newarray)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = rb_ec_ary_new_from_values(ec, num, STACK_ADDR_FROM_TOP(num));\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) num\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t num\", :type=>\"rb_num_t\", :name=>\"num\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  27 => Instruction.new(\n    name: :newarraykwsplat,\n    bin: 27, # BIN(newarraykwsplat)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  if (RHASH_EMPTY_P(*STACK_ADDR_FROM_TOP(1))) {\n      val = rb_ary_new4(num-1, STACK_ADDR_FROM_TOP(num));\n  }\n  else {\n      val = rb_ary_new4(num, STACK_ADDR_FROM_TOP(num));\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) num\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t num\", :type=>\"rb_num_t\", :name=>\"num\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  28 => Instruction.new(\n    name: :duparray,\n    bin: 28, # BIN(duparray)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  RUBY_DTRACE_CREATE_HOOK(ARRAY, RARRAY_LEN(ary));\n  val = rb_ary_resurrect(ary);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) ary, val\"],\n    preamble: [],\n    opes: [{:decl=>\"VALUE ary\", :type=>\"VALUE\", :name=>\"ary\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  29 => Instruction.new(\n    name: :duphash,\n    bin: 29, # BIN(duphash)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  RUBY_DTRACE_CREATE_HOOK(HASH, RHASH_SIZE(hash) << 1);\n  val = rb_hash_resurrect(hash);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) hash, val\"],\n    preamble: [],\n    opes: [{:decl=>\"VALUE hash\", :type=>\"VALUE\", :name=>\"hash\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  30 => Instruction.new(\n    name: :expandarray,\n    bin: 30, # BIN(expandarray)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  vm_expandarray(GET_SP(), ary, num, (int)flag);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) ary\", \"MAYBE_UNUSED(rb_num_t) flag, num\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t num\", :type=>\"rb_num_t\", :name=>\"num\"}, {:decl=>\"rb_num_t flag\", :type=>\"rb_num_t\", :name=>\"flag\"}],\n    pops: [{:decl=>\"VALUE ary\", :type=>\"VALUE\", :name=>\"ary\"}],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  31 => Instruction.new(\n    name: :concatarray,\n    bin: 31, # BIN(concatarray)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  ary = vm_concat_array(ary1, ary2);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) ary, ary1, ary2\"],\n    preamble: [],\n    opes: [],\n    pops: [{:decl=>\"VALUE ary1\", :type=>\"VALUE\", :name=>\"ary1\"}, {:decl=>\"VALUE ary2\", :type=>\"VALUE\", :name=>\"ary2\"}],\n    rets: [{:decl=>\"VALUE ary\", :type=>\"VALUE\", :name=>\"ary\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  32 => Instruction.new(\n    name: :splatarray,\n    bin: 32, # BIN(splatarray)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  obj = vm_splat_array(flag, ary);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) ary, flag, obj\"],\n    preamble: [],\n    opes: [{:decl=>\"VALUE flag\", :type=>\"VALUE\", :name=>\"flag\"}],\n    pops: [{:decl=>\"VALUE ary\", :type=>\"VALUE\", :name=>\"ary\"}],\n    rets: [{:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  33 => Instruction.new(\n    name: :newhash,\n    bin: 33, # BIN(newhash)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  RUBY_DTRACE_CREATE_HOOK(HASH, num);\n\n  if (num) {\n      val = rb_hash_new_with_size(num / 2);\n      rb_hash_bulk_insert(num, STACK_ADDR_FROM_TOP(num), val);\n  }\n  else {\n      val = rb_hash_new();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) num\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t num\", :type=>\"rb_num_t\", :name=>\"num\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  34 => Instruction.new(\n    name: :newrange,\n    bin: 34, # BIN(newrange)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = rb_range_new(low, high, (int)flag);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) high, low, val\", \"MAYBE_UNUSED(rb_num_t) flag\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t flag\", :type=>\"rb_num_t\", :name=>\"flag\"}],\n    pops: [{:decl=>\"VALUE low\", :type=>\"VALUE\", :name=>\"low\"}, {:decl=>\"VALUE high\", :type=>\"VALUE\", :name=>\"high\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  35 => Instruction.new(\n    name: :pop,\n    bin: 35, # BIN(pop)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  (void)val;\n  /* none */\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  36 => Instruction.new(\n    name: :dup,\n    bin: 36, # BIN(dup)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  val1 = val2 = val;\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val, val1, val2\"],\n    preamble: [],\n    opes: [],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [{:decl=>\"VALUE val1\", :type=>\"VALUE\", :name=>\"val1\"}, {:decl=>\"VALUE val2\", :type=>\"VALUE\", :name=>\"val2\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  37 => Instruction.new(\n    name: :dupn,\n    bin: 37, # BIN(dupn)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  void *dst = GET_SP();\n  void *src = STACK_ADDR_FROM_TOP(n);\n\n  MEMCPY(dst, src, VALUE, n);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(rb_num_t) n\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t n\", :type=>\"rb_num_t\", :name=>\"n\"}],\n    pops: [],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  38 => Instruction.new(\n    name: :swap,\n    bin: 38, # BIN(swap)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  /* none */\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) obj, val\"],\n    preamble: [],\n    opes: [],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}, {:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  39 => Instruction.new(\n    name: :opt_reverse,\n    bin: 39, # BIN(opt_reverse)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  rb_num_t i;\n  VALUE *sp = STACK_ADDR_FROM_TOP(n);\n\n  for (i=0; i<n/2; i++) {\n      VALUE v0 = sp[i];\n      VALUE v1 = TOPN(i);\n      sp[i] = v1;\n      TOPN(i) = v0;\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(rb_num_t) n\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t n\", :type=>\"rb_num_t\", :name=>\"n\"}],\n    pops: [],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  40 => Instruction.new(\n    name: :topn,\n    bin: 40, # BIN(topn)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = TOPN(n);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) n\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t n\", :type=>\"rb_num_t\", :name=>\"n\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  41 => Instruction.new(\n    name: :setn,\n    bin: 41, # BIN(setn)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  TOPN(n) = val;\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) n\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t n\", :type=>\"rb_num_t\", :name=>\"n\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  42 => Instruction.new(\n    name: :adjuststack,\n    bin: 42, # BIN(adjuststack)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  /* none */\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(rb_num_t) n\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t n\", :type=>\"rb_num_t\", :name=>\"n\"}],\n    pops: [],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  43 => Instruction.new(\n    name: :defined,\n    bin: 43, # BIN(defined)\n    len: 4, # insn_len\n    expr: <<-EXPR,\n{\n  val = Qnil;\n  if (vm_defined(ec, GET_CFP(), op_type, obj, v)) {\n      val = pushval;\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) obj, pushval, v, val\", \"MAYBE_UNUSED(rb_num_t) op_type\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t op_type\", :type=>\"rb_num_t\", :name=>\"op_type\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}, {:decl=>\"VALUE pushval\", :type=>\"VALUE\", :name=>\"pushval\"}],\n    pops: [{:decl=>\"VALUE v\", :type=>\"VALUE\", :name=>\"v\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  44 => Instruction.new(\n    name: :checkmatch,\n    bin: 44, # BIN(checkmatch)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  result = vm_check_match(ec, target, pattern, flag);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) pattern, result, target\", \"MAYBE_UNUSED(rb_num_t) flag\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t flag\", :type=>\"rb_num_t\", :name=>\"flag\"}],\n    pops: [{:decl=>\"VALUE target\", :type=>\"VALUE\", :name=>\"target\"}, {:decl=>\"VALUE pattern\", :type=>\"VALUE\", :name=>\"pattern\"}],\n    rets: [{:decl=>\"VALUE result\", :type=>\"VALUE\", :name=>\"result\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  45 => Instruction.new(\n    name: :checkkeyword,\n    bin: 45, # BIN(checkkeyword)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  ret = vm_check_keyword(kw_bits_index, keyword_index, GET_EP());\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) ret\", \"MAYBE_UNUSED(lindex_t) keyword_index, kw_bits_index\"],\n    preamble: [],\n    opes: [{:decl=>\"lindex_t kw_bits_index\", :type=>\"lindex_t\", :name=>\"kw_bits_index\"}, {:decl=>\"lindex_t keyword_index\", :type=>\"lindex_t\", :name=>\"keyword_index\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE ret\", :type=>\"VALUE\", :name=>\"ret\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  46 => Instruction.new(\n    name: :checktype,\n    bin: 46, # BIN(checktype)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  ret = RBOOL(TYPE(val) == (int)type);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) ret, val\", \"MAYBE_UNUSED(rb_num_t) type\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t type\", :type=>\"rb_num_t\", :name=>\"type\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [{:decl=>\"VALUE ret\", :type=>\"VALUE\", :name=>\"ret\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  47 => Instruction.new(\n    name: :defineclass,\n    bin: 47, # BIN(defineclass)\n    len: 4, # insn_len\n    expr: <<-EXPR,\n{\n  VALUE klass = vm_find_or_create_class_by_id(id, flags, cbase, super);\n\n  rb_iseq_check(class_iseq);\n\n  /* enter scope */\n  vm_push_frame(ec, class_iseq, VM_FRAME_MAGIC_CLASS | VM_ENV_FLAG_LOCAL, klass,\n                GET_BLOCK_HANDLER(),\n                (VALUE)vm_cref_push(ec, klass, NULL, FALSE, FALSE),\n                ISEQ_BODY(class_iseq)->iseq_encoded, GET_SP(),\n                ISEQ_BODY(class_iseq)->local_table_size,\n                ISEQ_BODY(class_iseq)->stack_max);\n  RESTORE_REGS();\n  NEXT_INSN();\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ID) id\", \"MAYBE_UNUSED(ISEQ) class_iseq\", \"MAYBE_UNUSED(VALUE) cbase, super, val\", \"MAYBE_UNUSED(rb_num_t) flags\"],\n    preamble: [],\n    opes: [{:decl=>\"ID id\", :type=>\"ID\", :name=>\"id\"}, {:decl=>\"ISEQ class_iseq\", :type=>\"ISEQ\", :name=>\"class_iseq\"}, {:decl=>\"rb_num_t flags\", :type=>\"rb_num_t\", :name=>\"flags\"}],\n    pops: [{:decl=>\"VALUE cbase\", :type=>\"VALUE\", :name=>\"cbase\"}, {:decl=>\"VALUE super\", :type=>\"VALUE\", :name=>\"super\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: true,\n  ),\n  48 => Instruction.new(\n    name: :definemethod,\n    bin: 48, # BIN(definemethod)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  vm_define_method(ec, Qnil, id, (VALUE)iseq, FALSE);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ID) id\", \"MAYBE_UNUSED(ISEQ) iseq\"],\n    preamble: [],\n    opes: [{:decl=>\"ID id\", :type=>\"ID\", :name=>\"id\"}, {:decl=>\"ISEQ iseq\", :type=>\"ISEQ\", :name=>\"iseq\"}],\n    pops: [],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: true,\n  ),\n  49 => Instruction.new(\n    name: :definesmethod,\n    bin: 49, # BIN(definesmethod)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  vm_define_method(ec, obj, id, (VALUE)iseq, TRUE);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ID) id\", \"MAYBE_UNUSED(ISEQ) iseq\", \"MAYBE_UNUSED(VALUE) obj\"],\n    preamble: [],\n    opes: [{:decl=>\"ID id\", :type=>\"ID\", :name=>\"id\"}, {:decl=>\"ISEQ iseq\", :type=>\"ISEQ\", :name=>\"iseq\"}],\n    pops: [{:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: true,\n  ),\n  50 => Instruction.new(\n    name: :send,\n    bin: 50, # BIN(send)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, false);\n  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);\n\n  if (val == Qundef) {\n      RESTORE_REGS();\n      NEXT_INSN();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(ISEQ) blockiseq\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}, {:decl=>\"ISEQ blockiseq\", :type=>\"ISEQ\", :name=>\"blockiseq\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: true,\n  ),\n  51 => Instruction.new(\n    name: :opt_send_without_block,\n    bin: 51, # BIN(opt_send_without_block)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  VALUE bh = VM_BLOCK_HANDLER_NONE;\n  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_method);\n\n  if (val == Qundef) {\n      RESTORE_REGS();\n      NEXT_INSN();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: true,\n  ),\n  52 => Instruction.new(\n    name: :objtostring,\n    bin: 52, # BIN(objtostring)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_objtostring(GET_ISEQ(), recv, cd);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  53 => Instruction.new(\n    name: :opt_str_freeze,\n    bin: 53, # BIN(opt_str_freeze)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_str_freeze(str, BOP_FREEZE, idFreeze);\n\n  if (val == Qundef) {\n      PUSH(rb_str_resurrect(str));\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) str, val\"],\n    preamble: [],\n    opes: [{:decl=>\"VALUE str\", :type=>\"VALUE\", :name=>\"str\"}, {:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  54 => Instruction.new(\n    name: :opt_nil_p,\n    bin: 54, # BIN(opt_nil_p)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_nil_p(GET_ISEQ(), cd, recv);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  55 => Instruction.new(\n    name: :opt_str_uminus,\n    bin: 55, # BIN(opt_str_uminus)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_str_freeze(str, BOP_UMINUS, idUMinus);\n\n  if (val == Qundef) {\n      PUSH(rb_str_resurrect(str));\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) str, val\"],\n    preamble: [],\n    opes: [{:decl=>\"VALUE str\", :type=>\"VALUE\", :name=>\"str\"}, {:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  56 => Instruction.new(\n    name: :opt_newarray_max,\n    bin: 56, # BIN(opt_newarray_max)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_newarray_max(ec, num, STACK_ADDR_FROM_TOP(num));\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) num\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t num\", :type=>\"rb_num_t\", :name=>\"num\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  57 => Instruction.new(\n    name: :opt_newarray_min,\n    bin: 57, # BIN(opt_newarray_min)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_newarray_min(ec, num, STACK_ADDR_FROM_TOP(num));\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) num\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t num\", :type=>\"rb_num_t\", :name=>\"num\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  58 => Instruction.new(\n    name: :invokesuper,\n    bin: 58, # BIN(invokesuper)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  VALUE bh = vm_caller_setup_arg_block(ec, GET_CFP(), cd->ci, blockiseq, true);\n  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_super);\n\n  if (val == Qundef) {\n      RESTORE_REGS();\n      NEXT_INSN();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(ISEQ) blockiseq\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}, {:decl=>\"ISEQ blockiseq\", :type=>\"ISEQ\", :name=>\"blockiseq\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: true,\n  ),\n  59 => Instruction.new(\n    name: :invokeblock,\n    bin: 59, # BIN(invokeblock)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  VALUE bh = VM_BLOCK_HANDLER_NONE;\n  val = vm_sendish(ec, GET_CFP(), cd, bh, mexp_search_invokeblock);\n\n  if (val == Qundef) {\n      RESTORE_REGS();\n      NEXT_INSN();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: true,\n  ),\n  60 => Instruction.new(\n    name: :leave,\n    bin: 60, # BIN(leave)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  if (OPT_CHECKED_RUN) {\n      const VALUE *const bp = vm_base_ptr(GET_CFP());\n      if (GET_SP() != bp) {\n          vm_stack_consistency_error(ec, GET_CFP(), bp);\n      }\n  }\n\n  if (vm_pop_frame(ec, GET_CFP(), GET_EP())) {\n#if OPT_CALL_THREADED_CODE\n      rb_ec_thread_ptr(ec)->retval = val;\n      return 0;\n#else\n      return val;\n#endif\n  }\n  else {\n      RESTORE_REGS();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: true,\n  ),\n  61 => Instruction.new(\n    name: :throw,\n    bin: 61, # BIN(throw)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_throw(ec, GET_CFP(), throw_state, throwobj);\n  THROW_EXCEPTION(val);\n  /* unreachable */\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) throwobj, val\", \"MAYBE_UNUSED(rb_num_t) throw_state\"],\n    preamble: [],\n    opes: [{:decl=>\"rb_num_t throw_state\", :type=>\"rb_num_t\", :name=>\"throw_state\"}],\n    pops: [{:decl=>\"VALUE throwobj\", :type=>\"VALUE\", :name=>\"throwobj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  62 => Instruction.new(\n    name: :jump,\n    bin: 62, # BIN(jump)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  RUBY_VM_CHECK_INTS(ec);\n  JUMP(dst);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(OFFSET) dst\"],\n    preamble: [],\n    opes: [{:decl=>\"OFFSET dst\", :type=>\"OFFSET\", :name=>\"dst\"}],\n    pops: [],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: true,\n    handles_sp?: false,\n  ),\n  63 => Instruction.new(\n    name: :branchif,\n    bin: 63, # BIN(branchif)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  if (RTEST(val)) {\n      RUBY_VM_CHECK_INTS(ec);\n      JUMP(dst);\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(OFFSET) dst\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"OFFSET dst\", :type=>\"OFFSET\", :name=>\"dst\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: true,\n    handles_sp?: false,\n  ),\n  64 => Instruction.new(\n    name: :branchunless,\n    bin: 64, # BIN(branchunless)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  if (!RTEST(val)) {\n      RUBY_VM_CHECK_INTS(ec);\n      JUMP(dst);\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(OFFSET) dst\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"OFFSET dst\", :type=>\"OFFSET\", :name=>\"dst\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: true,\n    handles_sp?: false,\n  ),\n  65 => Instruction.new(\n    name: :branchnil,\n    bin: 65, # BIN(branchnil)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  if (NIL_P(val)) {\n      RUBY_VM_CHECK_INTS(ec);\n      JUMP(dst);\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(OFFSET) dst\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"OFFSET dst\", :type=>\"OFFSET\", :name=>\"dst\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: false,\n    leaf_without_check_ints?: true,\n    handles_sp?: false,\n  ),\n  66 => Instruction.new(\n    name: :once,\n    bin: 66, # BIN(once)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_once_dispatch(ec, iseq, ise);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(ISE) ise\", \"MAYBE_UNUSED(ISEQ) iseq\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"ISEQ iseq\", :type=>\"ISEQ\", :name=>\"iseq\"}, {:decl=>\"ISE ise\", :type=>\"ISE\", :name=>\"ise\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: true,\n  ),\n  67 => Instruction.new(\n    name: :opt_case_dispatch,\n    bin: 67, # BIN(opt_case_dispatch)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  OFFSET dst = vm_case_dispatch(hash, else_offset, key);\n\n  if (dst) {\n      JUMP(dst);\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CDHASH) hash\", \"MAYBE_UNUSED(OFFSET) else_offset\", \"MAYBE_UNUSED(VALUE) key\"],\n    preamble: [],\n    opes: [{:decl=>\"CDHASH hash\", :type=>\"CDHASH\", :name=>\"hash\"}, {:decl=>\"OFFSET else_offset\", :type=>\"OFFSET\", :name=>\"else_offset\"}],\n    pops: [{:decl=>\"VALUE key\", :type=>\"VALUE\", :name=>\"key\"}],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  68 => Instruction.new(\n    name: :opt_plus,\n    bin: 68, # BIN(opt_plus)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_plus(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  69 => Instruction.new(\n    name: :opt_minus,\n    bin: 69, # BIN(opt_minus)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_minus(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  70 => Instruction.new(\n    name: :opt_mult,\n    bin: 70, # BIN(opt_mult)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_mult(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  71 => Instruction.new(\n    name: :opt_div,\n    bin: 71, # BIN(opt_div)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_div(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  72 => Instruction.new(\n    name: :opt_mod,\n    bin: 72, # BIN(opt_mod)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_mod(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  73 => Instruction.new(\n    name: :opt_eq,\n    bin: 73, # BIN(opt_eq)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = opt_equality(GET_ISEQ(), recv, obj, cd);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  74 => Instruction.new(\n    name: :opt_neq,\n    bin: 74, # BIN(opt_neq)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_neq(GET_ISEQ(), cd, cd_eq, recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd, cd_eq\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd_eq\", :type=>\"CALL_DATA\", :name=>\"cd_eq\"}, {:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  75 => Instruction.new(\n    name: :opt_lt,\n    bin: 75, # BIN(opt_lt)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_lt(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  76 => Instruction.new(\n    name: :opt_le,\n    bin: 76, # BIN(opt_le)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_le(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  77 => Instruction.new(\n    name: :opt_gt,\n    bin: 77, # BIN(opt_gt)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_gt(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  78 => Instruction.new(\n    name: :opt_ge,\n    bin: 78, # BIN(opt_ge)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_ge(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  79 => Instruction.new(\n    name: :opt_ltlt,\n    bin: 79, # BIN(opt_ltlt)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_ltlt(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  80 => Instruction.new(\n    name: :opt_and,\n    bin: 80, # BIN(opt_and)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_and(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  81 => Instruction.new(\n    name: :opt_or,\n    bin: 81, # BIN(opt_or)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_or(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  82 => Instruction.new(\n    name: :opt_aref,\n    bin: 82, # BIN(opt_aref)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_aref(recv, obj);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  83 => Instruction.new(\n    name: :opt_aset,\n    bin: 83, # BIN(opt_aset)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_aset(recv, obj, set);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj, recv, set, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE obj\", :type=>\"VALUE\", :name=>\"obj\"}, {:decl=>\"VALUE set\", :type=>\"VALUE\", :name=>\"set\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  84 => Instruction.new(\n    name: :opt_aset_with,\n    bin: 84, # BIN(opt_aset_with)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  VALUE tmp = vm_opt_aset_with(recv, key, val);\n\n  if (tmp != Qundef) {\n      val = tmp;\n  }\n  else {\n#ifndef MJIT_HEADER\n      TOPN(0) = rb_str_resurrect(key);\n      PUSH(val);\n#endif\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) key, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"VALUE key\", :type=>\"VALUE\", :name=>\"key\"}, {:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}, {:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  85 => Instruction.new(\n    name: :opt_aref_with,\n    bin: 85, # BIN(opt_aref_with)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_aref_with(recv, key);\n\n  if (val == Qundef) {\n#ifndef MJIT_HEADER\n      PUSH(rb_str_resurrect(key));\n#endif\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) key, recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"VALUE key\", :type=>\"VALUE\", :name=>\"key\"}, {:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  86 => Instruction.new(\n    name: :opt_length,\n    bin: 86, # BIN(opt_length)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_length(recv, BOP_LENGTH);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  87 => Instruction.new(\n    name: :opt_size,\n    bin: 87, # BIN(opt_size)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_length(recv, BOP_SIZE);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  88 => Instruction.new(\n    name: :opt_empty_p,\n    bin: 88, # BIN(opt_empty_p)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_empty_p(recv);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  89 => Instruction.new(\n    name: :opt_succ,\n    bin: 89, # BIN(opt_succ)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_succ(recv);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  90 => Instruction.new(\n    name: :opt_not,\n    bin: 90, # BIN(opt_not)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_not(GET_ISEQ(), cd, recv);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) recv, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE recv\", :type=>\"VALUE\", :name=>\"recv\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  91 => Instruction.new(\n    name: :opt_regexpmatch2,\n    bin: 91, # BIN(opt_regexpmatch2)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_opt_regexpmatch2(obj2, obj1);\n\n  if (val == Qundef) {\n      CALL_SIMPLE_METHOD();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(CALL_DATA) cd\", \"MAYBE_UNUSED(VALUE) obj1, obj2, val\"],\n    preamble: [],\n    opes: [{:decl=>\"CALL_DATA cd\", :type=>\"CALL_DATA\", :name=>\"cd\"}],\n    pops: [{:decl=>\"VALUE obj2\", :type=>\"VALUE\", :name=>\"obj2\"}, {:decl=>\"VALUE obj1\", :type=>\"VALUE\", :name=>\"obj1\"}],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  92 => Instruction.new(\n    name: :invokebuiltin,\n    bin: 92, # BIN(invokebuiltin)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_invoke_builtin(ec, reg_cfp, bf, STACK_ADDR_FROM_TOP(bf->argc));\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(RB_BUILTIN) bf\", \"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [],\n    opes: [{:decl=>\"RB_BUILTIN bf\", :type=>\"RB_BUILTIN\", :name=>\"bf\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  93 => Instruction.new(\n    name: :opt_invokebuiltin_delegate,\n    bin: 93, # BIN(opt_invokebuiltin_delegate)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(RB_BUILTIN) bf\", \"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) index\"],\n    preamble: [],\n    opes: [{:decl=>\"RB_BUILTIN bf\", :type=>\"RB_BUILTIN\", :name=>\"bf\"}, {:decl=>\"rb_num_t index\", :type=>\"rb_num_t\", :name=>\"index\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  94 => Instruction.new(\n    name: :opt_invokebuiltin_delegate_leave,\n    bin: 94, # BIN(opt_invokebuiltin_delegate_leave)\n    len: 3, # insn_len\n    expr: <<-EXPR,\n{\n  val = vm_invoke_builtin_delegate(ec, reg_cfp, bf, (unsigned int)index);\n\n  /* leave fastpath */\n  /* TracePoint/return fallbacks this insn to opt_invokebuiltin_delegate */\n  if (vm_pop_frame(ec, GET_CFP(), GET_EP())) {\n#if OPT_CALL_THREADED_CODE\n      rb_ec_thread_ptr(ec)->retval = val;\n      return 0;\n#else\n      return val;\n#endif\n  }\n  else {\n      RESTORE_REGS();\n  }\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(RB_BUILTIN) bf\", \"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(rb_num_t) index\"],\n    preamble: [],\n    opes: [{:decl=>\"RB_BUILTIN bf\", :type=>\"RB_BUILTIN\", :name=>\"bf\"}, {:decl=>\"rb_num_t index\", :type=>\"rb_num_t\", :name=>\"index\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: false,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  95 => Instruction.new(\n    name: :getlocal_WC_0,\n    bin: 95, # BIN(getlocal_WC_0)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = *(vm_get_ep(GET_EP(), level) - idx);\n  RB_DEBUG_COUNTER_INC(lvar_get);\n  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(lindex_t) idx\", \"MAYBE_UNUSED(rb_num_t) level\"],\n    preamble: [\"    const rb_num_t level = 0;\"],\n    opes: [{:decl=>\"lindex_t idx\", :type=>\"lindex_t\", :name=>\"idx\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  96 => Instruction.new(\n    name: :getlocal_WC_1,\n    bin: 96, # BIN(getlocal_WC_1)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  val = *(vm_get_ep(GET_EP(), level) - idx);\n  RB_DEBUG_COUNTER_INC(lvar_get);\n  (void)RB_DEBUG_COUNTER_INC_IF(lvar_get_dynamic, level > 0);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(lindex_t) idx\", \"MAYBE_UNUSED(rb_num_t) level\"],\n    preamble: [\"    const rb_num_t level = 1;\"],\n    opes: [{:decl=>\"lindex_t idx\", :type=>\"lindex_t\", :name=>\"idx\"}],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  97 => Instruction.new(\n    name: :setlocal_WC_0,\n    bin: 97, # BIN(setlocal_WC_0)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  vm_env_write(vm_get_ep(GET_EP(), level), -(int)idx, val);\n  RB_DEBUG_COUNTER_INC(lvar_set);\n  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(lindex_t) idx\", \"MAYBE_UNUSED(rb_num_t) level\"],\n    preamble: [\"    const rb_num_t level = 0;\"],\n    opes: [{:decl=>\"lindex_t idx\", :type=>\"lindex_t\", :name=>\"idx\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  98 => Instruction.new(\n    name: :setlocal_WC_1,\n    bin: 98, # BIN(setlocal_WC_1)\n    len: 2, # insn_len\n    expr: <<-EXPR,\n{\n  vm_env_write(vm_get_ep(GET_EP(), level), -(int)idx, val);\n  RB_DEBUG_COUNTER_INC(lvar_set);\n  (void)RB_DEBUG_COUNTER_INC_IF(lvar_set_dynamic, level > 0);\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\", \"MAYBE_UNUSED(lindex_t) idx\", \"MAYBE_UNUSED(rb_num_t) level\"],\n    preamble: [\"    const rb_num_t level = 1;\"],\n    opes: [{:decl=>\"lindex_t idx\", :type=>\"lindex_t\", :name=>\"idx\"}],\n    pops: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    rets: [],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  99 => Instruction.new(\n    name: :putobject_INT2FIX_0_,\n    bin: 99, # BIN(putobject_INT2FIX_0_)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  /* */\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [\"    const VALUE val = INT2FIX(0);\"],\n    opes: [],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n  100 => Instruction.new(\n    name: :putobject_INT2FIX_1_,\n    bin: 100, # BIN(putobject_INT2FIX_1_)\n    len: 1, # insn_len\n    expr: <<-EXPR,\n{\n  /* */\n}\n    EXPR\n    declarations: [\"MAYBE_UNUSED(VALUE) val\"],\n    preamble: [\"    const VALUE val = INT2FIX(1);\"],\n    opes: [],\n    pops: [],\n    rets: [{:decl=>\"VALUE val\", :type=>\"VALUE\", :name=>\"val\"}],\n    always_leaf?: true,\n    leaf_without_check_ints?: false,\n    handles_sp?: false,\n  ),\n}\n",