ruby-changes:4182
From: ko1@a...
Date: Mon, 3 Mar 2008 16:14:56 +0900 (JST)
Subject: [ruby-changes:4182] nobu - Ruby:r15672 (trunk, ruby_1_8): * hash.c (rb_any_hash): shrinks all results in Fixnum range.
nobu 2008-03-03 16:14:27 +0900 (Mon, 03 Mar 2008) New Revision: 15672 Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/hash.c branches/ruby_1_8/version.h trunk/ChangeLog trunk/hash.c trunk/version.h Log: * hash.c (rb_any_hash): shrinks all results in Fixnum range. [ruby-core:15713] http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=15672&r2=15671&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/hash.c?r1=15672&r2=15671&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=15672&r2=15671&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15672&r2=15671&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/version.h?r1=15672&r2=15671&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/hash.c?r1=15672&r2=15671&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 15671) +++ ChangeLog (revision 15672) @@ -1,3 +1,8 @@ +Mon Mar 3 16:14:24 2008 Nobuyoshi Nakada <nobu@r...> + + * hash.c (rb_any_hash): shrinks all results in Fixnum range. + [ruby-core:15713] + Sun Mar 2 23:03:59 2008 Nobuyoshi Nakada <nobu@r...> * io.c (rb_io_ungetc): reduce redundant call. Index: hash.c =================================================================== --- hash.c (revision 15671) +++ hash.c (revision 15672) @@ -75,15 +75,16 @@ rb_any_hash(VALUE a) { VALUE hval; + int hnum; switch (TYPE(a)) { case T_FIXNUM: case T_SYMBOL: - return (int)a; + hnum = (int)a; break; case T_STRING: - return rb_str_hash(a); + hnum = rb_str_hash(a); break; default: @@ -91,8 +92,10 @@ if (!FIXNUM_P(hval)) { hval = rb_funcall(hval, '%', 1, INT2FIX(536870923)); } - return (int)FIX2LONG(hval); + hnum = (int)FIX2LONG(hval); } + hnum <<= 1; + return RSHIFT(hnum, 1); } static const struct st_hash_type objhash = { Index: version.h =================================================================== --- version.h (revision 15671) +++ version.h (revision 15672) @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2008-03-02" +#define RUBY_RELEASE_DATE "2008-03-03" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20080302 +#define RUBY_RELEASE_CODE 20080303 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2008 #define RUBY_RELEASE_MONTH 3 -#define RUBY_RELEASE_DAY 2 +#define RUBY_RELEASE_DAY 3 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; Index: ruby_1_8/hash.c =================================================================== --- ruby_1_8/hash.c (revision 15671) +++ ruby_1_8/hash.c (revision 15672) @@ -89,15 +89,16 @@ VALUE a; { VALUE hval; + int hnum; switch (TYPE(a)) { case T_FIXNUM: case T_SYMBOL: - return (int)a; + hnum = (int)a; break; case T_STRING: - return rb_str_hash(a); + hnum = rb_str_hash(a); break; default: @@ -105,8 +106,10 @@ if (!FIXNUM_P(hval)) { hval = rb_funcall(hval, '%', 1, INT2FIX(536870923)); } - return (int)FIX2LONG(hval); + hnum = (int)FIX2LONG(hval); } + hnum <<= 1; + return RSHIFT(hnum, 1); } static struct st_hash_type objhash = { Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 15671) +++ ruby_1_8/ChangeLog (revision 15672) @@ -1,3 +1,8 @@ +Mon Mar 3 16:14:24 2008 Nobuyoshi Nakada <nobu@r...> + + * hash.c (rb_any_hash): shrinks all results in Fixnum range. + [ruby-core:15713] + Sat Mar 1 02:35:08 2008 Nobuyoshi Nakada <nobu@r...> * bignum.c (big2str_find_n1): check integer overflow. Index: ruby_1_8/version.h =================================================================== --- ruby_1_8/version.h (revision 15671) +++ ruby_1_8/version.h (revision 15672) @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.8.6" -#define RUBY_RELEASE_DATE "2008-03-01" +#define RUBY_RELEASE_DATE "2008-03-03" #define RUBY_VERSION_CODE 186 -#define RUBY_RELEASE_CODE 20080301 +#define RUBY_RELEASE_CODE 20080303 #define RUBY_PATCHLEVEL 5000 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 6 #define RUBY_RELEASE_YEAR 2008 #define RUBY_RELEASE_MONTH 3 -#define RUBY_RELEASE_DAY 1 +#define RUBY_RELEASE_DAY 3 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/