@@ -168,7 +168,7 @@ void mi_cdecl _mi_auto_process_done(void) mi_attr_noexcept;
168168bool _mi_is_redirected (void );
169169bool _mi_allocator_init (const char ** message);
170170void _mi_allocator_done (void );
171- bool _mi_is_main_thread (void );
171+ // bool _mi_is_main_thread(void);
172172bool _mi_is_process_heap_main (const mi_heap_t * heap);
173173bool _mi_preloading (void ); // true while the C runtime is not initialized yet
174174void _mi_thread_done (mi_theap_t * theap);
@@ -255,9 +255,9 @@ void _mi_arenas_page_abandon(mi_page_t* page, mi_theap_t* current_theap
255255void _mi_arenas_page_unabandon (mi_page_t * page, mi_theap_t * current_theapx /* can be NULL */ );
256256bool _mi_arenas_page_try_reabandon_to_mapped (mi_page_t * page);
257257
258- // arena-meta .c
258+ // init .c
259259void * _mi_meta_zalloc ( mi_subproc_t * subproc, size_t size, mi_memid_t * memid );
260- void _mi_meta_free (mi_subproc_t * subproc, void * p, size_t size, mi_memid_t memid);
260+ void _mi_meta_free (mi_subproc_t * subproc, void * p, mi_memid_t memid);
261261bool _mi_meta_is_meta_page (mi_subproc_t * subproc, void * p);
262262
263263// "page-map.c"
@@ -1217,17 +1217,40 @@ static inline mi_memid_t _mi_memid_create_os(void* base, size_t size, bool commi
12171217 return memid;
12181218}
12191219
1220- static inline mi_memid_t _mi_memid_create_meta (mi_meta_page_t * mpage, size_t block_idx, size_t block_count) {
1221- mi_memid_t memid = _mi_memid_create (MI_MEM_META );
1222- memid.mem .meta .meta_page = mpage;
1223- memid.mem .meta .block_index = (uint32_t )block_idx;
1224- memid.mem .meta .block_count = (uint32_t )block_count;
1220+ static inline mi_memid_t _mi_memid_create_static (void * p, size_t size) {
1221+ mi_memid_t memid = _mi_memid_create (MI_MEM_STATIC );
1222+ memid.mem .malloc .base = p;
1223+ memid.mem .malloc .size = size;
1224+ memid.initially_committed = true ;
1225+ memid.is_pinned = true ;
1226+ return memid;
1227+ }
1228+
1229+ static inline mi_memid_t _mi_memid_create_malloc (void * p, size_t size, bool iszero) {
1230+ mi_memid_t memid = _mi_memid_create (MI_MEM_MALLOC );
1231+ memid.mem .malloc .base = p;
1232+ memid.mem .malloc .size = size;
12251233 memid.initially_committed = true ;
1226- memid.initially_zero = true ;
1234+ memid.initially_zero = iszero ;
12271235 memid.is_pinned = true ;
12281236 return memid;
12291237}
12301238
1239+ static inline size_t _mi_memid_size (mi_memid_t memid) {
1240+ if (mi_memid_is_os (memid)) {
1241+ return memid.mem .os .size ;
1242+ }
1243+ else if (memid.memkind == MI_MEM_ARENA ) {
1244+ return mi_size_of_slices (memid.mem .arena .slice_count );
1245+ }
1246+ else if (memid.memkind == MI_MEM_MALLOC ) {
1247+ return memid.mem .malloc .size ;
1248+ }
1249+ else {
1250+ mi_assert_internal (mi_memid_needs_no_free (memid));
1251+ return 0 ;
1252+ }
1253+ }
12311254
12321255// -------------------------------------------------------------------
12331256// Fast "random" shuffle
0 commit comments