22 #define TS_VARIABLE '.'
23 #define TS_FUNCPTR 'F'
25 static const char *
const insn_name_info[] = {
33 "getinstancevariable",
34 "setinstancevariable",
103 "opt_call_c_function",
109 static const char *
const insn_operand_info[] = {
193 static const int insn_len_info[] = {
277 #ifdef USE_INSN_RET_NUM
278 static const int insn_stack_push_num_info[] = {
363 #ifdef USE_INSN_STACK_INCREASE
365 insn_stack_increase(
int depth,
int insn,
VALUE *opes)
377 case BIN(getspecial):{
380 case BIN(setspecial):{
383 case BIN(getdynamic):{
386 case BIN(setdynamic):{
389 case BIN(getinstancevariable):{
392 case BIN(setinstancevariable):{
395 case BIN(getclassvariable):{
398 case BIN(setclassvariable):{
401 case BIN(getconstant):{
404 case BIN(setconstant):{
407 case BIN(getglobal):{
410 case BIN(setglobal):{
419 case BIN(putobject):{
422 case BIN(putspecialobject):{
428 case BIN(putstring):{
431 case BIN(concatstrings):{
455 case BIN(expandarray):{
459 inc += num - 1 + (flag & 1 ? 1 : 0);;
462 case BIN(concatarray):{
465 case BIN(splatarray):{
468 case BIN(checkincludearray):{
510 case BIN(adjuststack):{
522 case BIN(defineclass):{
527 int op_argc =
FIX2INT(opes[1]);
528 int op_flag =
FIX2INT(opes[3]);
532 case BIN(invokesuper):{
534 int op_argc =
FIX2INT(opes[0]);
535 int op_flag =
FIX2INT(opes[2]);
539 case BIN(invokeblock):{
560 case BIN(branchunless):{
563 case BIN(getinlinecache):{
566 case BIN(onceinlinecache):{
569 case BIN(setinlinecache):{
572 case BIN(opt_case_dispatch):{
577 case BIN(opt_checkenv):{
583 case BIN(opt_minus):{
622 case BIN(opt_length):{
634 case BIN(opt_regexpmatch1):{
637 case BIN(opt_regexpmatch2):{
640 case BIN(opt_call_c_function):{
651 rb_bug(
"insn_sp_increase: unreachable");
662 return insn_len_info[(int)insn];
666 insn_name(
VALUE insn)
668 return insn_name_info[(int)insn];
672 insn_op_types(
VALUE insn)
674 return insn_operand_info[(int)insn];
678 insn_op_type(
VALUE insn,
long pos)
680 int len = insn_len(insn) - 1;
682 return insn_operand_info[(int)insn][pos];
689 #ifdef USE_INSN_RET_NUM
691 insn_ret_num(
VALUE insn)
693 return insn_stack_push_num_info[(int)insn];
#define VM_CALL_ARGS_BLOCKARG_BIT
void rb_bug(const char *fmt,...)
rb_atomic_t cnt[RUBY_NSIG]
register unsigned int len