diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-02 13:19:44 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-02-02 13:19:44 +0000 |
commit | fd22933c3d60c1fca8300ec6de920be34a0338df (patch) | |
tree | 791820116e48e6b69fe1f39d358374d126a4f99b /ruby.h | |
parent | 12aeeeaa3607a6e4696990986f7d76a847cc8a45 (diff) | |
download | ruby-fd22933c3d60c1fca8300ec6de920be34a0338df.tar.gz ruby-fd22933c3d60c1fca8300ec6de920be34a0338df.tar.xz ruby-fd22933c3d60c1fca8300ec6de920be34a0338df.zip |
* ruby.h (SYMBOL_P): make Symbol immediate again for performance.
* string.c: redesign symbol methods.
* parse.y (rb_id2str): store Strings for operator symbols.
[ruby-dev:30235]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11615 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.h')
-rw-r--r-- | ruby.h | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -197,11 +197,10 @@ VALUE rb_ull2inum(unsigned LONG_LONG); #define IMMEDIATE_MASK 0x03 #define IMMEDIATE_P(x) ((VALUE)(x) & IMMEDIATE_MASK) -#define SYMBOL_P(x) (!SPECIAL_CONST_P(x) && RBASIC(x)->klass == rb_cSymbol) -VALUE rb_id2sym(ID); -ID rb_sym2id(VALUE); -#define ID2SYM(x) rb_id2sym(x) -#define SYM2ID(x) rb_sym2id(x) +#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) |