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

Function mi_segment_delayed_decommit

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

Source from the content-addressed store, hash-verified

546}
547
548static void mi_segment_delayed_decommit(mi_segment_t* segment, bool force, mi_stats_t* stats) {
549 if (!segment->allow_decommit || mi_commit_mask_is_empty(&segment->decommit_mask)) return;
550 mi_msecs_t now = _mi_clock_now();
551 if (!force && now < segment->decommit_expire) return;
552
553 mi_commit_mask_t mask = segment->decommit_mask;
554 segment->decommit_expire = 0;
555 mi_commit_mask_create_empty(&segment->decommit_mask);
556
557 size_t idx;
558 size_t count;
559 mi_commit_mask_foreach(&mask, idx, count) {
560 // if found, decommit that sequence
561 if (count > 0) {
562 uint8_t* p = (uint8_t*)segment + (idx*MI_COMMIT_SIZE);
563 size_t size = count * MI_COMMIT_SIZE;
564 mi_segment_commitx(segment, false, p, size, stats);
565 }
566 }
567 mi_commit_mask_foreach_end()
568 mi_assert_internal(mi_commit_mask_is_empty(&segment->decommit_mask));
569}
570
571
572/* -----------------------------------------------------------

Callers 5

mi_segment_abandonFunction · 0.85
mi_segment_try_reclaimFunction · 0.85
_mi_abandoned_collectFunction · 0.85
mi_segments_page_allocFunction · 0.85

Calls 4

mi_commit_mask_is_emptyFunction · 0.85
_mi_clock_nowFunction · 0.85
mi_segment_commitxFunction · 0.85

Tested by

no test coverage detected