  static VALUE
  rb_iseq_new_with_bopt_and_opt(NODE *node, VALUE name, VALUE filename, VALUE filepath, VALUE line_no,
  				VALUE parent, VALUE type, VALUE bopt,
-@@ -409,6 +470,7 @@
+@@ -409,6 +500,7 @@
      prepare_iseq_build(iseq, name, filename, filepath, line_no, parent, type, bopt, option);
      rb_iseq_compile_node(self, node);
      cleanup_iseq_build(iseq);

     return val;
 }
 
@@ -477,6 +499,13 @@
 		      iseq->iseq_encoded + opt_pc, sp, 0, 0);
 
 	cfp->sp = rsp - 1 /* recv */;

Index: method.h
===================================================================
--- method.h	(revision 28682)
+++ method.h	(working copy)
@@ -46,7 +46,11 @@
 
 typedef struct rb_method_cfunc_struct {
     VALUE (*func)(ANYARGS);
-    int argc;
+    int argc; /* This should probably be called "arity" since it is based
+		 on the static prototype, not the supplied arguments
+		 at runtime. */
+    int actual_argc; /* This probably should be called argc. It is the
+			argument count at runtime.*/
 } rb_method_cfunc_t;
 
 typedef struct rb_method_attr_struct {
Index: include/ruby/ruby.h
===================================================================
--- include/ruby/ruby.h	(revision 28682)
+++ include/ruby/ruby.h	(working copy)
@@ -1351,7 +1351,9 @@
 #define RUBY_EVENT_C_CALL    0x0020
