Implement Write Barriers on Enumerator::Generator

This commit is contained in:
Peter Zhu 2023-11-22 10:49:28 -05:00
parent d7165d88ec
commit 2dadd17c78

View File

@ -1434,7 +1434,7 @@ static const rb_data_type_t generator_data_type = {
NULL, NULL,
generator_compact, generator_compact,
}, },
0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_EMBEDDABLE 0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE
}; };
static struct generator * static struct generator *
@ -1474,7 +1474,7 @@ generator_init(VALUE obj, VALUE proc)
rb_raise(rb_eArgError, "unallocated generator"); rb_raise(rb_eArgError, "unallocated generator");
} }
ptr->proc = proc; RB_OBJ_WRITE(obj, &ptr->proc, proc);
return obj; return obj;
} }
@ -1522,7 +1522,7 @@ generator_init_copy(VALUE obj, VALUE orig)
rb_raise(rb_eArgError, "unallocated generator"); rb_raise(rb_eArgError, "unallocated generator");
} }
ptr1->proc = ptr0->proc; RB_OBJ_WRITE(obj, &ptr1->proc, ptr0->proc);
return obj; return obj;
} }
@ -1689,7 +1689,7 @@ lazy_generator_init(VALUE enumerator, VALUE procs)
lazy_init_block, rb_ary_new3(2, obj, procs)); lazy_init_block, rb_ary_new3(2, obj, procs));
gen_ptr = generator_ptr(generator); gen_ptr = generator_ptr(generator);
gen_ptr->obj = obj; RB_OBJ_WRITE(generator, &gen_ptr->obj, obj);
return generator; return generator;
} }