summaryrefslogtreecommitdiff
path: root/vm.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-05 07:13:52 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-05 07:13:52 +0000
commit203286673d0c66fdcaf6e65acfa267aaebdc3400 (patch)
tree6a0e1b01e98f2be8c868ec3fbca4df3c13c0e6cf /vm.c
parent8ef2289a494a16789cf4add22dbf7ad56595f90a (diff)
* insns.def (invokeblock): check block is created by lambda
or Proc.new. * vm.c (block_proc_is_lambda): added. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm.c')
-rw-r--r--vm.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/vm.c b/vm.c
index 2c34b17e12..4ec0a8f8ae 100644
--- a/vm.c
+++ b/vm.c
@@ -1351,6 +1351,21 @@ call_yarv_end_proc(VALUE data)
rb_proc_call(data, rb_ary_new2(0));
}
+static inline int
+block_proc_is_lambda(VALUE procval)
+{
+ rb_proc_t *proc;
+
+ if (procval) {
+ GetProcPtr(procval, proc);
+ return proc->is_lambda;
+ }
+ else {
+ return 0;
+ }
+}
+
+
/*********************************************************/
/*********************************************************/