From 0e4f4071ba01b6890f4cd7f08d99f789f9c4658e Mon Sep 17 00:00:00 2001 From: ko1 Date: Tue, 16 Jan 2007 03:06:01 +0000 Subject: * eval_proc.c (rb_proc_new): added. * string.c (sym_to_proc): supported. * vm.c (invoke_block, th_invoke_yield, th_invoke_proc): fix to support rb_proc_new. * yarvcore.c: add a test code. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval_proc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'eval_proc.c') diff --git a/eval_proc.c b/eval_proc.c index 3ff3e3b1d..a53415294 100644 --- a/eval_proc.c +++ b/eval_proc.c @@ -1023,6 +1023,18 @@ bmcall(VALUE args, VALUE method) return rb_method_call(RARRAY_LEN(a), RARRAY_PTR(a), method); } +VALUE +rb_proc_new( + VALUE (*func)(ANYARGS), /* VALUE yieldarg[, VALUE procarg] */ + VALUE val) +{ + yarv_proc_t *proc; + VALUE procval = rb_iterate((VALUE(*)(VALUE))mproc, 0, func, val); + GetProcPtr(procval, proc); + ((NODE*)proc->block.iseq)->u3.state = 1; + return procval; +} + /* * call-seq: * meth.to_proc => prc -- cgit