merge from dev
This commit is contained in:
commit
1718fc811e
BIN
bin/minject.exe
BIN
bin/minject.exe
Binary file not shown.
Binary file not shown.
@ -183,6 +183,10 @@ static boolean_t intro_zone_locked(malloc_zone_t* zone) {
|
|||||||
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__clang__)
|
||||||
|
#pragma clang diagnostic ignored "-Wc99-extensions"
|
||||||
|
#endif
|
||||||
|
|
||||||
static malloc_introspection_t mi_introspect = {
|
static malloc_introspection_t mi_introspect = {
|
||||||
.enumerator = &intro_enumerator,
|
.enumerator = &intro_enumerator,
|
||||||
.good_size = &intro_good_size,
|
.good_size = &intro_good_size,
|
||||||
|
@ -587,13 +587,16 @@ static void mi_page_extend_free(mi_heap_t* heap, mi_page_t* page, mi_tld_t* tld)
|
|||||||
// calculate the extend count
|
// calculate the extend count
|
||||||
const size_t bsize = (page->xblock_size < MI_HUGE_BLOCK_SIZE ? page->xblock_size : page_size);
|
const size_t bsize = (page->xblock_size < MI_HUGE_BLOCK_SIZE ? page->xblock_size : page_size);
|
||||||
size_t extend = page->reserved - page->capacity;
|
size_t extend = page->reserved - page->capacity;
|
||||||
|
mi_assert_internal(extend > 0);
|
||||||
|
|
||||||
size_t max_extend = (bsize >= MI_MAX_EXTEND_SIZE ? MI_MIN_EXTEND : MI_MAX_EXTEND_SIZE/(uint32_t)bsize);
|
size_t max_extend = (bsize >= MI_MAX_EXTEND_SIZE ? MI_MIN_EXTEND : MI_MAX_EXTEND_SIZE/(uint32_t)bsize);
|
||||||
if (max_extend < MI_MIN_EXTEND) max_extend = MI_MIN_EXTEND;
|
if (max_extend < MI_MIN_EXTEND) { max_extend = MI_MIN_EXTEND; }
|
||||||
|
mi_assert_internal(max_extend > 0);
|
||||||
|
|
||||||
if (extend > max_extend) {
|
if (extend > max_extend) {
|
||||||
// ensure we don't touch memory beyond the page to reduce page commit.
|
// ensure we don't touch memory beyond the page to reduce page commit.
|
||||||
// the `lean` benchmark tests this. Going from 1 to 8 increases rss by 50%.
|
// the `lean` benchmark tests this. Going from 1 to 8 increases rss by 50%.
|
||||||
extend = (max_extend==0 ? 1 : max_extend);
|
extend = max_extend;
|
||||||
}
|
}
|
||||||
|
|
||||||
mi_assert_internal(extend > 0 && extend + page->capacity <= page->reserved);
|
mi_assert_internal(extend > 0 && extend + page->capacity <= page->reserved);
|
||||||
|
@ -239,7 +239,7 @@ static bool os_random_buf(void* buf, size_t buf_len) {
|
|||||||
if (mi_atomic_load_acquire(&no_getrandom)==0) {
|
if (mi_atomic_load_acquire(&no_getrandom)==0) {
|
||||||
ssize_t ret = syscall(SYS_getrandom, buf, buf_len, GRND_NONBLOCK);
|
ssize_t ret = syscall(SYS_getrandom, buf, buf_len, GRND_NONBLOCK);
|
||||||
if (ret >= 0) return (buf_len == (size_t)ret);
|
if (ret >= 0) return (buf_len == (size_t)ret);
|
||||||
if (ret != ENOSYS) return false;
|
if (errno != ENOSYS) return false;
|
||||||
mi_atomic_store_release(&no_getrandom, 1UL); // don't call again, and fall back to /dev/urandom
|
mi_atomic_store_release(&no_getrandom, 1UL); // don't call again, and fall back to /dev/urandom
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user