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 | 34b63da0b0704eb67e6d8c66505fcb6a576e5f1c (patch) | |
tree | 6a0e1b01e98f2be8c868ec3fbca4df3c13c0e6cf /insns.def | |
parent | a2a439833d7178996dc83f14ef03f6e5216e1ef3 (diff) | |
download | ruby-34b63da0b0704eb67e6d8c66505fcb6a576e5f1c.tar.gz ruby-34b63da0b0704eb67e6d8c66505fcb6a576e5f1c.tar.xz ruby-34b63da0b0704eb67e6d8c66505fcb6a576e5f1c.zip |
* insns.def (invokeblock): check block is created by lambda
or Proc.new.
* vm.c (block_proc_is_lambda): added.
git-svn-id: http://svn.ruby-lang.org/repos/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, |