mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-04-25 15:52:01 -07:00
Mmqa tests function/{7,21,22}.c now pass on 32-bit platforms.
MMQA tests function/{8,98}.c now pass on 64-bit platforms.
Copied from Perforce
Change: 194599
This commit is contained in:
parent
60350161e2
commit
b742e99f96
6 changed files with 72 additions and 72 deletions
|
|
@ -1,9 +1,10 @@
|
|||
/*
|
||||
TEST_HEADER
|
||||
id = $Id$
|
||||
summary = allocate large promise, make it small, repeat
|
||||
summary = allocate large object, free its middle, repeat
|
||||
language = c
|
||||
link = testlib.o
|
||||
parameters = OBJECTS=2000
|
||||
END_HEADER
|
||||
*/
|
||||
|
||||
|
|
@ -16,18 +17,20 @@ static void test(void) {
|
|||
mps_addr_t q;
|
||||
int p;
|
||||
|
||||
die(mps_arena_create(&arena, mps_arena_class_vm(), mmqaArenaSIZE), "create");
|
||||
die(mps_arena_create_k(&arena, mps_arena_class_vm(), mps_args_none), "create");
|
||||
|
||||
die(mps_pool_create(&pool, arena, mps_class_mv(),
|
||||
(size_t)(1024*32), (size_t)(1024*16), (size_t)(1024*256)),
|
||||
(size_t)(32), (size_t)(16), (size_t)(256)),
|
||||
"create MV pool");
|
||||
|
||||
for (p=0; p<2000; p++) {
|
||||
die(mps_alloc(&q, pool, 1024*1024), "alloc");
|
||||
for (p=0; p<OBJECTS; p++) {
|
||||
die(mps_alloc(&q, pool, 1024), "alloc");
|
||||
q = (mps_addr_t) ((char *) q + MPS_PF_ALIGN);
|
||||
mps_free(pool, q, 256*1024-MPS_PF_ALIGN);
|
||||
report("promise", "%i", p);
|
||||
mps_free(pool, q, 256-MPS_PF_ALIGN);
|
||||
}
|
||||
|
||||
mps_pool_destroy(pool);
|
||||
mps_arena_destroy(arena);
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
/*
|
||||
TEST_HEADER
|
||||
id = $Id$
|
||||
summary = allocate large promise, make it small, repeat interleaved
|
||||
summary = allocate large object, free its middle, repeat interleaved
|
||||
language = c
|
||||
link = testlib.o
|
||||
parameters = OBJECTS=2000
|
||||
END_HEADER
|
||||
*/
|
||||
|
||||
|
|
@ -16,20 +17,22 @@ static void test(void) {
|
|||
mps_addr_t q, r;
|
||||
int p;
|
||||
|
||||
die(mps_arena_create(&arena, mps_arena_class_vm(), mmqaArenaSIZE), "create");
|
||||
die(mps_arena_create_k(&arena, mps_arena_class_vm(), mps_args_none), "create");
|
||||
|
||||
die(mps_pool_create(&pool, arena, mps_class_mv(),
|
||||
(size_t)(1024*32), (size_t)(1024*16), (size_t)(1024*256)),
|
||||
(size_t)(32), (size_t)(16), (size_t)(256)),
|
||||
"create MV pool");
|
||||
|
||||
die(mps_alloc(&q, pool, 1024*1024), "alloc");
|
||||
die(mps_alloc(&q, pool, 1024), "alloc");
|
||||
|
||||
for (p=0; p<2000; p++) {
|
||||
report("promise", "%i", p);
|
||||
die(mps_alloc(&r, pool, 1024*1024), "alloc");
|
||||
mps_free(pool, q, 256*1024-MPS_PF_ALIGN);
|
||||
for (p=0; p<OBJECTS; p++) {
|
||||
die(mps_alloc(&r, pool, 1024), "alloc");
|
||||
mps_free(pool, q, 256-MPS_PF_ALIGN);
|
||||
q = (mps_addr_t) ((char *) r + MPS_PF_ALIGN);
|
||||
}
|
||||
|
||||
mps_pool_destroy(pool);
|
||||
mps_arena_destroy(arena);
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
/*
|
||||
TEST_HEADER
|
||||
id = $Id$
|
||||
summary = create 1000 spaces and destroy each one just after the next is created
|
||||
summary = create many arenas and destroy each one just after the next is created
|
||||
language = c
|
||||
link = testlib.o
|
||||
parameters = ARENAS=1000
|
||||
END_HEADER
|
||||
*/
|
||||
|
||||
|
|
@ -16,15 +17,14 @@ static void test(void)
|
|||
|
||||
int p;
|
||||
|
||||
die(mps_arena_create(&arena1, mps_arena_class_vm(), mmqaArenaSIZE), "create");
|
||||
|
||||
for (p=0; p<1000; p++)
|
||||
for (p=0; p<ARENAS; p++)
|
||||
{
|
||||
die(mps_arena_create(&arena, mps_arena_class_vm(), mmqaArenaSIZE), "create");
|
||||
comment("%i", p);
|
||||
mps_arena_destroy(arena1);
|
||||
die(mps_arena_create(&arena, mps_arena_class_vm(), mps_args_none), "create");
|
||||
if (p > 0)
|
||||
mps_arena_destroy(arena1);
|
||||
arena1=arena;
|
||||
}
|
||||
mps_arena_destroy(arena1);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
/*
|
||||
TEST_HEADER
|
||||
id = $Id$
|
||||
summary = create arenas until an error results, see if it leaks at failure
|
||||
summary = check that failed arena creation doesn't leak
|
||||
language = c
|
||||
link = testlib.o
|
||||
parameters = ARENAS=10
|
||||
OUTPUT_SPEC
|
||||
arena > 10
|
||||
arena_tight = 129
|
||||
arena >= 10
|
||||
END_HEADER
|
||||
*/
|
||||
|
||||
|
|
@ -14,45 +14,26 @@ END_HEADER
|
|||
#include "mpsavm.h"
|
||||
|
||||
|
||||
#define minArenaSIZE ((size_t)(130 * 1024))
|
||||
|
||||
|
||||
static void test(void)
|
||||
{
|
||||
mps_arena_t arena, previousArena = NULL;
|
||||
mps_arena_t arena;
|
||||
mps_res_t res;
|
||||
size_t size = (size_t)(1024*1024*10L);
|
||||
int p = 0, i;
|
||||
|
||||
/* make sure you can create at least 10 */
|
||||
while ((res = mps_arena_create(&arena, mps_arena_class_vm(), size))
|
||||
/* fill address space with small arenas */
|
||||
while ((res = mps_arena_create(&arena, mps_arena_class_vm(), 1))
|
||||
== MPS_RES_OK) {
|
||||
p++;
|
||||
report("arena", "%i", p);
|
||||
}
|
||||
asserts(res == MPS_RES_RESOURCE, "wrong error loop");
|
||||
/* fill address space with arenas */
|
||||
while (size > 2 * minArenaSIZE) {
|
||||
size /= 2;
|
||||
res = mps_arena_create(&arena, mps_arena_class_vm(), size);
|
||||
asserts(res == MPS_RES_OK || res == MPS_RES_RESOURCE, "error fill");
|
||||
if (res == MPS_RES_OK) p++;
|
||||
}
|
||||
report("arena2", "%i", p);
|
||||
report("size", "%i", size);
|
||||
/* there could still be holes, fill some more */
|
||||
while ((res = mps_arena_create(&arena, mps_arena_class_vm(), minArenaSIZE))
|
||||
== MPS_RES_OK) {
|
||||
p++; previousArena = arena;
|
||||
}
|
||||
mps_arena_destroy(previousArena);
|
||||
report("arena3", "%i", p);
|
||||
/* test that you can create and fail without leaking */
|
||||
for (i = 0; i < minArenaSIZE / 1024; ++i) {
|
||||
res = mps_arena_create(&arena, mps_arena_class_vm(), (size_t)(1024*1024*10L));
|
||||
report("arena", "%d", p);
|
||||
/* destroy one small arena */
|
||||
mps_arena_destroy(arena);
|
||||
for (i = 0; i < ARENAS; ++i) {
|
||||
/* there isn't enough space for a large arena */
|
||||
res = mps_arena_create(&arena, mps_arena_class_vm(), (size_t)1 << 20);
|
||||
asserts(res == MPS_RES_RESOURCE, "error leak");
|
||||
die(mps_arena_create(&arena, mps_arena_class_vm(), minArenaSIZE), "leak");
|
||||
report("arena_tight", "%i", i);
|
||||
/* but destroying one small arena makes room for another */
|
||||
die(mps_arena_create(&arena, mps_arena_class_vm(), 1), "leak");
|
||||
mps_arena_destroy(arena);
|
||||
}
|
||||
}
|
||||
|
|
@ -60,6 +41,11 @@ static void test(void)
|
|||
|
||||
int main(void)
|
||||
{
|
||||
easy_tramp(test);
|
||||
if (MPS_WORD_WIDTH <= 32) {
|
||||
easy_tramp(test);
|
||||
} else {
|
||||
/* Can't exhaust 64-bit address space by allocating, so fake a pass. */
|
||||
report("arena", "%d", ARENAS);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
/*
|
||||
TEST_HEADER
|
||||
id = $Id$
|
||||
summary = create arenas at once until an error results!
|
||||
summary = fill address space with arenas until an error results!
|
||||
language = c
|
||||
link = testlib.o
|
||||
parameters = ARENAS=10
|
||||
OUTPUT_SPEC
|
||||
arena > 10
|
||||
arena >= 10
|
||||
END_HEADER
|
||||
*/
|
||||
|
||||
|
|
@ -14,22 +15,29 @@ END_HEADER
|
|||
|
||||
static void test(void)
|
||||
{
|
||||
mps_arena_t arena;
|
||||
mps_arena_t arena;
|
||||
mps_res_t res;
|
||||
int p;
|
||||
|
||||
int p;
|
||||
|
||||
p=0;
|
||||
|
||||
while (1)
|
||||
{
|
||||
die(mps_arena_create(&arena, mps_arena_class_vm(), (size_t) (1024*1024*10)), "create");
|
||||
p = p+1;
|
||||
for (p = 0;; ++p) {
|
||||
MPS_ARGS_BEGIN(args) {
|
||||
MPS_ARGS_ADD(args, MPS_KEY_ARENA_SIZE, 1);
|
||||
res = mps_arena_create_k(&arena, mps_arena_class_vm(), args);
|
||||
} MPS_ARGS_END(args);
|
||||
if (res != MPS_RES_OK)
|
||||
break;
|
||||
}
|
||||
asserts(res == MPS_RES_RESOURCE, "resource");
|
||||
report("arena", "%i", p);
|
||||
}
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
easy_tramp(test);
|
||||
return 0;
|
||||
if (MPS_WORD_WIDTH <= 32) {
|
||||
easy_tramp(test);
|
||||
} else {
|
||||
/* Can't exhaust 64-bit address space by allocating, so fake a pass. */
|
||||
report("arena", "%d", ARENAS);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ function/1.c
|
|||
function/5.c
|
||||
function/6.c
|
||||
function/7.c
|
||||
% function/8.c -- tries to exhaust memory by mps_arena_create
|
||||
function/8.c
|
||||
function/9.c
|
||||
function/10.c
|
||||
function/11.c
|
||||
|
|
@ -88,7 +88,7 @@ function/83.c
|
|||
% 84-95 -- no such test
|
||||
function/96.c
|
||||
function/97.c
|
||||
% function/98.c -- tries to exhaust memory by mps_arena_create
|
||||
function/98.c
|
||||
function/99.c
|
||||
function/100.c
|
||||
function/101.c
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue