diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-09-24 01:16:36 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-09-24 01:16:36 +0000 |
commit | 8a3856dc1ee0f0a9105592de9b29507eba1a8dda (patch) | |
tree | ef501655f60c5c0c1642a68ab016edd8868d483b /enum.c | |
parent | aed254f314b9c2bdae46d34dd17300cadace3907 (diff) |
enum.c: id_call
* enum.c (id_call): intern first and share.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37018 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enum.c')
-rw-r--r-- | enum.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -19,6 +19,7 @@ VALUE rb_mEnumerable; static ID id_next; +static ID id_call; #define id_each idEach #define id_eqq idEqq #define id_cmp idCmp @@ -2264,9 +2265,9 @@ chunk_ii(VALUE i, VALUE _argp, int argc, VALUE *argv) ENUM_WANT_SVALUE(); if (NIL_P(argp->state)) - v = rb_funcall(argp->categorize, rb_intern("call"), 1, i); + v = rb_funcall(argp->categorize, id_call, 1, i); else - v = rb_funcall(argp->categorize, rb_intern("call"), 2, i, argp->state); + v = rb_funcall(argp->categorize, id_call, 2, i, argp->state); if (v == alone) { if (!NIL_P(argp->prev_value)) { @@ -2462,9 +2463,9 @@ slicebefore_ii(VALUE i, VALUE _argp, int argc, VALUE *argv) if (!NIL_P(argp->sep_pat)) header_p = rb_funcall(argp->sep_pat, id_eqq, 1, i); else if (NIL_P(argp->state)) - header_p = rb_funcall(argp->sep_pred, rb_intern("call"), 1, i); + header_p = rb_funcall(argp->sep_pred, id_call, 1, i); else - header_p = rb_funcall(argp->sep_pred, rb_intern("call"), 2, i, argp->state); + header_p = rb_funcall(argp->sep_pred, id_call, 2, i, argp->state); if (RTEST(header_p)) { if (!NIL_P(argp->prev_elts)) rb_funcall(argp->yielder, id_lshift, 1, argp->prev_elts); @@ -2733,4 +2734,5 @@ Init_Enumerable(void) rb_define_method(rb_mEnumerable, "slice_before", enum_slice_before, -1); id_next = rb_intern("next"); + id_call = rb_intern("call"); } |