hash.c (mrb_hash_set_default_proc): avoid repeated calls for mrb_nil_p()

This commit is contained in:
Yukihiro "Matz" Matsumoto
2025-03-19 14:57:02 +09:00
parent a55e3685a9
commit 226acdc540
+4 -2
View File
@@ -1274,6 +1274,7 @@ mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val)
mrb_field_write_barrier_value(mrb, mrb_basic_ptr(hash), key);
mrb_field_write_barrier_value(mrb, mrb_basic_ptr(hash), val);
}
static void
hash_set_default_proc(mrb_state *mrb, mrb_value hash, mrb_value proc)
{
@@ -1493,11 +1494,12 @@ mrb_hash_set_default_proc(mrb_state *mrb, mrb_value hash)
mrb_value ifnone = mrb_get_arg1(mrb);
hash_modify(mrb, hash);
if (!mrb_nil_p(ifnone)) {
mrb_bool has_ifnone = !mrb_nil_p(ifnone);
if (has_ifnone) {
mrb_check_type(mrb, ifnone, MRB_TT_PROC);
}
mrb_iv_set(mrb, hash, MRB_SYM(ifnone), ifnone);
if (!mrb_nil_p(ifnone)) {
if (has_ifnone) {
hash_set_default_proc(mrb, hash, ifnone);
}
else {