mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20589 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			553 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			553 lines
		
	
	
	
		
			10 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
define rp
 | 
						|
  if (VALUE)$arg0 & RUBY_FIXNUM_FLAG
 | 
						|
    printf "FIXNUM: %ld\n", $arg0 >> 1
 | 
						|
  else
 | 
						|
  if ((VALUE)$arg0 & ~(~(VALUE)0<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG
 | 
						|
    printf "SYMBOL(%ld)\n", $arg0 >> RUBY_SPECIAL_SHIFT
 | 
						|
  else
 | 
						|
  if $arg0 == RUBY_Qfalse
 | 
						|
    echo false\n
 | 
						|
  else
 | 
						|
  if $arg0 == RUBY_Qtrue
 | 
						|
    echo true\n
 | 
						|
  else
 | 
						|
  if $arg0 == RUBY_Qnil
 | 
						|
    echo nil\n
 | 
						|
  else
 | 
						|
  if $arg0 == RUBY_Qundef
 | 
						|
    echo undef\n
 | 
						|
  else
 | 
						|
  if (VALUE)$arg0 & RUBY_IMMEDIATE_MASK
 | 
						|
    echo immediate\n
 | 
						|
  else
 | 
						|
  set $flags = ((struct RBasic*)$arg0)->flags
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_NONE
 | 
						|
    printf "T_NONE: "
 | 
						|
    print (struct RBasic *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_NIL
 | 
						|
    printf "T_NIL: "
 | 
						|
    print (struct RBasic *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_OBJECT
 | 
						|
    printf "T_OBJECT: "
 | 
						|
    print (struct RObject *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_CLASS
 | 
						|
    printf "T_CLASS: "
 | 
						|
    print (struct RClass *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_ICLASS
 | 
						|
    printf "T_ICLASS: "
 | 
						|
    print (struct RClass *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_MODULE
 | 
						|
    printf "T_MODULE: "
 | 
						|
    print (struct RClass *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_FLOAT
 | 
						|
    printf "T_FLOAT: %.16g ", (((struct RFloat*)$arg0)->float_value)
 | 
						|
    print (struct RFloat *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_STRING
 | 
						|
    printf "T_STRING: "
 | 
						|
    set print address off
 | 
						|
    output (char *)(($flags & RUBY_FL_USER1) ? \
 | 
						|
	    ((struct RString*)$arg0)->as.heap.ptr : \
 | 
						|
	    ((struct RString*)$arg0)->as.ary)
 | 
						|
    set print address on
 | 
						|
    printf " bytesize:%ld ", ($flags & RUBY_FL_USER1) ? \
 | 
						|
            ((struct RString*)$arg0)->as.heap.len : \
 | 
						|
            (($flags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
 | 
						|
    if !($flags & RUBY_FL_USER1)
 | 
						|
      printf "(embed) "
 | 
						|
    else
 | 
						|
      if ($flags & RUBY_FL_USER2)
 | 
						|
        printf "(shared) "
 | 
						|
      end
 | 
						|
      if ($flags & RUBY_FL_USER3)
 | 
						|
        printf "(assoc) "
 | 
						|
      end
 | 
						|
    end
 | 
						|
    printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT
 | 
						|
    if ($flags & RUBY_ENC_CODERANGE_MASK) == 0
 | 
						|
      printf "coderange:unknown "
 | 
						|
    else
 | 
						|
    if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_7BIT
 | 
						|
      printf "coderange:7bit "
 | 
						|
    else
 | 
						|
    if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_VALID
 | 
						|
      printf "coderange:valid "
 | 
						|
    else
 | 
						|
      printf "coderange:broken "
 | 
						|
    end
 | 
						|
    end
 | 
						|
    end
 | 
						|
    print (struct RString *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_REGEXP
 | 
						|
    set $regsrc = ((struct RRegexp*)$arg0)->src
 | 
						|
    set $rsflags = ((struct RBasic*)$regsrc)->flags
 | 
						|
    printf "T_REGEXP: "
 | 
						|
    set print address off
 | 
						|
    output (char *)(($rsflags & RUBY_FL_USER1) ? \
 | 
						|
	    ((struct RString*)$regsrc)->as.heap.ptr : \
 | 
						|
	    ((struct RString*)$regsrc)->as.ary)
 | 
						|
    set print address on
 | 
						|
    printf " len:%ld ", ($rsflags & RUBY_FL_USER1) ? \
 | 
						|
            ((struct RString*)$regsrc)->as.heap.len : \
 | 
						|
            (($rsflags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2)
 | 
						|
    if $flags & RUBY_FL_USER6
 | 
						|
      printf "(none) "
 | 
						|
    end
 | 
						|
    if $flags & RUBY_FL_USER5
 | 
						|
      printf "(literal) "
 | 
						|
    end
 | 
						|
    if $flags & RUBY_FL_USER4
 | 
						|
      printf "(fixed) "
 | 
						|
    end
 | 
						|
    printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT
 | 
						|
    print (struct RRegexp *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_ARRAY
 | 
						|
    if ($flags & RUBY_FL_USER1)
 | 
						|
      set $len = (($flags & (RUBY_FL_USER3|RUBY_FL_USER4)) >> (RUBY_FL_USHIFT+3))
 | 
						|
      printf "T_ARRAY: len=%ld ", $len
 | 
						|
      printf "(embed) "
 | 
						|
      if ($len == 0)
 | 
						|
	printf "{(empty)} "
 | 
						|
      else
 | 
						|
	output/x *((VALUE*)((struct RArray*)$arg0)->as.ary) @ $len
 | 
						|
	printf " "
 | 
						|
      end
 | 
						|
    else
 | 
						|
      set $len = ((struct RArray*)$arg0)->as.heap.len
 | 
						|
      printf "T_ARRAY: len=%ld ", $len
 | 
						|
      if ($flags & RUBY_FL_USER2)
 | 
						|
	printf "(shared) shared="
 | 
						|
	output/x ((struct RArray*)$arg0)->as.heap.aux.shared
 | 
						|
	printf " "
 | 
						|
      else
 | 
						|
	printf "(ownership) capa=%ld ", ((struct RArray*)$arg0)->as.heap.aux.capa
 | 
						|
      end
 | 
						|
      if ($len == 0)
 | 
						|
	printf "{(empty)} "
 | 
						|
      else
 | 
						|
	output/x *((VALUE*)((struct RArray*)$arg0)->as.heap.ptr) @ $len
 | 
						|
	printf " "
 | 
						|
      end
 | 
						|
    end
 | 
						|
    print (struct RArray *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_FIXNUM
 | 
						|
    printf "T_FIXNUM: "
 | 
						|
    print (struct RBasic *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_HASH
 | 
						|
    printf "T_HASH: ",
 | 
						|
    if ((struct RHash *)$arg0)->ntbl
 | 
						|
      printf "len=%ld ", ((struct RHash *)$arg0)->ntbl->num_entries
 | 
						|
    end
 | 
						|
    print (struct RHash *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_STRUCT
 | 
						|
    printf "T_STRUCT: len=%ld ", \
 | 
						|
      (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \
 | 
						|
       ($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) >> (RUBY_FL_USHIFT+1) : \
 | 
						|
       ((struct RStruct *)$arg0)->as.heap.len)
 | 
						|
    print (struct RStruct *)$arg0
 | 
						|
    x/xw (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \
 | 
						|
          ((struct RStruct *)$arg0)->as.ary : \
 | 
						|
          ((struct RStruct *)$arg0)->as.heap.ptr)
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_BIGNUM
 | 
						|
    printf "T_BIGNUM: sign=%d len=%ld ", \
 | 
						|
      (($flags & RUBY_FL_USER1) != 0), \
 | 
						|
      (($flags & RUBY_FL_USER2) ? \
 | 
						|
       ($flags & (RUBY_FL_USER5|RUBY_FL_USER4|RUBY_FL_USER3)) >> (RUBY_FL_USHIFT+3) : \
 | 
						|
       ((struct RBignum*)$arg0)->as.heap.len)
 | 
						|
    if $flags & RUBY_FL_USER2
 | 
						|
      printf "(embed) "
 | 
						|
    end
 | 
						|
    print (struct RBignum *)$arg0
 | 
						|
    x/xw (($flags & RUBY_FL_USER2) ? \
 | 
						|
          ((struct RBignum*)$arg0)->as.ary : \
 | 
						|
          ((struct RBignum*)$arg0)->as.heap.digits)
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_RATIONAL
 | 
						|
    printf "T_RATIONAL: "
 | 
						|
    print (struct RRational *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_COMPLEX
 | 
						|
    printf "T_COMPLEX: "
 | 
						|
    print (struct RComplex *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_FILE
 | 
						|
    printf "T_FILE: "
 | 
						|
    print (struct RFile *)$arg0
 | 
						|
    output *((struct RFile *)$arg0)->fptr
 | 
						|
    printf "\n"
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_TRUE
 | 
						|
    printf "T_TRUE: "
 | 
						|
    print (struct RBasic *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_FALSE
 | 
						|
    printf "T_FALSE: "
 | 
						|
    print (struct RBasic *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_DATA
 | 
						|
    printf "T_DATA: "
 | 
						|
    print (struct RData *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_MATCH
 | 
						|
    printf "T_MATCH: "
 | 
						|
    print (struct RMatch *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_SYMBOL
 | 
						|
    printf "T_SYMBOL: "
 | 
						|
    print (struct RBasic *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_UNDEF
 | 
						|
    printf "T_UNDEF: "
 | 
						|
    print (struct RBasic *)$arg0
 | 
						|
  else
 | 
						|
  if ($flags & RUBY_T_MASK) == RUBY_T_NODE
 | 
						|
    printf "T_NODE("
 | 
						|
    output (enum node_type)(($flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT)
 | 
						|
    printf "): "
 | 
						|
    print *(NODE *)$arg0
 | 
						|
  else
 | 
						|
    printf "unknown: "
 | 
						|
    print (struct RBasic *)$arg0
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
  end
 | 
						|
end
 | 
						|
document rp
 | 
						|
  Print a Ruby's VALUE.
 | 
						|
end
 | 
						|
 | 
						|
define nd_type
 | 
						|
  print (enum node_type)((((NODE*)$arg0)->flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT)
 | 
						|
end
 | 
						|
document nd_type
 | 
						|
  Print a Ruby' node type.
 | 
						|
end
 | 
						|
 | 
						|
define nd_file
 | 
						|
  print ((NODE*)$arg0)->nd_file
 | 
						|
end
 | 
						|
document nd_file
 | 
						|
  Print the source file name of a node.
 | 
						|
end
 | 
						|
 | 
						|
define nd_line
 | 
						|
  print ((unsigned int)((((NODE*)$arg0)->flags>>RUBY_NODE_LSHIFT)&RUBY_NODE_LMASK))
 | 
						|
end
 | 
						|
document nd_line
 | 
						|
  Print the source line number of a node.
 | 
						|
end
 | 
						|
 | 
						|
# Print members of ruby node.
 | 
						|
 | 
						|
define nd_head
 | 
						|
  printf "u1.node: "
 | 
						|
  rp $arg0.u1.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_alen
 | 
						|
  printf "u2.argc: "
 | 
						|
  p $arg0.u2.argc
 | 
						|
end
 | 
						|
 | 
						|
define nd_next
 | 
						|
  printf "u3.node: "
 | 
						|
  rp $arg0.u3.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_cond
 | 
						|
  printf "u1.node: "
 | 
						|
  rp $arg0.u1.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_body
 | 
						|
  printf "u2.node: "
 | 
						|
  rp $arg0.u2.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_else
 | 
						|
  printf "u3.node: "
 | 
						|
  rp $arg0.u3.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_orig
 | 
						|
  printf "u3.value: "
 | 
						|
  rp $arg0.u3.value
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_resq
 | 
						|
  printf "u2.node: "
 | 
						|
  rp $arg0.u2.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_ensr
 | 
						|
  printf "u3.node: "
 | 
						|
  rp $arg0.u3.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_1st
 | 
						|
  printf "u1.node: "
 | 
						|
  rp $arg0.u1.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_2nd
 | 
						|
  printf "u2.node: "
 | 
						|
  rp $arg0.u2.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_stts
 | 
						|
  printf "u1.node: "
 | 
						|
  rp $arg0.u1.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_entry
 | 
						|
  printf "u3.entry: "
 | 
						|
  p $arg0.u3.entry
 | 
						|
end
 | 
						|
 | 
						|
define nd_vid
 | 
						|
  printf "u1.id: "
 | 
						|
  p $arg0.u1.id
 | 
						|
end
 | 
						|
 | 
						|
define nd_cflag
 | 
						|
  printf "u2.id: "
 | 
						|
  p $arg0.u2.id
 | 
						|
end
 | 
						|
 | 
						|
define nd_cval
 | 
						|
  printf "u3.value: "
 | 
						|
  rp $arg0.u3.value
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_cnt
 | 
						|
  printf "u3.cnt: "
 | 
						|
  p $arg0.u3.cnt
 | 
						|
end
 | 
						|
 | 
						|
define nd_tbl
 | 
						|
  printf "u1.tbl: "
 | 
						|
  p $arg0.u1.tbl
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_var
 | 
						|
  printf "u1.node: "
 | 
						|
  rp $arg0.u1.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_ibdy
 | 
						|
  printf "u2.node: "
 | 
						|
  rp $arg0.u2.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_iter
 | 
						|
  printf "u3.node: "
 | 
						|
  rp $arg0.u3.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_value
 | 
						|
  printf "u2.node: "
 | 
						|
  rp $arg0.u2.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_aid
 | 
						|
  printf "u3.id: "
 | 
						|
  p $arg0.u3.id
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_lit
 | 
						|
  printf "u1.value: "
 | 
						|
  rp $arg0.u1.value
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_frml
 | 
						|
  printf "u1.node: "
 | 
						|
  rp $arg0.u1.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_rest
 | 
						|
  printf "u2.argc: "
 | 
						|
  p $arg0.u2.argc
 | 
						|
end
 | 
						|
 | 
						|
define nd_opt
 | 
						|
  printf "u1.node: "
 | 
						|
  rp $arg0.u1.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_recv
 | 
						|
  printf "u1.node: "
 | 
						|
  rp $arg0.u1.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_mid
 | 
						|
  printf "u2.id: "
 | 
						|
  p $arg0.u2.id
 | 
						|
end
 | 
						|
 | 
						|
define nd_args
 | 
						|
  printf "u3.node: "
 | 
						|
  rp $arg0.u3.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_noex
 | 
						|
  printf "u1.id: "
 | 
						|
  p $arg0.u1.id
 | 
						|
end
 | 
						|
 | 
						|
define nd_defn
 | 
						|
  printf "u3.node: "
 | 
						|
  rp $arg0.u3.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_old
 | 
						|
  printf "u1.id: "
 | 
						|
  p $arg0.u1.id
 | 
						|
end
 | 
						|
 | 
						|
define nd_new
 | 
						|
  printf "u2.id: "
 | 
						|
  p $arg0.u2.id
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_cfnc
 | 
						|
  printf "u1.cfunc: "
 | 
						|
  p $arg0.u1.cfunc
 | 
						|
end
 | 
						|
 | 
						|
define nd_argc
 | 
						|
  printf "u2.argc: "
 | 
						|
  p $arg0.u2.argc
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_cname
 | 
						|
  printf "u1.id: "
 | 
						|
  p $arg0.u1.id
 | 
						|
end
 | 
						|
 | 
						|
define nd_super
 | 
						|
  printf "u3.node: "
 | 
						|
  rp $arg0.u3.node
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_modl
 | 
						|
  printf "u1.id: "
 | 
						|
  p $arg0.u1.id
 | 
						|
end
 | 
						|
 | 
						|
define nd_clss
 | 
						|
  printf "u1.value: "
 | 
						|
  rp $arg0.u1.value
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_beg
 | 
						|
  printf "u1.node: "
 | 
						|
  rp $arg0.u1.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_end
 | 
						|
  printf "u2.node: "
 | 
						|
  rp $arg0.u2.node
 | 
						|
end
 | 
						|
 | 
						|
define nd_state
 | 
						|
  printf "u3.state: "
 | 
						|
  p $arg0.u3.state
 | 
						|
end
 | 
						|
 | 
						|
define nd_rval
 | 
						|
  printf "u2.value: "
 | 
						|
  rp $arg0.u2.value
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_nth
 | 
						|
  printf "u2.argc: "
 | 
						|
  p $arg0.u2.argc
 | 
						|
end
 | 
						|
 | 
						|
 | 
						|
define nd_tag
 | 
						|
  printf "u1.id: "
 | 
						|
  p $arg0.u1.id
 | 
						|
end
 | 
						|
 | 
						|
define nd_tval
 | 
						|
  printf "u2.value: "
 | 
						|
  rp $arg0.u2.value
 | 
						|
end
 | 
						|
 | 
						|
define rb_p
 | 
						|
  call rb_p($arg0)
 | 
						|
end
 | 
						|
 | 
						|
define rb_id2name
 | 
						|
  call rb_id2name($arg0)
 | 
						|
end
 | 
						|
 | 
						|
define rb_classname
 | 
						|
  call classname($arg0)
 | 
						|
  rb_p $
 | 
						|
  print *(struct RClass*)$arg0
 | 
						|
end
 | 
						|
 | 
						|
define rb_backtrace
 | 
						|
  call rb_backtrace()
 | 
						|
end
 |