From 59b08c22b5b9e6179cbed15620dd0f7b8cef0742 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 21 Apr 2008 07:07:39 +0000 Subject: * enumerator.c (enumerator_init): preserve the method name in ID. * enumerator.c (enumerator_each): need not to call rb_to_id(). * enumerator.c (enumerator_with_index): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- enumerator.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'enumerator.c') diff --git a/enumerator.c b/enumerator.c index 2322c326ce..c52f61d9aa 100644 --- a/enumerator.c +++ b/enumerator.c @@ -37,7 +37,7 @@ proc_call(VALUE proc, VALUE args) struct enumerator { VALUE obj; - VALUE meth; + ID meth; VALUE proc; VALUE args; rb_block_call_func *iter; @@ -51,7 +51,6 @@ enumerator_mark(void *p) { struct enumerator *ptr = p; rb_gc_mark(ptr->obj); - rb_gc_mark(ptr->meth); rb_gc_mark(ptr->proc); rb_gc_mark(ptr->args); rb_gc_mark(ptr->fib); @@ -237,7 +236,7 @@ enumerator_init(VALUE enum_obj, VALUE obj, VALUE meth, int argc, VALUE *argv) struct enumerator *ptr = enumerator_ptr(enum_obj); ptr->obj = obj; - ptr->meth = meth; + ptr->meth = rb_to_id(meth); if (rb_block_given_p()) { ptr->proc = rb_block_proc(); ptr->iter = enumerator_iter_i; @@ -334,7 +333,7 @@ enumerator_each(VALUE obj) argc = RARRAY_LEN(e->args); argv = RARRAY_PTR(e->args); } - return rb_block_call(e->obj, rb_to_id(e->meth), argc, argv, e->iter, (VALUE)e); + return rb_block_call(e->obj, e->meth, argc, argv, e->iter, (VALUE)e); } static VALUE @@ -367,7 +366,7 @@ enumerator_with_index(VALUE obj) argc = RARRAY_LEN(e->args); argv = RARRAY_PTR(e->args); } - return rb_block_call(e->obj, rb_to_id(e->meth), argc, argv, + return rb_block_call(e->obj, e->meth, argc, argv, enumerator_with_index_i, (VALUE)&memo); } -- cgit v1.2.3