diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-06-05 07:13:52 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-06-05 07:13:52 +0000 |
commit | 203286673d0c66fdcaf6e65acfa267aaebdc3400 (patch) | |
tree | 6a0e1b01e98f2be8c868ec3fbca4df3c13c0e6cf /insns.def | |
parent | 8ef2289a494a16789cf4add22dbf7ad56595f90a (diff) | |
download | ruby-203286673d0c66fdcaf6e65acfa267aaebdc3400.tar.gz |
* 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 'insns.def')
-rw-r--r-- | insns.def | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -1238,7 +1238,7 @@ send id = ip->defined_method_id; if (ip != ip->local_iseq) { - /* defined by method_defined() */ + /* defined by Module#define_method() */ rb_control_frame_t *lcfp = GET_CFP(); while (lcfp->iseq != ip) { @@ -1345,7 +1345,8 @@ invokeblock } INC_SP(-argc); - argc = th_yield_setup_args(th, iseq, argc, GET_SP(), 0); + argc = th_yield_setup_args(th, iseq, argc, GET_SP(), + block_proc_is_lambda(block->proc)); INC_SP(argc); push_frame(th, iseq, |