From fba3e76e3fded3534a34b21412c17af2b02a5f3d Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Fri, 19 Jul 2019 16:24:14 +0900 Subject: [PATCH] fix debug counter for Hash counts. Change debug_counters for Hash object counts: * obj_hash_under4 (1-3) -> obj_hash_1_4 (1-4) * obj_hash_ge4 (4-7) -> obj_hash_5_8 (5-8) * obj_hash_ge8 (>=8) -> obj_hash_g8 (> 8) For example on rdoc benchmark: [RUBY_DEBUG_COUNTER] obj_hash_empty 554,900 [RUBY_DEBUG_COUNTER] obj_hash_under4 572,998 [RUBY_DEBUG_COUNTER] obj_hash_ge4 1,825 [RUBY_DEBUG_COUNTER] obj_hash_ge8 2,344 [RUBY_DEBUG_COUNTER] obj_hash_empty 553,097 [RUBY_DEBUG_COUNTER] obj_hash_1_4 571,880 [RUBY_DEBUG_COUNTER] obj_hash_5_8 982 [RUBY_DEBUG_COUNTER] obj_hash_g8 2,189 --- debug_counter.h | 12 ++++++------ gc.c | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/debug_counter.h b/debug_counter.h index 6e0313db3b..97b7312794 100644 --- a/debug_counter.h +++ b/debug_counter.h @@ -174,9 +174,9 @@ RB_DEBUG_COUNTER(gc_isptr_maybe) * * str_nofree: nofree * * str_fstr: fstr * * hash_empty: hash is empty - * * hash_under4: has under 4 entries - * * hash_ge4: has n entries (4<=n<8) - * * hash_ge8: has n entries (8<=n) + * * hash_1_4: has 1 to 4 entries + * * hash_5_8: has 5 to 8 entries + * * hash_g8: has n entries (n>8) * * match_under4: has under 4 oniguruma regions allocated * * match_ge4: has n regions allocated (4<=n<8) * * match_ge8: has n regions allocated (8<=n) @@ -217,9 +217,9 @@ RB_DEBUG_COUNTER(obj_ary_shared) RB_DEBUG_COUNTER(obj_ary_shared_root_occupied) RB_DEBUG_COUNTER(obj_hash_empty) -RB_DEBUG_COUNTER(obj_hash_under4) -RB_DEBUG_COUNTER(obj_hash_ge4) -RB_DEBUG_COUNTER(obj_hash_ge8) +RB_DEBUG_COUNTER(obj_hash_1_4) +RB_DEBUG_COUNTER(obj_hash_5_8) +RB_DEBUG_COUNTER(obj_hash_g8) RB_DEBUG_COUNTER(obj_hash_ar) RB_DEBUG_COUNTER(obj_hash_st) RB_DEBUG_COUNTER(obj_hash_transient) diff --git a/gc.c b/gc.c index 060e1ed48b..df48bc1269 100644 --- a/gc.c +++ b/gc.c @@ -2410,14 +2410,14 @@ obj_free(rb_objspace_t *objspace, VALUE obj) break; case T_HASH: #if USE_DEBUG_COUNTER - if (RHASH_SIZE(obj) >= 8) { - RB_DEBUG_COUNTER_INC(obj_hash_ge8); + if (RHASH_SIZE(obj) > 8) { + RB_DEBUG_COUNTER_INC(obj_hash_g8); } - else if (RHASH_SIZE(obj) >= 4) { - RB_DEBUG_COUNTER_INC(obj_hash_ge4); + else if (RHASH_SIZE(obj) > 4) { + RB_DEBUG_COUNTER_INC(obj_hash_5_8); } - else if (RHASH_SIZE(obj) >= 1) { - RB_DEBUG_COUNTER_INC(obj_hash_under4); + else if (RHASH_SIZE(obj) > 0) { + RB_DEBUG_COUNTER_INC(obj_hash_1_4); } else { RB_DEBUG_COUNTER_INC(obj_hash_empty);