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

Function mi_commit_mask_create

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

Source from the content-addressed store, hash-verified

53}
54
55static void mi_commit_mask_create(size_t bitidx, size_t bitcount, mi_commit_mask_t* cm) {
56 mi_assert_internal(bitidx < MI_COMMIT_MASK_BITS);
57 mi_assert_internal((bitidx + bitcount) <= MI_COMMIT_MASK_BITS);
58 if (bitcount == MI_COMMIT_MASK_BITS) {
59 mi_assert_internal(bitidx==0);
60 mi_commit_mask_create_full(cm);
61 }
62 else if (bitcount == 0) {
63 mi_commit_mask_create_empty(cm);
64 }
65 else {
66 mi_commit_mask_create_empty(cm);
67 size_t i = bitidx / MI_COMMIT_MASK_FIELD_BITS;
68 size_t ofs = bitidx % MI_COMMIT_MASK_FIELD_BITS;
69 while (bitcount > 0) {
70 mi_assert_internal(i < MI_COMMIT_MASK_FIELD_COUNT);
71 size_t avail = MI_COMMIT_MASK_FIELD_BITS - ofs;
72 size_t count = (bitcount > avail ? avail : bitcount);
73 size_t mask = (count >= MI_COMMIT_MASK_FIELD_BITS ? ~((size_t)0) : (((size_t)1 << count) - 1) << ofs);
74 cm->mask[i] = mask;
75 bitcount -= count;
76 ofs = 0;
77 i++;
78 }
79 }
80}
81
82size_t _mi_commit_mask_committed_size(const mi_commit_mask_t* cm, size_t total) {
83 mi_assert_internal((total%MI_COMMIT_MASK_BITS)==0);

Callers 3

mi_segment_commit_maskFunction · 0.85
mi_segment_os_allocFunction · 0.85
mi_segment_allocFunction · 0.85

Calls 2

Tested by

no test coverage detected