Move a page from the full list back to a regular list
| 335 | |
| 336 | // Move a page from the full list back to a regular list |
| 337 | void _mi_page_unfull(mi_page_t* page) { |
| 338 | mi_assert_internal(page != NULL); |
| 339 | mi_assert_expensive(_mi_page_is_valid(page)); |
| 340 | mi_assert_internal(mi_page_is_in_full(page)); |
| 341 | if (!mi_page_is_in_full(page)) return; |
| 342 | |
| 343 | mi_heap_t* heap = mi_page_heap(page); |
| 344 | mi_page_queue_t* pqfull = &heap->pages[MI_BIN_FULL]; |
| 345 | mi_page_set_in_full(page, false); // to get the right queue |
| 346 | mi_page_queue_t* pq = mi_heap_page_queue_of(heap, page); |
| 347 | mi_page_set_in_full(page, true); |
| 348 | mi_page_queue_enqueue_from(pq, pqfull, page); |
| 349 | } |
| 350 | |
| 351 | static void mi_page_to_full(mi_page_t* page, mi_page_queue_t* pq) { |
| 352 | mi_assert_internal(pq == mi_page_queue_of(page)); |
no test coverage detected