@@ -624,6 +624,11 @@ typedef struct rb_objspace {
624624 size_t major_gc_count ;
625625 size_t compact_count ;
626626 size_t read_barrier_faults ;
627+ size_t major_by_nofree ;
628+ size_t major_by_oldgen ;
629+ size_t major_by_shady ;
630+ size_t major_by_force ;
631+ size_t major_by_oldmalloc ;
627632#if RGENGC_PROFILE > 0
628633 size_t total_generated_normal_object_count ;
629634 size_t total_generated_shady_object_count ;
@@ -7906,6 +7911,13 @@ gc_start(rb_objspace_t *objspace, unsigned int reason)
79067911 (void )RB_DEBUG_COUNTER_INC_IF (gc_major_force , reason & GPR_FLAG_MAJOR_BY_FORCE );
79077912#if RGENGC_ESTIMATE_OLDMALLOC
79087913 (void )RB_DEBUG_COUNTER_INC_IF (gc_major_oldmalloc , reason & GPR_FLAG_MAJOR_BY_OLDMALLOC );
7914+ #endif
7915+ if (reason & GPR_FLAG_MAJOR_BY_NOFREE ) objspace -> profile .major_by_nofree ++ ;
7916+ if (reason & GPR_FLAG_MAJOR_BY_OLDGEN ) objspace -> profile .major_by_oldgen ++ ;
7917+ if (reason & GPR_FLAG_MAJOR_BY_SHADY ) objspace -> profile .major_by_shady ++ ;
7918+ if (reason & GPR_FLAG_MAJOR_BY_FORCE ) objspace -> profile .major_by_force ++ ;
7919+ #if RGENGC_ESTIMATE_OLDMALLOC
7920+ if (reason & GPR_FLAG_MAJOR_BY_OLDMALLOC ) objspace -> profile .major_by_oldmalloc ++ ;
79097921#endif
79107922 }
79117923 else {
@@ -8986,6 +8998,11 @@ enum gc_stat_sym {
89868998 gc_stat_sym_remembered_wb_unprotected_objects_limit ,
89878999 gc_stat_sym_old_objects ,
89889000 gc_stat_sym_old_objects_limit ,
9001+ gc_stat_sym_major_by_nofree ,
9002+ gc_stat_sym_major_by_oldgen ,
9003+ gc_stat_sym_major_by_shady ,
9004+ gc_stat_sym_major_by_force ,
9005+ gc_stat_sym_major_by_oldmalloc ,
89899006#if RGENGC_ESTIMATE_OLDMALLOC
89909007 gc_stat_sym_oldmalloc_increase_bytes ,
89919008 gc_stat_sym_oldmalloc_increase_bytes_limit ,
@@ -9036,6 +9053,11 @@ setup_gc_stat_symbols(void)
90369053 S (remembered_wb_unprotected_objects_limit );
90379054 S (old_objects );
90389055 S (old_objects_limit );
9056+ S (major_by_nofree );
9057+ S (major_by_oldgen );
9058+ S (major_by_shady );
9059+ S (major_by_force );
9060+ S (major_by_oldmalloc );
90399061#if RGENGC_ESTIMATE_OLDMALLOC
90409062 S (oldmalloc_increase_bytes );
90419063 S (oldmalloc_increase_bytes_limit );
@@ -9117,6 +9139,11 @@ rb_gc_impl_stat(void *objspace_ptr, VALUE hash_or_sym)
91179139 SET (remembered_wb_unprotected_objects_limit , objspace -> rgengc .uncollectible_wb_unprotected_objects_limit );
91189140 SET (old_objects , objspace -> rgengc .old_objects );
91199141 SET (old_objects_limit , objspace -> rgengc .old_objects_limit );
9142+ SET (major_by_nofree , objspace -> profile .major_by_nofree );
9143+ SET (major_by_oldgen , objspace -> profile .major_by_oldgen );
9144+ SET (major_by_shady , objspace -> profile .major_by_shady );
9145+ SET (major_by_force , objspace -> profile .major_by_force );
9146+ SET (major_by_oldmalloc , objspace -> profile .major_by_oldmalloc );
91209147#if RGENGC_ESTIMATE_OLDMALLOC
91219148 SET (oldmalloc_increase_bytes , (size_t )(objspace -> malloc_counters .oldmalloc_increase > 0 ? objspace -> malloc_counters .oldmalloc_increase : 0 ));
91229149 SET (oldmalloc_increase_bytes_limit , objspace -> rgengc .oldmalloc_increase_limit );
0 commit comments