| 104 | } |
| 105 | |
| 106 | bool _mi_page_is_valid(mi_page_t* page) { |
| 107 | mi_assert_internal(mi_page_is_valid_init(page)); |
| 108 | #if MI_SECURE |
| 109 | mi_assert_internal(page->keys[0] != 0); |
| 110 | #endif |
| 111 | if (mi_page_heap(page)!=NULL) { |
| 112 | mi_segment_t* segment = _mi_page_segment(page); |
| 113 | |
| 114 | mi_assert_internal(!_mi_process_is_initialized || segment->thread_id==0 || segment->thread_id == mi_page_heap(page)->thread_id); |
| 115 | #if MI_HUGE_PAGE_ABANDON |
| 116 | if (segment->kind != MI_SEGMENT_HUGE) |
| 117 | #endif |
| 118 | { |
| 119 | mi_page_queue_t* pq = mi_page_queue_of(page); |
| 120 | mi_assert_internal(mi_page_queue_contains(pq, page)); |
| 121 | mi_assert_internal(pq->block_size==mi_page_block_size(page) || mi_page_block_size(page) > MI_MEDIUM_OBJ_SIZE_MAX || mi_page_is_in_full(page)); |
| 122 | mi_assert_internal(mi_heap_contains_queue(mi_page_heap(page),pq)); |
| 123 | } |
| 124 | } |
| 125 | return true; |
| 126 | } |
| 127 | #endif |
| 128 | |
| 129 | void _mi_page_use_delayed_free(mi_page_t* page, mi_delayed_t delay, bool override_never) { |
no test coverage detected