  VALUE rb_cProc;
  
  static VALUE bmcall(VALUE, VALUE);
--static int method_arity(VALUE);
+-int method_arity(VALUE);
  
  /* Proc */
  

 static VALUE
 iseq_location(rb_iseq_t *iseq)
 {
@@ -1649,7 +1710,7 @@ method_arity_m(VALUE method)
     return INT2FIX(n);
 }
 
-static int
+int
 method_arity(VALUE method)
 {
     struct METHOD *data;
@@ -2042,6 +2103,100 @@ proc_curry(int argc, VALUE *argv, VALUE self)
     return make_curry_proc(self, rb_ary_new(), arity);
 }

index b28a222..fd2f2e0 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -259,6 +259,19 @@ struct rb_iseq_struct {
     /* If this instruction sequence came from eval, the string of the
        source as a String. */
     VALUE source;
+
+    /* Used to set a breakpoint at a VM instruction */
+    unsigned char *breakpoints; 
+
+    /* If we are saving tree nodes (a compile option), then tree_node
+       is the internal parse tree node representation for this
