mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
hash.c (mrb_hash_set_default_proc): avoid repeated calls for mrb_nil_p()
This commit is contained in:
+4
-2
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user