mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-31 09:42:27 +00:00
Use better memory strategy on Windows
Rather than using the the rollo global to pick addresses, we select them randomly now using a conservative vaspace.
This commit is contained in:
parent
6a5d4ed65b
commit
2018cac11f
13 changed files with 113 additions and 124 deletions
|
@ -42,8 +42,9 @@ TEST(mremap, dontMove_hasRoom_itMoves) {
|
|||
return; // NetBSD requires MREMAP_MAYMOVE
|
||||
char *p;
|
||||
int pagesz = getpagesize();
|
||||
ASSERT_NE(MAP_FAILED, (p = mmap(randaddr(), pagesz, PROT_READ | PROT_EXEC,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)));
|
||||
ASSERT_NE(MAP_FAILED,
|
||||
(p = mmap(__maps_randaddr(), pagesz, PROT_READ | PROT_EXEC,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)));
|
||||
EXPECT_TRUE(testlib_memoryexists(p));
|
||||
EXPECT_FALSE(testlib_memoryexists(p + pagesz));
|
||||
ASSERT_SYS(0, p, mremap(p, pagesz, pagesz * 2, 0));
|
||||
|
@ -59,8 +60,9 @@ TEST(mremap, dontMove_noRoom_itFailsWithEnomem) {
|
|||
return; // NetBSD requires MREMAP_MAYMOVE
|
||||
char *p;
|
||||
int pagesz = getpagesize();
|
||||
ASSERT_NE(MAP_FAILED, (p = mmap(randaddr(), pagesz * 2, PROT_READ | PROT_EXEC,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)));
|
||||
ASSERT_NE(MAP_FAILED,
|
||||
(p = mmap(__maps_randaddr(), pagesz * 2, PROT_READ | PROT_EXEC,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)));
|
||||
EXPECT_TRUE(testlib_memoryexists(p + pagesz * 0));
|
||||
EXPECT_TRUE(testlib_memoryexists(p + pagesz * 1));
|
||||
EXPECT_FALSE(testlib_memoryexists(p + pagesz * 2));
|
||||
|
@ -77,8 +79,9 @@ TEST(mremap, dontMove_noRoom_itFailsWithEnomem) {
|
|||
TEST(mremap, mayMove_noRoom_itRelocates) {
|
||||
char *p, *p2;
|
||||
int pagesz = getpagesize();
|
||||
ASSERT_NE(MAP_FAILED, (p = mmap(randaddr(), pagesz * 2, PROT_READ | PROT_EXEC,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)));
|
||||
ASSERT_NE(MAP_FAILED,
|
||||
(p = mmap(__maps_randaddr(), pagesz * 2, PROT_READ | PROT_EXEC,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)));
|
||||
EXPECT_TRUE(testlib_memoryexists(p + pagesz * 0));
|
||||
EXPECT_TRUE(testlib_memoryexists(p + pagesz * 1));
|
||||
EXPECT_FALSE(testlib_memoryexists(p + pagesz * 2));
|
||||
|
@ -112,7 +115,7 @@ TEST(mremap, mayMove_noRoom_itRelocates) {
|
|||
TEST(mremap, bench) {
|
||||
#define N 10
|
||||
long size = 1024 * 1024;
|
||||
char *rollo = randaddr();
|
||||
char *rollo = __maps_randaddr();
|
||||
char *addr[N];
|
||||
|
||||
// create mappings
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue