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 '.'
20
#define TS_FUNCPTR 'F'
25
static char *insn_name_info[] = {
33
"getinstancevariable",
34
"setinstancevariable",
104
"opt_call_c_function",
110
static char *insn_operand_info[] = {
195
static int insn_len_info[] = {
280
#ifdef USE_INSN_RET_NUM
281
static int insn_stack_push_num_info[] = {
367
#ifdef USE_INSN_STACK_INCREASE
369
insn_stack_increase(int depth, int insn, VALUE *opes)
381
case BIN(getspecial):{
384
case BIN(setspecial):{
387
case BIN(getdynamic):{
390
case BIN(setdynamic):{
393
case BIN(getinstancevariable):{
396
case BIN(setinstancevariable):{
399
case BIN(getclassvariable):{
402
case BIN(setclassvariable):{
405
case BIN(getconstant):{
408
case BIN(setconstant):{
411
case BIN(getglobal):{
414
case BIN(setglobal):{
423
case BIN(putobject):{
426
case BIN(putstring):{
429
case BIN(concatstrings):{
431
unsigned long num = FIX2INT(opes[0]);
443
unsigned long num = FIX2INT(opes[0]);
450
case BIN(expandarray):{
452
unsigned long num = FIX2INT(opes[0]);
453
unsigned long flag = FIX2INT(opes[1]);
454
inc += flag == 0x02 ? num : ((num > 0) ? num - 1 + (flag ? 1 : 0) : num + 1 - (flag ? 1 : 0));;
457
case BIN(concatarray):{
460
case BIN(splatarray):{
463
case BIN(checkincludearray):{
468
unsigned long num = FIX2INT(opes[0]);
483
unsigned long n = FIX2INT(opes[0]);
497
unsigned long n = FIX2INT(opes[0]);
503
unsigned long n = FIX2INT(opes[0]);
507
case BIN(emptstack):{
512
case BIN(definemethod):{
530
case BIN(defineclass):{
535
unsigned long op_argc = FIX2INT(opes[1]);
536
unsigned long op_flag = FIX2INT(opes[3]);
537
inc += - (op_argc + ((op_flag & VM_CALL_ARGS_BLOCKARG_BIT) ? 1 : 0));;
540
case BIN(invokesuper):{
542
unsigned long op_argc = FIX2INT(opes[0]);
543
unsigned long op_flag = FIX2INT(opes[2]);
547
case BIN(invokeblock):{
549
unsigned long num = FIX2INT(opes[0]);
550
unsigned long flag = FIX2INT(opes[1]);
569
case BIN(branchunless):{
572
case BIN(getinlinecache):{
575
case BIN(onceinlinecache):{
578
case BIN(setinlinecache):{
581
case BIN(opt_case_dispatch):{
586
case BIN(opt_checkenv):{
592
case BIN(opt_minus):{
631
case BIN(opt_length):{
640
case BIN(opt_regexpmatch1):{
643
case BIN(opt_regexpmatch2):{
646
case BIN(opt_call_c_function):{
657
rb_bug("insn_sp_increase: unreachable");
668
return insn_len_info[insn];
674
return insn_name_info[insn];
678
insn_op_types(int insn)
680
return insn_operand_info[insn];
684
insn_op_type(int insn, int pos)
686
int len = insn_len(insn) - 1;
688
return insn_operand_info[insn][pos];
695
#ifdef USE_INSN_RET_NUM
697
insn_ret_num(int insn)
699
return insn_stack_push_num_info[insn];