2
This file contains instruction information for yarv instruction sequence.
5
This file is auto generated by insns2vm.rb
8
If you want to fix something, you must edit 'template/insns_info.inc.tmpl'
16
#define TS_VARIABLE '.'
21
#define TS_FUNCPTR 'F'
25
static const char *const insn_name_info[] = {
33
"getinstancevariable",
34
"setinstancevariable",
102
"opt_call_c_function",
108
static const char *const insn_operand_info[] = {
191
static const int insn_len_info[] = {
274
#ifdef USE_INSN_RET_NUM
275
static const int insn_stack_push_num_info[] = {
359
#ifdef USE_INSN_STACK_INCREASE
361
insn_stack_increase(int depth, int insn, VALUE *opes)
373
case BIN(getspecial):{
376
case BIN(setspecial):{
379
case BIN(getdynamic):{
382
case BIN(setdynamic):{
385
case BIN(getinstancevariable):{
388
case BIN(setinstancevariable):{
391
case BIN(getclassvariable):{
394
case BIN(setclassvariable):{
397
case BIN(getconstant):{
400
case BIN(setconstant):{
403
case BIN(getglobal):{
406
case BIN(setglobal):{
415
case BIN(putobject):{
418
case BIN(putspecialobject):{
424
case BIN(putstring):{
427
case BIN(concatstrings):{
429
rb_num_t num = FIX2INT(opes[0]);
438
rb_num_t cnt = FIX2INT(opes[1]);
444
rb_num_t num = FIX2INT(opes[0]);
451
case BIN(expandarray):{
453
rb_num_t num = FIX2INT(opes[0]);
454
rb_num_t flag = FIX2INT(opes[1]);
455
inc += num - 1 + (flag & 1 ? 1 : 0);;
458
case BIN(concatarray):{
461
case BIN(splatarray):{
464
case BIN(checkincludearray):{
469
rb_num_t num = FIX2INT(opes[0]);
484
rb_num_t n = FIX2INT(opes[0]);
506
case BIN(adjuststack):{
508
rb_num_t n = FIX2INT(opes[0]);
518
case BIN(defineclass):{
523
rb_num_t op_argc = FIX2INT(opes[1]);
524
rb_num_t op_flag = FIX2INT(opes[3]);
525
inc += - (op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0));;
528
case BIN(invokesuper):{
530
rb_num_t op_argc = FIX2INT(opes[0]);
531
rb_num_t op_flag = FIX2INT(opes[2]);
532
inc += - (op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0));;
535
case BIN(invokeblock):{
537
rb_num_t num = FIX2INT(opes[0]);
556
case BIN(branchunless):{
559
case BIN(getinlinecache):{
562
case BIN(onceinlinecache):{
565
case BIN(setinlinecache):{
568
case BIN(opt_case_dispatch):{
573
case BIN(opt_checkenv):{
579
case BIN(opt_minus):{
618
case BIN(opt_length):{
627
case BIN(opt_regexpmatch1):{
630
case BIN(opt_regexpmatch2):{
633
case BIN(opt_call_c_function):{
644
rb_bug("insn_sp_increase: unreachable");
655
return insn_len_info[insn];
661
return insn_name_info[insn];
665
insn_op_types(int insn)
667
return insn_operand_info[insn];
671
insn_op_type(int insn, int pos)
673
int len = insn_len(insn) - 1;
675
return insn_operand_info[insn][pos];
682
#ifdef USE_INSN_RET_NUM
684
insn_ret_num(int insn)
686
return insn_stack_push_num_info[insn];