| 500 | } |
| 501 | |
| 502 | static bool mi_segment_ensure_committed(mi_segment_t* segment, uint8_t* p, size_t size, mi_stats_t* stats) { |
| 503 | mi_assert_internal(mi_commit_mask_all_set(&segment->commit_mask, &segment->decommit_mask)); |
| 504 | // note: assumes commit_mask is always full for huge segments as otherwise the commit mask bits can overflow |
| 505 | if (mi_commit_mask_is_full(&segment->commit_mask) && mi_commit_mask_is_empty(&segment->decommit_mask)) return true; // fully committed |
| 506 | return mi_segment_commitx(segment,true,p,size,stats); |
| 507 | } |
| 508 | |
| 509 | static void mi_segment_perhaps_decommit(mi_segment_t* segment, uint8_t* p, size_t size, mi_stats_t* stats) { |
| 510 | if (!segment->allow_decommit) return; |
no test coverage detected