ruby-changes:2828
From: ko1@a...
Date: 19 Dec 2007 15:38:02 +0900
Subject: [ruby-changes:2828] matz - Ruby:r14319 (trunk): * insnhelper.ci (vm_yield_with_cfunc): call cfunc with
matz 2007-12-19 15:37:41 +0900 (Wed, 19 Dec 2007) New Revision: 14319 Modified files: trunk/ChangeLog trunk/enumerator.c trunk/insnhelper.ci Log: * insnhelper.ci (vm_yield_with_cfunc): call cfunc with (argv[0], data, argc, argv) to pass all arguments. * eval.c (loop_i): adapted to new calling convention. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/insnhelper.ci?r1=14319&r2=14318 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14319&r2=14318 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enumerator.c?r1=14319&r2=14318 Index: ChangeLog =================================================================== --- ChangeLog (revision 14318) +++ ChangeLog (revision 14319) @@ -1,3 +1,10 @@ +Wed Dec 19 15:37:06 2007 Yukihiro Matsumoto <matz@r...> + + * insnhelper.ci (vm_yield_with_cfunc): call cfunc with + (argv[0], data, argc, argv) to pass all arguments. + + * eval.c (loop_i): adapted to new calling convention. + Wed Dec 19 15:13:20 2007 Yukihiro Matsumoto <matz@r...> * string.c (rb_str_justify): should propagate encoding from pad Index: enumerator.c =================================================================== --- enumerator.c (revision 14318) +++ enumerator.c (revision 14319) @@ -225,14 +225,9 @@ } static VALUE -enumerator_each_i(VALUE v, VALUE enum_obj, VALUE argc) +enumerator_each_i(VALUE v, VALUE enum_obj, int argc, VALUE *argv) { - if (argc == 1) { - return rb_yield(v); - } - else { - return rb_yield_values2(argc, RARRAY_PTR(v)); - } + return rb_yield_values2(argc, argv); } static VALUE Index: insnhelper.ci =================================================================== --- insnhelper.ci (revision 14318) +++ insnhelper.ci (revision 14319) @@ -650,23 +650,18 @@ if (lambda) { arg = rb_ary_new4(argc, argv); } + else if (argc == 0) { + arg = Qnil; + } else { - if (argc == 1) { - arg = *argv; - } - else if (argc > 1) { - arg = rb_ary_new4(argc, argv); - } - else { - arg = rb_ary_new(); - } + arg = argv[0]; } vm_push_frame(th, 0, FRAME_MAGIC_IFUNC, self, (VALUE)block->dfp, 0, th->cfp->sp, block->lfp, 1); - val = (*ifunc->nd_cfnc) (arg, ifunc->nd_tval, (VALUE) argc); + val = (*ifunc->nd_cfnc) (arg, ifunc->nd_tval, argc, argv); th->cfp++; return val; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml