Skip to content
  • Jeremy Evans's avatar
    660c7e05
    Fix more keyword separation issues · 660c7e05
    Jeremy Evans authored
    This fixes instance_exec and similar methods. It also fixes
    Enumerator::Yielder#yield, rb_yield_block, and a couple of cases
    with Proc#{<<,>>}.
    
    This support requires the addition of rb_yield_values_kw, similar to
    rb_yield_values2, for passing the keyword flag.
    
    Unlike earlier attempts at this, this does not modify the rb_block_call_func
    type or add a separate function type.  The functions of type
    rb_block_call_func are called by Ruby with a separate VM frame, and we can
    get the keyword flag information from the VM frame flags, so it doesn't need
    to be passed as a function argument.
    
    These changes require the following VM functions accept a keyword flag:
    
    * vm_yield_with_cref
    * vm_yield
    * vm_yield_with_block
    660c7e05
    Fix more keyword separation issues
    Jeremy Evans authored
    This fixes instance_exec and similar methods. It also fixes
    Enumerator::Yielder#yield, rb_yield_block, and a couple of cases
    with Proc#{<<,>>}.
    
    This support requires the addition of rb_yield_values_kw, similar to
    rb_yield_values2, for passing the keyword flag.
    
    Unlike earlier attempts at this, this does not modify the rb_block_call_func
    type or add a separate function type.  The functions of type
    rb_block_call_func are called by Ruby with a separate VM frame, and we can
    get the keyword flag information from the VM frame flags, so it doesn't need
    to be passed as a function argument.
    
    These changes require the following VM functions accept a keyword flag:
    
    * vm_yield_with_cref
    * vm_yield
    * vm_yield_with_block
Loading