mirror of
https://github.com/microsoft/mimalloc.git
synced 2024-12-27 05:11:11 +08:00
Merge branch 'dev-align' of https://github.com/microsoft/mimalloc into dev-align
This commit is contained in:
commit
d1ae630dec
@ -260,11 +260,13 @@ static mi_page_t* mi_page_fresh_alloc(mi_heap_t* heap, mi_page_queue_t* pq, size
|
|||||||
// this may be out-of-memory, or an abandoned page was reclaimed (and in our queue)
|
// this may be out-of-memory, or an abandoned page was reclaimed (and in our queue)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
// a fresh page was found, initialize it
|
|
||||||
mi_assert_internal(pq==NULL || _mi_page_segment(page)->page_kind != MI_PAGE_HUGE);
|
mi_assert_internal(pq==NULL || _mi_page_segment(page)->page_kind != MI_PAGE_HUGE);
|
||||||
mi_assert_internal(pq!=NULL || page->xblock_size != 0);
|
mi_assert_internal(pq!=NULL || page->xblock_size != 0);
|
||||||
mi_assert_internal(pq!=NULL || mi_page_block_size(page) >= block_size);
|
mi_assert_internal(pq!=NULL || mi_page_block_size(page) >= block_size);
|
||||||
mi_page_init(heap, page, (pq==NULL ? mi_page_block_size(page) : block_size), heap->tld);
|
// a fresh page was found, initialize it
|
||||||
|
const size_t full_block_size = (pq == NULL ? mi_page_block_size(page) : block_size); // see also: mi_segment_huge_page_alloc
|
||||||
|
mi_assert_internal(full_block_size >= block_size);
|
||||||
|
mi_page_init(heap, page, full_block_size, heap->tld);
|
||||||
mi_heap_stat_increase(heap, pages, 1);
|
mi_heap_stat_increase(heap, pages, 1);
|
||||||
if (pq!=NULL) mi_page_queue_push(heap, pq, page); // huge pages use pq==NULL
|
if (pq!=NULL) mi_page_queue_push(heap, pq, page); // huge pages use pq==NULL
|
||||||
mi_assert_expensive(_mi_page_is_valid(page));
|
mi_assert_expensive(_mi_page_is_valid(page));
|
||||||
|
@ -1275,7 +1275,7 @@ static mi_page_t* mi_segment_huge_page_alloc(size_t size, size_t page_alignment,
|
|||||||
// overallocate to accommodate large alignments.
|
// overallocate to accommodate large alignments.
|
||||||
size_t psize;
|
size_t psize;
|
||||||
_mi_segment_page_start(segment, page, 0, &psize, NULL);
|
_mi_segment_page_start(segment, page, 0, &psize, NULL);
|
||||||
page->xblock_size = (psize > MI_HUGE_BLOCK_SIZE ? MI_HUGE_BLOCK_SIZE : psize);
|
page->xblock_size = (psize > MI_HUGE_BLOCK_SIZE ? MI_HUGE_BLOCK_SIZE : (uint32_t)psize);
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user