mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-08 00:09:31 +03:00
can run the full test suite
This commit is contained in:
parent
bd5f7de3f4
commit
833b091ff9
2 changed files with 7 additions and 8 deletions
|
@ -220,10 +220,9 @@ void* _mi_heap_malloc_zero(mi_heap_t* heap, size_t size, bool zero) mi_att
|
||||||
void* _mi_heap_malloc_zero_ex(mi_heap_t* heap, size_t size, bool zero, size_t huge_alignment) mi_attr_noexcept; // called from `_mi_heap_malloc_aligned`
|
void* _mi_heap_malloc_zero_ex(mi_heap_t* heap, size_t size, bool zero, size_t huge_alignment) mi_attr_noexcept; // called from `_mi_heap_malloc_aligned`
|
||||||
void* _mi_heap_realloc_zero(mi_heap_t* heap, void* p, size_t newsize, bool zero) mi_attr_noexcept;
|
void* _mi_heap_realloc_zero(mi_heap_t* heap, void* p, size_t newsize, bool zero) mi_attr_noexcept;
|
||||||
mi_block_t* _mi_page_ptr_unalign(const mi_page_t* page, const void* p);
|
mi_block_t* _mi_page_ptr_unalign(const mi_page_t* page, const void* p);
|
||||||
bool _mi_free_delayed_block(mi_block_t* block);
|
|
||||||
// void _mi_free_generic(mi_segment_t* segment, mi_page_t* page, bool is_local, void* p) mi_attr_noexcept; // for runtime integration
|
|
||||||
void _mi_padding_shrink(const mi_page_t* page, const mi_block_t* block, const size_t min_size);
|
void _mi_padding_shrink(const mi_page_t* page, const mi_block_t* block, const size_t min_size);
|
||||||
void _mi_stat_free(const mi_page_t* page, const mi_block_t* block);
|
// bool _mi_free_delayed_block(mi_block_t* block);
|
||||||
|
|
||||||
|
|
||||||
// "libc.c"
|
// "libc.c"
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
10
src/free.c
10
src/free.c
|
@ -16,7 +16,7 @@ terms of the MIT license. A copy of the license can be found in the file
|
||||||
static void mi_check_padding(const mi_page_t* page, const mi_block_t* block);
|
static void mi_check_padding(const mi_page_t* page, const mi_block_t* block);
|
||||||
static bool mi_check_is_double_free(const mi_page_t* page, const mi_block_t* block);
|
static bool mi_check_is_double_free(const mi_page_t* page, const mi_block_t* block);
|
||||||
static size_t mi_page_usable_size_of(const mi_page_t* page, const mi_block_t* block);
|
static size_t mi_page_usable_size_of(const mi_page_t* page, const mi_block_t* block);
|
||||||
// static void _mi_stat_free(const mi_page_t* page, const mi_block_t* block);
|
static void mi_stat_free(const mi_page_t* page, const mi_block_t* block);
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------
|
// ------------------------------------------------------
|
||||||
|
@ -33,7 +33,7 @@ static inline void mi_free_block_local(mi_page_t* page, mi_block_t* block, bool
|
||||||
// checks
|
// checks
|
||||||
if mi_unlikely(mi_check_is_double_free(page, block)) return;
|
if mi_unlikely(mi_check_is_double_free(page, block)) return;
|
||||||
mi_check_padding(page, block);
|
mi_check_padding(page, block);
|
||||||
if (track_stats) { _mi_stat_free(page, block); }
|
if (track_stats) { mi_stat_free(page, block); }
|
||||||
#if (MI_DEBUG>0) && !MI_TRACK_ENABLED && !MI_TSAN && !MI_GUARDED
|
#if (MI_DEBUG>0) && !MI_TRACK_ENABLED && !MI_TSAN && !MI_GUARDED
|
||||||
memset(block, MI_DEBUG_FREED, mi_page_block_size(page));
|
memset(block, MI_DEBUG_FREED, mi_page_block_size(page));
|
||||||
#endif
|
#endif
|
||||||
|
@ -203,7 +203,7 @@ static void mi_decl_noinline mi_free_try_reclaim_mt(mi_page_t* page) {
|
||||||
static void mi_decl_noinline mi_free_block_mt(mi_page_t* page, mi_block_t* block)
|
static void mi_decl_noinline mi_free_block_mt(mi_page_t* page, mi_block_t* block)
|
||||||
{
|
{
|
||||||
// adjust stats (after padding check and potentially recursive `mi_free` above)
|
// adjust stats (after padding check and potentially recursive `mi_free` above)
|
||||||
_mi_stat_free(page, block); // stat_free may access the padding
|
mi_stat_free(page, block); // stat_free may access the padding
|
||||||
mi_track_free_size(block, mi_page_usable_size_of(page, block));
|
mi_track_free_size(block, mi_page_usable_size_of(page, block));
|
||||||
|
|
||||||
// _mi_padding_shrink(page, block, sizeof(mi_block_t));
|
// _mi_padding_shrink(page, block, sizeof(mi_block_t));
|
||||||
|
@ -543,7 +543,7 @@ static void mi_check_padding(const mi_page_t* page, const mi_block_t* block) {
|
||||||
|
|
||||||
// only maintain stats for smaller objects if requested
|
// only maintain stats for smaller objects if requested
|
||||||
#if (MI_STAT>0)
|
#if (MI_STAT>0)
|
||||||
void _mi_stat_free(const mi_page_t* page, const mi_block_t* block) {
|
void mi_stat_free(const mi_page_t* page, const mi_block_t* block) {
|
||||||
#if (MI_STAT < 2)
|
#if (MI_STAT < 2)
|
||||||
MI_UNUSED(block);
|
MI_UNUSED(block);
|
||||||
#endif
|
#endif
|
||||||
|
@ -565,7 +565,7 @@ void _mi_stat_free(const mi_page_t* page, const mi_block_t* block) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
void _mi_stat_free(const mi_page_t* page, const mi_block_t* block) {
|
void mi_stat_free(const mi_page_t* page, const mi_block_t* block) {
|
||||||
MI_UNUSED(page); MI_UNUSED(block);
|
MI_UNUSED(page); MI_UNUSED(block);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue