diff options
| author | Nick Barnes | 2001-11-23 12:05:19 +0000 |
|---|---|---|
| committer | Nick Barnes | 2001-11-23 12:05:19 +0000 |
| commit | f198709e44763c6e61a474b8fb66df1f299810fc (patch) | |
| tree | fec49f6c7c0b0d850360fca10328d5a234b6fd34 /mps/code | |
| parent | 3549fac51673cd63315c24d97a27236c97e06af2 (diff) | |
| parent | ab1124eed09590d8904c98e8624d67f6b5433898 (diff) | |
| download | emacs-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.c | 28 |
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]; | |||
| 42 | static mps_addr_t ambigRoots[ambigRootsCOUNT]; | 42 | static mps_addr_t ambigRoots[ambigRootsCOUNT]; |
| 43 | 43 | ||
| 44 | 44 | ||
| 45 | static void enable(mps_arena_t arena) | ||
| 46 | { | ||
| 47 | mps_message_type_enable(arena, mps_message_type_gc()); | ||
| 48 | } | ||
| 49 | |||
| 50 | static 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 | |||
| 45 | static mps_addr_t make(void) | 69 | static 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 | |||
| 208 | int main(int argc, char **argv) | 232 | int 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 */ |