@@ -616,6 +616,10 @@ PyMem_Malloc(size_t size)
616
616
/* see PyMem_RawMalloc() */
617
617
if (size > (size_t )PY_SSIZE_T_MAX )
618
618
return NULL ;
619
+ OBJECT_STAT_INC_COND (allocations512 , size < 512 );
620
+ OBJECT_STAT_INC_COND (allocations4k , size >= 512 && size < 4094 );
621
+ OBJECT_STAT_INC_COND (allocations_big , size >= 4094 );
622
+ OBJECT_STAT_INC (allocations );
619
623
return _PyMem .malloc (_PyMem .ctx , size );
620
624
}
621
625
@@ -625,6 +629,10 @@ PyMem_Calloc(size_t nelem, size_t elsize)
625
629
/* see PyMem_RawMalloc() */
626
630
if (elsize != 0 && nelem > (size_t )PY_SSIZE_T_MAX / elsize )
627
631
return NULL ;
632
+ OBJECT_STAT_INC_COND (allocations512 , elsize < 512 );
633
+ OBJECT_STAT_INC_COND (allocations4k , elsize >= 512 && elsize < 4094 );
634
+ OBJECT_STAT_INC_COND (allocations_big , elsize >= 4094 );
635
+ OBJECT_STAT_INC (allocations );
628
636
return _PyMem .calloc (_PyMem .ctx , nelem , elsize );
629
637
}
630
638
@@ -640,6 +648,7 @@ PyMem_Realloc(void *ptr, size_t new_size)
640
648
void
641
649
PyMem_Free (void * ptr )
642
650
{
651
+ OBJECT_STAT_INC (frees );
643
652
_PyMem .free (_PyMem .ctx , ptr );
644
653
}
645
654
@@ -696,6 +705,9 @@ PyObject_Malloc(size_t size)
696
705
/* see PyMem_RawMalloc() */
697
706
if (size > (size_t )PY_SSIZE_T_MAX )
698
707
return NULL ;
708
+ OBJECT_STAT_INC_COND (allocations512 , size < 512 );
709
+ OBJECT_STAT_INC_COND (allocations4k , size >= 512 && size < 4094 );
710
+ OBJECT_STAT_INC_COND (allocations_big , size >= 4094 );
699
711
OBJECT_STAT_INC (allocations );
700
712
return _PyObject .malloc (_PyObject .ctx , size );
701
713
}
@@ -706,6 +718,9 @@ PyObject_Calloc(size_t nelem, size_t elsize)
706
718
/* see PyMem_RawMalloc() */
707
719
if (elsize != 0 && nelem > (size_t )PY_SSIZE_T_MAX / elsize )
708
720
return NULL ;
721
+ OBJECT_STAT_INC_COND (allocations512 , elsize < 512 );
722
+ OBJECT_STAT_INC_COND (allocations4k , elsize >= 512 && elsize < 4094 );
723
+ OBJECT_STAT_INC_COND (allocations_big , elsize >= 4094 );
709
724
OBJECT_STAT_INC (allocations );
710
725
return _PyObject .calloc (_PyObject .ctx , nelem , elsize );
711
726
}
0 commit comments