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

ruby-changes:24966

From: nobu <ko1@a...>
Date: Mon, 24 Sep 2012 10:16:47 +0900 (JST)
Subject: [ruby-changes:24966] nobu:r37018 (trunk): enum.c: id_call

nobu	2012-09-24 10:16:36 +0900 (Mon, 24 Sep 2012)

  New Revision: 37018

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

  Log:
    enum.c: id_call
    
    * enum.c (id_call): intern first and share.

  Modified files:
    trunk/enum.c

Index: enum.c
===================================================================
--- enum.c	(revision 37017)
+++ enum.c	(revision 37018)
@@ -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 @@
     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 @@
     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 @@
     rb_define_method(rb_mEnumerable, "slice_before", enum_slice_before, -1);
 
     id_next = rb_intern("next");
+    id_call = rb_intern("call");
 }

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

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