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

Function mi_segment_slice_split

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

Source from the content-addressed store, hash-verified

723}
724
725static void mi_segment_slice_split(mi_segment_t* segment, mi_slice_t* slice, size_t slice_count, mi_segments_tld_t* tld) {
726 mi_assert_internal(_mi_ptr_segment(slice) == segment);
727 mi_assert_internal(slice->slice_count >= slice_count);
728 mi_assert_internal(slice->xblock_size > 0); // no more in free queue
729 if (slice->slice_count <= slice_count) return;
730 mi_assert_internal(segment->kind != MI_SEGMENT_HUGE);
731 size_t next_index = mi_slice_index(slice) + slice_count;
732 size_t next_count = slice->slice_count - slice_count;
733 mi_segment_span_free(segment, next_index, next_count, false /* don't decommit left-over part */, tld);
734 slice->slice_count = (uint32_t)slice_count;
735}
736
737static mi_page_t* mi_segments_page_find_and_allocate(size_t slice_count, mi_arena_id_t req_arena_id, mi_segments_tld_t* tld) {
738 mi_assert_internal(slice_count*MI_SEGMENT_SLICE_SIZE <= MI_LARGE_OBJ_SIZE_MAX);

Callers 1

Calls 3

_mi_ptr_segmentFunction · 0.85
mi_slice_indexFunction · 0.85
mi_segment_span_freeFunction · 0.85

Tested by

no test coverage detected