From 6760a5ed9f693686fa1571850716360c676dc7f5 Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 13 Jan 2004 05:48:59 +0000 Subject: * parse.y (primary): allow no "when" case. [ruby-dev:22578] * ruby.h (rb_class_of): reduce branch. [ruby-dev:22577] * ruby.h (rb_type): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ruby.h | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) (limited to 'ruby.h') diff --git a/ruby.h b/ruby.h index dda9acc972..8790a2863b 100644 --- a/ruby.h +++ b/ruby.h @@ -629,13 +629,18 @@ rb_class_of(obj) VALUE obj; #endif { - if (FIXNUM_P(obj)) return rb_cFixnum; - if (obj == Qnil) return rb_cNilClass; - if (obj == Qfalse) return rb_cFalseClass; - if (obj == Qtrue) return rb_cTrueClass; - if (SYMBOL_P(obj)) return rb_cSymbol; - - return RBASIC(obj)->klass; + if(IMMEDIATE_P(obj)){ + if (FIXNUM_P(obj)) return rb_cFixnum; + if (obj == Qtrue) return rb_cTrueClass; + if (SYMBOL_P(obj)) return rb_cSymbol; + } + else if(!RTEST(obj)){ + if (obj == Qnil) return rb_cNilClass; + if (obj == Qfalse) return rb_cFalseClass; + } + else{ + return RBASIC(obj)->klass; + } } static inline int @@ -646,13 +651,19 @@ rb_type(obj) VALUE obj; #endif { - if (FIXNUM_P(obj)) return T_FIXNUM; - if (obj == Qnil) return T_NIL; - if (obj == Qfalse) return T_FALSE; - if (obj == Qtrue) return T_TRUE; - if (obj == Qundef) return T_UNDEF; - if (SYMBOL_P(obj)) return T_SYMBOL; - return BUILTIN_TYPE(obj); + if(IMMEDIATE_P(obj)){ + if (FIXNUM_P(obj)) return T_FIXNUM; + if (obj == Qtrue) return T_TRUE; + if (SYMBOL_P(obj)) return T_SYMBOL; + if (obj == Qundef) return T_UNDEF; + } + else if(!RTEST(obj)){ + if (obj == Qnil) return T_NIL; + if (obj == Qfalse) return T_FALSE; + } + else{ + return BUILTIN_TYPE(obj); + } } static inline int -- cgit v1.2.3