diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-01-16 03:06:01 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-01-16 03:06:01 +0000 |
commit | 7eb928624f84135634075ea575d6f10d759f2263 (patch) | |
tree | 78f4c48ed4d1b7b3116d0bba7c8f6f60362fbc69 /eval_proc.c | |
parent | d2907d42bea13a670d5fb52c32e8761fa57efff1 (diff) | |
download | ruby-7eb928624f84135634075ea575d6f10d759f2263.tar.gz |
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@11536 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval_proc.c')
-rw-r--r-- | eval_proc.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/eval_proc.c b/eval_proc.c index 3ff3e3b1de..a53415294f 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 |