aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorNick Barnes2001-11-23 12:05:19 +0000
committerNick Barnes2001-11-23 12:05:19 +0000
commitf198709e44763c6e61a474b8fb66df1f299810fc (patch)
treefec49f6c7c0b0d850360fca10328d5a234b6fd34 /mps/code
parent3549fac51673cd63315c24d97a27236c97e06af2 (diff)
parentab1124eed09590d8904c98e8624d67f6b5433898 (diff)
downloademacs-f198709e44763c6e61a474b8fb66df1f299810fc.tar.gz
emacs-f198709e44763c6e61a474b8fb66df1f299810fc.zip
Make amcss test exercise the mps_message_type_gc code.
Copied from Perforce Change: 24148 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/amcss.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/mps/code/amcss.c b/mps/code/amcss.c
index 29ab71d2a5a..454c4c777ad 100644
--- a/mps/code/amcss.c
+++ b/mps/code/amcss.c
@@ -42,6 +42,30 @@ static mps_addr_t exactRoots[exactRootsCOUNT];
42static mps_addr_t ambigRoots[ambigRootsCOUNT]; 42static mps_addr_t ambigRoots[ambigRootsCOUNT];
43 43
44 44
45static void enable(mps_arena_t arena)
46{
47 mps_message_type_enable(arena, mps_message_type_gc());
48}
49
50static void report(mps_arena_t arena)
51{
52 mps_message_t message;
53
54 while (mps_message_get(&message, arena, mps_message_type_gc())) {
55 size_t live, condemned, not_condemned;
56
57 live = mps_message_gc_live_size(arena, message);
58 condemned = mps_message_gc_condemned_size(arena, message);
59 not_condemned = mps_message_gc_not_condemned_size(arena, message);
60
61 mps_message_discard(arena, message);
62
63 printf("live %d\n", live);
64 printf("condemned %d\n", condemned);
65 printf("not_condemned %d\n", not_condemned);
66 }
67}
68
45static mps_addr_t make(void) 69static mps_addr_t make(void)
46{ 70{
47 size_t length = rnd() % (2*avLEN); 71 size_t length = rnd() % (2*avLEN);
@@ -132,6 +156,7 @@ static void *test(void *arg, size_t s)
132 collections = c; 156 collections = c;
133 printf("\nCollection %lu, %lu objects.\n", 157 printf("\nCollection %lu, %lu objects.\n",
134 c, objs); 158 c, objs);
159 report(arena);
135 for(r = 0; r < exactRootsCOUNT; ++r) 160 for(r = 0; r < exactRootsCOUNT; ++r)
136 cdie(exactRoots[r] == objNULL || dylan_check(exactRoots[r]), 161 cdie(exactRoots[r] == objNULL || dylan_check(exactRoots[r]),
137 "all roots check"); 162 "all roots check");
@@ -204,7 +229,6 @@ static void *test(void *arg, size_t s)
204 return NULL; 229 return NULL;
205} 230}
206 231
207
208int main(int argc, char **argv) 232int main(int argc, char **argv)
209{ 233{
210 mps_arena_t arena; 234 mps_arena_t arena;
@@ -215,10 +239,12 @@ int main(int argc, char **argv)
215 239
216 die(mps_arena_create(&arena, mps_arena_class_vm(), 2*testArenaSIZE), 240 die(mps_arena_create(&arena, mps_arena_class_vm(), 2*testArenaSIZE),
217 "arena_create"); 241 "arena_create");
242 enable(arena);
218 die(mps_arena_commit_limit_set(arena, testArenaSIZE), "set limit"); 243 die(mps_arena_commit_limit_set(arena, testArenaSIZE), "set limit");
219 die(mps_thread_reg(&thread, arena), "thread_reg"); 244 die(mps_thread_reg(&thread, arena), "thread_reg");
220 mps_tramp(&r, test, arena, 0); 245 mps_tramp(&r, test, arena, 0);
221 mps_thread_dereg(thread); 246 mps_thread_dereg(thread);
247 report(arena);
222 mps_arena_destroy(arena); 248 mps_arena_destroy(arena);
223 249
224 fflush(stdout); /* synchronize */ 250 fflush(stdout); /* synchronize */