static VALUE binding_clone(VALUE self) { VALUE bindval = binding_dup(self); CLONESETUP(bindval, self); return bindval; }
static VALUE proc_clone(VALUE self) { VALUE procval = proc_dup(self); CLONESETUP(procval, self); return procval; }
static VALUE method_clone(VALUE self) { VALUE clone; struct METHOD *orig, *data; Data_Get_Struct(self, struct METHOD, orig); clone = Data_Make_Struct(CLASS_OF(self), struct METHOD, bm_mark, -1, data); CLONESETUP(clone, self); *data = *orig; return clone; }
static VALUE method_clone(VALUE self, SEL sel) { VALUE clone; rb_vm_method_t *orig, *data; Data_Get_Struct(self, rb_vm_method_t, orig); clone = Data_Make_Struct(CLASS_OF(self), rb_vm_method_t, NULL, NULL, data); CLONESETUP(clone, self); *data = *orig; GC_WB(&data->recv, orig->recv); return clone; }