@@ -878,7 +878,7 @@ static void sweep_weak_refs(void)
878878// big value list
879879
880880// Size includes the tag and the tag is not cleared!!
881- JL_DLLEXPORT jl_value_t * jl_gc_big_alloc (jl_ptls_t ptls , size_t sz )
881+ JL_DLLEXPORT jl_value_t * jl_gc_big_alloc (jl_ptls_t ptls , size_t sz , void * ty )
882882{
883883 maybe_collect (ptls );
884884 size_t offs = offsetof(bigval_t , header );
@@ -893,8 +893,8 @@ JL_DLLEXPORT jl_value_t *jl_gc_big_alloc(jl_ptls_t ptls, size_t sz)
893893 jl_throw (jl_memory_exception );
894894 gc_invoke_callbacks (jl_gc_cb_notify_external_alloc_t ,
895895 gc_cblist_notify_external_alloc , (v , allocsz ));
896- jl_gc_count_allocd (jl_valueof (& v -> header ), allocsz , JL_MEMPROF_TAG_DOMAIN_CPU |
897- JL_MEMPROF_TAG_ALLOC_BIGALLOC );
896+ jl_gc_count_allocd (jl_valueof (& v -> header ), allocsz , ty ,
897+ JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_BIGALLOC );
898898 ptls -> gc_num .bigalloc ++ ;
899899#ifdef MEMDEBUG
900900 memset (v , 0xee , allocsz );
@@ -986,13 +986,13 @@ void jl_gc_track_malloced_array(jl_ptls_t ptls, jl_array_t *a) JL_NOTSAFEPOINT
986986 ptls -> heap .mallocarrays = ma ;
987987}
988988
989- void jl_gc_count_allocd (void * addr , size_t sz , uint16_t tag ) JL_NOTSAFEPOINT
989+ void jl_gc_count_allocd (void * addr , size_t sz , void * ty , uint16_t tag ) JL_NOTSAFEPOINT
990990{
991991 jl_ptls_t ptls = jl_get_ptls_states ();
992992 ptls -> gc_num .allocd += sz ;
993993
994994 if (__unlikely (jl_memprofile_is_running ())) {
995- jl_memprofile_track_alloc (addr , tag , sz );
995+ jl_memprofile_track_alloc (addr , tag , sz , ty );
996996 }
997997}
998998
@@ -1006,7 +1006,8 @@ void jl_gc_count_freed(void * addr, size_t sz, uint16_t tag) JL_NOTSAFEPOINT
10061006 }
10071007}
10081008
1009- void jl_gc_count_reallocd (void * oldaddr , size_t oldsz , void * newaddr , size_t newsz , uint16_t tag ) JL_NOTSAFEPOINT
1009+ void jl_gc_count_reallocd (void * oldaddr , size_t oldsz , void * newaddr , size_t newsz ,
1010+ void * newty , uint16_t tag ) JL_NOTSAFEPOINT
10101011{
10111012 jl_ptls_t ptls = jl_get_ptls_states ();
10121013 if (oldsz < newsz ) {
@@ -1022,7 +1023,7 @@ void jl_gc_count_reallocd(void * oldaddr, size_t oldsz, void * newaddr, size_t n
10221023 // the two values when realloc'ing.
10231024 if (__unlikely (jl_memprofile_is_running ())) {
10241025 jl_memprofile_track_dealloc (oldaddr , tag );
1025- jl_memprofile_track_alloc (newaddr , tag , newsz );
1026+ jl_memprofile_track_alloc (newaddr , tag , newsz , newty );
10261027 }
10271028}
10281029
@@ -1165,15 +1166,15 @@ static NOINLINE jl_taggedvalue_t *add_page(jl_gc_pool_t *p) JL_NOTSAFEPOINT
11651166
11661167// Size includes the tag and the tag is not cleared!!
11671168JL_DLLEXPORT jl_value_t * jl_gc_pool_alloc (jl_ptls_t ptls , int pool_offset ,
1168- int osize )
1169+ int osize , void * ty )
11691170{
11701171 // Use the pool offset instead of the pool address as the argument
11711172 // to workaround a llvm bug.
11721173 // Ref https://llvm.org/bugs/show_bug.cgi?id=27190
11731174 jl_gc_pool_t * p = (jl_gc_pool_t * )((char * )ptls + pool_offset );
11741175 assert (ptls -> gc_state == 0 );
11751176#ifdef MEMDEBUG
1176- return jl_gc_big_alloc (ptls , osize );
1177+ return jl_gc_big_alloc (ptls , osize , ty );
11771178#endif
11781179 maybe_collect (ptls );
11791180 ptls -> gc_num .poolalloc ++ ;
@@ -1190,7 +1191,7 @@ JL_DLLEXPORT jl_value_t *jl_gc_pool_alloc(jl_ptls_t ptls, int pool_offset,
11901191 pg -> nfree = 0 ;
11911192 pg -> has_young = 1 ;
11921193 }
1193- jl_gc_count_allocd (jl_valueof (v ), osize , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_POOLALLOC );
1194+ jl_gc_count_allocd (jl_valueof (v ), osize , ty , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_POOLALLOC );
11941195 return jl_valueof (v );
11951196 }
11961197 // if the freelist is empty we reuse empty but not freed pages
@@ -1215,7 +1216,7 @@ JL_DLLEXPORT jl_value_t *jl_gc_pool_alloc(jl_ptls_t ptls, int pool_offset,
12151216 next = (jl_taggedvalue_t * )((char * )v + osize );
12161217 }
12171218 p -> newpages = next ;
1218- jl_gc_count_allocd (jl_valueof (v ), osize , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_POOLALLOC );
1219+ jl_gc_count_allocd (jl_valueof (v ), osize , ty , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_POOLALLOC );
12191220 return jl_valueof (v );
12201221}
12211222
@@ -3172,7 +3173,7 @@ JL_DLLEXPORT void *jl_gc_counted_malloc(size_t sz)
31723173 maybe_collect (ptls );
31733174 void * b = malloc (sz );
31743175 if (ptls && ptls -> world_age ) {
3175- jl_gc_count_allocd (b , sz , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_STDALLOC );
3176+ jl_gc_count_allocd (b , sz , NULL , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_STDALLOC );
31763177 ptls -> gc_num .malloc ++ ;
31773178 }
31783179 return b ;
@@ -3185,7 +3186,7 @@ JL_DLLEXPORT void *jl_gc_counted_calloc(size_t nm, size_t sz)
31853186 maybe_collect (ptls );
31863187 void * b = calloc (nm , sz );
31873188 if (ptls && ptls -> world_age ) {
3188- jl_gc_count_allocd (b , nm * sz , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_STDALLOC );
3189+ jl_gc_count_allocd (b , nm * sz , NULL , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_STDALLOC );
31893190 ptls -> gc_num .malloc ++ ;
31903191 }
31913192 return b ;
@@ -3208,7 +3209,7 @@ JL_DLLEXPORT void *jl_gc_counted_realloc_with_old_size(void *p, size_t old, size
32083209 maybe_collect (ptls );
32093210 void * b = realloc (p , sz );
32103211 if (ptls && ptls -> world_age ) {
3211- jl_gc_count_reallocd (p , old , b , sz , JL_MEMPROF_TAG_DOMAIN_CPU );
3212+ jl_gc_count_reallocd (p , old , b , sz , NULL , JL_MEMPROF_TAG_DOMAIN_CPU );
32123213 ptls -> gc_num .realloc ++ ;
32133214 }
32143215 return b ;
@@ -3280,7 +3281,7 @@ JL_DLLEXPORT void *jl_gc_managed_malloc(size_t sz)
32803281 void * b = malloc_cache_align (allocsz );
32813282 if (b == NULL )
32823283 jl_throw (jl_memory_exception );
3283- jl_gc_count_allocd (b , allocsz , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_STDALLOC );
3284+ jl_gc_count_allocd (b , allocsz , NULL , JL_MEMPROF_TAG_DOMAIN_CPU | JL_MEMPROF_TAG_ALLOC_STDALLOC );
32843285 ptls -> gc_num .malloc ++ ;
32853286#ifdef _OS_WINDOWS_
32863287 SetLastError (last_error );
@@ -3319,7 +3320,7 @@ static void *gc_managed_realloc_(jl_ptls_t ptls, void *d, size_t sz, size_t olds
33193320 live_bytes += allocsz - oldsz ;
33203321 }
33213322 else
3322- jl_gc_count_reallocd (d , oldsz , b , allocsz , JL_MEMPROF_TAG_DOMAIN_CPU );
3323+ jl_gc_count_reallocd (d , oldsz , b , allocsz , NULL , JL_MEMPROF_TAG_DOMAIN_CPU );
33233324 ptls -> gc_num .realloc ++ ;
33243325
33253326#ifdef _OS_WINDOWS_
0 commit comments