Skip to content

Commit e853f53

Browse files
committed
add noexcept attributes to improve mi_free codegen
1 parent 32ee13f commit e853f53

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

include/mimalloc-internal.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ terms of the MIT license. A copy of the license can be found in the file
3737
#endif
3838

3939
#if defined(__cplusplus)
40-
#define mi_decl_externc extern "C"
40+
#define mi_decl_externc extern "C"
4141
#else
42-
#define mi_decl_externc
42+
#define mi_decl_externc
4343
#endif
4444

4545
// "options.c"
@@ -100,7 +100,7 @@ void _mi_abandoned_await_readers(void);
100100
// "page.c"
101101
void* _mi_malloc_generic(mi_heap_t* heap, size_t size) mi_attr_noexcept mi_attr_malloc;
102102

103-
void _mi_page_retire(mi_page_t* page); // free the page if there are no other pages with many free blocks
103+
void _mi_page_retire(mi_page_t* page) mi_attr_noexcept; // free the page if there are no other pages with many free blocks
104104
void _mi_page_unfull(mi_page_t* page);
105105
void _mi_page_free(mi_page_t* page, mi_page_queue_t* pq, bool force); // free the page
106106
void _mi_page_abandon(mi_page_t* page, mi_page_queue_t* pq); // abandon the page, to be picked up by another thread...

src/alloc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ mi_block_t* _mi_page_ptr_unalign(const mi_segment_t* segment, const mi_page_t* p
435435
}
436436

437437

438-
static void mi_decl_noinline mi_free_generic(const mi_segment_t* segment, bool local, void* p) {
438+
static void mi_decl_noinline mi_free_generic(const mi_segment_t* segment, bool local, void* p) mi_attr_noexcept {
439439
mi_page_t* const page = _mi_segment_page_of(segment, p);
440440
mi_block_t* const block = (mi_page_has_aligned(page) ? _mi_page_ptr_unalign(segment, page, p) : (mi_block_t*)p);
441441
mi_stat_free(page, block);

src/page.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ void _mi_page_free(mi_page_t* page, mi_page_queue_t* pq, bool force) {
386386
// Note: called from `mi_free` and benchmarks often
387387
// trigger this due to freeing everything and then
388388
// allocating again so careful when changing this.
389-
void _mi_page_retire(mi_page_t* page) {
389+
void _mi_page_retire(mi_page_t* page) mi_attr_noexcept {
390390
mi_assert_internal(page != NULL);
391391
mi_assert_expensive(_mi_page_is_valid(page));
392392
mi_assert_internal(mi_page_all_free(page));

0 commit comments

Comments
 (0)