ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
To: ruby-core@ruby-lang.org
Subject: Re: patch bignums
Date: Fri, 22 Sep 2006 09:22:30 +0900	[thread overview]
Message-ID: <200609220022.k8M0MTrg011316@sharui.kanuma.tochigi.jp> (raw)
In-Reply-To: <20060921183259.GB2630@pebble>

Hi,

At Fri, 22 Sep 2006 03:33:03 +0900,
Sam Roberts wrote in [ruby-core:08907]:
> > I use attached .gdbinit.
> 
> Did the attachment get stripped or forgotten?

Forgotten, sorry.

\f
define rp
  if ($arg0 & 0x1)
    echo T_FIXNUM\n
    print (long)$arg0 >> 1
  else
  if ($arg0 == 0)
    echo T_FALSE\n
  else
  if ($arg0 == 2)
    echo T_TRUE\n
  else
  if ($arg0 == 4)
    echo T_NIL\n
  else
  if ($arg0 == 6)
    echo T_UNDEF\n
  else
  if (($arg0 & 0xff) == 0x0e)
    echo T_SYMBOL\n
    output $arg0 >> 8
    echo \n
    call rb_id2name($arg0 >> 8)
  else
    set $rbasic = (struct RBasic*)$arg0
  #  output  $rbasic
  #  echo \ =\ 
  #  output *$rbasic
  #  echo \n
    set $flags = (*$rbasic).flags & 0x3f
    if ($flags == 0x01)
      echo T_NIL\n
      echo impossible\n
    else
    if ($flags == 0x02)
      echo T_OBJECT\n
      print *(struct RObject*)$rbasic
    else
    if ($flags == 0x03)
      echo T_CLASS\n
      print *(struct RClass*)$rbasic
#      rb_classname($arg0)
    else
    if ($flags == 0x04)
      echo T_ICLASS\n
      print *(struct RClass*)$rbasic
    else
    if ($flags == 0x05)
      echo T_MODULE\n
      print *(struct RClass*)$rbasic
    else
    if ($flags == 0x06)
      echo T_FLOAT\n
      print *(struct RFloat*)$rbasic
    else
    if ($flags == 0x07)
      echo T_STRING\n
      print *(struct RString*)$rbasic
    else
    if ($flags == 0x08)
      echo T_REGEXP\n
      print *(struct RRegexp*)$rbasic
    else
    if ($flags == 0x09)
      echo T_ARRAY\n
      print *(struct RArray*)$rbasic
    else
    if ($flags == 0x0a)
      echo T_FIXNUM\n
      echo impossible\n
    else
    if ($flags == 0x0b)
      echo T_HASH\n
      print *(struct RHash*)$rbasic
    else
    if ($flags == 0x0c)
      echo T_STRUCT\n
      print *(struct RStruct*)$rbasic
    else
    if ($flags == 0x0d)
      echo T_BIGNUM\n
      print *(struct RBignum*)$rbasic
    else
    if ($flags == 0x0e)
      echo T_FILE\n
      print *(struct RFile*)$rbasic
    else
    if ($flags == 0x20 || $flags == 0x10)
      echo T_TRUE\n
      echo impossible\n
    else
    if ($flags == 0x21 || $flags == 0x11)
      echo T_FALSE\n
      echo impossible\n
    else
    if ($flags == 0x22 || $flags == 0x12)
      echo T_DATA\n
      print *(struct RData*)$rbasic
    else
    if ($flags == 0x23 || $flags == 0x13)
      echo T_MATCH\n
      print *(struct RMatch*)$rbasic
    else
    if ($flags == 0x24 || $flags == 0x14)
      echo T_SYMBOL\n
      echo impossible\n
    else
    if ($flags == 0x3c || $flags == 0x1c)
      echo T_UNDEF\n
      echo impossible\n
    else
    if ($flags == 0x3b)
      echo T_BLOCK\n
    else
    if ($flags == 0x3d || $flags == 0x1d)
      echo T_VARMAP\n
    else
    if ($flags == 0x3e || $flags == 0x1e)
      echo T_SCOPE\n
    else
    if ($flags == 0x3f || $flags == 0x1f)
      echo T_NODE\n
      print (NODE*)$arg0
    else
      echo Unknown\n
    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
display builtin ruby object
end

define nd_type
  print (enum node_type)((((NODE*)$arg0)->flags>>node_typemask)&node_typeshift)
end
document nd_type
display the type of ruby node
end

define nd_file
  print ((NODE*)$arg0)->nd_file
end
document nd_file
display the source file name of node
end

define nd_line
  print ((unsigned int)((((NODE*)$arg0)->flags>>node_lshift)&node_lmask))
end
document nd_line
display the line number of node
end

# display the members of ruby node

define nd_head
  print "u1.node"
  what $arg0.u1.node
  p $arg0.u1.node
end

define nd_alen
  print "u2.argc"
  what $arg0.u2.argc
  p $arg0.u2.argc
end

define nd_next
  print "u3.node"
  what $arg0.u3.node
  p $arg0.u3.node
end


define nd_cond
  print "u1.node"
  what $arg0.u1.node
  p $arg0.u1.node
end

define nd_body
  print "u2.node"
  what $arg0.u2.node
  p $arg0.u2.node
end

