aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorRichard Kistruck2006-06-28 15:41:27 +0100
committerRichard Kistruck2006-06-28 15:41:27 +0100
commitff4ab6eda210d22df661540704da9a2ebe2ab214 (patch)
tree8b5ec36bb9fdaf951c1d480e8af63f3f27194805 /mps/code
parent9d1d32ac01fd22310281cee6398be4c28095cad8 (diff)
parent22c593757e1694963b36b95e3fae6318a7eca8ba (diff)
downloademacs-ff4ab6eda210d22df661540704da9a2ebe2ab214.tar.gz
emacs-ff4ab6eda210d22df661540704da9a2ebe2ab214.zip
Mps lo pool coverage test: call mps_arena_formatted_objects_walk
and check we find the right number of test objects. (integ from branch) Copied from Perforce Change: 159443 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/locv.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/mps/code/locv.c b/mps/code/locv.c
index bcd3b0ba1f0..3d5a029b18b 100644
--- a/mps/code/locv.c
+++ b/mps/code/locv.c
@@ -22,6 +22,9 @@ static mps_addr_t isMoved(mps_addr_t object);
22static void copy(mps_addr_t old, mps_addr_t new); 22static void copy(mps_addr_t old, mps_addr_t new);
23static void pad(mps_addr_t base, size_t size); 23static void pad(mps_addr_t base, size_t size);
24 24
25static void stepper(mps_addr_t addr, mps_fmt_t fmt, mps_pool_t pool,
26 void *p, size_t s);
27
25static mps_fmt_A_s locv_fmt = 28static mps_fmt_A_s locv_fmt =
26 { 29 {
27 (mps_align_t)4, 30 (mps_align_t)4,
@@ -61,17 +64,26 @@ int main(void)
61 die(mps_reserve(&p, ap, (size_t)4), "mps_reserve 4"); 64 die(mps_reserve(&p, ap, (size_t)4), "mps_reserve 4");
62 *(mps_word_t *)p = 4; 65 *(mps_word_t *)p = 4;
63 cdie(mps_commit(ap, p, (size_t)4), "commit 4"); 66 cdie(mps_commit(ap, p, (size_t)4), "commit 4");
67
64 die(mps_reserve(&roots[1], ap, (size_t)8), "mps_reserve 8"); 68 die(mps_reserve(&roots[1], ap, (size_t)8), "mps_reserve 8");
65 p = roots[1]; 69 p = roots[1];
66 *(mps_word_t *)p = 8; 70 *(mps_word_t *)p = 8;
67 cdie(mps_commit(ap, p, (size_t)8), "commit 8"); 71 cdie(mps_commit(ap, p, (size_t)8), "commit 8");
72
68 die(mps_reserve(&p, ap, (size_t)4096), "mps_reserve 4096"); 73 die(mps_reserve(&p, ap, (size_t)4096), "mps_reserve 4096");
69 *(mps_word_t *)p = 4096; 74 *(mps_word_t *)p = 4096;
70 cdie(mps_commit(ap, p, (size_t)4096), "commit 4096"); 75 cdie(mps_commit(ap, p, (size_t)4096), "commit 4096");
76
71 die(mps_reserve(&p, ap, (size_t)4), "mps_reserve last"); 77 die(mps_reserve(&p, ap, (size_t)4), "mps_reserve last");
72 *(mps_word_t *)p = 4; 78 *(mps_word_t *)p = 4;
73 cdie(mps_commit(ap, p, (size_t)4), "commit last"); 79 cdie(mps_commit(ap, p, (size_t)4), "commit last");
74 80
81 {
82 size_t count = 0;
83 mps_arena_formatted_objects_walk(arena, stepper, &count, 0);
84 cdie(count == 4, "walk 4 objects");
85 }
86
75 mps_ap_destroy(ap); 87 mps_ap_destroy(ap);
76 mps_pool_destroy(pool); 88 mps_pool_destroy(pool);
77 mps_fmt_destroy(format); 89 mps_fmt_destroy(format);
@@ -135,6 +147,15 @@ static void pad(mps_addr_t base, size_t size)
135 cdie(0, "pad"); 147 cdie(0, "pad");
136} 148}
137 149
150static void stepper(mps_addr_t addr, mps_fmt_t fmt, mps_pool_t pool,
151 void *p, size_t s)
152{
153 size_t *pcount = p;
154 *pcount += 1;
155 return;
156}
157
158
138 159
139/* C. COPYRIGHT AND LICENSE 160/* C. COPYRIGHT AND LICENSE
140 * 161 *