ruby-changes:18471
From: akr <ko1@a...>
Date: Sat, 8 Jan 2011 21:48:23 +0900 (JST)
Subject: [ruby-changes:18471] Ruby:r30494 (trunk): * enum.c (enum_sort_by): use rb_ary_resize.
akr 2011-01-08 21:48:12 +0900 (Sat, 08 Jan 2011) New Revision: 30494 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30494 Log: * enum.c (enum_sort_by): use rb_ary_resize. (ary_cutoff): removed. Modified files: trunk/ChangeLog trunk/enum.c Index: ChangeLog =================================================================== --- ChangeLog (revision 30493) +++ ChangeLog (revision 30494) @@ -1,3 +1,8 @@ +Sat Jan 8 21:47:26 2011 Tanaka Akira <akr@f...> + + * enum.c (enum_sort_by): use rb_ary_resize. + (ary_cutoff): removed. + Sat Jan 8 21:24:17 2011 Tanaka Akira <akr@f...> * pack.c (swapf): compilation condition simplified. Index: enum.c =================================================================== --- enum.c (revision 30493) +++ enum.c (revision 30494) @@ -812,19 +812,6 @@ return rb_cmpint(rb_funcall(a, id_cmp, 1, b), a, b); } -static void -ary_cutoff(VALUE ary, long len) -{ - long i; - if (RBASIC(ary)->flags & RARRAY_EMBED_FLAG) { - for (i=RARRAY_LEN(ary)-len; 0<i; i--) - rb_ary_pop(ary); - } - else { - RARRAY(ary)->as.heap.len = len; - } -} - /* * call-seq: * enum.sort_by {| obj | block } -> array @@ -918,7 +905,7 @@ rb_ary_store(data.buf, SORT_BY_BUFSIZE*2-1, Qnil); rb_block_call(obj, id_each, 0, 0, sort_by_i, (VALUE)&data); if (data.n) { - ary_cutoff(data.buf, data.n*2); + rb_ary_resize(data.buf, data.n*2); rb_ary_concat(ary, data.buf); } if (RARRAY_LEN(ary) > 2) { @@ -931,7 +918,7 @@ for (i=1; i<RARRAY_LEN(ary); i+=2) { RARRAY_PTR(ary)[i/2] = RARRAY_PTR(ary)[i]; } - ary_cutoff(ary, RARRAY_LEN(ary)/2); + rb_ary_resize(ary, RARRAY_LEN(ary)/2); RBASIC(ary)->klass = rb_cArray; OBJ_INFECT(ary, obj); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/