diff options
| author | Richard Kistruck | 2006-06-28 15:41:27 +0100 |
|---|---|---|
| committer | Richard Kistruck | 2006-06-28 15:41:27 +0100 |
| commit | ff4ab6eda210d22df661540704da9a2ebe2ab214 (patch) | |
| tree | 8b5ec36bb9fdaf951c1d480e8af63f3f27194805 /mps/code | |
| parent | 9d1d32ac01fd22310281cee6398be4c28095cad8 (diff) | |
| parent | 22c593757e1694963b36b95e3fae6318a7eca8ba (diff) | |
| download | emacs-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.c | 21 |
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); | |||
| 22 | static void copy(mps_addr_t old, mps_addr_t new); | 22 | static void copy(mps_addr_t old, mps_addr_t new); |
| 23 | static void pad(mps_addr_t base, size_t size); | 23 | static void pad(mps_addr_t base, size_t size); |
| 24 | 24 | ||
| 25 | static void stepper(mps_addr_t addr, mps_fmt_t fmt, mps_pool_t pool, | ||
| 26 | void *p, size_t s); | ||
| 27 | |||
| 25 | static mps_fmt_A_s locv_fmt = | 28 | static 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 | ||
| 150 | static 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 | * |