1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* include/ruby/{node,ruby}.h, ruby.c: added enum constants for gdb

support.  [ruby-dev:31066]

* .gdbinit: some improvements.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12695 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2007-07-05 01:42:09 +00:00
parent 6bbcf6f43d
commit e8b0aa4ca0
5 changed files with 602 additions and 95 deletions

View file

@ -154,7 +154,6 @@ typedef unsigned LONG_LONG ID;
#define FIXNUM_MAX (LONG_MAX>>1)
#define FIXNUM_MIN RSHIFT((long)LONG_MIN,1)
#define FIXNUM_FLAG 0x01
#define INT2FIX(i) ((VALUE)(((SIGNED_VALUE)(i))<<1 | FIXNUM_FLAG))
#define LONG2FIX(i) INT2FIX(i)
#define rb_fix_new(v) INT2FIX(v)
@ -208,54 +207,93 @@ VALUE rb_ull2inum(unsigned LONG_LONG);
#define NEGFIXABLE(f) ((f) >= FIXNUM_MIN)
#define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f))
#define IMMEDIATE_MASK 0x03
#define IMMEDIATE_P(x) ((VALUE)(x) & IMMEDIATE_MASK)
#define SYMBOL_FLAG 0x0e
#define SYMBOL_P(x) (((VALUE)(x)&0xff)==SYMBOL_FLAG)
#define ID2SYM(x) ((VALUE)(((long)(x))<<8|SYMBOL_FLAG))
#define SYM2ID(x) RSHIFT((unsigned long)x,8)
/* special contants - i.e. non-zero and non-fixnum constants */
#define Qfalse ((VALUE)0)
#define Qtrue ((VALUE)2)
#define Qnil ((VALUE)4)
#define Qundef ((VALUE)6) /* undefined value for placeholder */
enum ruby_special_consts {
RUBY_Qfalse = 0,
RUBY_Qtrue = 2,
RUBY_Qnil = 4,
RUBY_Qundef = 6,
RUBY_IMMEDIATE_MASK = 0x03,
RUBY_FIXNUM_FLAG = 0x01,
RUBY_SYMBOL_FLAG = 0x0e,
};
#define Qfalse ((VALUE)RUBY_Qfalse)
#define Qtrue ((VALUE)RUBY_Qtrue)
#define Qnil ((VALUE)RUBY_Qnil)
#define Qundef ((VALUE)RUBY_Qundef) /* undefined value for placeholder */
#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
#define FIXNUM_FLAG RUBY_FIXNUM_FLAG
#define SYMBOL_FLAG RUBY_SYMBOL_FLAG
#define RTEST(v) (((VALUE)(v) & ~Qnil) != 0)
#define NIL_P(v) ((VALUE)(v) == Qnil)
#define CLASS_OF(v) rb_class_of((VALUE)(v))
#define T_NONE 0x00
enum ruby_value_type {
RUBY_T_NONE = 0x00,
#define T_NONE RUBY_T_NONE
#define T_NIL 0x01
#define T_OBJECT 0x02
#define T_CLASS 0x03
#define T_ICLASS 0x04
#define T_MODULE 0x05
#define T_FLOAT 0x06
#define T_STRING 0x07
#define T_REGEXP 0x08
#define T_ARRAY 0x09
#define T_FIXNUM 0x0a
#define T_HASH 0x0b
#define T_STRUCT 0x0c
#define T_BIGNUM 0x0d
#define T_FILE 0x0e
RUBY_T_NIL = 0x01,
#define T_NIL RUBY_T_NIL
RUBY_T_OBJECT = 0x02,
#define T_OBJECT RUBY_T_OBJECT
RUBY_T_CLASS = 0x03,
#define T_CLASS RUBY_T_CLASS
RUBY_T_ICLASS = 0x04,
#define T_ICLASS RUBY_T_ICLASS
RUBY_T_MODULE = 0x05,
#define T_MODULE RUBY_T_MODULE
RUBY_T_FLOAT = 0x06,
#define T_FLOAT RUBY_T_FLOAT
RUBY_T_STRING = 0x07,
#define T_STRING RUBY_T_STRING
RUBY_T_REGEXP = 0x08,
#define T_REGEXP RUBY_T_REGEXP
RUBY_T_ARRAY = 0x09,
#define T_ARRAY RUBY_T_ARRAY
RUBY_T_FIXNUM = 0x0a,
#define T_FIXNUM RUBY_T_FIXNUM
RUBY_T_HASH = 0x0b,
#define T_HASH RUBY_T_HASH
RUBY_T_STRUCT = 0x0c,
#define T_STRUCT RUBY_T_STRUCT
RUBY_T_BIGNUM = 0x0d,
#define T_BIGNUM RUBY_T_BIGNUM
RUBY_T_FILE = 0x0e,
#define T_FILE RUBY_T_FILE
#define T_TRUE 0x10
#define T_FALSE 0x11
#define T_DATA 0x12
#define T_MATCH 0x13
#define T_SYMBOL 0x14
RUBY_T_TRUE = 0x10,
#define T_TRUE RUBY_T_TRUE
RUBY_T_FALSE = 0x11,
#define T_FALSE RUBY_T_FALSE
RUBY_T_DATA = 0x12,
#define T_DATA RUBY_T_DATA
RUBY_T_MATCH = 0x13,
#define T_MATCH RUBY_T_MATCH
RUBY_T_SYMBOL = 0x14,
#define T_SYMBOL RUBY_T_SYMBOL
#define T_VALUES 0x1a
#define T_BLOCK 0x1b
#define T_UNDEF 0x1c
#define T_NODE 0x1f
RUBY_T_VALUES = 0x1a,
#define T_VALUES RUBY_T_VALUES
RUBY_T_BLOCK = 0x1b,
#define T_BLOCK RUBY_T_BLOCK
RUBY_T_UNDEF = 0x1c,
#define T_UNDEF RUBY_T_UNDEF
RUBY_T_NODE = 0x1f,
#define T_NODE RUBY_T_NODE
#define T_MASK 0x1f
RUBY_T_MASK = 0x1f,
#define T_MASK RUBY_T_MASK
};
#define BUILTIN_TYPE(x) (((struct RBasic*)(x))->flags & T_MASK)
@ -522,24 +560,42 @@ struct RBignum {
#define RFILE(obj) (R_CAST(RFile)(obj))
#define RVALUES(obj) (R_CAST(RValues)(obj))
#define FL_SINGLETON FL_USER0
#define FL_MARK (1<<5)
#define FL_RESERVED (1<<6) /* will be used in the future GC */
#define FL_FINALIZE (1<<7)
#define FL_TAINT (1<<8)
#define FL_EXIVAR (1<<9)
#define FL_FREEZE (1<<10)
enum ruby_value_flags {
RUBY_FL_MARK = (1<<5),
#define FL_MARK RUBY_FL_MARK
RUBY_FL_RESERVED = (1<<6) /* will be used in the future GC */,
#define FL_RESERVED RUBY_FL_RESERVED
RUBY_FL_FINALIZE = (1<<7),
#define FL_FINALIZE RUBY_FL_FINALIZE
RUBY_FL_TAINT = (1<<8),
#define FL_TAINT RUBY_FL_TAINT
RUBY_FL_EXIVAR = (1<<9),
#define FL_EXIVAR RUBY_FL_EXIVAR
RUBY_FL_FREEZE = (1<<10),
#define FL_FREEZE RUBY_FL_FREEZE
RUBY_FL_SINGLETON = (1<<11),
#define FL_SINGLETON RUBY_FL_SINGLETON
#define FL_USHIFT 11
RUBY_FL_USHIFT = 11,
#define FL_USHIFT RUBY_FL_USHIFT
#define FL_USER0 (1<<(FL_USHIFT+0))
#define FL_USER1 (1<<(FL_USHIFT+1))
#define FL_USER2 (1<<(FL_USHIFT+2))
#define FL_USER3 (1<<(FL_USHIFT+3))
#define FL_USER4 (1<<(FL_USHIFT+4))
#define FL_USER5 (1<<(FL_USHIFT+5))
#define FL_USER6 (1<<(FL_USHIFT+6))
#define FL_USER7 (1<<(FL_USHIFT+7))
RUBY_FL_USER0 = (1<<(FL_USHIFT+0)),
#define FL_USER0 RUBY_FL_USER0
RUBY_FL_USER1 = (1<<(FL_USHIFT+1)),
#define FL_USER1 RUBY_FL_USER1
RUBY_FL_USER2 = (1<<(FL_USHIFT+2)),
#define FL_USER2 RUBY_FL_USER2
RUBY_FL_USER3 = (1<<(FL_USHIFT+3)),
#define FL_USER3 RUBY_FL_USER3
RUBY_FL_USER4 = (1<<(FL_USHIFT+4)),
#define FL_USER4 RUBY_FL_USER4
RUBY_FL_USER5 = (1<<(FL_USHIFT+5)),
#define FL_USER5 RUBY_FL_USER5
RUBY_FL_USER6 = (1<<(FL_USHIFT+6)),
#define FL_USER6 RUBY_FL_USER6
RUBY_FL_USER7 = (1<<(FL_USHIFT+7)),
#define FL_USER7 RUBY_FL_USER7
};
#define SPECIAL_CONST_P(x) (IMMEDIATE_P(x) || !RTEST(x))