diff --git a/include/mimalloc.h b/include/mimalloc.h index 28d6d1b7..0af04a94 100644 --- a/include/mimalloc.h +++ b/include/mimalloc.h @@ -308,8 +308,7 @@ typedef enum mi_option_e { mi_option_use_numa_nodes, mi_option_os_tag, mi_option_max_errors, - _mi_option_last, - mi_option_eager_page_commit = mi_option_eager_commit + _mi_option_last } mi_option_t; diff --git a/src/page.c b/src/page.c index 2903b258..61645597 100644 --- a/src/page.c +++ b/src/page.c @@ -570,7 +570,8 @@ static void mi_page_extend_free(mi_heap_t* heap, mi_page_t* page, mi_tld_t* tld) if (page->capacity >= page->reserved) return; size_t page_size; - uint8_t* page_start = _mi_page_start(_mi_page_segment(page), page, &page_size); + //uint8_t* page_start = + _mi_page_start(_mi_page_segment(page), page, &page_size); mi_stat_counter_increase(tld->stats.pages_extended, 1); // calculate the extend count @@ -588,12 +589,6 @@ static void mi_page_extend_free(mi_heap_t* heap, mi_page_t* page, mi_tld_t* tld) mi_assert_internal(extend > 0 && extend + page->capacity <= page->reserved); mi_assert_internal(extend < (1UL<<16)); - // commit on-demand for large and huge pages? - if (_mi_page_segment(page)->page_kind >= MI_PAGE_LARGE && !mi_option_is_enabled(mi_option_eager_page_commit)) { - uint8_t* start = page_start + (page->capacity * bsize); - _mi_mem_commit(start, extend * bsize, NULL, &tld->os); - } - // and append the extend the free list if (extend < MI_MIN_SLICES || MI_SECURE==0) { //!mi_option_is_enabled(mi_option_secure)) { mi_page_free_list_extend(page, bsize, extend, &tld->stats ); diff --git a/src/segment.c b/src/segment.c index a7f7c289..d36cf1c5 100644 --- a/src/segment.c +++ b/src/segment.c @@ -237,10 +237,6 @@ static void mi_page_reset(mi_segment_t* segment, mi_page_t* page, size_t size, m page->is_reset = true; mi_assert_internal(size <= psize); size_t reset_size = ((size == 0 || size > psize) ? psize : size); - if (size == 0 && segment->page_kind >= MI_PAGE_LARGE && !mi_option_is_enabled(mi_option_eager_page_commit)) { - mi_assert_internal(page->xblock_size > 0); - reset_size = page->capacity * mi_page_block_size(page); - } if (reset_size > 0) _mi_mem_reset(start, reset_size, tld->os); } @@ -253,10 +249,6 @@ static void mi_page_unreset(mi_segment_t* segment, mi_page_t* page, size_t size, size_t psize; uint8_t* start = mi_segment_raw_page_start(segment, page, &psize); size_t unreset_size = (size == 0 || size > psize ? psize : size); - if (size == 0 && segment->page_kind >= MI_PAGE_LARGE && !mi_option_is_enabled(mi_option_eager_page_commit)) { - mi_assert_internal(page->xblock_size > 0); - unreset_size = page->capacity * mi_page_block_size(page); - } bool is_zero = false; if (unreset_size > 0) _mi_mem_unreset(start, unreset_size, &is_zero, tld->os); if (is_zero) page->is_zero_init = true; @@ -475,10 +467,7 @@ static void mi_segment_os_free(mi_segment_t* segment, size_t segment_size, mi_se if (any_reset && mi_option_is_enabled(mi_option_reset_decommits)) { fully_committed = false; } - if (segment->page_kind >= MI_PAGE_LARGE && !mi_option_is_enabled(mi_option_eager_page_commit)) { - fully_committed = false; - } - + _mi_mem_free(segment, segment_size, segment->memid, fully_committed, any_reset, tld->os); } @@ -726,17 +715,15 @@ static bool mi_segment_page_claim(mi_segment_t* segment, mi_page_t* page, mi_seg // check commit if (!page->is_committed) { mi_assert_internal(!segment->mem_is_fixed); - mi_assert_internal(!page->is_reset); - if (segment->page_kind < MI_PAGE_LARGE || mi_option_is_enabled(mi_option_eager_page_commit)) { - size_t psize; - uint8_t* start = mi_segment_raw_page_start(segment, page, &psize); - bool is_zero = false; - const size_t gsize = (MI_SECURE >= 2 ? _mi_os_page_size() : 0); - bool ok = _mi_mem_commit(start, psize + gsize, &is_zero, tld->os); - if (!ok) return false; // failed to commit! - if (gsize > 0) { mi_segment_protect_range(start + psize, gsize, true); } - if (is_zero) { page->is_zero_init = true; } - } + mi_assert_internal(!page->is_reset); + size_t psize; + uint8_t* start = mi_segment_raw_page_start(segment, page, &psize); + bool is_zero = false; + const size_t gsize = (MI_SECURE >= 2 ? _mi_os_page_size() : 0); + bool ok = _mi_mem_commit(start, psize + gsize, &is_zero, tld->os); + if (!ok) return false; // failed to commit! + if (gsize > 0) { mi_segment_protect_range(start + psize, gsize, true); } + if (is_zero) { page->is_zero_init = true; } page->is_committed = true; } // set in-use before doing unreset to prevent delayed reset