From 2234edf0b1183e0d6f63ac093243fc6e23e15dd5 Mon Sep 17 00:00:00 2001 From: mrkn Date: Mon, 26 Feb 2018 07:57:15 +0000 Subject: Use RB_INTEGER_TYPE_P instead of rb_obj_is_kind_of For checking whether an object is an Integer, because a subclass of Integer is meaningless in Ruby, RB_INTEGER_TYPE_P is better than rb_obj_is_kind_of for speed. * object.c (rb_to_integer): Use RB_INTEGER_TYPE_P instead of rb_obj_is_kind_of. * object.c (rb_check_to_integer): ditto. * range.c (range_max): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62582 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- range.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'range.c') diff --git a/range.c b/range.c index 589755753f..828231f33d 100644 --- a/range.c +++ b/range.c @@ -949,29 +949,29 @@ range_max(int argc, VALUE *argv, VALUE range) int nm = FIXNUM_P(e) || rb_obj_is_kind_of(e, rb_cNumeric); if (rb_block_given_p() || (EXCL(range) && !nm) || argc) { - return rb_call_super(argc, argv); + return rb_call_super(argc, argv); } else { - struct cmp_opt_data cmp_opt = { 0, 0 }; - VALUE b = RANGE_BEG(range); - int c = OPTIMIZED_CMP(b, e, cmp_opt); - - if (c > 0) - return Qnil; - if (EXCL(range)) { - if (!FIXNUM_P(e) && !rb_obj_is_kind_of(e, rb_cInteger)) { - rb_raise(rb_eTypeError, "cannot exclude non Integer end value"); - } - if (c == 0) return Qnil; - if (!FIXNUM_P(b) && !rb_obj_is_kind_of(b,rb_cInteger)) { - rb_raise(rb_eTypeError, "cannot exclude end value with non Integer begin value"); - } - if (FIXNUM_P(e)) { - return LONG2NUM(FIX2LONG(e) - 1); - } - return rb_funcall(e, '-', 1, INT2FIX(1)); - } - return e; + struct cmp_opt_data cmp_opt = { 0, 0 }; + VALUE b = RANGE_BEG(range); + int c = OPTIMIZED_CMP(b, e, cmp_opt); + + if (c > 0) + return Qnil; + if (EXCL(range)) { + if (!RB_INTEGER_TYPE_P(e)) { + rb_raise(rb_eTypeError, "cannot exclude non Integer end value"); + } + if (c == 0) return Qnil; + if (!RB_INTEGER_TYPE_P(b)) { + rb_raise(rb_eTypeError, "cannot exclude end value with non Integer begin value"); + } + if (FIXNUM_P(e)) { + return LONG2NUM(FIX2LONG(e) - 1); + } + return rb_funcall(e, '-', 1, INT2FIX(1)); + } + return e; } } -- cgit v1.2.3