mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
variable.c: Rename rb_st_copy to rb_iv_tbl_copy
This function was created as a variant of st_copy with firing write barrier. It should have more explicit name, such as st_copy_with_write_barrier. But because it is used only for copying iv_tbl, so I rename it to rb_iv_tbl_copy now. If we face other use case than iv_tbl, we may want to rename it to more general name.
This commit is contained in:
parent
b4c328bebc
commit
28eefb33c8
3 changed files with 8 additions and 7 deletions
4
class.c
4
class.c
|
@ -341,7 +341,7 @@ rb_mod_init_copy(VALUE clone, VALUE orig)
|
|||
if (RCLASS_IV_TBL(orig)) {
|
||||
st_data_t id;
|
||||
|
||||
RCLASS_IV_TBL(clone) = rb_st_copy(clone, RCLASS_IV_TBL(orig));
|
||||
rb_iv_tbl_copy(clone, orig);
|
||||
CONST_ID(id, "__tmp_classpath__");
|
||||
st_delete(RCLASS_IV_TBL(clone), &id, 0);
|
||||
CONST_ID(id, "__classpath__");
|
||||
|
@ -394,7 +394,7 @@ rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
|
|||
RCLASS_SET_SUPER(clone, RCLASS_SUPER(klass));
|
||||
RCLASS_EXT(clone)->allocator = RCLASS_EXT(klass)->allocator;
|
||||
if (RCLASS_IV_TBL(klass)) {
|
||||
RCLASS_IV_TBL(clone) = rb_st_copy(clone, RCLASS_IV_TBL(klass));
|
||||
rb_iv_tbl_copy(clone, klass);
|
||||
}
|
||||
if (RCLASS_CONST_TBL(klass)) {
|
||||
struct clone_const_arg arg;
|
||||
|
|
|
@ -2519,7 +2519,7 @@ void rb_mark_generic_ivar(VALUE);
|
|||
void rb_mv_generic_ivar(VALUE src, VALUE dst);
|
||||
VALUE rb_const_missing(VALUE klass, VALUE name);
|
||||
int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
|
||||
st_table *rb_st_copy(VALUE obj, struct st_table *orig_tbl);
|
||||
void rb_iv_tbl_copy(VALUE dst, VALUE src);
|
||||
|
||||
/* gc.c (export) */
|
||||
VALUE rb_wb_protected_newobj_of(VALUE, VALUE);
|
||||
|
|
|
@ -3360,12 +3360,13 @@ tbl_copy_i(st_data_t key, st_data_t value, st_data_t data)
|
|||
return ST_CONTINUE;
|
||||
}
|
||||
|
||||
st_table *
|
||||
rb_st_copy(VALUE obj, struct st_table *orig_tbl)
|
||||
void
|
||||
rb_iv_tbl_copy(VALUE dst, VALUE src)
|
||||
{
|
||||
st_table *orig_tbl = RCLASS_IV_TBL(src);
|
||||
st_table *new_tbl = st_copy(orig_tbl);
|
||||
st_foreach(new_tbl, tbl_copy_i, (st_data_t)obj);
|
||||
return new_tbl;
|
||||
st_foreach(new_tbl, tbl_copy_i, (st_data_t)dst);
|
||||
RCLASS_IV_TBL(dst) = new_tbl;
|
||||
}
|
||||
|
||||
MJIT_FUNC_EXPORTED rb_const_entry_t *
|
||||
|
|
Loading…
Reference in a new issue