title: What do rb_yield_splat and rb_yield_values2 in C Ruby (MRI) do?
body: <p>I see that Ruby has, in addition to the documented non-static functions <code>rb_yield</code> and <code>rb_yield_values</code> a couple of others that lack meaningful comments (and also aren't static). These are:</p>
  
  <ul>
  <li><code>rb_yield_values2</code>: <a href="http://rxr.whitequark.org/mri/source/vm_eval.c#974" rel="nofollow">http://rxr.whitequark.org/mri/source/vm_eval.c#974</a></li>
  <li><code>rb_yield_splat</code>: <a href="http://rxr.whitequark.org/mri/source/vm_eval.c#980" rel="nofollow">http://rxr.whitequark.org/mri/source/vm_eval.c#980</a></li>
  </ul>
  
  <p>How does <code>rb_yield_values</code> differ from <code>rb_yield_values2</code>?</p>
  
  <p>And <code>rb_yield_splat</code> looks like it takes an <code>Array</code> as an argument. When I use this, it seems to treat the array as with the <code>*</code> operator in Ruby, e.g., <code>yield(*params)</code>. Is this correct?</p>
  
  <p>I can't find documentation anywhere.</p>