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

Function mi_page_queue_push

3rd/mimalloc-2.0.9/src/page-queue.c:229–255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

227
228
229static void mi_page_queue_push(mi_heap_t* heap, mi_page_queue_t* queue, mi_page_t* page) {
230 mi_assert_internal(mi_page_heap(page) == heap);
231 mi_assert_internal(!mi_page_queue_contains(queue, page));
232 #if MI_HUGE_PAGE_ABANDON
233 mi_assert_internal(_mi_page_segment(page)->kind != MI_SEGMENT_HUGE);
234 #endif
235 mi_assert_internal(page->xblock_size == queue->block_size ||
236 (page->xblock_size > MI_MEDIUM_OBJ_SIZE_MAX) ||
237 (mi_page_is_in_full(page) && mi_page_queue_is_full(queue)));
238
239 mi_page_set_in_full(page, mi_page_queue_is_full(queue));
240 // mi_atomic_store_ptr_release(mi_atomic_cast(void*, &page->heap), heap);
241 page->next = queue->first;
242 page->prev = NULL;
243 if (queue->first != NULL) {
244 mi_assert_internal(queue->first->prev == NULL);
245 queue->first->prev = page;
246 queue->first = page;
247 }
248 else {
249 queue->first = queue->last = page;
250 }
251
252 // update direct
253 mi_heap_queue_first_update(heap, queue);
254 heap->page_count++;
255}
256
257
258static void mi_page_queue_enqueue_from(mi_page_queue_t* to, mi_page_queue_t* from, mi_page_t* page) {

Callers 2

_mi_page_reclaimFunction · 0.85
mi_page_fresh_allocFunction · 0.85

Calls 7

mi_page_heapFunction · 0.85
mi_page_queue_containsFunction · 0.85
_mi_page_segmentFunction · 0.85
mi_page_is_in_fullFunction · 0.85
mi_page_queue_is_fullFunction · 0.85
mi_page_set_in_fullFunction · 0.85

Tested by

no test coverage detected