define nd_else
  print "u3.node"
  what $arg0.u3.node
  p $arg0.u3.node
end


define nd_orig
  print "u3.value"
  what $arg0.u3.value
  p $arg0.u3.value
end


define nd_resq
  print "u2.node"
  what $arg0.u2.node
  p $arg0.u2.node
end

define nd_ensr
  print "u3.node"
  what $arg0.u3.node
  p $arg0.u3.node
end


define nd_1st
   print "u1.node"
   what $arg0.u1.node
   p $arg0.u1.node
end

define nd_2nd
   print "u2.node"
   what $arg0.u2.node
   p $arg0.u2.node
end


define nd_stts
  print "u1.node"
  what $arg0.u1.node
  p $arg0.u1.node
end


define nd_entry
 print "u3.entry"
 what $arg0.u3.entry
 p $arg0.u3.entry
end

define nd_vid
   print "u1.id"
   what $arg0.u1.id
   p $arg0.u1.id
end

define nd_cflag
 print "u2.id"
 what $arg0.u2.id
 p $arg0.u2.id
end

define nd_cval
  print "u3.value"
  what $arg0.u3.value
  p $arg0.u3.value
end


define nd_cnt
   print "u3.cnt"
   what $arg0.u3.cnt
   p $arg0.u3.cnt
end

define nd_tbl
   print "u1.tbl"
   what $arg0.u1.tbl
   p $arg0.u1.tbl
end


define nd_var
   print "u1.node"
   what $arg0.u1.node
   p $arg0.u1.node
end

define nd_ibdy
  print "u2.node"
  what $arg0.u2.node
  p $arg0.u2.node
end

define nd_iter
  print "u3.node"
  what $arg0.u3.node
  p $arg0.u3.node
end


define nd_value
 print "u2.node"
 what $arg0.u2.node
 p $arg0.u2.node
end

define nd_aid
   print "u3.id"
   what $arg0.u3.id
   p $arg0.u3.id
end


define nd_lit
   print "u1.value"
   what $arg0.u1.value
   p $arg0.u1.value
end


define nd_frml
  print "u1.node"
  what $arg0.u1.node
  p $arg0.u1.node
end

define nd_rest
  print "u2.argc"
  what $arg0.u2.argc
  p $arg0.u2.argc
end

define nd_opt
   print "u1.node"
   what $arg0.u1.node
   p $arg0.u1.node
end


define nd_recv
  print "u1.node"
  what $arg0.u1.node
  p $arg0.u1.node
end

define nd_mid
   print "u2.id"
   what $arg0.u2.id
   p $arg0.u2.id
end

define nd_args
  print "u3.node"
  what $arg0.u3.node
  p $arg0.u3.node
end


define nd_noex
  print "u1.id"
  what $arg0.u1.id
  p $arg0.u1.id
end

define nd_defn
  print "u3.node"
  what $arg0.u3.node
  p $arg0.u3.node
end


define nd_old
   print "u1.id"
   what $arg0.u1.id
   p $arg0.u1.id
end

define nd_new
   print "u2.id"
   what $arg0.u2.id
   p $arg0.u2.id
end


define nd_cfnc
  print "u1.cfunc"
  what $arg0.u1.cfunc
  p $arg0.u1.cfunc
end

define nd_argc
  print "u2.argc"
  what $arg0.u2.argc
  p $arg0.u2.argc
end


define nd_cname
 print "u1.id"
 what $arg0.u1.id
 p $arg0.u1.id
end

define nd_super
 print "u3.node"
 what $arg0.u3.node
 p $arg0.u3.node
end


define nd_modl
  print "u1.id"
  what $arg0.u1.id
  p $arg0.u1.id
end

define nd_clss
  print "u1.value"
  what $arg0.u1.value
  p $arg0.u1.value
end


define nd_beg
   print "u1.node"
   what $arg0.u1.node
   p $arg0.u1.node
end

define nd_end
   print "u2.node"
   what $arg0.u2.node
   p $arg0.u2.node
end

define nd_state
 print "u3.state"
 what $arg0.u3.state
 p $arg0.u3.state
end

define nd_rval
  print "u2.value"
  what $arg0.u2.value
  p $arg0.u2.value
end


define nd_nth
   print "u2.argc"
   what $arg0.u2.argc
   p $arg0.u2.argc
end


define nd_tag
   print "u1.id"
   what $arg0.u1.id
   p $arg0.u1.id
end

define nd_tval
  print "u2.value"
  what $arg0.u2.value
  p $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 $
  p *(struct RClass*)$arg0
end

define rb_backtrace
  call rb_backtrace()
end
\f

-- 
Nobu Nakada

  reply	other threads:[~2006-09-22  0:22 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-21 14:52 patch bignums Ondrej Bilka
2006-09-21 16:30 ` Nobuyoshi Nakada
2006-09-21 17:12   ` Berger, Daniel
2006-09-22  1:01     ` Yukihiro Matsumoto
2006-09-21 18:33   ` Sam Roberts
2006-09-22  0:22     ` Nobuyoshi Nakada [this message]
2006-09-22  9:05   ` Ondrej Bilka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200609220022.k8M0MTrg011316@sharui.kanuma.tochigi.jp \
    --to=ruby-core@ruby-lang.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).