diff --git a/compile.c b/compile.c index 0e56820055..f92eabaa13 100644 --- a/compile.c +++ b/compile.c @@ -7203,7 +7203,7 @@ iseq_build_from_ary_body(rb_iseq_t *iseq, LINK_ANCHOR *const anchor, case TS_CDHASH: { int i; - VALUE map = rb_hash_new(); + VALUE map = rb_hash_new_with_size(RARRAY_LEN(op)/2); rb_hash_tbl_raw(map)->type = &cdhash_type; op = rb_convert_type_with_id(op, T_ARRAY, "Array", idTo_ary); @@ -8525,7 +8525,7 @@ static VALUE ibf_load_object_hash(const struct ibf_load *load, const struct ibf_object_header *header, ibf_offset_t offset) { const struct ibf_object_hash *hash = IBF_OBJBODY(struct ibf_object_hash, offset); - VALUE obj = rb_hash_new(); + VALUE obj = rb_hash_new_with_size(hash->len); int i; for (i=0; ilen; i++) { diff --git a/gc.c b/gc.c index 7f6c1a7a79..3a27e4ee67 100644 --- a/gc.c +++ b/gc.c @@ -6735,7 +6735,7 @@ static const char *type_name(int type, VALUE obj); static void gc_count_add_each_types(VALUE hash, const char *name, const size_t *types) { - VALUE result = rb_hash_new(); + VALUE result = rb_hash_new_with_size(T_MASK); int i; for (i=0; i