1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Hoisted out w_ivar_each

This commit is contained in:
Nobuyoshi Nakada 2019-07-01 16:18:51 +09:00
parent c9423b016c
commit 0b1e26398e
No known key found for this signature in database
GPG key ID: 4BC7D6DF58D8DF60

View file

@ -664,14 +664,21 @@ has_ivars(VALUE obj, VALUE encname, VALUE *ivobj)
return num + enc;
}
static void
w_ivar_each(VALUE obj, st_index_t num, struct dump_call_arg *arg)
{
struct w_ivar_arg ivarg = {arg, num};
if (!num) return;
rb_ivar_foreach(obj, w_obj_each, (st_data_t)&ivarg);
}
static void
w_ivar(st_index_t num, VALUE ivobj, VALUE encname, struct dump_call_arg *arg)
{
w_long(num, arg->arg);
w_encoding(encname, arg);
if (ivobj != Qundef) {
struct w_ivar_arg ivarg = {arg, num};
rb_ivar_foreach(ivobj, w_obj_each, (st_data_t)&ivarg);
w_ivar_each(ivobj, num, arg);
}
}
@ -682,10 +689,7 @@ w_objivar(VALUE obj, struct dump_call_arg *arg)
rb_ivar_foreach(obj, obj_count_ivars, (st_data_t)&num);
w_long(num, arg->arg);
if (num != 0) {
struct w_ivar_arg ivarg = {arg, num};
rb_ivar_foreach(obj, w_obj_each, (st_data_t)&ivarg);
}
w_ivar_each(obj, num, arg);
}
static void