Actions
Bug #14335
closedblock.call should respect redefinition of Proc#call
Description
r61659の変更によって、
ブロック引数に対してcallメソッドを呼び出したときに
Proc#callの再定義が無視されるようになっています。
$ cat t.rb
Proc.prepend Module.new {
def call
p :call
super
end
}
def m(&blk)
yield
blk.call
end
m {}
$ ruby -v t.rb
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
:call
$ ./ruby -v t.rb
ruby 2.6.0dev (2018-01-08 master 61663) [x86_64-linux]
Updated by nobu (Nobuyoshi Nakada) almost 7 years ago
- Related to Feature #14330: Speedup `block.call` where `block` is passed block parameter. added
Updated by nobu (Nobuyoshi Nakada) almost 7 years ago
- Status changed from Open to Closed
Applied in changeset trunk|r61680.
vm.c: respect redefinition of Proc#call
-
vm.c (vm_redefinition_check_method_type): hoist out method
definition type to check redefinition. -
vm.c (rb_vm_check_redefinition_opt_method): should check
optimized method too. -
vm.c (vm_init_redefined_flag): check Proc#call.
-
vm_insnhelper.c (vm_call_opt_block_call): search proper method
if redefined. [Bug #14335]
Actions
Like0
Like0Like0