1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-22 05:31:01 -08:00

Removing the commit limit from the amc and ams stress tests, since they hit it legitimately at random, and it isn't a good test of anything much.

See <https://info.ravenbrook.com/mail/2016/03/08/18-14-41/0/> for discussion and suggestions for better testing.

Copied from Perforce
 Change: 189781
 ServerID: perforce.ravenbrook.com
This commit is contained in:
Richard Brooksby 2016-03-08 18:25:07 +00:00
parent cc2c7db8ff
commit a7e0265538
3 changed files with 11 additions and 13 deletions

View file

@ -41,6 +41,7 @@ static mps_gen_param_s testChain[genCOUNT] = {
#define objNULL ((mps_addr_t)MPS_WORD_CONST(0xDECEA5ED)) #define objNULL ((mps_addr_t)MPS_WORD_CONST(0xDECEA5ED))
static mps_arena_t arena;
static mps_ap_t ap; static mps_ap_t ap;
static mps_addr_t exactRoots[exactRootsCOUNT]; static mps_addr_t exactRoots[exactRootsCOUNT];
static mps_addr_t ambigRoots[ambigRootsCOUNT]; static mps_addr_t ambigRoots[ambigRootsCOUNT];
@ -51,7 +52,7 @@ static unsigned long nCollsDone;
/* report -- report statistics from any messages */ /* report -- report statistics from any messages */
static void report(mps_arena_t arena) static void report(void)
{ {
mps_message_type_t type; mps_message_type_t type;
@ -103,8 +104,10 @@ static mps_addr_t make(size_t rootsCount)
do { do {
MPS_RESERVE_BLOCK(res, p, ap, size); MPS_RESERVE_BLOCK(res, p, ap, size);
if (res) if (res) {
ArenaDescribe(arena, mps_lib_get_stderr(), 4);
die(res, "MPS_RESERVE_BLOCK"); die(res, "MPS_RESERVE_BLOCK");
}
res = dylan_init(p, size, exactRoots, rootsCount); res = dylan_init(p, size, exactRoots, rootsCount);
if (res) if (res)
die(res, "dylan_init"); die(res, "dylan_init");
@ -127,8 +130,7 @@ static void test_stepper(mps_addr_t object, mps_fmt_t fmt, mps_pool_t pool,
/* test -- the body of the test */ /* test -- the body of the test */
static void test(mps_arena_t arena, mps_pool_class_t pool_class, static void test(mps_pool_class_t pool_class, size_t roots_count)
size_t roots_count)
{ {
mps_fmt_t format; mps_fmt_t format;
mps_chain_t chain; mps_chain_t chain;
@ -180,7 +182,7 @@ static void test(mps_arena_t arena, mps_pool_class_t pool_class,
while (collections < collectionsCOUNT) { while (collections < collectionsCOUNT) {
size_t r; size_t r;
report(arena); report();
if (collections != nCollsStart) { if (collections != nCollsStart) {
if (!described) { if (!described) {
die(ArenaDescribe(arena, mps_lib_get_stdout(), 0), "ArenaDescribe"); die(ArenaDescribe(arena, mps_lib_get_stdout(), 0), "ArenaDescribe");
@ -276,7 +278,7 @@ static void test(mps_arena_t arena, mps_pool_class_t pool_class,
*(int*)busy_init = -1; /* check that the buffer is still there */ *(int*)busy_init = -1; /* check that the buffer is still there */
if (objs % 1024 == 0) { if (objs % 1024 == 0) {
report(arena); report();
putchar('.'); putchar('.');
(void)fflush(stdout); (void)fflush(stdout);
} }
@ -299,7 +301,6 @@ static void test(mps_arena_t arena, mps_pool_class_t pool_class,
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
size_t i, grainSize; size_t i, grainSize;
mps_arena_t arena;
mps_thr_t thread; mps_thr_t thread;
testlib_init(argc, argv); testlib_init(argc, argv);
@ -312,16 +313,15 @@ int main(int argc, char *argv[])
MPS_ARGS_BEGIN(args) { MPS_ARGS_BEGIN(args) {
MPS_ARGS_ADD(args, MPS_KEY_ARENA_SIZE, scale * testArenaSIZE); MPS_ARGS_ADD(args, MPS_KEY_ARENA_SIZE, scale * testArenaSIZE);
MPS_ARGS_ADD(args, MPS_KEY_ARENA_GRAIN_SIZE, grainSize); MPS_ARGS_ADD(args, MPS_KEY_ARENA_GRAIN_SIZE, grainSize);
MPS_ARGS_ADD(args, MPS_KEY_COMMIT_LIMIT, scale * testArenaSIZE);
die(mps_arena_create_k(&arena, mps_arena_class_vm(), args), "arena_create"); die(mps_arena_create_k(&arena, mps_arena_class_vm(), args), "arena_create");
} MPS_ARGS_END(args); } MPS_ARGS_END(args);
mps_message_type_enable(arena, mps_message_type_gc()); mps_message_type_enable(arena, mps_message_type_gc());
mps_message_type_enable(arena, mps_message_type_gc_start()); mps_message_type_enable(arena, mps_message_type_gc_start());
die(mps_thread_reg(&thread, arena), "thread_reg"); die(mps_thread_reg(&thread, arena), "thread_reg");
test(arena, mps_class_amc(), exactRootsCOUNT); test(mps_class_amc(), exactRootsCOUNT);
test(arena, mps_class_amcz(), 0); test(mps_class_amcz(), 0);
mps_thread_dereg(thread); mps_thread_dereg(thread);
report(arena); report();
mps_arena_destroy(arena); mps_arena_destroy(arena);
printf("%s: Conclusion: Failed to find any defects.\n", argv[0]); printf("%s: Conclusion: Failed to find any defects.\n", argv[0]);

View file

@ -251,7 +251,6 @@ int main(int argc, char *argv[])
MPS_ARGS_BEGIN(args) { MPS_ARGS_BEGIN(args) {
MPS_ARGS_ADD(args, MPS_KEY_ARENA_SIZE, testArenaSIZE); MPS_ARGS_ADD(args, MPS_KEY_ARENA_SIZE, testArenaSIZE);
MPS_ARGS_ADD(args, MPS_KEY_ARENA_GRAIN_SIZE, rnd_grain(testArenaSIZE)); MPS_ARGS_ADD(args, MPS_KEY_ARENA_GRAIN_SIZE, rnd_grain(testArenaSIZE));
MPS_ARGS_ADD(args, MPS_KEY_COMMIT_LIMIT, testArenaSIZE);
die(mps_arena_create_k(&arena, mps_arena_class_vm(), args), "arena_create"); die(mps_arena_create_k(&arena, mps_arena_class_vm(), args), "arena_create");
} MPS_ARGS_END(args); } MPS_ARGS_END(args);
mps_message_type_enable(arena, mps_message_type_gc()); mps_message_type_enable(arena, mps_message_type_gc());

View file

@ -209,7 +209,6 @@ int main(int argc, char *argv[])
MPS_ARGS_BEGIN(args) { MPS_ARGS_BEGIN(args) {
MPS_ARGS_ADD(args, MPS_KEY_ARENA_SIZE, testArenaSIZE); MPS_ARGS_ADD(args, MPS_KEY_ARENA_SIZE, testArenaSIZE);
MPS_ARGS_ADD(args, MPS_KEY_ARENA_GRAIN_SIZE, rnd_grain(testArenaSIZE)); MPS_ARGS_ADD(args, MPS_KEY_ARENA_GRAIN_SIZE, rnd_grain(testArenaSIZE));
MPS_ARGS_ADD(args, MPS_KEY_COMMIT_LIMIT, 2 * testArenaSIZE);
die(mps_arena_create_k(&arena, mps_arena_class_vm(), args), "arena_create"); die(mps_arena_create_k(&arena, mps_arena_class_vm(), args), "arena_create");
} MPS_ARGS_END(args); } MPS_ARGS_END(args);