diff options
author | Koichi Sasada <[email protected]> | 2019-08-02 14:59:29 +0900 |
---|---|---|
committer | Koichi Sasada <[email protected]> | 2019-08-02 15:59:47 +0900 |
commit | e03b3b4ae046785278b9188c83b2338f0f550526 (patch) | |
tree | 19652980ab570e5b0712f5942dc1bee8c29e100a /gc.c | |
parent | a0980f2446c0db735b8ffeb37e241370c458a626 (diff) |
add debug_counters to check details.
add debug_counters to check the Hash object statistics.
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 41 |
1 files changed, 30 insertions, 11 deletions
@@ -2448,21 +2448,40 @@ 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_g8); - } - else if (RHASH_SIZE(obj) > 4) { - RB_DEBUG_COUNTER_INC(obj_hash_5_8); - } - else if (RHASH_SIZE(obj) > 0) { - RB_DEBUG_COUNTER_INC(obj_hash_1_4); - } - else { + switch RHASH_SIZE(obj) { + case 0: RB_DEBUG_COUNTER_INC(obj_hash_empty); + break; + case 1: + RB_DEBUG_COUNTER_INC(obj_hash_1); + break; + case 2: + RB_DEBUG_COUNTER_INC(obj_hash_2); + break; + case 3: + RB_DEBUG_COUNTER_INC(obj_hash_3); + break; + case 4: + RB_DEBUG_COUNTER_INC(obj_hash_4); + break; + case 5: + case 6: + case 7: + case 8: + RB_DEBUG_COUNTER_INC(obj_hash_5_8); + break; + default: + GC_ASSERT(RHASH_SIZE(obj) > 8); + RB_DEBUG_COUNTER_INC(obj_hash_g8); } if (RHASH_AR_TABLE_P(obj)) { - RB_DEBUG_COUNTER_INC(obj_hash_ar); + if (RHASH_AR_TABLE(obj) == NULL) { + RB_DEBUG_COUNTER_INC(obj_hash_null); + } + else { + RB_DEBUG_COUNTER_INC(obj_hash_ar); + } } else { RB_DEBUG_COUNTER_INC(obj_hash_st); |