[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]