mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	iseq.c: dump type of branchiftype on disasm
This makes easier to debug scripts related to r59950.
* before
$ ./ruby --dump=insns -e '"#{a}"'
== disasm: #<ISeq:<main>@-e>============================================
0000 putobject        ""                                              (   1)[Li]
0002 putself
0003 opt_send_without_block <callinfo!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE>, <callcache>
0006 dup
0007 branchiftype     5, 15
0010 dup
0011 opt_send_without_block <callinfo!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>, <callcache>
0014 tostring
0015 concatstrings    2
0017 leave
* after
$ ./ruby --dump=insns -e '"#{a}"'
== disasm: #<ISeq:<main>@-e>============================================
0000 putobject        ""                                              (   1)[Li]
0002 putself
0003 opt_send_without_block <callinfo!mid:a, argc:0, FCALL|VCALL|ARGS_SIMPLE>, <callcache>
0006 dup
0007 branchiftype     T_STRING, 15
0010 dup
0011 opt_send_without_block <callinfo!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>, <callcache>
0014 tostring
0015 concatstrings    2
0017 leave
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61217 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
			
			
This commit is contained in:
		
							parent
							
								
									186732f46f
								
							
						
					
					
						commit
						f5090e2f5c
					
				
					 3 changed files with 11 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1842,6 +1842,7 @@ VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, V
 | 
			
		|||
typedef void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE);
 | 
			
		||||
VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv,
 | 
			
		||||
				 rb_check_funcall_hook *hook, VALUE arg);
 | 
			
		||||
const char *rb_type_str(enum ruby_value_type type);
 | 
			
		||||
VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE);
 | 
			
		||||
VALUE rb_yield_1(VALUE val);
 | 
			
		||||
VALUE rb_yield_force_blockarg(VALUE values);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								iseq.c
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								iseq.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1344,7 +1344,15 @@ rb_insn_operand_intern(const rb_iseq_t *iseq,
 | 
			
		|||
	break;
 | 
			
		||||
 | 
			
		||||
      case TS_NUM:		/* ULONG */
 | 
			
		||||
	ret = rb_sprintf("%"PRIuVALUE, op);
 | 
			
		||||
	{
 | 
			
		||||
	    const char *type_str;
 | 
			
		||||
	    if (insn == BIN(branchiftype) && (type_str = rb_type_str((enum ruby_value_type)op)) != NULL) {
 | 
			
		||||
		ret = rb_str_new_cstr(type_str);
 | 
			
		||||
	    }
 | 
			
		||||
	    else {
 | 
			
		||||
		ret = rb_sprintf("%"PRIuVALUE, op);
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
	break;
 | 
			
		||||
 | 
			
		||||
      case TS_LINDEX:{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -440,7 +440,7 @@ rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv,
 | 
			
		|||
    return vm_call0(ec, recv, mid, argc, argv, me);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const char *
 | 
			
		||||
const char *
 | 
			
		||||
rb_type_str(enum ruby_value_type type)
 | 
			
		||||
{
 | 
			
		||||
#define type_case(t) case t: return #t;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue