@@ -593,6 +593,8 @@ typedef struct rb_objspace {
593593 double invoke_time ;
594594
595595 size_t minor_gc_count ;
596+ size_t minor_gc_count_by_newobj ;
597+ size_t minor_gc_count_by_malloc ;
596598 size_t major_gc_count ;
597599 size_t compact_count ;
598600 size_t read_barrier_faults ;
@@ -6505,6 +6507,9 @@ gc_start(rb_objspace_t *objspace, unsigned int reason)
65056507 else {
65066508 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_newobj , reason & GPR_FLAG_NEWOBJ );
65076509 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_malloc , reason & GPR_FLAG_MALLOC );
6510+
6511+ if (reason & GPR_FLAG_NEWOBJ ) objspace -> profile .minor_gc_count_by_newobj ++ ;
6512+ if (reason & GPR_FLAG_MALLOC ) objspace -> profile .minor_gc_count_by_malloc ++ ;
65086513 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_method , reason & GPR_FLAG_METHOD );
65096514 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_capi , reason & GPR_FLAG_CAPI );
65106515 (void )RB_DEBUG_COUNTER_INC_IF (gc_minor_stress , reason & GPR_FLAG_STRESS );
@@ -7478,6 +7483,8 @@ enum gc_stat_sym {
74787483 gc_stat_sym_malloc_increase_bytes ,
74797484 gc_stat_sym_malloc_increase_bytes_limit ,
74807485 gc_stat_sym_minor_gc_count ,
7486+ gc_stat_sym_minor_gc_count_by_newobj ,
7487+ gc_stat_sym_minor_gc_count_by_malloc ,
74817488 gc_stat_sym_major_gc_count ,
74827489 gc_stat_sym_compact_count ,
74837490 gc_stat_sym_read_barrier_faults ,
@@ -7528,6 +7535,8 @@ setup_gc_stat_symbols(void)
75287535 S (malloc_increase_bytes );
75297536 S (malloc_increase_bytes_limit );
75307537 S (minor_gc_count );
7538+ S (minor_gc_count_by_newobj );
7539+ S (minor_gc_count_by_malloc );
75317540 S (major_gc_count );
75327541 S (compact_count );
75337542 S (read_barrier_faults );
@@ -7609,6 +7618,8 @@ rb_gc_impl_stat(void *objspace_ptr, VALUE hash_or_sym)
76097618 SET (malloc_increase_bytes , malloc_increase );
76107619 SET (malloc_increase_bytes_limit , malloc_limit );
76117620 SET (minor_gc_count , objspace -> profile .minor_gc_count );
7621+ SET (minor_gc_count_by_newobj , objspace -> profile .minor_gc_count_by_newobj );
7622+ SET (minor_gc_count_by_malloc , objspace -> profile .minor_gc_count_by_malloc );
76127623 SET (major_gc_count , objspace -> profile .major_gc_count );
76137624 SET (compact_count , objspace -> profile .compact_count );
76147625 SET (read_barrier_faults , objspace -> profile .read_barrier_faults );
0 commit comments