better alignment for large and huge pages inside a segment

This commit is contained in:
daan 2019-09-04 18:42:37 -07:00
parent 3bbc047ba6
commit e73982c4cf
2 changed files with 17 additions and 17 deletions

View file

@ -186,18 +186,18 @@ static size_t mi_segment_size(size_t capacity, size_t required, size_t* pre_size
capacity = MI_SMALL_PAGES_PER_SEGMENT; capacity = MI_SMALL_PAGES_PER_SEGMENT;
} }
*/ */
size_t minsize = sizeof(mi_segment_t) + ((capacity - 1) * sizeof(mi_page_t)) + 16 /* padding */; const size_t minsize = sizeof(mi_segment_t) + ((capacity - 1) * sizeof(mi_page_t)) + 16 /* padding */;
size_t guardsize = 0; size_t guardsize = 0;
size_t isize = 0; size_t isize = 0;
if (!mi_option_is_enabled(mi_option_secure)) { if (!mi_option_is_enabled(mi_option_secure)) {
// normally no guard pages // normally no guard pages
isize = _mi_align_up(minsize, (16 > MI_MAX_ALIGN_SIZE ? 16 : MI_MAX_ALIGN_SIZE)); isize = _mi_align_up(minsize, 16 * MI_MAX_ALIGN_SIZE);
} }
else { else {
// in secure mode, we set up a protected page in between the segment info // in secure mode, we set up a protected page in between the segment info
// and the page data (and one at the end of the segment) // and the page data (and one at the end of the segment)
size_t page_size = _mi_os_page_size(); const size_t page_size = _mi_os_page_size();
isize = _mi_align_up(minsize, page_size); isize = _mi_align_up(minsize, page_size);
guardsize = page_size; guardsize = page_size;
required = _mi_align_up(required, page_size); required = _mi_align_up(required, page_size);