/** -*-c-*-
  This file contains YARV instructions list.

  ----
  This file is auto generated by insns2vm.rb
  DO NOT TOUCH!

  If you want to fix something, you must edit 'template/insns.inc.tmpl'
  or tool/insns2vm.rb
 */


/* BIN : Basic Instruction Name */
#define BIN(n) YARVINSN_##n

enum ruby_vminsn_type {
    BIN(nop),
    BIN(getlocal),
    BIN(setlocal),
    BIN(getblockparam),
    BIN(setblockparam),
    BIN(getspecial),
    BIN(setspecial),
    BIN(getinstancevariable),
    BIN(setinstancevariable),
    BIN(getclassvariable),
    BIN(setclassvariable),
    BIN(getconstant),
    BIN(setconstant),
    BIN(getglobal),
    BIN(setglobal),
    BIN(putnil),
    BIN(putself),
    BIN(putobject),
    BIN(putspecialobject),
    BIN(putiseq),
    BIN(putstring),
    BIN(concatstrings),
    BIN(tostring),
    BIN(freezestring),
    BIN(toregexp),
    BIN(intern),
    BIN(newarray),
    BIN(duparray),
    BIN(expandarray),
    BIN(concatarray),
    BIN(splatarray),
    BIN(newhash),
    BIN(newrange),
    BIN(pop),
    BIN(dup),
    BIN(dupn),
    BIN(swap),
    BIN(reverse),
    BIN(reput),
    BIN(topn),
    BIN(setn),
    BIN(adjuststack),
    BIN(defined),
    BIN(checkmatch),
    BIN(checkkeyword),
    BIN(tracebranch),
    BIN(defineclass),
    BIN(send),
    BIN(opt_str_freeze),
    BIN(opt_str_uminus),
    BIN(opt_newarray_max),
    BIN(opt_newarray_min),
    BIN(opt_send_without_block),
    BIN(invokesuper),
    BIN(invokeblock),
    BIN(leave),
    BIN(throw),
    BIN(jump),
    BIN(branchif),
    BIN(branchunless),
    BIN(branchnil),
    BIN(branchiftype),
    BIN(getinlinecache),
    BIN(setinlinecache),
    BIN(once),
    BIN(opt_case_dispatch),
    BIN(opt_plus),
    BIN(opt_minus),
    BIN(opt_mult),
    BIN(opt_div),
    BIN(opt_mod),
    BIN(opt_eq),
    BIN(opt_neq),
    BIN(opt_lt),
    BIN(opt_le),
    BIN(opt_gt),
    BIN(opt_ge),
    BIN(opt_ltlt),
    BIN(opt_aref),
    BIN(opt_aset),
    BIN(opt_aset_with),
    BIN(opt_aref_with),
    BIN(opt_length),
    BIN(opt_size),
    BIN(opt_empty_p),
    BIN(opt_succ),
    BIN(opt_not),
    BIN(opt_regexpmatch1),
    BIN(opt_regexpmatch2),
    BIN(opt_call_c_function),
    BIN(bitblt),
    BIN(answer),
    BIN(getlocal_OP__WC__0),
    BIN(getlocal_OP__WC__1),
    BIN(setlocal_OP__WC__0),
    BIN(setlocal_OP__WC__1),
    BIN(putobject_OP_INT2FIX_O_0_C_),
    BIN(putobject_OP_INT2FIX_O_1_C_),
    BIN(trace_nop),
    BIN(trace_getlocal),
    BIN(trace_setlocal),
    BIN(trace_getblockparam),
    BIN(trace_setblockparam),
    BIN(trace_getspecial),
    BIN(trace_setspecial),
    BIN(trace_getinstancevariable),
    BIN(trace_setinstancevariable),
    BIN(trace_getclassvariable),
    BIN(trace_setclassvariable),
    BIN(trace_getconstant),
    BIN(trace_setconstant),
    BIN(trace_getglobal),
    BIN(trace_setglobal),
    BIN(trace_putnil),
    BIN(trace_putself),
    BIN(trace_putobject),
    BIN(trace_putspecialobject),
    BIN(trace_putiseq),
    BIN(trace_putstring),
    BIN(trace_concatstrings),
    BIN(trace_tostring),
    BIN(trace_freezestring),
    BIN(trace_toregexp),
    BIN(trace_intern),
    BIN(trace_newarray),
    BIN(trace_duparray),
    BIN(trace_expandarray),
    BIN(trace_concatarray),
    BIN(trace_splatarray),
    BIN(trace_newhash),
    BIN(trace_newrange),
    BIN(trace_pop),
    BIN(trace_dup),
    BIN(trace_dupn),
    BIN(trace_swap),
    BIN(trace_reverse),
    BIN(trace_reput),
    BIN(trace_topn),
    BIN(trace_setn),
    BIN(trace_adjuststack),
    BIN(trace_defined),
    BIN(trace_checkmatch),
    BIN(trace_checkkeyword),
    BIN(trace_tracebranch),
    BIN(trace_defineclass),
    BIN(trace_send),
    BIN(trace_opt_str_freeze),
    BIN(trace_opt_str_uminus),
    BIN(trace_opt_newarray_max),
    BIN(trace_opt_newarray_min),
    BIN(trace_opt_send_without_block),
    BIN(trace_invokesuper),
    BIN(trace_invokeblock),
    BIN(trace_leave),
    BIN(trace_throw),
    BIN(trace_jump),
    BIN(trace_branchif),
    BIN(trace_branchunless),
    BIN(trace_branchnil),
    BIN(trace_branchiftype),
    BIN(trace_getinlinecache),
    BIN(trace_setinlinecache),
    BIN(trace_once),
    BIN(trace_opt_case_dispatch),
    BIN(trace_opt_plus),
    BIN(trace_opt_minus),
    BIN(trace_opt_mult),
    BIN(trace_opt_div),
    BIN(trace_opt_mod),
    BIN(trace_opt_eq),
    BIN(trace_opt_neq),
    BIN(trace_opt_lt),
    BIN(trace_opt_le),
    BIN(trace_opt_gt),
    BIN(trace_opt_ge),
    BIN(trace_opt_ltlt),
    BIN(trace_opt_aref),
    BIN(trace_opt_aset),
    BIN(trace_opt_aset_with),
    BIN(trace_opt_aref_with),
    BIN(trace_opt_length),
    BIN(trace_opt_size),
    BIN(trace_opt_empty_p),
    BIN(trace_opt_succ),
    BIN(trace_opt_not),
    BIN(trace_opt_regexpmatch1),
    BIN(trace_opt_regexpmatch2),
    BIN(trace_opt_call_c_function),
    BIN(trace_bitblt),
    BIN(trace_answer),
    BIN(trace_getlocal_OP__WC__0),
    BIN(trace_getlocal_OP__WC__1),
    BIN(trace_setlocal_OP__WC__0),
    BIN(trace_setlocal_OP__WC__1),
    BIN(trace_putobject_OP_INT2FIX_O_0_C_),
    BIN(trace_putobject_OP_INT2FIX_O_1_C_),
    VM_INSTRUCTION_SIZE
};

#define ASSERT_VM_INSTRUCTION_SIZE(array) \
    STATIC_ASSERT(numberof_##array, numberof(array) == VM_INSTRUCTION_SIZE)
