mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-06-20 10:55:39 +03:00
Modify usize calculation and corresponding tests.
This commit is contained in:
parent
9ce475a135
commit
a0d18fe5d7
8 changed files with 90 additions and 9 deletions
|
|
@ -49,7 +49,7 @@ TEST_BEGIN(test_grow_and_shrink) {
|
|||
size_t tsz;
|
||||
#define NCYCLES 3
|
||||
unsigned i, j;
|
||||
#define NSZS 1024
|
||||
#define NSZS 75
|
||||
size_t szs[NSZS];
|
||||
#define MAXSZ ZU(12 * 1024 * 1024)
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,8 @@ TEST_BEGIN(test_size_classes) {
|
|||
size_t size_class, max_size_class;
|
||||
szind_t index, gen_index, max_index;
|
||||
|
||||
max_size_class = get_max_size_class();
|
||||
max_size_class = sz_limit_usize_gap_enabled()? SC_SMALL_MAXCLASS:
|
||||
get_max_size_class();
|
||||
max_index = sz_size2index(max_size_class);
|
||||
|
||||
for (index = 0, size_class = sz_index2size(index); index < max_index ||
|
||||
|
|
@ -79,6 +80,44 @@ TEST_BEGIN(test_size_classes) {
|
|||
}
|
||||
TEST_END
|
||||
|
||||
TEST_BEGIN(test_grow_slow_size_classes) {
|
||||
test_skip_if(!config_limit_usize_gap);
|
||||
/*
|
||||
* Override runtime option for this test to test usize calculation when
|
||||
* sz_limit_usize_gap_enabled() is true.
|
||||
*/
|
||||
opt_limit_usize_gap = true;
|
||||
size_t size = SC_LARGE_MINCLASS;
|
||||
size_t target_usize = SC_LARGE_MINCLASS;
|
||||
size_t max_size = get_max_size_class();
|
||||
size_t increase[3] = {PAGE - 1, 1, 1};
|
||||
while (size <= max_size) {
|
||||
size_t usize = sz_s2u(size);
|
||||
expect_zu_eq(usize, target_usize,
|
||||
"sz_s2u() does not generate usize as expected.");
|
||||
size += increase[0];
|
||||
usize = sz_s2u(size);
|
||||
target_usize += PAGE;
|
||||
expect_zu_eq(usize, target_usize,
|
||||
"sz_s2u() does not generate usize as expected.");
|
||||
size += increase[1];
|
||||
usize = sz_s2u(size);
|
||||
expect_zu_eq(usize, target_usize,
|
||||
"sz_s2u() does not generate usize as expected.");
|
||||
size += increase[2];
|
||||
usize = sz_s2u(size);
|
||||
target_usize += PAGE;
|
||||
expect_zu_eq(usize, target_usize,
|
||||
"sz_s2u() does not generate usize as expected.");
|
||||
if (target_usize << 1 < target_usize) {
|
||||
break;
|
||||
}
|
||||
target_usize = target_usize << 1;
|
||||
size = target_usize;
|
||||
}
|
||||
}
|
||||
TEST_END
|
||||
|
||||
TEST_BEGIN(test_psize_classes) {
|
||||
size_t size_class, max_psz;
|
||||
pszind_t pind, max_pind;
|
||||
|
|
@ -182,6 +221,7 @@ int
|
|||
main(void) {
|
||||
return test(
|
||||
test_size_classes,
|
||||
test_grow_slow_size_classes,
|
||||
test_psize_classes,
|
||||
test_overflow);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue