@@ -878,7 +878,7 @@ static void sweep_weak_refs(void)
878
878
// big value list
879
879
880
880
// 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 )
882
882
{
883
883
maybe_collect (ptls );
884
884
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)
893
893
jl_throw (jl_memory_exception );
894
894
gc_invoke_callbacks (jl_gc_cb_notify_external_alloc_t ,
895
895
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 );
898
898
ptls -> gc_num .bigalloc ++ ;
899
899
#ifdef MEMDEBUG
900
900
memset (v , 0xee , allocsz );
@@ -986,13 +986,13 @@ void jl_gc_track_malloced_array(jl_ptls_t ptls, jl_array_t *a) JL_NOTSAFEPOINT
986
986
ptls -> heap .mallocarrays = ma ;
987
987
}
988
988
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
990
990
{
991
991
jl_ptls_t ptls = jl_get_ptls_states ();
992
992
ptls -> gc_num .allocd += sz ;
993
993
994
994
if (__unlikely (jl_memprofile_is_running ())) {
995
- jl_memprofile_track_alloc (addr , tag , sz );
995
+ jl_memprofile_track_alloc (addr , tag , sz , ty );
996
996
}
997
997
}
998
998
@@ -1006,7 +1006,8 @@ void jl_gc_count_freed(void * addr, size_t sz, uint16_t tag) JL_NOTSAFEPOINT
1006
1006
}
1007
1007
}
1008
1008
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
1010
1011
{
1011
1012
jl_ptls_t ptls = jl_get_ptls_states ();
1012
1013
if (oldsz < newsz ) {
@@ -1022,7 +1023,7 @@ void jl_gc_count_reallocd(void * oldaddr, size_t oldsz, void * newaddr, size_t n
1022
1023
// the two values when realloc'ing.
1023
1024
if (__unlikely (jl_memprofile_is_running ())) {
1024
1025
jl_memprofile_track_dealloc (oldaddr , tag );
1025
- jl_memprofile_track_alloc (newaddr , tag , newsz );
1026
+ jl_memprofile_track_alloc (newaddr , tag , newsz , newty );
1026
1027
}
1027
1028
}
1028
1029
@@ -1165,15 +1166,15 @@ static NOINLINE jl_taggedvalue_t *add_page(jl_gc_pool_t *p) JL_NOTSAFEPOINT
1165
1166
1166
1167
// Size includes the tag and the tag is not cleared!!
1167
1168
JL_DLLEXPORT jl_value_t * jl_gc_pool_alloc (jl_ptls_t ptls , int pool_offset ,
1168
- int osize )
1169
+ int osize , void * ty )
1169
1170
{
1170
1171
// Use the pool offset instead of the pool address as the argument
1171
1172
// to workaround a llvm bug.
1172
1173
// Ref https://llvm.org/bugs/show_bug.cgi?id=27190
1173
1174
jl_gc_pool_t * p = (jl_gc_pool_t * )((char * )ptls + pool_offset );
1174
1175
assert (ptls -> gc_state == 0 );
1175
1176
#ifdef MEMDEBUG
1176
- return jl_gc_big_alloc (ptls , osize );
1177
+ return jl_gc_big_alloc (ptls , osize , ty );
1177
1178
#endif
1178
1179
maybe_collect (ptls );
1179
1180
ptls -> gc_num .poolalloc ++ ;
@@ -1190,7 +1191,7 @@ JL_DLLEXPORT jl_value_t *jl_gc_pool_alloc(jl_ptls_t ptls, int pool_offset,
1190
1191
pg -> nfree = 0 ;
1191
1192
pg -> has_young = 1 ;
1192
1193
}
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 );
1194
1195
return jl_valueof (v );
1195
1196
}
1196
1197
// 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,
1215
1216
next = (jl_taggedvalue_t * )((char * )v + osize );
1216
1217
}
1217
1218
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 );
1219
1220
return jl_valueof (v );
1220
1221
}
1221
1222
@@ -3172,7 +3173,7 @@ JL_DLLEXPORT void *jl_gc_counted_malloc(size_t sz)
3172
3173
maybe_collect (ptls );
3173
3174
void * b = malloc (sz );
3174
3175
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 );
3176
3177
ptls -> gc_num .malloc ++ ;
3177
3178
}
3178
3179
return b ;
@@ -3185,7 +3186,7 @@ JL_DLLEXPORT void *jl_gc_counted_calloc(size_t nm, size_t sz)
3185
3186
maybe_collect (ptls );
3186
3187
void * b = calloc (nm , sz );
3187
3188
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 );
3189
3190
ptls -> gc_num .malloc ++ ;
3190
3191
}
3191
3192
return b ;
@@ -3208,7 +3209,7 @@ JL_DLLEXPORT void *jl_gc_counted_realloc_with_old_size(void *p, size_t old, size
3208
3209
maybe_collect (ptls );
3209
3210
void * b = realloc (p , sz );
3210
3211
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 );
3212
3213
ptls -> gc_num .realloc ++ ;
3213
3214
}
3214
3215
return b ;
@@ -3280,7 +3281,7 @@ JL_DLLEXPORT void *jl_gc_managed_malloc(size_t sz)
3280
3281
void * b = malloc_cache_align (allocsz );
3281
3282
if (b == NULL )
3282
3283
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 );
3284
3285
ptls -> gc_num .malloc ++ ;
3285
3286
#ifdef _OS_WINDOWS_
3286
3287
SetLastError (last_error );
@@ -3319,7 +3320,7 @@ static void *gc_managed_realloc_(jl_ptls_t ptls, void *d, size_t sz, size_t olds
3319
3320
live_bytes += allocsz - oldsz ;
3320
3321
}
3321
3322
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 );
3323
3324
ptls -> gc_num .realloc ++ ;
3324
3325
3325
3326
#ifdef _OS_WINDOWS_
0 commit comments