mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-06 23:39:31 +03:00
fix assertions and warnings on gcc
This commit is contained in:
parent
3c85983a35
commit
af3f2f9168
3 changed files with 6 additions and 6 deletions
|
@ -141,7 +141,7 @@ static bool mi_heap_contains_queue(const mi_heap_t* heap, const mi_page_queue_t*
|
|||
}
|
||||
#endif
|
||||
|
||||
static inline bool mi_page_is_large_or_huge(mi_page_t* page) {
|
||||
static inline bool mi_page_is_large_or_huge(const mi_page_t* page) {
|
||||
return (mi_page_block_size(page) > MI_MEDIUM_OBJ_SIZE_MAX || mi_page_is_huge(page));
|
||||
}
|
||||
|
||||
|
|
|
@ -428,7 +428,7 @@ void _mi_page_free(mi_page_t* page, mi_page_queue_t* pq, bool force) {
|
|||
_mi_segment_page_free(page, force, segments_tld);
|
||||
}
|
||||
|
||||
#define MI_MAX_RETIRE_SIZE MI_LARGE_OBJ_SIZE_MAX // should be less than size for MI_BIN_HUGE
|
||||
#define MI_MAX_RETIRE_SIZE MI_MEDIUM_OBJ_SIZE_MAX // should be less than size for MI_BIN_HUGE
|
||||
#define MI_RETIRE_CYCLES (16)
|
||||
|
||||
// Retire a page with no more used blocks
|
||||
|
@ -455,7 +455,7 @@ void _mi_page_retire(mi_page_t* page) mi_attr_noexcept {
|
|||
if mi_likely( /* bsize < MI_MAX_RETIRE_SIZE && */ !mi_page_queue_is_special(pq)) { // not full or huge queue?
|
||||
if (pq->last==page && pq->first==page) { // the only page in the queue?
|
||||
mi_stat_counter_increase(_mi_stats_main.page_no_retire,1);
|
||||
page->retire_expire = (bsize <= MI_SMALL_OBJ_SIZE_MAX ? MI_RETIRE_CYCLES : MI_RETIRE_CYCLES/4);
|
||||
page->retire_expire = 1+(bsize <= MI_SMALL_OBJ_SIZE_MAX ? MI_RETIRE_CYCLES : MI_RETIRE_CYCLES/4);
|
||||
mi_heap_t* heap = mi_page_heap(page);
|
||||
mi_assert_internal(pq >= heap->pages);
|
||||
const size_t index = pq - heap->pages;
|
||||
|
|
|
@ -601,7 +601,7 @@ static void mi_segment_try_purge(mi_segment_t* segment, bool force, mi_stats_t*
|
|||
----------------------------------------------------------- */
|
||||
|
||||
static bool mi_segment_is_abandoned(mi_segment_t* segment) {
|
||||
return (segment->thread_id == 0);
|
||||
return (mi_atomic_load_relaxed(&segment->thread_id) == 0);
|
||||
}
|
||||
|
||||
// note: can be called on abandoned segments
|
||||
|
@ -654,8 +654,8 @@ static void mi_segment_span_remove_from_queue(mi_slice_t* slice, mi_segments_tld
|
|||
// note: can be called on abandoned segments
|
||||
static mi_slice_t* mi_segment_span_free_coalesce(mi_slice_t* slice, mi_segments_tld_t* tld) {
|
||||
mi_assert_internal(slice != NULL && slice->slice_count > 0 && slice->slice_offset == 0);
|
||||
mi_segment_t* segment = _mi_ptr_segment(slice);
|
||||
bool is_abandoned = mi_segment_is_abandoned(segment);
|
||||
mi_segment_t* const segment = _mi_ptr_segment(slice);
|
||||
const bool is_abandoned = (segment->thread_id == 0); // mi_segment_is_abandoned(segment);
|
||||
|
||||
// for huge pages, just mark as free but don't add to the queues
|
||||
if (segment->kind == MI_SEGMENT_HUGE) {
|
||||
|
|
Loading…
Add table
Reference in a new issue