MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / _mi_segment_page_free

Function _mi_segment_page_free

3rd/mimalloc-2.0.9/src/segment.c:1017–1036  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1015}
1016
1017void _mi_segment_page_free(mi_page_t* page, bool force, mi_segments_tld_t* tld)
1018{
1019 mi_assert(page != NULL);
1020
1021 mi_segment_t* segment = _mi_page_segment(page);
1022 mi_assert_expensive(mi_segment_is_valid(segment,tld));
1023
1024 // mark it as free now
1025 mi_segment_page_clear(page, tld);
1026 mi_assert_expensive(mi_segment_is_valid(segment, tld));
1027
1028 if (segment->used == 0) {
1029 // no more used pages; remove from the free list and free the segment
1030 mi_segment_free(segment, force, tld);
1031 }
1032 else if (segment->used == segment->abandoned) {
1033 // only abandoned pages; remove from free list and abandon
1034 mi_segment_abandon(segment,tld);
1035 }
1036}
1037
1038
1039/* -----------------------------------------------------------

Callers 3

_mi_heap_page_destroyFunction · 0.85
_mi_page_freeFunction · 0.85

Calls 5

_mi_page_segmentFunction · 0.85
mi_segment_is_validFunction · 0.85
mi_segment_page_clearFunction · 0.85
mi_segment_freeFunction · 0.85
mi_segment_abandonFunction · 0.85

Tested by

no test coverage detected