@@ -702,6 +702,8 @@ typedef struct rb_objspace {
702702 double invoke_time ;
703703
704704 size_t minor_gc_count ;
705+ size_t minor_gc_count_by_newobj ;
706+ size_t minor_gc_count_by_malloc ;
705707 size_t major_gc_count ;
706708 size_t major_gc_count_by_nofree ;
707709 size_t major_gc_count_by_oldgen ;
@@ -8649,6 +8651,9 @@ gc_start(rb_objspace_t *objspace, unsigned int reason)
86498651 else {
86508652 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_newobj , reason & GPR_FLAG_NEWOBJ );
86518653 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_malloc , reason & GPR_FLAG_MALLOC );
8654+
8655+ if (reason & GPR_FLAG_NEWOBJ ) objspace -> profile .minor_gc_count_by_newobj ++ ;
8656+ if (reason & GPR_FLAG_MALLOC ) objspace -> profile .minor_gc_count_by_malloc ++ ;
86528657 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_method , reason & GPR_FLAG_METHOD );
86538658 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_capi , reason & GPR_FLAG_CAPI );
86548659 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_stress , reason & GPR_FLAG_STRESS );
@@ -9714,6 +9719,8 @@ enum gc_stat_sym {
97149719 gc_stat_sym_malloc_increase_bytes ,
97159720 gc_stat_sym_malloc_increase_bytes_limit ,
97169721 gc_stat_sym_minor_gc_count ,
9722+ gc_stat_sym_minor_gc_count_by_newobj ,
9723+ gc_stat_sym_minor_gc_count_by_malloc ,
97179724 gc_stat_sym_major_gc_count ,
97189725 gc_stat_sym_major_gc_count_by_nofree ,
97199726 gc_stat_sym_major_gc_count_by_oldgen ,
@@ -9778,6 +9785,8 @@ setup_gc_stat_symbols(void)
97789785 S (malloc_increase_bytes );
97799786 S (malloc_increase_bytes_limit );
97809787 S (minor_gc_count );
9788+ S (minor_gc_count_by_newobj );
9789+ S (minor_gc_count_by_malloc );
97819790 S (major_gc_count );
97829791 S (major_gc_count_by_nofree );
97839792 S (major_gc_count_by_oldgen );
@@ -9874,6 +9883,8 @@ rb_gc_impl_stat(void *objspace_ptr, VALUE hash_or_sym)
98749883 SET (malloc_increase_bytes , gc_malloc_counters_increase_unsigned (objspace , & objspace -> malloc_counters .counters ));
98759884 SET (malloc_increase_bytes_limit , malloc_limit );
98769885 SET (minor_gc_count , objspace -> profile .minor_gc_count );
9886+ SET (minor_gc_count_by_newobj , objspace -> profile .minor_gc_count_by_newobj );
9887+ SET (minor_gc_count_by_malloc , objspace -> profile .minor_gc_count_by_malloc );
98779888 SET (major_gc_count , objspace -> profile .major_gc_count );
98789889 SET (major_gc_count_by_nofree , objspace -> profile .major_gc_count_by_nofree );
98799890 SET (major_gc_count_by_oldgen , objspace -> profile .major_gc_count_by_oldgen );
0 commit comments