mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
.gdbinit: show ID type
* .gdbinit (rp_id): show ID type. * template/id.h.tmpl (ruby_id_types): make enum for debugger. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a9534d1b48
commit
aee98a1c2b
3 changed files with 54 additions and 10 deletions
30
.gdbinit
30
.gdbinit
|
@ -316,6 +316,36 @@ define rp_id
|
|||
if $id == idASET
|
||||
printf "(:[]=)\n"
|
||||
else
|
||||
if $id <= tLAST_OP_ID
|
||||
printf "O"
|
||||
else
|
||||
set $id_type = $id & RUBY_ID_SCOPE_MASK
|
||||
if $id_type == RUBY_ID_LOCAL
|
||||
printf "l"
|
||||
else
|
||||
if $id_type == RUBY_ID_INSTANCE
|
||||
printf "i"
|
||||
else
|
||||
if $id_type == RUBY_ID_GLOBAL
|
||||
printf "G"
|
||||
else
|
||||
if $id_type == RUBY_ID_ATTRSET
|
||||
printf "a"
|
||||
else
|
||||
if $id_type == RUBY_ID_CONST
|
||||
printf "C"
|
||||
else
|
||||
if $id_type == RUBY_ID_CLASS
|
||||
printf "c"
|
||||
else
|
||||
printf "j"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
printf "(%ld): ", $id
|
||||
rb_numtable_entry global_symbols.id_str $id
|
||||
if $rb_numtable_rec
|
||||
|
|
1
debug.c
1
debug.c
|
@ -24,6 +24,7 @@ const union {
|
|||
enum ruby_tag_type tag_type;
|
||||
enum node_type node_type;
|
||||
enum ruby_method_ids method_ids;
|
||||
enum ruby_id_types id_types;
|
||||
enum {
|
||||
RUBY_ENCODING_INLINE_MAX = ENCODING_INLINE_MAX,
|
||||
RUBY_ENCODING_SHIFT = ENCODING_SHIFT,
|
||||
|
|
|
@ -28,16 +28,29 @@ types = ids.keys.grep(/^[A-Z]/)
|
|||
#ifndef RUBY_ID_H
|
||||
#define RUBY_ID_H
|
||||
|
||||
#define ID_SCOPE_SHIFT 3
|
||||
#define ID_SCOPE_MASK 0x07
|
||||
#define ID_LOCAL 0x00
|
||||
#define ID_INSTANCE 0x01
|
||||
#define ID_GLOBAL 0x03
|
||||
#define ID_ATTRSET 0x04
|
||||
#define ID_CONST 0x05
|
||||
#define ID_CLASS 0x06
|
||||
#define ID_JUNK 0x07
|
||||
#define ID_INTERNAL ID_JUNK
|
||||
enum ruby_id_types {
|
||||
RUBY_ID_LOCAL = 0x00,
|
||||
RUBY_ID_INSTANCE = 0x01,
|
||||
RUBY_ID_GLOBAL = 0x03,
|
||||
RUBY_ID_ATTRSET = 0x04,
|
||||
RUBY_ID_CONST = 0x05,
|
||||
RUBY_ID_CLASS = 0x06,
|
||||
RUBY_ID_JUNK = 0x07,
|
||||
RUBY_ID_INTERNAL = RUBY_ID_JUNK,
|
||||
RUBY_ID_SCOPE_SHIFT = 3,
|
||||
RUBY_ID_SCOPE_MASK = ~(~0U<<RUBY_ID_SCOPE_SHIFT)
|
||||
};
|
||||
|
||||
#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
|
||||
#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
|
||||
#define ID_LOCAL RUBY_ID_LOCAL
|
||||
#define ID_INSTANCE RUBY_ID_INSTANCE
|
||||
#define ID_GLOBAL RUBY_ID_GLOBAL
|
||||
#define ID_ATTRSET RUBY_ID_ATTRSET
|
||||
#define ID_CONST RUBY_ID_CONST
|
||||
#define ID_CLASS RUBY_ID_CLASS
|
||||
#define ID_JUNK RUBY_ID_JUNK
|
||||
#define ID_INTERNAL RUBY_ID_INTERNAL
|
||||
|
||||
#define ID2ATTRSET(id) (((id)&~ID_SCOPE_MASK)|ID_ATTRSET)
|
||||
|
||||
|
|
Loading…
Reference in a new issue