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

ruby-changes:17092

From: nobu <ko1@a...>
Date: Wed, 25 Aug 2010 17:56:58 +0900 (JST)
Subject: [ruby-changes:17092] Ruby:r29092 (trunk): * array.c (rb_ary_sample): use frozen shared array to get rid of

nobu	2010-08-25 17:56:47 +0900 (Wed, 25 Aug 2010)

  New Revision: 29092

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29092

  Log:
    * array.c (rb_ary_sample): use frozen shared array to get rid of
      reallocation.

  Modified files:
    trunk/ChangeLog
    trunk/array.c

Index: array.c
===================================================================
--- array.c	(revision 29091)
+++ array.c	(revision 29092)
@@ -3826,6 +3826,7 @@
     rb_scan_args(argc, argv, "1", &nv);
     n = NUM2LONG(nv);
     if (n < 0) rb_raise(rb_eArgError, "negative sample number");
+    RB_GC_GUARD(ary) = ary_make_shared(ary);
     ptr = RARRAY_PTR(ary);
     len = RARRAY_LEN(ary);
     if (n > len) n = len;
@@ -3872,7 +3873,6 @@
 	VALUE *ptr_result;
 	result = rb_ary_new4(len, ptr);
 	ptr_result = RARRAY_PTR(result);
-	RB_GC_GUARD(ary);
 	for (i=0; i<n; i++) {
 	    j = RAND_UPTO(len-i) + i;
 	    nv = ptr_result[j];
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 29091)
+++ ChangeLog	(revision 29092)
@@ -1,3 +1,8 @@
+Wed Aug 25 17:56:40 2010  Nobuyoshi Nakada  <nobu@r...>
+
+	* array.c (rb_ary_sample): use frozen shared array to get rid of
+	  reallocation.
+
 Wed Aug 25 03:42:43 2010  NAKAMURA Usaku  <usa@r...>
 
 	* ext/dl/cfunc.c (rb_dlcfunc_call): workaround for VC9 for x64.

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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