aboutsummaryrefslogtreecommitdiffstats
path: root/mps/code
diff options
context:
space:
mode:
authorGareth Rees2013-06-03 12:25:18 +0100
committerGareth Rees2013-06-03 12:25:18 +0100
commitf154b62bf4d7316a23d605891e54fce8aa05b52d (patch)
treefa525c0c7f99c56739b36301e612583b45099e97 /mps/code
parent5a508d21783d2986dae8b300f8aa2b0b5cbb2f6f (diff)
parente07ee8b8e324593ada1f19a8aaa59b475b5144e3 (diff)
downloademacs-f154b62bf4d7316a23d605891e54fce8aa05b52d.tar.gz
emacs-f154b62bf4d7316a23d605891e54fce8aa05b52d.zip
Catch-up merge from master sources to mps/branch/2013-05-17/emergency
Copied from Perforce Change: 182417 ServerID: perforce.ravenbrook.com
Diffstat (limited to 'mps/code')
-rw-r--r--mps/code/abqtest.c2
-rw-r--r--mps/code/amcss.c5
-rw-r--r--mps/code/amcsshe.c2
-rw-r--r--mps/code/amcssth.c2
-rw-r--r--mps/code/amsss.c2
-rw-r--r--mps/code/amssshe.c2
-rw-r--r--mps/code/apss.c2
-rw-r--r--mps/code/arenacv.c1
-rw-r--r--mps/code/awlut.c2
-rw-r--r--mps/code/awluthe.c2
-rw-r--r--mps/code/awlutth.c5
-rw-r--r--mps/code/btcv.c1
-rw-r--r--mps/code/bttest.c1
-rw-r--r--mps/code/check.h4
-rw-r--r--mps/code/comm.gmk176
-rw-r--r--mps/code/commpre.nmk2
-rw-r--r--mps/code/config.h8
-rw-r--r--mps/code/event.c124
-rw-r--r--mps/code/event.h2
-rw-r--r--mps/code/eventdef.h22
-rw-r--r--mps/code/exposet0.c2
-rw-r--r--mps/code/expt825.c4
-rw-r--r--mps/code/finalcv.c2
-rw-r--r--mps/code/finaltest.c1
-rw-r--r--mps/code/fmtdytst.c1
-rw-r--r--mps/code/global.c22
-rw-r--r--mps/code/libcbt.c1
-rw-r--r--mps/code/locbwcss.c2
-rw-r--r--mps/code/lockcov.c1
-rw-r--r--mps/code/lockutw3.c1
-rw-r--r--mps/code/locusss.c2
-rw-r--r--mps/code/locv.c1
-rw-r--r--mps/code/messtest.c1
-rw-r--r--mps/code/mpmss.c2
-rw-r--r--mps/code/mps.xcodeproj/project.pbxproj425
-rw-r--r--mps/code/mpsicv.c2
-rw-r--r--mps/code/mpsioan.c30
-rw-r--r--mps/code/mpslib.h36
-rw-r--r--mps/code/mpsliban.c26
-rw-r--r--mps/code/poolamc.c27
-rw-r--r--mps/code/poolawl.c4
-rw-r--r--mps/code/poolmfs.c7
-rw-r--r--mps/code/poolncv.c1
-rw-r--r--mps/code/poolsnc.c12
-rw-r--r--mps/code/protw3.c24
-rw-r--r--mps/code/qs.c2
-rw-r--r--mps/code/sacss.c2
-rw-r--r--mps/code/segsmss.c2
-rw-r--r--mps/code/steptest.c2
-rw-r--r--mps/code/teletest.c1
-rw-r--r--mps/code/testlib.c10
-rw-r--r--mps/code/testlib.h9
-rw-r--r--mps/code/trace.c9
-rw-r--r--mps/code/walkt0.c2
-rw-r--r--mps/code/zcoll.c2
-rw-r--r--mps/code/zmess.c2
56 files changed, 800 insertions, 247 deletions
diff --git a/mps/code/abqtest.c b/mps/code/abqtest.c
index 32987836dae..b385dd53cd1 100644
--- a/mps/code/abqtest.c
+++ b/mps/code/abqtest.c
@@ -10,6 +10,7 @@
10#include "mps.h" 10#include "mps.h"
11#include "mpsavm.h" 11#include "mpsavm.h"
12#include "testlib.h" 12#include "testlib.h"
13#include "mpslib.h"
13#include <stdlib.h> 14#include <stdlib.h>
14#include <stdarg.h> 15#include <stdarg.h>
15#include <string.h> 16#include <string.h>
@@ -166,6 +167,7 @@ extern int main(int argc, char *argv[])
166 int i; 167 int i;
167 168
168 randomize(argc, argv); 169 randomize(argc, argv);
170 mps_lib_assert_fail_install(assert_die);
169 171
170 abqSize = 0; 172 abqSize = 0;
171 173
diff --git a/mps/code/amcss.c b/mps/code/amcss.c
index ee91223660f..e3bb32627eb 100644
--- a/mps/code/amcss.c
+++ b/mps/code/amcss.c
@@ -8,6 +8,7 @@
8#include "fmtdy.h" 8#include "fmtdy.h"
9#include "fmtdytst.h" 9#include "fmtdytst.h"
10#include "testlib.h" 10#include "testlib.h"
11#include "mpslib.h"
11#include "mpscamc.h" 12#include "mpscamc.h"
12#include "mpsavm.h" 13#include "mpsavm.h"
13#include "mpstd.h" 14#include "mpstd.h"
@@ -15,6 +16,7 @@
15#include "mpsw3.h" 16#include "mpsw3.h"
16#endif 17#endif
17#include "mps.h" 18#include "mps.h"
19#include "mpslib.h"
18#include <stdlib.h> 20#include <stdlib.h>
19#include <string.h> 21#include <string.h>
20 22
@@ -305,7 +307,8 @@ int main(int argc, char *argv[])
305 mps_thr_t thread; 307 mps_thr_t thread;
306 308
307 randomize(argc, argv); 309 randomize(argc, argv);
308 310 mps_lib_assert_fail_install(assert_die);
311
309 die(mps_arena_create(&arena, mps_arena_class_vm(), 2*testArenaSIZE), 312 die(mps_arena_create(&arena, mps_arena_class_vm(), 2*testArenaSIZE),
310 "arena_create"); 313 "arena_create");
311 mps_message_type_enable(arena, mps_message_type_gc()); 314 mps_message_type_enable(arena, mps_message_type_gc());
diff --git a/mps/code/amcsshe.c b/mps/code/amcsshe.c
index ee8d9edbeb4..1198f8be978 100644
--- a/mps/code/amcsshe.c
+++ b/mps/code/amcsshe.c
@@ -8,6 +8,7 @@
8#include "fmthe.h" 8#include "fmthe.h"
9#include "fmtdytst.h" 9#include "fmtdytst.h"
10#include "testlib.h" 10#include "testlib.h"
11#include "mpslib.h"
11#include "mpscamc.h" 12#include "mpscamc.h"
12#include "mpsavm.h" 13#include "mpsavm.h"
13#include "mpstd.h" 14#include "mpstd.h"
@@ -261,6 +262,7 @@ int main(int argc, char *argv[])
261 void *r; 262 void *r;
262 263
263 randomize(argc, argv); 264 randomize(argc, argv);
265 mps_lib_assert_fail_install(assert_die);
264 266
265 die(mps_arena_create(&arena, mps_arena_class_vm(), 3*testArenaSIZE), 267 die(mps_arena_create(&arena, mps_arena_class_vm(), 3*testArenaSIZE),
266 "arena_create\n"); 268 "arena_create\n");
diff --git a/mps/code/amcssth.c b/mps/code/amcssth.c
index e5ed673c80c..5fc28728247 100644
--- a/mps/code/amcssth.c
+++ b/mps/code/amcssth.c
@@ -12,6 +12,7 @@
12#include "fmtdy.h" 12#include "fmtdy.h"
13#include "fmtdytst.h" 13#include "fmtdytst.h"
14#include "testlib.h" 14#include "testlib.h"
15#include "mpslib.h"
15#include "mpscamc.h" 16#include "mpscamc.h"
16#include "mpsavm.h" 17#include "mpsavm.h"
17#include <stdlib.h> 18#include <stdlib.h>
@@ -320,6 +321,7 @@ int main(int argc, char *argv[])
320 int childIsFinished = 0; 321 int childIsFinished = 0;
321 322
322 randomize(argc, argv); 323 randomize(argc, argv);
324 mps_lib_assert_fail_install(assert_die);
323 325
324 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE), 326 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE),
325 "arena_create"); 327 "arena_create");
diff --git a/mps/code/amsss.c b/mps/code/amsss.c
index 29f0aa47e3b..657faebe3b3 100644
--- a/mps/code/amsss.c
+++ b/mps/code/amsss.c
@@ -11,6 +11,7 @@
11#include "fmtdy.h" 11#include "fmtdy.h"
12#include "fmtdytst.h" 12#include "fmtdytst.h"
13#include "testlib.h" 13#include "testlib.h"
14#include "mpslib.h"
14#include "mpscams.h" 15#include "mpscams.h"
15#include "mpsavm.h" 16#include "mpsavm.h"
16#include "mpstd.h" 17#include "mpstd.h"
@@ -207,6 +208,7 @@ int main(int argc, char *argv[])
207 void *r; 208 void *r;
208 209
209 randomize(argc, argv); 210 randomize(argc, argv);
211 mps_lib_assert_fail_install(assert_die);
210 212
211 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE), 213 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE),
212 "arena_create"); 214 "arena_create");
diff --git a/mps/code/amssshe.c b/mps/code/amssshe.c
index 29a9fd2ebbf..ddbda607017 100644
--- a/mps/code/amssshe.c
+++ b/mps/code/amssshe.c
@@ -9,6 +9,7 @@
9#include "fmthe.h" 9#include "fmthe.h"
10#include "fmtdytst.h" 10#include "fmtdytst.h"
11#include "testlib.h" 11#include "testlib.h"
12#include "mpslib.h"
12#include "mpscams.h" 13#include "mpscams.h"
13#include "mpsavm.h" 14#include "mpsavm.h"
14#include "mpstd.h" 15#include "mpstd.h"
@@ -162,6 +163,7 @@ int main(int argc, char *argv[])
162 void *r; 163 void *r;
163 164
164 randomize(argc, argv); 165 randomize(argc, argv);
166 mps_lib_assert_fail_install(assert_die);
165 167
166 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE), 168 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE),
167 "arena_create"); 169 "arena_create");
diff --git a/mps/code/apss.c b/mps/code/apss.c
index 65323d9b629..e55a911a9a0 100644
--- a/mps/code/apss.c
+++ b/mps/code/apss.c
@@ -14,6 +14,7 @@
14#include "mpsavm.h" 14#include "mpsavm.h"
15 15
16#include "testlib.h" 16#include "testlib.h"
17#include "mpslib.h"
17 18
18#include <stdlib.h> 19#include <stdlib.h>
19#include <stdarg.h> 20#include <stdarg.h>
@@ -190,6 +191,7 @@ int main(int argc, char *argv[])
190 bothOptions = MPS_PF_ALIGN == 8 ? &bothOptions8 : &bothOptions16; 191 bothOptions = MPS_PF_ALIGN == 8 ? &bothOptions8 : &bothOptions16;
191 192
192 randomize(argc, argv); 193 randomize(argc, argv);
194 mps_lib_assert_fail_install(assert_die);
193 195
194 die(mps_arena_create(&arena, mps_arena_class_vm(), 2*testArenaSIZE), 196 die(mps_arena_create(&arena, mps_arena_class_vm(), 2*testArenaSIZE),
195 "mps_arena_create"); 197 "mps_arena_create");
diff --git a/mps/code/arenacv.c b/mps/code/arenacv.c
index e837a596767..b0ea6c08040 100644
--- a/mps/code/arenacv.c
+++ b/mps/code/arenacv.c
@@ -19,6 +19,7 @@
19#include "mpm.h" 19#include "mpm.h"
20#include "poolmv.h" 20#include "poolmv.h"
21#include "testlib.h" 21#include "testlib.h"
22#include "mpslib.h"
22#include "mpsavm.h" 23#include "mpsavm.h"
23#include "mpsacl.h" 24#include "mpsacl.h"
24 25
diff --git a/mps/code/awlut.c b/mps/code/awlut.c
index 35036b2cbaf..7e417c18658 100644
--- a/mps/code/awlut.c
+++ b/mps/code/awlut.c
@@ -13,6 +13,7 @@
13#include "mpsavm.h" 13#include "mpsavm.h"
14#include "fmtdy.h" 14#include "fmtdy.h"
15#include "testlib.h" 15#include "testlib.h"
16#include "mpslib.h"
16#include "mps.h" 17#include "mps.h"
17#include "mpstd.h" 18#include "mpstd.h"
18#ifdef MPS_OS_W3 19#ifdef MPS_OS_W3
@@ -306,6 +307,7 @@ int main(int argc, char *argv[])
306 void *r; 307 void *r;
307 308
308 randomize(argc, argv); 309 randomize(argc, argv);
310 mps_lib_assert_fail_install(assert_die);
309 311
310 initialise_wrapper(wrapper_wrapper); 312 initialise_wrapper(wrapper_wrapper);
311 initialise_wrapper(string_wrapper); 313 initialise_wrapper(string_wrapper);
diff --git a/mps/code/awluthe.c b/mps/code/awluthe.c
index 7ee5a0c077c..a0d2bf85ab9 100644
--- a/mps/code/awluthe.c
+++ b/mps/code/awluthe.c
@@ -14,6 +14,7 @@
14#include "fmthe.h" 14#include "fmthe.h"
15#include "fmtdy.h" 15#include "fmtdy.h"
16#include "testlib.h" 16#include "testlib.h"
17#include "mpslib.h"
17#include "mps.h" 18#include "mps.h"
18#include "mpstd.h" 19#include "mpstd.h"
19#ifdef MPS_OS_W3 20#ifdef MPS_OS_W3
@@ -305,6 +306,7 @@ int main(int argc, char *argv[])
305 void *r; 306 void *r;
306 307
307 randomize(argc, argv); 308 randomize(argc, argv);
309 mps_lib_assert_fail_install(assert_die);
308 310
309 initialise_wrapper(wrapper_wrapper); 311 initialise_wrapper(wrapper_wrapper);
310 initialise_wrapper(string_wrapper); 312 initialise_wrapper(string_wrapper);
diff --git a/mps/code/awlutth.c b/mps/code/awlutth.c
index cfe94ea7ca3..cb4a794b35f 100644
--- a/mps/code/awlutth.c
+++ b/mps/code/awlutth.c
@@ -13,13 +13,14 @@
13#include "mpsavm.h" 13#include "mpsavm.h"
14#include "fmtdy.h" 14#include "fmtdy.h"
15#include "testlib.h" 15#include "testlib.h"
16#include "mpslib.h"
16#include "mps.h" 17#include "mps.h"
17#include "mpstd.h" 18#include "mpstd.h"
18#ifdef MPS_OS_W3 19#ifdef MPS_OS_W3
19#include "mpsw3.h" 20#include "mpsw3.h"
20#endif 21#endif
21#include <string.h> 22#include <string.h>
22#if defined(MPS_OS_LI) || defined(MPS_OS_FR) 23#if defined(MPS_OS_LI) || defined(MPS_OS_FR) || defined(MPS_OS_XC)
23#include <pthread.h> 24#include <pthread.h>
24#endif 25#endif
25 26
@@ -203,6 +204,7 @@ static void test(mps_ap_t leafap, mps_ap_t exactap, mps_ap_t weakap,
203 mps_word_t *string; 204 mps_word_t *string;
204 205
205 string = alloc_string("spong", leafap); 206 string = alloc_string("spong", leafap);
207 UNUSED(string);
206 } 208 }
207 } 209 }
208 210
@@ -315,6 +317,7 @@ int main(int argc, char *argv[])
315 pthread_t pthread1; 317 pthread_t pthread1;
316 318
317 randomize(argc, argv); 319 randomize(argc, argv);
320 mps_lib_assert_fail_install(assert_die);
318 321
319 initialise_wrapper(wrapper_wrapper); 322 initialise_wrapper(wrapper_wrapper);
320 initialise_wrapper(string_wrapper); 323 initialise_wrapper(string_wrapper);
diff --git a/mps/code/btcv.c b/mps/code/btcv.c
index b119a217d5d..72256a5f693 100644
--- a/mps/code/btcv.c
+++ b/mps/code/btcv.c
@@ -16,6 +16,7 @@
16#include "mpsavm.h" 16#include "mpsavm.h"
17#include "mps.h" 17#include "mps.h"
18#include "testlib.h" 18#include "testlib.h"
19#include "mpslib.h"
19 20
20#include <stdlib.h> 21#include <stdlib.h>
21 22
diff --git a/mps/code/bttest.c b/mps/code/bttest.c
index c119fe70a34..165a4fd1cba 100644
--- a/mps/code/bttest.c
+++ b/mps/code/bttest.c
@@ -9,6 +9,7 @@
9#include "mps.h" 9#include "mps.h"
10#include "mpsavm.h" 10#include "mpsavm.h"
11#include "testlib.h" 11#include "testlib.h"
12#include "mpslib.h"
12 13
13#include <stdlib.h> 14#include <stdlib.h>
14#include <stdarg.h> 15#include <stdarg.h>
diff --git a/mps/code/check.h b/mps/code/check.h
index 58e62255102..1f03c72f300 100644
--- a/mps/code/check.h
+++ b/mps/code/check.h
@@ -52,7 +52,7 @@
52#define ASSERT(cond, condstring) \ 52#define ASSERT(cond, condstring) \
53 BEGIN \ 53 BEGIN \
54 if (cond) NOOP; else \ 54 if (cond) NOOP; else \
55 mps_lib_assert_fail(condstring "\n" __FILE__ "\n" STR(__LINE__)); \ 55 mps_lib_assert_fail(__FILE__ , __LINE__, (condstring)); \
56 END 56 END
57 57
58#define ASSERT_TYPECHECK(type, val) \ 58#define ASSERT_TYPECHECK(type, val) \
@@ -158,7 +158,7 @@ extern unsigned CheckLevel;
158 158
159#define NOTREACHED \ 159#define NOTREACHED \
160 BEGIN \ 160 BEGIN \
161 mps_lib_assert_fail("unreachable code" "\n" __FILE__ "\n" STR(__LINE__)); \ 161 mps_lib_assert_fail(__FILE__, __LINE__, "unreachable code"); \
162 END 162 END
163 163
164#endif 164#endif
diff --git a/mps/code/comm.gmk b/mps/code/comm.gmk
index a4d41a9cbd9..436068fcda7 100644
--- a/mps/code/comm.gmk
+++ b/mps/code/comm.gmk
@@ -167,13 +167,12 @@ FMTDYTST = fmtdy.c fmtno.c fmtdytst.c
167FMTHETST = fmthe.c fmtdy.c fmtno.c fmtdytst.c 167FMTHETST = fmthe.c fmtdy.c fmtno.c fmtdytst.c
168PLINTH = mpsliban.c mpsioan.c 168PLINTH = mpsliban.c mpsioan.c
169EVENTPROC = eventcnv.c eventpro.c table.c 169EVENTPROC = eventcnv.c eventpro.c table.c
170MPMCOMMON = mpsi.c mpm.c arenavm.c arenacl.c arena.c global.c locus.c \ 170MPMCOMMON = abq.c arena.c arenacl.c arenavm.c arg.c boot.c bt.c \
171 tract.c walk.c reserv.c protocol.c pool.c poolabs.c \ 171 buffer.c cbs.c dbgpool.c dbgpooli.c diag.c event.c format.c \
172 trace.c traceanc.c root.c seg.c format.c buffer.c ref.c \ 172 global.c ld.c locus.c message.c meter.c mpm.c mpsi.c pool.c \
173 bt.c ring.c shield.c ld.c event.c sac.c message.c \ 173 poolabs.c poolmfs.c poolmrg.c poolmv.c protocol.c range.c ref.c \
174 poolmrg.c poolmfs.c poolmv.c dbgpool.c dbgpooli.c \ 174 reserv.c ring.c root.c sac.c seg.c shield.c splay.c ss.c table.c \
175 boot.c meter.c splay.c cbs.c diag.c \ 175 trace.c traceanc.c tract.c walk.c
176 ss.c table.c arg.c abq.c range.c
177MPM = $(MPMCOMMON) $(MPMPF) 176MPM = $(MPMCOMMON) $(MPMPF)
178 177
179 178
@@ -218,49 +217,54 @@ EVENTPROCDEP = $(EVENTPROC:%.c=$(PFM)/$(VARIETY)/%.d)
218endif 217endif
219 218
220 219
221# == Pseudo-targets == 220# == Test cases ==
221#
222# %%TARGET: When adding a new target, add it to one of the variables
223# in this section. Library components go in LIB_TARGETS.
222 224
223# %%TARGET: When adding a new target, add it to the all dependencies 225LIB_TARGETS=mps.a mpsplan.a
224 226
225all: mpmss sacss amcss amcssth amcsshe amsss amssshe segsmss awlut awluthe \ 227# If it is suitable for running regularly (for example, after every
226 mpsicv lockcov poolncv locv qs apss \ 228# build) as an automated test case, add it to AUTO_TEST_TARGETS.
227 finalcv finaltest arenacv bttest teletest \
228 abqtest cbstest btcv mv2test messtest steptest \
229 walkt0 zcoll zmess \
230 $(EXTRA_TARGETS) \
231 mps.a mpsplan.a
232 229
230AUTO_TEST_TARGETS=abqtest amcss amcsshe amcssth amsss amssshe apss \
231 arenacv awlut awluthe btcv exposet0 expt825 fbmtest finalcv \
232 finaltest lockcov locv messtest mpmss mpsicv mv2test poolncv qs \
233 sacss segsmss steptest walkt0 zmess
233 234
234# Runs the automated tests. 235# If it is not runnable as an automated test case, but is buildable,
235# 236# add it to OTHER_TEST_TARGETS with a note.
236# %%TARGET: When adding a new target, if target is suitable for 237#
237# running as an automated test, then add it here. 238# awlutth -- fails (job003506).
239# bttest and teletest -- interactive and so cannot be run unattended.
240# zcoll -- takes too long to be useful as a regularly run smoke test.
241
242OTHER_TEST_TARGETS=awlutth bttest teletest zcoll
243
244# This target records programs that we were once able to build but
245# can't at the moment:
238# 246#
239# bttest and teletest are not listed here because they are interactive 247# replay -- depends on the EPVM pool.
240# and so cannot be run unattended. 248
241TESTCASES=abqtest amcss amcsshe amcssth amsss amssshe apss arenacv \ 249UNBUILDABLE_TARGETS=replay
242 awlut awluthe btcv cbstest finalcv finaltest lockcov locv \ 250
243 messtest mpmss mpsicv mv2test poolncv qs sacss segsmss \ 251ALL_TARGETS=$(LIB_TARGETS) $(AUTO_TEST_TARGETS) $(OTHER_TEST_TARGETS) $(EXTRA_TARGETS)
244 steptest walkt0 252
245testrun: $(TESTCASES) 253
246 ../tool/testrun.sh $(addprefix $(PFM)/$(VARIETY)/,$(TESTCASES)) 254# == Pseudo-targets ==
255
256all: $(ALL_TARGETS)
257
258
259# Run the automated tests.
260
261testrun: $(AUTO_TEST_TARGETS)
262 ../tool/testrun.sh $(addprefix $(PFM)/$(VARIETY)/,$(AUTO_TEST_TARGETS))
247 263
248# These convenience targets allow one to type "make foo" to build target 264# These convenience targets allow one to type "make foo" to build target
249# foo in selected varieties (or none, for the latter rule). 265# foo in selected varieties (or none, for the latter rule).
250# 266
251# %%TARGET: When adding a new target, add a pseudo-target for it here. 267$(ALL_TARGETS): phony
252
253mpmss sacss amcss amcssth amcsshe amsss amssshe segsmss awlut awlutth \
254 awluthe mpsicv lockcov poolncv locv qs apss \
255 finalcv finaltest arenacv bttest teletest \
256 expt825 \
257 abqtest cbstest btcv mv2test \
258 messtest steptest \
259 walkt0 \
260 exposet0 \
261 zcoll zmess \
262 $(EXTRA_TARGETS) replay replaysw \
263 mps.a mpsplan.a: phony
264ifdef VARIETY 268ifdef VARIETY
265 $(MAKE) -f $(PFM).gmk TARGET=$@ variety 269 $(MAKE) -f $(PFM).gmk TARGET=$@ variety
266else 270else
@@ -341,88 +345,91 @@ $(PFM)/cool/mps.a: \
341 345
342ifdef VARIETY 346ifdef VARIETY
343 347
344$(PFM)/$(VARIETY)/finalcv: $(PFM)/$(VARIETY)/finalcv.o \ 348$(PFM)/$(VARIETY)/abqtest: $(PFM)/$(VARIETY)/abqtest.o \
345 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 349 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
346 350
347$(PFM)/$(VARIETY)/finaltest: $(PFM)/$(VARIETY)/finaltest.o \ 351$(PFM)/$(VARIETY)/amcss: $(PFM)/$(VARIETY)/amcss.o \
348 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 352 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
349 353
350$(PFM)/$(VARIETY)/expt825: $(PFM)/$(VARIETY)/expt825.o \ 354$(PFM)/$(VARIETY)/amcsshe: $(PFM)/$(VARIETY)/amcsshe.o \
355 $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
356
357$(PFM)/$(VARIETY)/amcssth: $(PFM)/$(VARIETY)/amcssth.o \
351 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 358 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
352 359
353$(PFM)/$(VARIETY)/locv: $(PFM)/$(VARIETY)/locv.o \ 360$(PFM)/$(VARIETY)/amsss: $(PFM)/$(VARIETY)/amsss.o \
354 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 361 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
355 362
356$(PFM)/$(VARIETY)/mpmss: $(PFM)/$(VARIETY)/mpmss.o \ 363$(PFM)/$(VARIETY)/amssshe: $(PFM)/$(VARIETY)/amssshe.o \
357 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 364 $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
358 365
359$(PFM)/$(VARIETY)/apss: $(PFM)/$(VARIETY)/apss.o \ 366$(PFM)/$(VARIETY)/apss: $(PFM)/$(VARIETY)/apss.o \
360 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 367 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
361 368
362$(PFM)/$(VARIETY)/sacss: $(PFM)/$(VARIETY)/sacss.o \ 369$(PFM)/$(VARIETY)/arenacv: $(PFM)/$(VARIETY)/arenacv.o \
363 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 370 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
364 371
365$(PFM)/$(VARIETY)/bttest: $(PFM)/$(VARIETY)/bttest.o \ 372$(PFM)/$(VARIETY)/awlut: $(PFM)/$(VARIETY)/awlut.o \
366 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 373 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
367 374
368$(PFM)/$(VARIETY)/teletest: $(PFM)/$(VARIETY)/teletest.o \ 375$(PFM)/$(VARIETY)/awluthe: $(PFM)/$(VARIETY)/awluthe.o \
369 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 376 $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
370 377
371$(PFM)/$(VARIETY)/lockcov: $(PFM)/$(VARIETY)/lockcov.o \ 378$(PFM)/$(VARIETY)/awlutth: $(PFM)/$(VARIETY)/awlutth.o \
379 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
380
381$(PFM)/$(VARIETY)/btcv: $(PFM)/$(VARIETY)/btcv.o \
372 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 382 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
373 383
374$(PFM)/$(VARIETY)/mpsicv: $(PFM)/$(VARIETY)/mpsicv.o \ 384$(PFM)/$(VARIETY)/bttest: $(PFM)/$(VARIETY)/bttest.o \
375 $(FMTDYTSTOBJ) $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 385 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
376 386
377$(PFM)/$(VARIETY)/amcss: $(PFM)/$(VARIETY)/amcss.o \ 387$(PFM)/$(VARIETY)/fbmtest: $(PFM)/$(VARIETY)/fbmtest.o \
378 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 388 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
379 389
380$(PFM)/$(VARIETY)/amcssth: $(PFM)/$(VARIETY)/amcssth.o \ 390$(PFM)/$(VARIETY)/exposet0: $(PFM)/$(VARIETY)/exposet0.o \
381 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 391 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
382 392
383$(PFM)/$(VARIETY)/amcsshe: $(PFM)/$(VARIETY)/amcsshe.o \ 393$(PFM)/$(VARIETY)/expt825: $(PFM)/$(VARIETY)/expt825.o \
384 $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
385
386$(PFM)/$(VARIETY)/amsss: $(PFM)/$(VARIETY)/amsss.o \
387 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 394 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
388 395
389$(PFM)/$(VARIETY)/amssshe: $(PFM)/$(VARIETY)/amssshe.o \ 396$(PFM)/$(VARIETY)/finalcv: $(PFM)/$(VARIETY)/finalcv.o \
390 $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
391
392$(PFM)/$(VARIETY)/segsmss: $(PFM)/$(VARIETY)/segsmss.o \
393 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 397 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
394 398
395$(PFM)/$(VARIETY)/awlut: $(PFM)/$(VARIETY)/awlut.o \ 399$(PFM)/$(VARIETY)/finaltest: $(PFM)/$(VARIETY)/finaltest.o \
396 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 400 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
397 401
398$(PFM)/$(VARIETY)/awluthe: $(PFM)/$(VARIETY)/awluthe.o \ 402$(PFM)/$(VARIETY)/lockcov: $(PFM)/$(VARIETY)/lockcov.o \
399 $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 403 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
400
401$(PFM)/$(VARIETY)/awlutth: $(PFM)/$(VARIETY)/awlutth.o \
402 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
403 404
404$(PFM)/$(VARIETY)/poolncv: $(PFM)/$(VARIETY)/poolncv.o \ 405$(PFM)/$(VARIETY)/locv: $(PFM)/$(VARIETY)/locv.o \
405 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 406 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
406 407
407$(PFM)/$(VARIETY)/qs: $(PFM)/$(VARIETY)/qs.o \ 408$(PFM)/$(VARIETY)/messtest: $(PFM)/$(VARIETY)/messtest.o \
408 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 409 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
409 410
410$(PFM)/$(VARIETY)/arenacv: $(PFM)/$(VARIETY)/arenacv.o \ 411$(PFM)/$(VARIETY)/mpmss: $(PFM)/$(VARIETY)/mpmss.o \
411 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 412 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
412 413
413$(PFM)/$(VARIETY)/abqtest: $(PFM)/$(VARIETY)/abqtest.o \ 414$(PFM)/$(VARIETY)/mpsicv: $(PFM)/$(VARIETY)/mpsicv.o \
415 $(FMTDYTSTOBJ) $(FMTHETSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
416
417$(PFM)/$(VARIETY)/mv2test: $(PFM)/$(VARIETY)/mv2test.o \
414 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 418 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
415 419
416$(PFM)/$(VARIETY)/cbstest: $(PFM)/$(VARIETY)/cbstest.o \ 420$(PFM)/$(VARIETY)/poolncv: $(PFM)/$(VARIETY)/poolncv.o \
417 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 421 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
418 422
419$(PFM)/$(VARIETY)/btcv: $(PFM)/$(VARIETY)/btcv.o \ 423$(PFM)/$(VARIETY)/qs: $(PFM)/$(VARIETY)/qs.o \
420 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 424 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
421 425
422$(PFM)/$(VARIETY)/mv2test: $(PFM)/$(VARIETY)/mv2test.o \ 426$(PFM)/$(VARIETY)/sacss: $(PFM)/$(VARIETY)/sacss.o \
423 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 427 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
424 428
425$(PFM)/$(VARIETY)/messtest: $(PFM)/$(VARIETY)/messtest.o \ 429$(PFM)/$(VARIETY)/segsmss: $(PFM)/$(VARIETY)/segsmss.o \
430 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
431
432$(PFM)/$(VARIETY)/teletest: $(PFM)/$(VARIETY)/teletest.o \
426 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 433 $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
427 434
428$(PFM)/$(VARIETY)/steptest: $(PFM)/$(VARIETY)/steptest.o \ 435$(PFM)/$(VARIETY)/steptest: $(PFM)/$(VARIETY)/steptest.o \
@@ -431,9 +438,6 @@ $(PFM)/$(VARIETY)/steptest: $(PFM)/$(VARIETY)/steptest.o \
431$(PFM)/$(VARIETY)/walkt0: $(PFM)/$(VARIETY)/walkt0.o \ 438$(PFM)/$(VARIETY)/walkt0: $(PFM)/$(VARIETY)/walkt0.o \
432 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 439 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
433 440
434$(PFM)/$(VARIETY)/exposet0: $(PFM)/$(VARIETY)/exposet0.o \
435 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
436
437$(PFM)/$(VARIETY)/zcoll: $(PFM)/$(VARIETY)/zcoll.o \ 441$(PFM)/$(VARIETY)/zcoll: $(PFM)/$(VARIETY)/zcoll.o \
438 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a 442 $(FMTDYTSTOBJ) $(TESTLIBOBJ) $(PFM)/$(VARIETY)/mps.a
439 443
diff --git a/mps/code/commpre.nmk b/mps/code/commpre.nmk
index 5ae4ffb49aa..47c66943164 100644
--- a/mps/code/commpre.nmk
+++ b/mps/code/commpre.nmk
@@ -130,7 +130,7 @@ CFCOOL = /DCONFIG_VAR_COOL $(CRTFLAGSCOOL) $(CFLAGSCOOL) $(CFLAGSINTERNAL)
130# %%VARIETY: When adding a new variety, define a macro containing the flags 130# %%VARIETY: When adding a new variety, define a macro containing the flags
131# for the new variety 131# for the new variety
132LINKER = link 132LINKER = link
133LINKFLAGSCOMMON = /nologo 133LINKFLAGSCOMMON = /nologo /LARGEADDRESSAWARE
134LINKFLAGSINTERNAL = /DEBUG 134LINKFLAGSINTERNAL = /DEBUG
135# ( Internal flags used to be set to /DEBUG:full ) 135# ( Internal flags used to be set to /DEBUG:full )
136LINKFLAGSEXTERNAL = /RELEASE 136LINKFLAGSEXTERNAL = /RELEASE
diff --git a/mps/code/config.h b/mps/code/config.h
index 70e50169c7d..edc2c552191 100644
--- a/mps/code/config.h
+++ b/mps/code/config.h
@@ -48,6 +48,7 @@
48 48
49#elif defined(CONFIG_VAR_DIAG) /* Diagnostic variety */ 49#elif defined(CONFIG_VAR_DIAG) /* Diagnostic variety */
50#define CONFIG_ASSERT 50#define CONFIG_ASSERT
51#define CONFIG_ASSERT_ABORT
51#ifndef CHECKLEVEL 52#ifndef CHECKLEVEL
52#define CHECKLEVEL CheckLevelMINIMAL 53#define CHECKLEVEL CheckLevelMINIMAL
53#endif 54#endif
@@ -72,6 +73,7 @@
72#elif defined(CONFIG_VAR_COOL) 73#elif defined(CONFIG_VAR_COOL)
73#define CONFIG_ASSERT 74#define CONFIG_ASSERT
74#define CONFIG_ASSERT_ALL 75#define CONFIG_ASSERT_ALL
76#define CONFIG_ASSERT_ABORT
75#define CONFIG_STATS 77#define CONFIG_STATS
76#ifndef CHECKLEVEL 78#ifndef CHECKLEVEL
77#define CHECKLEVEL CheckLevelSHALLOW 79#define CHECKLEVEL CheckLevelSHALLOW
@@ -91,6 +93,7 @@
91 93
92/* #elif defined(CONFIG_VAR_HOT) */ 94/* #elif defined(CONFIG_VAR_HOT) */
93#define CONFIG_ASSERT 95#define CONFIG_ASSERT
96/* Note, not CONFIG_ASSERT_ABORT */
94#ifndef CHECKLEVEL 97#ifndef CHECKLEVEL
95#define CHECKLEVEL CheckLevelMINIMAL 98#define CHECKLEVEL CheckLevelMINIMAL
96#endif 99#endif
@@ -117,6 +120,11 @@
117#define AVER_AND_CHECK_NONE 120#define AVER_AND_CHECK_NONE
118#define MPS_ASSERT_STRING "nonasserted" 121#define MPS_ASSERT_STRING "nonasserted"
119#endif 122#endif
123#if defined(CONFIG_ASSERT_ABORT)
124#define ASSERT_ABORT() abort()
125#else
126#define ASSERT_ABORT() NOOP
127#endif
120 128
121 129
122#if defined(CONFIG_STATS) 130#if defined(CONFIG_STATS)
diff --git a/mps/code/event.c b/mps/code/event.c
index 96e78b24061..288b43afa17 100644
--- a/mps/code/event.c
+++ b/mps/code/event.c
@@ -1,7 +1,7 @@
1/* event.c: EVENT LOGGING 1/* event.c: EVENT LOGGING
2 * 2 *
3 * $Id$ 3 * $Id$
4 * Copyright (c) 2001 Ravenbrook Limited. See end of file for license. 4 * Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
5 * 5 *
6 * .sources: mps.design.event 6 * .sources: mps.design.event
7 * 7 *
@@ -40,9 +40,12 @@ static Serial EventInternSerial;
40/* Buffers in which events are recorded, from the top down. */ 40/* Buffers in which events are recorded, from the top down. */
41char EventBuffer[EventKindLIMIT][EventBufferSIZE]; 41char EventBuffer[EventKindLIMIT][EventBufferSIZE];
42 42
43/* Pointers to last written event in each buffer. */ 43/* Pointers to last event logged into each buffer. */
44char *EventLast[EventKindLIMIT]; 44char *EventLast[EventKindLIMIT];
45 45
46/* Pointers to the last even written out of each buffer. */
47char *EventWritten[EventKindLIMIT];
48
46EventControlSet EventKindControl; /* Bit set used to control output. */ 49EventControlSet EventKindControl; /* Bit set used to control output. */
47 50
48 51
@@ -71,65 +74,24 @@ failWrite:
71 return res; 74 return res;
72} 75}
73 76
74/* EventFlush -- flush event buffer to the event stream */
75 77
76Res EventFlush(EventKind kind) 78/* EventFlush -- flush event buffer (perhaps to the event stream) */
77{
78 Res res;
79 size_t size;
80 79
80void EventFlush(EventKind kind)
81{
81 AVER(eventInited); 82 AVER(eventInited);
82 AVER(0 <= kind && kind < EventKindLIMIT); 83 AVER(0 <= kind && kind < EventKindLIMIT);
83 84
84 AVER(EventBuffer[kind] <= EventLast[kind]); 85 AVER(EventBuffer[kind] <= EventLast[kind]);
85 AVER(EventLast[kind] <= EventBuffer[kind] + EventBufferSIZE); 86 AVER(EventLast[kind] <= EventWritten[kind]);
87 AVER(EventWritten[kind] <= EventBuffer[kind] + EventBufferSIZE);
86 88
87 /* Is event logging enabled for this kind of event, or are or are we just 89 /* Send all pending events to the event stream. */
88 writing to the buffer for backtraces, cores, and other debugging? */ 90 EventSync();
89 if (BS_IS_MEMBER(EventKindControl, kind)) {
90
91 size = (size_t)(EventBuffer[kind] + EventBufferSIZE - EventLast[kind]);
92
93 /* Checking the size avoids creating the event stream when the arena is
94 destroyed and no events have been logged. */
95 if (size == 0)
96 return ResOK;
97
98 /* Ensure the IO stream is open. We do this late so that no stream is
99 created if no events are enabled by telemetry control. */
100 if (!eventIOInited) {
101 res = (Res)mps_io_create(&eventIO);
102 if(res != ResOK)
103 goto failCreate;
104 eventIOInited = TRUE;
105 }
106
107 /* Send an EventClockSync event */
108 res = eventClockSync();
109 if (res != ResOK)
110 goto failClockSync;
111
112 /* Writing might be faster if the size is aligned to a multiple of the
113 C library or kernel's buffer size. We could pad out the buffer with
114 a marker for this purpose. */
115
116 res = (Res)mps_io_write(eventIO, (void *)EventLast[kind], size);
117 if (res != ResOK)
118 goto failWrite;
119
120 }
121
122 res = ResOK;
123
124failClockSync:
125failWrite:
126failCreate:
127
128 /* Flush the in-memory buffer whether or not we succeeded, so that we can
129 record recent events there. */
130 EventLast[kind] = EventBuffer[kind] + EventBufferSIZE;
131 91
132 return res; 92 /* Flush the in-memory buffer whether or not we send this buffer, so
93 that we can continue to record recent events. */
94 EventLast[kind] = EventWritten[kind] = EventBuffer[kind] + EventBufferSIZE;
133} 95}
134 96
135 97
@@ -138,9 +100,54 @@ failCreate:
138void EventSync(void) 100void EventSync(void)
139{ 101{
140 EventKind kind; 102 EventKind kind;
141 for (kind = 0; kind < EventKindLIMIT; ++kind) 103 Bool wrote = FALSE;
142 (void)EventFlush(kind); 104
143 (void)mps_io_flush(eventIO); 105 for (kind = 0; kind < EventKindLIMIT; ++kind) {
106
107 /* Is event logging enabled for this kind of event, or are or are we just
108 writing to the buffer for backtraces, cores, and other debugging? */
109 if (BS_IS_MEMBER(EventKindControl, kind)) {
110 size_t size;
111 Res res;
112
113 AVER(EventBuffer[kind] <= EventLast[kind]);
114 AVER(EventLast[kind] <= EventWritten[kind]);
115 AVER(EventWritten[kind] <= EventBuffer[kind] + EventBufferSIZE);
116
117 size = (size_t)(EventWritten[kind] - EventLast[kind]);
118 if (size > 0) {
119
120 /* Ensure the IO stream is open. We do this late so that no stream is
121 created if no events are enabled by telemetry control. */
122 if (!eventIOInited) {
123 res = (Res)mps_io_create(&eventIO);
124 if(res != ResOK) {
125 /* TODO: Consider taking some other action if open fails. */
126 return;
127 }
128 eventIOInited = TRUE;
129 }
130
131 /* Writing might be faster if the size is aligned to a multiple of the
132 C library or kernel's buffer size. We could pad out the buffer with
133 a marker for this purpose. */
134
135 res = (Res)mps_io_write(eventIO, (void *)EventLast[kind], size);
136 if (res == ResOK) {
137 /* TODO: Consider taking some other action if a write fails. */
138 EventWritten[kind] = EventLast[kind];
139 wrote = TRUE;
140 }
141 }
142 }
143 }
144
145 /* If we wrote out events, send an EventClockSync event and flush
146 the telemetry stream. */
147 if (wrote) {
148 (void)eventClockSync();
149 (void)mps_io_flush(eventIO);
150 }
144} 151}
145 152
146 153
@@ -202,7 +209,8 @@ void EventInit(void)
202 EventKind kind; 209 EventKind kind;
203 for (kind = 0; kind < EventKindLIMIT; ++kind) { 210 for (kind = 0; kind < EventKindLIMIT; ++kind) {
204 AVER(EventLast[kind] == NULL); 211 AVER(EventLast[kind] == NULL);
205 EventLast[kind] = EventBuffer[kind] + EventBufferSIZE; 212 AVER(EventWritten[kind] == NULL);
213 EventLast[kind] = EventWritten[kind] = EventBuffer[kind] + EventBufferSIZE;
206 } 214 }
207 eventUserCount = (Count)1; 215 eventUserCount = (Count)1;
208 eventInited = TRUE; 216 eventInited = TRUE;
@@ -508,7 +516,7 @@ extern void EventDump(mps_lib_FILE *stream)
508 516
509/* C. COPYRIGHT AND LICENSE 517/* C. COPYRIGHT AND LICENSE
510 * 518 *
511 * Copyright (C) 2001-2002 Ravenbrook Limited <http://www.ravenbrook.com/>. 519 * Copyright (C) 2001-2013 Ravenbrook Limited <http://www.ravenbrook.com/>.
512 * All rights reserved. This is an open source license. Contact 520 * All rights reserved. This is an open source license. Contact
513 * Ravenbrook for commercial licensing options. 521 * Ravenbrook for commercial licensing options.
514 * 522 *
diff --git a/mps/code/event.h b/mps/code/event.h
index c54193b367d..b16e2af4b9c 100644
--- a/mps/code/event.h
+++ b/mps/code/event.h
@@ -32,7 +32,7 @@ extern EventControlSet EventControl(EventControlSet resetMask,
32extern EventStringId EventInternString(const char *label); 32extern EventStringId EventInternString(const char *label);
33extern EventStringId EventInternGenString(size_t, const char *label); 33extern EventStringId EventInternGenString(size_t, const char *label);
34extern void EventLabelAddr(Addr addr, Word id); 34extern void EventLabelAddr(Addr addr, Word id);
35extern Res EventFlush(EventKind kind); 35extern void EventFlush(EventKind kind);
36extern Res EventDescribe(Event event, mps_lib_FILE *stream); 36extern Res EventDescribe(Event event, mps_lib_FILE *stream);
37extern Res EventWrite(Event event, mps_lib_FILE *stream); 37extern Res EventWrite(Event event, mps_lib_FILE *stream);
38extern void EventDump(mps_lib_FILE *stream); 38extern void EventDump(mps_lib_FILE *stream);
diff --git a/mps/code/eventdef.h b/mps/code/eventdef.h
index 5c6c3b0f2e1..ca5609962f8 100644
--- a/mps/code/eventdef.h
+++ b/mps/code/eventdef.h
@@ -38,7 +38,7 @@
38 38
39#define EVENT_VERSION_MAJOR ((unsigned)1) 39#define EVENT_VERSION_MAJOR ((unsigned)1)
40#define EVENT_VERSION_MEDIAN ((unsigned)1) 40#define EVENT_VERSION_MEDIAN ((unsigned)1)
41#define EVENT_VERSION_MINOR ((unsigned)3) 41#define EVENT_VERSION_MINOR ((unsigned)4)
42 42
43 43
44/* EVENT_LIST -- list of event types and general properties 44/* EVENT_LIST -- list of event types and general properties
@@ -99,8 +99,8 @@
99 EVENT(X, CBSInit , 0x0019, TRUE, Pool) \ 99 EVENT(X, CBSInit , 0x0019, TRUE, Pool) \
100 EVENT(X, Intern , 0x001a, TRUE, User) \ 100 EVENT(X, Intern , 0x001a, TRUE, User) \
101 EVENT(X, Label , 0x001b, TRUE, User) \ 101 EVENT(X, Label , 0x001b, TRUE, User) \
102 /* EVENT(X, TraceStart , 0x001c, TRUE, Trace) */ \ 102 EVENT(X, TraceStart , 0x001c, TRUE, Trace) \
103 /* EVENT(X, TraceCreate , 0x001d, TRUE, Trace) */ \ 103 EVENT(X, TraceCreate , 0x001d, TRUE, Trace) \
104 EVENT(X, TraceDestroy , 0x001e, TRUE, Trace) \ 104 EVENT(X, TraceDestroy , 0x001e, TRUE, Trace) \
105 EVENT(X, SegSetGrey , 0x001f, TRUE, Seg) \ 105 EVENT(X, SegSetGrey , 0x001f, TRUE, Seg) \
106 EVENT(X, TraceFlipBegin , 0x0020, TRUE, Trace) \ 106 EVENT(X, TraceFlipBegin , 0x0020, TRUE, Trace) \
@@ -653,6 +653,22 @@
653 PARAM(X, 0, P, arena) \ 653 PARAM(X, 0, P, arena) \
654 PARAM(X, 1, B, emergency) 654 PARAM(X, 1, B, emergency)
655 655
656#define EVENT_TraceCreate_PARAMS(PARAM, X) \
657 PARAM(X, 0, P, trace) /* trace that was created */ \
658 PARAM(X, 1, P, arena) /* arena in which created */ \
659 PARAM(X, 2, U, why) /* reason for creation */
660
661#define EVENT_TraceStart_PARAMS(PARAM, X) \
662 PARAM(X, 0, P, trace) /* trace being started */ \
663 PARAM(X, 1, D, mortality) /* as passed to TraceStart */ \
664 PARAM(X, 2, D, finishingTime) /* as passed to TraceStart */ \
665 PARAM(X, 3, W, condemned) /* condemned bytes */ \
666 PARAM(X, 4, W, notCondemned) /* collectible but not condemned bytes */ \
667 PARAM(X, 5, W, foundation) /* foundation size */ \
668 PARAM(X, 6, W, white) /* white reference set */ \
669 PARAM(X, 7, W, rate) /* segs to scan per increment */
670
671
656#endif /* eventdef_h */ 672#endif /* eventdef_h */
657 673
658/* C. COPYRIGHT AND LICENSE 674/* C. COPYRIGHT AND LICENSE
diff --git a/mps/code/exposet0.c b/mps/code/exposet0.c
index 6cbf57488d8..8bc0a190d73 100644
--- a/mps/code/exposet0.c
+++ b/mps/code/exposet0.c
@@ -15,6 +15,7 @@
15#include "fmtdy.h" 15#include "fmtdy.h"
16#include "fmtdytst.h" 16#include "fmtdytst.h"
17#include "testlib.h" 17#include "testlib.h"
18#include "mpslib.h"
18#include "mpscamc.h" 19#include "mpscamc.h"
19#include "mpsavm.h" 20#include "mpsavm.h"
20#include "mpstd.h" 21#include "mpstd.h"
@@ -255,6 +256,7 @@ int main(int argc, char *argv[])
255 void *r; 256 void *r;
256 257
257 randomize(argc, argv); 258 randomize(argc, argv);
259 mps_lib_assert_fail_install(assert_die);
258 260
259 die(mps_arena_create(&arena, mps_arena_class_vm(), 2*testArenaSIZE), 261 die(mps_arena_create(&arena, mps_arena_class_vm(), 2*testArenaSIZE),
260 "arena_create"); 262 "arena_create");
diff --git a/mps/code/expt825.c b/mps/code/expt825.c
index 26e99aa63d8..9c7c4556d77 100644
--- a/mps/code/expt825.c
+++ b/mps/code/expt825.c
@@ -27,6 +27,7 @@
27 */ 27 */
28 28
29#include "testlib.h" 29#include "testlib.h"
30#include "mpslib.h"
30#include "mps.h" 31#include "mps.h"
31#include "mpscamc.h" 32#include "mpscamc.h"
32#include "mpsavm.h" 33#include "mpsavm.h"
@@ -198,6 +199,7 @@ static void *test(void *arg, size_t s)
198 obj = (mps_word_t)objaddr; 199 obj = (mps_word_t)objaddr;
199 mps_message_discard(arena, message); 200 mps_message_discard(arena, message);
200 ++ final_this_time; 201 ++ final_this_time;
202 testlib_unused(obj);
201 } 203 }
202 finals += final_this_time; 204 finals += final_this_time;
203 printf("%lu objects finalized: total %lu of %lu\n", 205 printf("%lu objects finalized: total %lu of %lu\n",
@@ -238,6 +240,7 @@ static void *test(void *arg, size_t s)
238 obj = (mps_word_t)objaddr; 240 obj = (mps_word_t)objaddr;
239 mps_message_discard(arena, message); 241 mps_message_discard(arena, message);
240 ++ final_this_time; 242 ++ final_this_time;
243 testlib_unused(obj);
241 } 244 }
242 finals += final_this_time; 245 finals += final_this_time;
243 printf("%lu objects finalized: total %lu of %lu\n", 246 printf("%lu objects finalized: total %lu of %lu\n",
@@ -259,6 +262,7 @@ int main(int argc, char *argv[])
259 mps_arena_t arena; 262 mps_arena_t arena;
260 mps_thr_t thread; 263 mps_thr_t thread;
261 void *r; 264 void *r;
265 testlib_unused(argc);
262 266
263 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE), 267 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE),
264 "arena_create\n"); 268 "arena_create\n");
diff --git a/mps/code/finalcv.c b/mps/code/finalcv.c
index 8380363350b..8236df4279b 100644
--- a/mps/code/finalcv.c
+++ b/mps/code/finalcv.c
@@ -19,6 +19,7 @@
19 */ 19 */
20 20
21#include "testlib.h" 21#include "testlib.h"
22#include "mpslib.h"
22#include "mps.h" 23#include "mps.h"
23#include "mpscamc.h" 24#include "mpscamc.h"
24#include "mpsavm.h" 25#include "mpsavm.h"
@@ -217,6 +218,7 @@ int main(int argc, char *argv[])
217 void *r; 218 void *r;
218 219
219 randomize(argc, argv); 220 randomize(argc, argv);
221 mps_lib_assert_fail_install(assert_die);
220 222
221 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE), 223 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE),
222 "arena_create\n"); 224 "arena_create\n");
diff --git a/mps/code/finaltest.c b/mps/code/finaltest.c
index 38acb455d0f..f5ef8a9a99f 100644
--- a/mps/code/finaltest.c
+++ b/mps/code/finaltest.c
@@ -17,6 +17,7 @@
17 */ 17 */
18 18
19#include "testlib.h" 19#include "testlib.h"
20#include "mpslib.h"
20#include "mps.h" 21#include "mps.h"
21#include "mpscamc.h" 22#include "mpscamc.h"
22#include "mpsavm.h" 23#include "mpsavm.h"
diff --git a/mps/code/fmtdytst.c b/mps/code/fmtdytst.c
index c98fc4b9f73..83ab1f4b81a 100644
--- a/mps/code/fmtdytst.c
+++ b/mps/code/fmtdytst.c
@@ -10,6 +10,7 @@
10#include "fmtdytst.h" 10#include "fmtdytst.h"
11#include "mps.h" 11#include "mps.h"
12#include "testlib.h" 12#include "testlib.h"
13#include "mpslib.h"
13#include <assert.h> 14#include <assert.h>
14#include <string.h> 15#include <string.h>
15#include <stdlib.h> 16#include <stdlib.h>
diff --git a/mps/code/global.c b/mps/code/global.c
index a1204332d9c..1ba7db30d86 100644
--- a/mps/code/global.c
+++ b/mps/code/global.c
@@ -381,8 +381,27 @@ void GlobalsFinish(Globals arenaGlobals)
381 Arena arena; 381 Arena arena;
382 Rank rank; 382 Rank rank;
383 383
384 AVERT(Globals, arenaGlobals); 384 /* The client may have failed to destroy all data structures
385 * associated with the arena. If this happens we must assert (and
386 * not crash). But at this point in the code the control pool has
387 * been destroyed and so the address space containing these rings
388 * has potentially been unmapped. GlobalsCheck calls RingCheck,
389 * which (if the ring is not single) will dereference a pointer into
390 * the space formerly occupied by the control pool and so crash.
391 * Hence we must check that these rings are single *before* calling
392 * GlobalsCheck via the AVERT. See job000652.
393 */
385 arena = GlobalsArena(arenaGlobals); 394 arena = GlobalsArena(arenaGlobals);
395 AVER(RingIsSingle(&arena->formatRing));
396 AVER(RingIsSingle(&arena->chainRing));
397 AVER(RingIsSingle(&arena->messageRing));
398 AVER(RingIsSingle(&arena->threadRing));
399 for(rank = 0; rank < RankLIMIT; ++rank)
400 AVER(RingIsSingle(&arena->greyRing[rank]));
401 AVER(RingIsSingle(&arenaGlobals->poolRing));
402 AVER(RingIsSingle(&arenaGlobals->rootRing));
403
404 AVERT(Globals, arenaGlobals);
386 405
387 STATISTIC_STAT(EVENT2(ArenaWriteFaults, arena, 406 STATISTIC_STAT(EVENT2(ArenaWriteFaults, arena,
388 arena->writeBarrierHitCount)); 407 arena->writeBarrierHitCount));
@@ -390,6 +409,7 @@ void GlobalsFinish(Globals arenaGlobals)
390 arenaGlobals->sig = SigInvalid; 409 arenaGlobals->sig = SigInvalid;
391 410
392 RingFinish(&arena->formatRing); 411 RingFinish(&arena->formatRing);
412 RingFinish(&arena->chainRing);
393 RingFinish(&arena->messageRing); 413 RingFinish(&arena->messageRing);
394 RingFinish(&arena->threadRing); 414 RingFinish(&arena->threadRing);
395 for(rank = 0; rank < RankLIMIT; ++rank) 415 for(rank = 0; rank < RankLIMIT; ++rank)
diff --git a/mps/code/libcbt.c b/mps/code/libcbt.c
index 7c9897ec2e4..4c7bb3698b0 100644
--- a/mps/code/libcbt.c
+++ b/mps/code/libcbt.c
@@ -12,6 +12,7 @@
12#include "mpslibcb.h" 12#include "mpslibcb.h"
13 13
14#include "testlib.h" 14#include "testlib.h"
15#include "mpslib.h"
15 16
16#include <stdio.h> 17#include <stdio.h>
17#include <stdlib.h> 18#include <stdlib.h>
diff --git a/mps/code/locbwcss.c b/mps/code/locbwcss.c
index 221d1cca856..a731bc47198 100644
--- a/mps/code/locbwcss.c
+++ b/mps/code/locbwcss.c
@@ -8,6 +8,7 @@
8#include "mpslib.h" 8#include "mpslib.h"
9#include "mpsavm.h" 9#include "mpsavm.h"
10#include "testlib.h" 10#include "testlib.h"
11#include "mpslib.h"
11#include "mps.h" 12#include "mps.h"
12 13
13#include <stdlib.h> 14#include <stdlib.h>
@@ -193,6 +194,7 @@ int main(int argc, char *argv[])
193 mps_arena_t arena; 194 mps_arena_t arena;
194 195
195 randomize(argc, argv); 196 randomize(argc, argv);
197 mps_lib_assert_fail_install(assert_die);
196 198
197 die(mps_arena_create(&arena, mps_arena_class_vmnz(), testArenaSIZE), 199 die(mps_arena_create(&arena, mps_arena_class_vmnz(), testArenaSIZE),
198 "mps_arena_create"); 200 "mps_arena_create");
diff --git a/mps/code/lockcov.c b/mps/code/lockcov.c
index 45aeb1189a0..28c398e4bba 100644
--- a/mps/code/lockcov.c
+++ b/mps/code/lockcov.c
@@ -6,6 +6,7 @@
6 6
7#include "mpm.h" 7#include "mpm.h"
8#include "testlib.h" 8#include "testlib.h"
9#include "mpslib.h"
9#include <stdlib.h> /* for malloc & free */ 10#include <stdlib.h> /* for malloc & free */
10 11
11 12
diff --git a/mps/code/lockutw3.c b/mps/code/lockutw3.c
index 51a1206a37d..c66db7edd77 100644
--- a/mps/code/lockutw3.c
+++ b/mps/code/lockutw3.c
@@ -6,6 +6,7 @@
6 6
7#include "mpm.h" 7#include "mpm.h"
8#include "testlib.h" 8#include "testlib.h"
9#include "mpslib.h"
9 10
10#include "mpswin.h" 11#include "mpswin.h"
11 12
diff --git a/mps/code/locusss.c b/mps/code/locusss.c
index 81053608fbf..c9a86fa37dc 100644
--- a/mps/code/locusss.c
+++ b/mps/code/locusss.c
@@ -9,6 +9,7 @@
9#include "mpslib.h" 9#include "mpslib.h"
10#include "mpsavm.h" 10#include "mpsavm.h"
11#include "testlib.h" 11#include "testlib.h"
12#include "mpslib.h"
12#include "mps.h" 13#include "mps.h"
13 14
14#include <stdlib.h> 15#include <stdlib.h>
@@ -233,6 +234,7 @@ int main(int argc, char *argv[])
233{ 234{
234 235
235 randomize(argc, argv); 236 randomize(argc, argv);
237 mps_lib_assert_fail_install(assert_die);
236 238
237 printf("\nRunning test with no information about peak usage.\n"); 239 printf("\nRunning test with no information about peak usage.\n");
238 runArenaTest(smallArenaSize, FALSE, FALSE); 240 runArenaTest(smallArenaSize, FALSE, FALSE);
diff --git a/mps/code/locv.c b/mps/code/locv.c
index 2e906093e3f..29881f6c54e 100644
--- a/mps/code/locv.c
+++ b/mps/code/locv.c
@@ -8,6 +8,7 @@
8 */ 8 */
9 9
10#include "testlib.h" 10#include "testlib.h"
11#include "mpslib.h"
11#include "mps.h" 12#include "mps.h"
12#include "mpsclo.h" 13#include "mpsclo.h"
13#include "mpsavm.h" 14#include "mpsavm.h"
diff --git a/mps/code/messtest.c b/mps/code/messtest.c
index de60f93fdec..6382a54233f 100644
--- a/mps/code/messtest.c
+++ b/mps/code/messtest.c
@@ -8,6 +8,7 @@
8#include "mpsavm.h" 8#include "mpsavm.h"
9#include "mps.h" 9#include "mps.h"
10#include "testlib.h" 10#include "testlib.h"
11#include "mpslib.h"
11 12
12#include <stdlib.h> 13#include <stdlib.h>
13#include <stdarg.h> 14#include <stdarg.h>
diff --git a/mps/code/mpmss.c b/mps/code/mpmss.c
index 4cc85712946..83056fce707 100644
--- a/mps/code/mpmss.c
+++ b/mps/code/mpmss.c
@@ -10,6 +10,7 @@
10#include "mpslib.h" 10#include "mpslib.h"
11#include "mpsavm.h" 11#include "mpsavm.h"
12#include "testlib.h" 12#include "testlib.h"
13#include "mpslib.h"
13#include "mps.h" 14#include "mps.h"
14#include <stdlib.h> 15#include <stdlib.h>
15#include <stdarg.h> 16#include <stdarg.h>
@@ -188,6 +189,7 @@ int main(int argc, char *argv[])
188 bothOptions = MPS_PF_ALIGN == 8 ? &bothOptions8 : &bothOptions16; 189 bothOptions = MPS_PF_ALIGN == 8 ? &bothOptions8 : &bothOptions16;
189 190
190 randomize(argc, argv); 191 randomize(argc, argv);
192 mps_lib_assert_fail_install(assert_die);
191 193
192 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE), 194 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE),
193 "mps_arena_create"); 195 "mps_arena_create");
diff --git a/mps/code/mps.xcodeproj/project.pbxproj b/mps/code/mps.xcodeproj/project.pbxproj
index e2a83d5cf5e..87349c5ff94 100644
--- a/mps/code/mps.xcodeproj/project.pbxproj
+++ b/mps/code/mps.xcodeproj/project.pbxproj
@@ -36,12 +36,14 @@
36 3114A600156E940A001E0AA3 /* PBXTargetDependency */, 36 3114A600156E940A001E0AA3 /* PBXTargetDependency */,
37 3104AFFC156D37C3000A585A /* PBXTargetDependency */, 37 3104AFFC156D37C3000A585A /* PBXTargetDependency */,
38 31D60022156D3CF200337B26 /* PBXTargetDependency */, 38 31D60022156D3CF200337B26 /* PBXTargetDependency */,
39 2291A5C0175CAB5F001D4920 /* PBXTargetDependency */,
39 3114A677156E961C001E0AA3 /* PBXTargetDependency */, 40 3114A677156E961C001E0AA3 /* PBXTargetDependency */,
40 3114A612156E943B001E0AA3 /* PBXTargetDependency */, 41 3114A612156E943B001E0AA3 /* PBXTargetDependency */,
41 3114A65B156E95B4001E0AA3 /* PBXTargetDependency */, 42 3114A65B156E95B4001E0AA3 /* PBXTargetDependency */,
43 2291A5E6175CB207001D4920 /* PBXTargetDependency */,
44 2291A5E8175CB20E001D4920 /* PBXTargetDependency */,
42 3114A5CC156E932C001E0AA3 /* PBXTargetDependency */, 45 3114A5CC156E932C001E0AA3 /* PBXTargetDependency */,
43 3114A5EA156E93C4001E0AA3 /* PBXTargetDependency */, 46 3114A5EA156E93C4001E0AA3 /* PBXTargetDependency */,
44 228A22211759004C00270ECF /* PBXTargetDependency */,
45 31D60034156D3D5A00337B26 /* PBXTargetDependency */, 47 31D60034156D3D5A00337B26 /* PBXTargetDependency */,
46 3114A5A0156E915A001E0AA3 /* PBXTargetDependency */, 48 3114A5A0156E915A001E0AA3 /* PBXTargetDependency */,
47 3114A6A7156E9739001E0AA3 /* PBXTargetDependency */, 49 3114A6A7156E9739001E0AA3 /* PBXTargetDependency */,
@@ -67,10 +69,25 @@
67/* End PBXAggregateTarget section */ 69/* End PBXAggregateTarget section */
68 70
69/* Begin PBXBuildFile section */ 71/* Begin PBXBuildFile section */
70 22ABDC4E1758FD0C00965593 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; }; 72 2291A5B1175CAB2F001D4920 /* fmtdy.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC6156BE48D00753214 /* fmtdy.c */; };
71 22ABDC501758FD0C00965593 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; }; 73 2291A5B2175CAB2F001D4920 /* fmtdytst.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC7156BE48D00753214 /* fmtdytst.c */; };
72 22ABDC581758FD4F00965593 /* fbmtest.c in Sources */ = {isa = PBXBuildFile; fileRef = 22ABDC571758FD3D00965593 /* fbmtest.c */; }; 74 2291A5B3175CAB2F001D4920 /* fmthe.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAE4156BE6D500753214 /* fmthe.c */; };
73 22ABDC5A1758FDD500965593 /* freelist.c in Sources */ = {isa = PBXBuildFile; fileRef = 22ABDC591758FDCD00965593 /* freelist.c */; }; 75 2291A5B4175CAB2F001D4920 /* fmtno.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CACC156BE4C200753214 /* fmtno.c */; };
76 2291A5B5175CAB2F001D4920 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
77 2291A5B7175CAB2F001D4920 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
78 2291A5BE175CAB4E001D4920 /* awlutth.c in Sources */ = {isa = PBXBuildFile; fileRef = 2291A5A9175CAA9B001D4920 /* awlutth.c */; };
79 2291A5C5175CAFCA001D4920 /* fmtdy.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC6156BE48D00753214 /* fmtdy.c */; };
80 2291A5C6175CAFCA001D4920 /* fmtdytst.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC7156BE48D00753214 /* fmtdytst.c */; };
81 2291A5C7175CAFCA001D4920 /* fmtno.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CACC156BE4C200753214 /* fmtno.c */; };
82 2291A5C8175CAFCA001D4920 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
83 2291A5CB175CAFCA001D4920 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
84 2291A5D2175CAFF8001D4920 /* expt825.c in Sources */ = {isa = PBXBuildFile; fileRef = 2291A5AB175CAA9B001D4920 /* expt825.c */; };
85 2291A5D8175CB05F001D4920 /* fmtdy.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC6156BE48D00753214 /* fmtdy.c */; };
86 2291A5D9175CB05F001D4920 /* fmtdytst.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC7156BE48D00753214 /* fmtdytst.c */; };
87 2291A5DA175CB05F001D4920 /* fmtno.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CACC156BE4C200753214 /* fmtno.c */; };
88 2291A5DB175CB05F001D4920 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
89 2291A5DD175CB05F001D4920 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
90 2291A5E4175CB076001D4920 /* exposet0.c in Sources */ = {isa = PBXBuildFile; fileRef = 2291A5AA175CAA9B001D4920 /* exposet0.c */; };
74 22FA176916E8D6FC0098B23F /* fmtdy.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC6156BE48D00753214 /* fmtdy.c */; }; 91 22FA176916E8D6FC0098B23F /* fmtdy.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC6156BE48D00753214 /* fmtdy.c */; };
75 22FA176A16E8D6FC0098B23F /* fmtdytst.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC7156BE48D00753214 /* fmtdytst.c */; }; 92 22FA176A16E8D6FC0098B23F /* fmtdytst.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAC7156BE48D00753214 /* fmtdytst.c */; };
76 22FA176B16E8D6FC0098B23F /* fmthe.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAE4156BE6D500753214 /* fmthe.c */; }; 93 22FA176B16E8D6FC0098B23F /* fmthe.c in Sources */ = {isa = PBXBuildFile; fileRef = 3124CAE4156BE6D500753214 /* fmthe.c */; };
@@ -142,6 +159,8 @@
142 3114A63E156E94EA001E0AA3 /* abqtest.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A63D156E94EA001E0AA3 /* abqtest.c */; }; 159 3114A63E156E94EA001E0AA3 /* abqtest.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A63D156E94EA001E0AA3 /* abqtest.c */; };
143 3114A63F156E94F0001E0AA3 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; }; 160 3114A63F156E94F0001E0AA3 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
144 3114A640156E94F0001E0AA3 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; }; 161 3114A640156E94F0001E0AA3 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
162 3114A646156E9525001E0AA3 /* abq.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A645156E9525001E0AA3 /* abq.c */; };
163 3114A657156E95A6001E0AA3 /* cbstest.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A656156E95A6001E0AA3 /* cbstest.c */; };
145 3114A66E156E95F2001E0AA3 /* btcv.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A66C156E95EB001E0AA3 /* btcv.c */; }; 164 3114A66E156E95F2001E0AA3 /* btcv.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A66C156E95EB001E0AA3 /* btcv.c */; };
146 3114A66F156E95F2001E0AA3 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; }; 165 3114A66F156E95F2001E0AA3 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
147 3114A670156E95F2001E0AA3 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; }; 166 3114A670156E95F2001E0AA3 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
@@ -149,6 +168,8 @@
149 3114A673156E95F6001E0AA3 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; }; 168 3114A673156E95F6001E0AA3 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
150 3114A687156E9674001E0AA3 /* mv2test.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A686156E9674001E0AA3 /* mv2test.c */; }; 169 3114A687156E9674001E0AA3 /* mv2test.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A686156E9674001E0AA3 /* mv2test.c */; };
151 3114A688156E967C001E0AA3 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; }; 170 3114A688156E967C001E0AA3 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
171 3114A68F156E96B6001E0AA3 /* poolmv2.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A68E156E96B6001E0AA3 /* poolmv2.c */; };
172 3114A690156E96CE001E0AA3 /* abq.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A645156E9525001E0AA3 /* abq.c */; };
152 3114A6A1156E9729001E0AA3 /* messtest.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A69F156E9725001E0AA3 /* messtest.c */; }; 173 3114A6A1156E9729001E0AA3 /* messtest.c in Sources */ = {isa = PBXBuildFile; fileRef = 3114A69F156E9725001E0AA3 /* messtest.c */; };
153 3114A6A2156E972D001E0AA3 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; }; 174 3114A6A2156E972D001E0AA3 /* testlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 31EEAC9E156AB73400714D05 /* testlib.c */; };
154 3114A6A3156E972D001E0AA3 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; }; 175 3114A6A3156E972D001E0AA3 /* libmps.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31EEABFB156AAF9D00714D05 /* libmps.a */; };
@@ -231,20 +252,48 @@
231 remoteGlobalIDString = 2D604B9B16514B1A003AAF46; 252 remoteGlobalIDString = 2D604B9B16514B1A003AAF46;
232 remoteInfo = mpseventtxt; 253 remoteInfo = mpseventtxt;
233 }; 254 };
234 228A22201759004C00270ECF /* PBXContainerItemProxy */ = { 255 2291A5AE175CAB2F001D4920 /* PBXContainerItemProxy */ = {
235 isa = PBXContainerItemProxy; 256 isa = PBXContainerItemProxy;
236 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */; 257 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
237 proxyType = 1; 258 proxyType = 1;
238 remoteGlobalIDString = 22ABDC491758FD0C00965593; 259 remoteGlobalIDString = 31EEABFA156AAF9D00714D05;
239 remoteInfo = fbmtest; 260 remoteInfo = mps;
261 };
262 2291A5BF175CAB5F001D4920 /* PBXContainerItemProxy */ = {
263 isa = PBXContainerItemProxy;
264 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
265 proxyType = 1;
266 remoteGlobalIDString = 2291A5AC175CAB2F001D4920;
267 remoteInfo = awlutth;
268 };
269 2291A5C3175CAFCA001D4920 /* PBXContainerItemProxy */ = {
270 isa = PBXContainerItemProxy;
271 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
272 proxyType = 1;
273 remoteGlobalIDString = 31EEABFA156AAF9D00714D05;
274 remoteInfo = mps;
240 }; 275 };
241 22ABDC4B1758FD0C00965593 /* PBXContainerItemProxy */ = { 276 2291A5D5175CB05F001D4920 /* PBXContainerItemProxy */ = {
242 isa = PBXContainerItemProxy; 277 isa = PBXContainerItemProxy;
243 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */; 278 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
244 proxyType = 1; 279 proxyType = 1;
245 remoteGlobalIDString = 31EEABFA156AAF9D00714D05; 280 remoteGlobalIDString = 31EEABFA156AAF9D00714D05;
246 remoteInfo = mps; 281 remoteInfo = mps;
247 }; 282 };
283 2291A5E5175CB207001D4920 /* PBXContainerItemProxy */ = {
284 isa = PBXContainerItemProxy;
285 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
286 proxyType = 1;
287 remoteGlobalIDString = 2291A5D3175CB05F001D4920;
288 remoteInfo = exposet0;
289 };
290 2291A5E7175CB20E001D4920 /* PBXContainerItemProxy */ = {
291 isa = PBXContainerItemProxy;
292 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
293 proxyType = 1;
294 remoteGlobalIDString = 2291A5C1175CAFCA001D4920;
295 remoteInfo = expt825;
296 };
248 22CDE92D16E9EB9300366D0A /* PBXContainerItemProxy */ = { 297 22CDE92D16E9EB9300366D0A /* PBXContainerItemProxy */ = {
249 isa = PBXContainerItemProxy; 298 isa = PBXContainerItemProxy;
250 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */; 299 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
@@ -511,6 +560,13 @@
511 remoteGlobalIDString = 31EEABFA156AAF9D00714D05; 560 remoteGlobalIDString = 31EEABFA156AAF9D00714D05;
512 remoteInfo = mps; 561 remoteInfo = mps;
513 }; 562 };
563 3114A65A156E95B4001E0AA3 /* PBXContainerItemProxy */ = {
564 isa = PBXContainerItemProxy;
565 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
566 proxyType = 1;
567 remoteGlobalIDString = 3114A64B156E9596001E0AA3;
568 remoteInfo = cbstest;
569 };
514 3114A674156E9619001E0AA3 /* PBXContainerItemProxy */ = { 570 3114A674156E9619001E0AA3 /* PBXContainerItemProxy */ = {
515 isa = PBXContainerItemProxy; 571 isa = PBXContainerItemProxy;
516 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */; 572 containerPortal = 31EEABDA156AAE9E00714D05 /* Project object */;
@@ -696,7 +752,25 @@
696/* End PBXContainerItemProxy section */ 752/* End PBXContainerItemProxy section */
697 753
698/* Begin PBXCopyFilesBuildPhase section */ 754/* Begin PBXCopyFilesBuildPhase section */
699 22ABDC511758FD0C00965593 /* CopyFiles */ = { 755 2291A5B8175CAB2F001D4920 /* CopyFiles */ = {
756 isa = PBXCopyFilesBuildPhase;
757 buildActionMask = 2147483647;
758 dstPath = /usr/share/man/man1/;
759 dstSubfolderSpec = 0;
760 files = (
761 );
762 runOnlyForDeploymentPostprocessing = 1;
763 };
764 2291A5CC175CAFCA001D4920 /* CopyFiles */ = {
765 isa = PBXCopyFilesBuildPhase;
766 buildActionMask = 2147483647;
767 dstPath = /usr/share/man/man1/;
768 dstSubfolderSpec = 0;
769 files = (
770 );
771 runOnlyForDeploymentPostprocessing = 1;
772 };
773 2291A5DE175CB05F001D4920 /* CopyFiles */ = {
700 isa = PBXCopyFilesBuildPhase; 774 isa = PBXCopyFilesBuildPhase;
701 buildActionMask = 2147483647; 775 buildActionMask = 2147483647;
702 dstPath = /usr/share/man/man1/; 776 dstPath = /usr/share/man/man1/;
@@ -1005,11 +1079,13 @@
1005/* End PBXCopyFilesBuildPhase section */ 1079/* End PBXCopyFilesBuildPhase section */
1006 1080
1007/* Begin PBXFileReference section */ 1081/* Begin PBXFileReference section */
1008 2219DEFF174BE51900F112E9 /* mpscmvt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mpscmvt.h; sourceTree = "<group>"; }; 1082 2291A5A8175CAA51001D4920 /* poolmv2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = poolmv2.h; sourceTree = "<group>"; };
1009 226FDF2D174AC32C008E5B4F /* range.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = range.c; sourceTree = "<group>"; }; 1083 2291A5A9175CAA9B001D4920 /* awlutth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = awlutth.c; sourceTree = "<group>"; };
1010 22ABDC561758FD0C00965593 /* fbmtest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = fbmtest; sourceTree = BUILT_PRODUCTS_DIR; }; 1084 2291A5AA175CAA9B001D4920 /* exposet0.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = exposet0.c; sourceTree = "<group>"; };
1011 22ABDC571758FD3D00965593 /* fbmtest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fbmtest.c; sourceTree = "<group>"; }; 1085 2291A5AB175CAA9B001D4920 /* expt825.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = expt825.c; sourceTree = "<group>"; };
1012 22ABDC591758FDCD00965593 /* freelist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = freelist.c; sourceTree = "<group>"; }; 1086 2291A5BD175CAB2F001D4920 /* awlutth */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = awlutth; sourceTree = BUILT_PRODUCTS_DIR; };
1087 2291A5D1175CAFCA001D4920 /* expt825 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = expt825; sourceTree = BUILT_PRODUCTS_DIR; };
1088 2291A5E3175CB05F001D4920 /* exposet0 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = exposet0; sourceTree = BUILT_PRODUCTS_DIR; };
1013 22FA177516E8D6FC0098B23F /* amcssth */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = amcssth; sourceTree = BUILT_PRODUCTS_DIR; }; 1089 22FA177516E8D6FC0098B23F /* amcssth */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = amcssth; sourceTree = BUILT_PRODUCTS_DIR; };
1014 22FA177616E8D7A80098B23F /* amcssth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amcssth.c; sourceTree = "<group>"; }; 1090 22FA177616E8D7A80098B23F /* amcssth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = amcssth.c; sourceTree = "<group>"; };
1015 2D07B96C1636FC7200DB751B /* eventsql.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eventsql.c; sourceTree = "<group>"; }; 1091 2D07B96C1636FC7200DB751B /* eventsql.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = eventsql.c; sourceTree = "<group>"; };
@@ -1047,6 +1123,8 @@
1047 3114A633156E94DB001E0AA3 /* abqtest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = abqtest; sourceTree = BUILT_PRODUCTS_DIR; }; 1123 3114A633156E94DB001E0AA3 /* abqtest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = abqtest; sourceTree = BUILT_PRODUCTS_DIR; };
1048 3114A63D156E94EA001E0AA3 /* abqtest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = abqtest.c; sourceTree = "<group>"; }; 1124 3114A63D156E94EA001E0AA3 /* abqtest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = abqtest.c; sourceTree = "<group>"; };
1049 3114A645156E9525001E0AA3 /* abq.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = abq.c; sourceTree = "<group>"; }; 1125 3114A645156E9525001E0AA3 /* abq.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = abq.c; sourceTree = "<group>"; };
1126 3114A64C156E9596001E0AA3 /* cbstest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cbstest; sourceTree = BUILT_PRODUCTS_DIR; };
1127 3114A656156E95A6001E0AA3 /* cbstest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cbstest.c; sourceTree = "<group>"; };
1050 3114A662156E95D9001E0AA3 /* btcv */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = btcv; sourceTree = BUILT_PRODUCTS_DIR; }; 1128 3114A662156E95D9001E0AA3 /* btcv */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = btcv; sourceTree = BUILT_PRODUCTS_DIR; };
1051 3114A66C156E95EB001E0AA3 /* btcv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = btcv.c; sourceTree = "<group>"; }; 1129 3114A66C156E95EB001E0AA3 /* btcv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = btcv.c; sourceTree = "<group>"; };
1052 3114A67C156E9668001E0AA3 /* mv2test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mv2test; sourceTree = BUILT_PRODUCTS_DIR; }; 1130 3114A67C156E9668001E0AA3 /* mv2test */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mv2test; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1122,7 +1200,7 @@
1122 31CD33BB173A9F1500524741 /* mpscams.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mpscams.h; sourceTree = "<group>"; }; 1200 31CD33BB173A9F1500524741 /* mpscams.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = mpscams.h; sourceTree = "<group>"; };
1123 31CD33BC173A9F1500524741 /* poolams.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = poolams.c; sourceTree = "<group>"; }; 1201 31CD33BC173A9F1500524741 /* poolams.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = poolams.c; sourceTree = "<group>"; };
1124 31CD33BD173A9F1500524741 /* poolams.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = poolams.h; sourceTree = "<group>"; }; 1202 31CD33BD173A9F1500524741 /* poolams.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = poolams.h; sourceTree = "<group>"; };
1125 31CD33BE173ABB3000524741 /* poolmv2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = poolmv2.h; sourceTree = "<group>"; }; 1203 31D4D5FD1745058100BE84B5 /* poolmv2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = poolmv2.c; sourceTree = "<group>"; };
1126 31D60006156D3C5F00337B26 /* segsmss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = segsmss.c; sourceTree = "<group>"; }; 1204 31D60006156D3C5F00337B26 /* segsmss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = segsmss.c; sourceTree = "<group>"; };
1127 31D6000D156D3CB200337B26 /* awluthe */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = awluthe; sourceTree = BUILT_PRODUCTS_DIR; }; 1205 31D6000D156D3CB200337B26 /* awluthe */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = awluthe; sourceTree = BUILT_PRODUCTS_DIR; };
1128 31D60017156D3CC300337B26 /* awluthe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = awluthe.c; sourceTree = "<group>"; }; 1206 31D60017156D3CC300337B26 /* awluthe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = awluthe.c; sourceTree = "<group>"; };
@@ -1198,11 +1276,27 @@
1198/* End PBXFileReference section */ 1276/* End PBXFileReference section */
1199 1277
1200/* Begin PBXFrameworksBuildPhase section */ 1278/* Begin PBXFrameworksBuildPhase section */
1201 22ABDC4F1758FD0C00965593 /* Frameworks */ = { 1279 2291A5B6175CAB2F001D4920 /* Frameworks */ = {
1280 isa = PBXFrameworksBuildPhase;
1281 buildActionMask = 2147483647;
1282 files = (
1283 2291A5B7175CAB2F001D4920 /* libmps.a in Frameworks */,
1284 );
1285 runOnlyForDeploymentPostprocessing = 0;
1286 };
1287 2291A5CA175CAFCA001D4920 /* Frameworks */ = {
1202 isa = PBXFrameworksBuildPhase; 1288 isa = PBXFrameworksBuildPhase;
1203 buildActionMask = 2147483647; 1289 buildActionMask = 2147483647;
1204 files = ( 1290 files = (
1205 22ABDC501758FD0C00965593 /* libmps.a in Frameworks */, 1291 2291A5CB175CAFCA001D4920 /* libmps.a in Frameworks */,
1292 );
1293 runOnlyForDeploymentPostprocessing = 0;
1294 };
1295 2291A5DC175CB05F001D4920 /* Frameworks */ = {
1296 isa = PBXFrameworksBuildPhase;
1297 buildActionMask = 2147483647;
1298 files = (
1299 2291A5DD175CB05F001D4920 /* libmps.a in Frameworks */,
1206 ); 1300 );
1207 runOnlyForDeploymentPostprocessing = 0; 1301 runOnlyForDeploymentPostprocessing = 0;
1208 }; 1302 };
@@ -1496,6 +1590,15 @@
1496 name = mpseventtxt; 1590 name = mpseventtxt;
1497 sourceTree = "<group>"; 1591 sourceTree = "<group>";
1498 }; 1592 };
1593 3114A647156E956C001E0AA3 /* Mysterious */ = {
1594 isa = PBXGroup;
1595 children = (
1596 3114A68E156E96B6001E0AA3 /* poolmv2.c */,
1597 3114A645156E9525001E0AA3 /* abq.c */,
1598 );
1599 name = Mysterious;
1600 sourceTree = "<group>";
1601 };
1499 3114A6D6156E9846001E0AA3 /* Tools */ = { 1602 3114A6D6156E9846001E0AA3 /* Tools */ = {
1500 isa = PBXGroup; 1603 isa = PBXGroup;
1501 children = ( 1604 children = (
@@ -1528,11 +1631,14 @@
1528 3114A5FB156E93FC001E0AA3 /* arenacv.c */, 1631 3114A5FB156E93FC001E0AA3 /* arenacv.c */,
1529 3124CAC2156BE40100753214 /* awlut.c */, 1632 3124CAC2156BE40100753214 /* awlut.c */,
1530 31D60017156D3CC300337B26 /* awluthe.c */, 1633 31D60017156D3CC300337B26 /* awluthe.c */,
1634 2291A5A9175CAA9B001D4920 /* awlutth.c */,
1531 3114A66C156E95EB001E0AA3 /* btcv.c */, 1635 3114A66C156E95EB001E0AA3 /* btcv.c */,
1532 3114A613156E944A001E0AA3 /* bttest.c */, 1636 3114A613156E944A001E0AA3 /* bttest.c */,
1637 3114A656156E95A6001E0AA3 /* cbstest.c */,
1638 2291A5AA175CAA9B001D4920 /* exposet0.c */,
1639 2291A5AB175CAA9B001D4920 /* expt825.c */,
1533 3114A5CD156E9369001E0AA3 /* finalcv.c */, 1640 3114A5CD156E9369001E0AA3 /* finalcv.c */,
1534 3114A5E5156E93B9001E0AA3 /* finaltest.c */, 1641 3114A5E5156E93B9001E0AA3 /* finaltest.c */,
1535 22ABDC571758FD3D00965593 /* fbmtest.c */,
1536 3124CAC6156BE48D00753214 /* fmtdy.c */, 1642 3124CAC6156BE48D00753214 /* fmtdy.c */,
1537 3124CAC7156BE48D00753214 /* fmtdytst.c */, 1643 3124CAC7156BE48D00753214 /* fmtdytst.c */,
1538 3124CAE4156BE6D500753214 /* fmthe.c */, 1644 3124CAE4156BE6D500753214 /* fmthe.c */,
@@ -1590,6 +1696,7 @@
1590 children = ( 1696 children = (
1591 2D07B97B163705E400DB751B /* libsqlite3.dylib */, 1697 2D07B97B163705E400DB751B /* libsqlite3.dylib */,
1592 3114A6D6156E9846001E0AA3 /* Tools */, 1698 3114A6D6156E9846001E0AA3 /* Tools */,
1699 3114A647156E956C001E0AA3 /* Mysterious */,
1593 31A47BA8156C1E930039B1C2 /* MPS */, 1700 31A47BA8156C1E930039B1C2 /* MPS */,
1594 3124CAB3156BE1B700753214 /* Tests */, 1701 3124CAB3156BE1B700753214 /* Tests */,
1595 31EEABEF156AAF5C00714D05 /* Products */, 1702 31EEABEF156AAF5C00714D05 /* Products */,
@@ -1624,6 +1731,7 @@
1624 3114A605156E9430001E0AA3 /* bttest */, 1731 3114A605156E9430001E0AA3 /* bttest */,
1625 3114A61C156E9485001E0AA3 /* teletest */, 1732 3114A61C156E9485001E0AA3 /* teletest */,
1626 3114A633156E94DB001E0AA3 /* abqtest */, 1733 3114A633156E94DB001E0AA3 /* abqtest */,
1734 3114A64C156E9596001E0AA3 /* cbstest */,
1627 3114A662156E95D9001E0AA3 /* btcv */, 1735 3114A662156E95D9001E0AA3 /* btcv */,
1628 3114A67C156E9668001E0AA3 /* mv2test */, 1736 3114A67C156E9668001E0AA3 /* mv2test */,
1629 3114A695156E971B001E0AA3 /* messtest */, 1737 3114A695156E971B001E0AA3 /* messtest */,
@@ -1632,7 +1740,9 @@
1632 2D07B9711636FC9900DB751B /* mpseventsql */, 1740 2D07B9711636FC9900DB751B /* mpseventsql */,
1633 2D604B9C16514B1A003AAF46 /* mpseventtxt */, 1741 2D604B9C16514B1A003AAF46 /* mpseventtxt */,
1634 22FA177516E8D6FC0098B23F /* amcssth */, 1742 22FA177516E8D6FC0098B23F /* amcssth */,
1635 22ABDC561758FD0C00965593 /* fbmtest */, 1743 2291A5BD175CAB2F001D4920 /* awlutth */,
1744 2291A5D1175CAFCA001D4920 /* expt825 */,
1745 2291A5E3175CB05F001D4920 /* exposet0 */,
1636 ); 1746 );
1637 name = Products; 1747 name = Products;
1638 sourceTree = "<group>"; 1748 sourceTree = "<group>";
@@ -1640,7 +1750,6 @@
1640 31EEABF4156AAF6500714D05 /* MPM Core */ = { 1750 31EEABF4156AAF6500714D05 /* MPM Core */ = {
1641 isa = PBXGroup; 1751 isa = PBXGroup;
1642 children = ( 1752 children = (
1643 3114A645156E9525001E0AA3 /* abq.c */,
1644 31EEAC05156AB27B00714D05 /* arena.c */, 1753 31EEAC05156AB27B00714D05 /* arena.c */,
1645 31EEAC06156AB27B00714D05 /* arenacl.c */, 1754 31EEAC06156AB27B00714D05 /* arenacl.c */,
1646 31EEAC03156AB23A00714D05 /* arenavm.c */, 1755 31EEAC03156AB23A00714D05 /* arenavm.c */,
@@ -1668,7 +1777,6 @@
1668 311F2F5B17398AE900C15B6A /* eventpro.h */, 1777 311F2F5B17398AE900C15B6A /* eventpro.h */,
1669 311F2F5C17398AE900C15B6A /* eventrep.h */, 1778 311F2F5C17398AE900C15B6A /* eventrep.h */,
1670 31EEAC1A156AB2B200714D05 /* format.c */, 1779 31EEAC1A156AB2B200714D05 /* format.c */,
1671 22ABDC591758FDCD00965593 /* freelist.c */,
1672 31EEAC07156AB27B00714D05 /* global.c */, 1780 31EEAC07156AB27B00714D05 /* global.c */,
1673 31EEAC2B156AB2F200714D05 /* ld.c */, 1781 31EEAC2B156AB2F200714D05 /* ld.c */,
1674 311F2F5E17398B0E00C15B6A /* lock.h */, 1782 311F2F5E17398B0E00C15B6A /* lock.h */,
@@ -1696,6 +1804,7 @@
1696 31EEAC0A156AB27B00714D05 /* poolabs.c */, 1804 31EEAC0A156AB27B00714D05 /* poolabs.c */,
1697 31EEAC2D156AB2F200714D05 /* poolmfs.c */, 1805 31EEAC2D156AB2F200714D05 /* poolmfs.c */,
1698 31EEAC2E156AB2F200714D05 /* poolmrg.c */, 1806 31EEAC2E156AB2F200714D05 /* poolmrg.c */,
1807 31EEAC2F156AB2F200714D05 /* poolmv.c */,
1699 311F2F7B17398E7600C15B6A /* poolmv.h */, 1808 311F2F7B17398E7600C15B6A /* poolmv.h */,
1700 311F2F6D17398B6300C15B6A /* prmci3.h */, 1809 311F2F6D17398B6300C15B6A /* prmci3.h */,
1701 311F2F6E17398B6300C15B6A /* prmci6.h */, 1810 311F2F6E17398B6300C15B6A /* prmci6.h */,
@@ -1704,7 +1813,6 @@
1704 31EEAC0B156AB27B00714D05 /* protocol.c */, 1813 31EEAC0B156AB27B00714D05 /* protocol.c */,
1705 311F2F7117398B7100C15B6A /* protocol.h */, 1814 311F2F7117398B7100C15B6A /* protocol.h */,
1706 311F2F7217398B7100C15B6A /* pthrdext.h */, 1815 311F2F7217398B7100C15B6A /* pthrdext.h */,
1707 226FDF2D174AC32C008E5B4F /* range.c */,
1708 31EEAC1B156AB2B200714D05 /* ref.c */, 1816 31EEAC1B156AB2B200714D05 /* ref.c */,
1709 31EEAC0C156AB27B00714D05 /* reserv.c */, 1817 31EEAC0C156AB27B00714D05 /* reserv.c */,
1710 31EEAC30156AB2F200714D05 /* ring.c */, 1818 31EEAC30156AB2F200714D05 /* ring.c */,
@@ -1755,16 +1863,14 @@
1755 31F6CCAA1739B0CF00C48748 /* mpscawl.h */, 1863 31F6CCAA1739B0CF00C48748 /* mpscawl.h */,
1756 31F6CCAB1739B0CF00C48748 /* mpsclo.h */, 1864 31F6CCAB1739B0CF00C48748 /* mpsclo.h */,
1757 31F6CCAC1739B0CF00C48748 /* mpscmvff.h */, 1865 31F6CCAC1739B0CF00C48748 /* mpscmvff.h */,
1758 2219DEFF174BE51900F112E9 /* mpscmvt.h */,
1759 31F6CCAD1739B0CF00C48748 /* mpscsnc.h */, 1866 31F6CCAD1739B0CF00C48748 /* mpscsnc.h */,
1760 31EEAC5B156AB41900714D05 /* poolamc.c */, 1867 31EEAC5B156AB41900714D05 /* poolamc.c */,
1761 31CD33BC173A9F1500524741 /* poolams.c */, 1868 31CD33BC173A9F1500524741 /* poolams.c */,
1762 31CD33BD173A9F1500524741 /* poolams.h */, 1869 31CD33BD173A9F1500524741 /* poolams.h */,
1763 3124CACE156BE4CF00753214 /* poolawl.c */, 1870 3124CACE156BE4CF00753214 /* poolawl.c */,
1764 3124CACA156BE4A300753214 /* poollo.c */, 1871 3124CACA156BE4A300753214 /* poollo.c */,
1765 31EEAC2F156AB2F200714D05 /* poolmv.c */, 1872 31D4D5FD1745058100BE84B5 /* poolmv2.c */,
1766 31CD33BE173ABB3000524741 /* poolmv2.h */, 1873 2291A5A8175CAA51001D4920 /* poolmv2.h */,
1767 3114A68E156E96B6001E0AA3 /* poolmv2.c */,
1768 31EEAC5F156AB44D00714D05 /* poolmvff.c */, 1874 31EEAC5F156AB44D00714D05 /* poolmvff.c */,
1769 31EEAC5D156AB43F00714D05 /* poolsnc.c */, 1875 31EEAC5D156AB43F00714D05 /* poolsnc.c */,
1770 ); 1876 );
@@ -1793,22 +1899,58 @@
1793/* End PBXHeadersBuildPhase section */ 1899/* End PBXHeadersBuildPhase section */
1794 1900
1795/* Begin PBXNativeTarget section */ 1901/* Begin PBXNativeTarget section */
1796 22ABDC491758FD0C00965593 /* fbmtest */ = { 1902 2291A5AC175CAB2F001D4920 /* awlutth */ = {
1903 isa = PBXNativeTarget;
1904 buildConfigurationList = 2291A5B9175CAB2F001D4920 /* Build configuration list for PBXNativeTarget "awlutth" */;
1905 buildPhases = (
1906 2291A5AF175CAB2F001D4920 /* Sources */,
1907 2291A5B6175CAB2F001D4920 /* Frameworks */,
1908 2291A5B8175CAB2F001D4920 /* CopyFiles */,
1909 );
1910 buildRules = (
1911 );
1912 dependencies = (
1913 2291A5AD175CAB2F001D4920 /* PBXTargetDependency */,
1914 );
1915 name = awlutth;
1916 productName = awluthe;
1917 productReference = 2291A5BD175CAB2F001D4920 /* awlutth */;
1918 productType = "com.apple.product-type.tool";
1919 };
1920 2291A5C1175CAFCA001D4920 /* expt825 */ = {
1797 isa = PBXNativeTarget; 1921 isa = PBXNativeTarget;
1798 buildConfigurationList = 22ABDC521758FD0C00965593 /* Build configuration list for PBXNativeTarget "fbmtest" */; 1922 buildConfigurationList = 2291A5CD175CAFCA001D4920 /* Build configuration list for PBXNativeTarget "expt825" */;
1799 buildPhases = ( 1923 buildPhases = (
1800 22ABDC4C1758FD0C00965593 /* Sources */, 1924 2291A5C4175CAFCA001D4920 /* Sources */,
1801 22ABDC4F1758FD0C00965593 /* Frameworks */, 1925 2291A5CA175CAFCA001D4920 /* Frameworks */,
1802 22ABDC511758FD0C00965593 /* CopyFiles */, 1926 2291A5CC175CAFCA001D4920 /* CopyFiles */,
1803 ); 1927 );
1804 buildRules = ( 1928 buildRules = (
1805 ); 1929 );
1806 dependencies = ( 1930 dependencies = (
1807 22ABDC4A1758FD0C00965593 /* PBXTargetDependency */, 1931 2291A5C2175CAFCA001D4920 /* PBXTargetDependency */,
1808 ); 1932 );
1809 name = fbmtest; 1933 name = expt825;
1810 productName = fbmtest; 1934 productName = finaltest;
1811 productReference = 22ABDC561758FD0C00965593 /* fbmtest */; 1935 productReference = 2291A5D1175CAFCA001D4920 /* expt825 */;
1936 productType = "com.apple.product-type.tool";
1937 };
1938 2291A5D3175CB05F001D4920 /* exposet0 */ = {
1939 isa = PBXNativeTarget;
1940 buildConfigurationList = 2291A5DF175CB05F001D4920 /* Build configuration list for PBXNativeTarget "exposet0" */;
1941 buildPhases = (
1942 2291A5D6175CB05F001D4920 /* Sources */,
1943 2291A5DC175CB05F001D4920 /* Frameworks */,
1944 2291A5DE175CB05F001D4920 /* CopyFiles */,
1945 );
1946 buildRules = (
1947 );
1948 dependencies = (
1949 2291A5D4175CB05F001D4920 /* PBXTargetDependency */,
1950 );
1951 name = exposet0;
1952 productName = finaltest;
1953 productReference = 2291A5E3175CB05F001D4920 /* exposet0 */;
1812 productType = "com.apple.product-type.tool"; 1954 productType = "com.apple.product-type.tool";
1813 }; 1955 };
1814 22FA176416E8D6FC0098B23F /* amcssth */ = { 1956 22FA176416E8D6FC0098B23F /* amcssth */ = {
@@ -2115,6 +2257,24 @@
2115 productReference = 3114A633156E94DB001E0AA3 /* abqtest */; 2257 productReference = 3114A633156E94DB001E0AA3 /* abqtest */;
2116 productType = "com.apple.product-type.tool"; 2258 productType = "com.apple.product-type.tool";
2117 }; 2259 };
2260 3114A64B156E9596001E0AA3 /* cbstest */ = {
2261 isa = PBXNativeTarget;
2262 buildConfigurationList = 3114A653156E9596001E0AA3 /* Build configuration list for PBXNativeTarget "cbstest" */;
2263 buildPhases = (
2264 3114A648156E9596001E0AA3 /* Sources */,
2265 3114A649156E9596001E0AA3 /* Frameworks */,
2266 3114A64A156E9596001E0AA3 /* CopyFiles */,
2267 );
2268 buildRules = (
2269 );
2270 dependencies = (
2271 3114A659156E95B1001E0AA3 /* PBXTargetDependency */,
2272 );
2273 name = cbstest;
2274 productName = cbstest;
2275 productReference = 3114A64C156E9596001E0AA3 /* cbstest */;
2276 productType = "com.apple.product-type.tool";
2277 };
2118 3114A661156E95D9001E0AA3 /* btcv */ = { 2278 3114A661156E95D9001E0AA3 /* btcv */ = {
2119 isa = PBXNativeTarget; 2279 isa = PBXNativeTarget;
2120 buildConfigurationList = 3114A669156E95D9001E0AA3 /* Build configuration list for PBXNativeTarget "btcv" */; 2280 buildConfigurationList = 3114A669156E95D9001E0AA3 /* Build configuration list for PBXNativeTarget "btcv" */;
@@ -2434,11 +2594,14 @@
2434 3114A5EE156E93E7001E0AA3 /* arenacv */, 2594 3114A5EE156E93E7001E0AA3 /* arenacv */,
2435 3124CAB7156BE3EC00753214 /* awlut */, 2595 3124CAB7156BE3EC00753214 /* awlut */,
2436 31D6000C156D3CB200337B26 /* awluthe */, 2596 31D6000C156D3CB200337B26 /* awluthe */,
2597 2291A5AC175CAB2F001D4920 /* awlutth */,
2437 3114A661156E95D9001E0AA3 /* btcv */, 2598 3114A661156E95D9001E0AA3 /* btcv */,
2438 3114A604156E9430001E0AA3 /* bttest */, 2599 3114A604156E9430001E0AA3 /* bttest */,
2600 3114A64B156E9596001E0AA3 /* cbstest */,
2601 2291A5D3175CB05F001D4920 /* exposet0 */,
2602 2291A5C1175CAFCA001D4920 /* expt825 */,
2439 3114A5BC156E9315001E0AA3 /* finalcv */, 2603 3114A5BC156E9315001E0AA3 /* finalcv */,
2440 3114A5D5156E93A0001E0AA3 /* finaltest */, 2604 3114A5D5156E93A0001E0AA3 /* finaltest */,
2441 22ABDC491758FD0C00965593 /* fbmtest */,
2442 31D60026156D3D3E00337B26 /* lockcov */, 2605 31D60026156D3D3E00337B26 /* lockcov */,
2443 3114A58F156E913C001E0AA3 /* locv */, 2606 3114A58F156E913C001E0AA3 /* locv */,
2444 3114A694156E971B001E0AA3 /* messtest */, 2607 3114A694156E971B001E0AA3 /* messtest */,
@@ -2474,19 +2637,46 @@
2474 ); 2637 );
2475 runOnlyForDeploymentPostprocessing = 0; 2638 runOnlyForDeploymentPostprocessing = 0;
2476 shellPath = /bin/sh; 2639 shellPath = /bin/sh;
2477 shellScript = "# bttest and teletest are not listed here because they cannot be run\n# unattended.\nTESTCASES=\"abqtest amcss amcsshe amcssth amsss amssshe apss arenacv \\\n awlut awluthe btcv fbmtest finalcv finaltest lockcov locv \\\n messtest mpmss mpsicv mv2test poolncv qs sacss segsmss \\\n steptest walkt0\"\n../tool/testrun.sh $(for TEST in $TESTCASES; do echo $TARGET_BUILD_DIR/$TEST; done)\n\n# Coverage\nif [ \"$CONFIGURATION\" == \"Debug\" ]; then\n (cd xc/$PROJECT.build/$CONFIGURATION/$PROJECT.build/Objects-normal/x86_64 &&\n gcov mps.c 2> /dev/null) | ../tool/gcovfmt.py\nfi"; 2640 shellScript = "# Not listed here:\n# awlutth -- fails (job003506).\n# bttest and teletest -- interactive and so cannot be run unattended.\n# zcoll -- takes too long to be useful as a regularly run smoke test.\nTESTCASES=\"abqtest amcss amcsshe amcssth amsss amssshe apss arenacv \\\n awlut awluthe btcv cbstest expt825 exposet0 finalcv \\\n finaltest lockcov locv messtest mpmss mpsicv mv2test \\\n poolncv qs sacss segsmss steptest walkt0 zmess\"\n\n../tool/testrun.sh $(for TEST in $TESTCASES; do echo $TARGET_BUILD_DIR/$TEST; done)\n\n# Coverage\nif [ \"$CONFIGURATION\" == \"Debug\" ]; then\n (cd xc/$PROJECT.build/$CONFIGURATION/$PROJECT.build/Objects-normal/x86_64 &&\n gcov mps.c 2> /dev/null) | ../tool/gcovfmt.py\nfi";
2478 showEnvVarsInLog = 0; 2641 showEnvVarsInLog = 0;
2479 }; 2642 };
2480/* End PBXShellScriptBuildPhase section */ 2643/* End PBXShellScriptBuildPhase section */
2481 2644
2482/* Begin PBXSourcesBuildPhase section */ 2645/* Begin PBXSourcesBuildPhase section */
2483 22ABDC4C1758FD0C00965593 /* Sources */ = { 2646 2291A5AF175CAB2F001D4920 /* Sources */ = {
2647 isa = PBXSourcesBuildPhase;
2648 buildActionMask = 2147483647;
2649 files = (
2650 2291A5BE175CAB4E001D4920 /* awlutth.c in Sources */,
2651 2291A5B1175CAB2F001D4920 /* fmtdy.c in Sources */,
2652 2291A5B2175CAB2F001D4920 /* fmtdytst.c in Sources */,
2653 2291A5B3175CAB2F001D4920 /* fmthe.c in Sources */,
2654 2291A5B4175CAB2F001D4920 /* fmtno.c in Sources */,
2655 2291A5B5175CAB2F001D4920 /* testlib.c in Sources */,
2656 );
2657 runOnlyForDeploymentPostprocessing = 0;
2658 };
2659 2291A5C4175CAFCA001D4920 /* Sources */ = {
2484 isa = PBXSourcesBuildPhase; 2660 isa = PBXSourcesBuildPhase;
2485 buildActionMask = 2147483647; 2661 buildActionMask = 2147483647;
2486 files = ( 2662 files = (
2487 22ABDC5A1758FDD500965593 /* freelist.c in Sources */, 2663 2291A5D2175CAFF8001D4920 /* expt825.c in Sources */,
2488 22ABDC581758FD4F00965593 /* fbmtest.c in Sources */, 2664 2291A5C5175CAFCA001D4920 /* fmtdy.c in Sources */,
2489 22ABDC4E1758FD0C00965593 /* testlib.c in Sources */, 2665 2291A5C6175CAFCA001D4920 /* fmtdytst.c in Sources */,
2666 2291A5C7175CAFCA001D4920 /* fmtno.c in Sources */,
2667 2291A5C8175CAFCA001D4920 /* testlib.c in Sources */,
2668 );
2669 runOnlyForDeploymentPostprocessing = 0;
2670 };
2671 2291A5D6175CB05F001D4920 /* Sources */ = {
2672 isa = PBXSourcesBuildPhase;
2673 buildActionMask = 2147483647;
2674 files = (
2675 2291A5E4175CB076001D4920 /* exposet0.c in Sources */,
2676 2291A5D8175CB05F001D4920 /* fmtdy.c in Sources */,
2677 2291A5D9175CB05F001D4920 /* fmtdytst.c in Sources */,
2678 2291A5DA175CB05F001D4920 /* fmtno.c in Sources */,
2679 2291A5DB175CB05F001D4920 /* testlib.c in Sources */,
2490 ); 2680 );
2491 runOnlyForDeploymentPostprocessing = 0; 2681 runOnlyForDeploymentPostprocessing = 0;
2492 }; 2682 };
@@ -2662,6 +2852,16 @@
2662 files = ( 2852 files = (
2663 3114A63E156E94EA001E0AA3 /* abqtest.c in Sources */, 2853 3114A63E156E94EA001E0AA3 /* abqtest.c in Sources */,
2664 3114A63F156E94F0001E0AA3 /* testlib.c in Sources */, 2854 3114A63F156E94F0001E0AA3 /* testlib.c in Sources */,
2855 3114A646156E9525001E0AA3 /* abq.c in Sources */,
2856 );
2857 runOnlyForDeploymentPostprocessing = 0;
2858 };
2859 3114A648156E9596001E0AA3 /* Sources */ = {
2860 isa = PBXSourcesBuildPhase;
2861 buildActionMask = 2147483647;
2862 files = (
2863 3114A657156E95A6001E0AA3 /* cbstest.c in Sources */,
2864 3114A672156E95F6001E0AA3 /* testlib.c in Sources */,
2665 ); 2865 );
2666 runOnlyForDeploymentPostprocessing = 0; 2866 runOnlyForDeploymentPostprocessing = 0;
2667 }; 2867 };
@@ -2680,6 +2880,8 @@
2680 files = ( 2880 files = (
2681 3114A687156E9674001E0AA3 /* mv2test.c in Sources */, 2881 3114A687156E9674001E0AA3 /* mv2test.c in Sources */,
2682 3114A688156E967C001E0AA3 /* testlib.c in Sources */, 2882 3114A688156E967C001E0AA3 /* testlib.c in Sources */,
2883 3114A68F156E96B6001E0AA3 /* poolmv2.c in Sources */,
2884 3114A690156E96CE001E0AA3 /* abq.c in Sources */,
2683 ); 2885 );
2684 runOnlyForDeploymentPostprocessing = 0; 2886 runOnlyForDeploymentPostprocessing = 0;
2685 }; 2887 };
@@ -2845,15 +3047,35 @@
2845 target = 2D604B9B16514B1A003AAF46 /* mpseventtxt */; 3047 target = 2D604B9B16514B1A003AAF46 /* mpseventtxt */;
2846 targetProxy = 2275798816C5422900B662B0 /* PBXContainerItemProxy */; 3048 targetProxy = 2275798816C5422900B662B0 /* PBXContainerItemProxy */;
2847 }; 3049 };
2848 228A22211759004C00270ECF /* PBXTargetDependency */ = { 3050 2291A5AD175CAB2F001D4920 /* PBXTargetDependency */ = {
3051 isa = PBXTargetDependency;
3052 target = 31EEABFA156AAF9D00714D05 /* mps */;
3053 targetProxy = 2291A5AE175CAB2F001D4920 /* PBXContainerItemProxy */;
3054 };
3055 2291A5C0175CAB5F001D4920 /* PBXTargetDependency */ = {
3056 isa = PBXTargetDependency;
3057 target = 2291A5AC175CAB2F001D4920 /* awlutth */;
3058 targetProxy = 2291A5BF175CAB5F001D4920 /* PBXContainerItemProxy */;
3059 };
3060 2291A5C2175CAFCA001D4920 /* PBXTargetDependency */ = {
2849 isa = PBXTargetDependency; 3061 isa = PBXTargetDependency;
2850 target = 22ABDC491758FD0C00965593 /* fbmtest */; 3062 target = 31EEABFA156AAF9D00714D05 /* mps */;
2851 targetProxy = 228A22201759004C00270ECF /* PBXContainerItemProxy */; 3063 targetProxy = 2291A5C3175CAFCA001D4920 /* PBXContainerItemProxy */;
2852 }; 3064 };
2853 22ABDC4A1758FD0C00965593 /* PBXTargetDependency */ = { 3065 2291A5D4175CB05F001D4920 /* PBXTargetDependency */ = {
2854 isa = PBXTargetDependency; 3066 isa = PBXTargetDependency;
2855 target = 31EEABFA156AAF9D00714D05 /* mps */; 3067 target = 31EEABFA156AAF9D00714D05 /* mps */;
2856 targetProxy = 22ABDC4B1758FD0C00965593 /* PBXContainerItemProxy */; 3068 targetProxy = 2291A5D5175CB05F001D4920 /* PBXContainerItemProxy */;
3069 };
3070 2291A5E6175CB207001D4920 /* PBXTargetDependency */ = {
3071 isa = PBXTargetDependency;
3072 target = 2291A5D3175CB05F001D4920 /* exposet0 */;
3073 targetProxy = 2291A5E5175CB207001D4920 /* PBXContainerItemProxy */;
3074 };
3075 2291A5E8175CB20E001D4920 /* PBXTargetDependency */ = {
3076 isa = PBXTargetDependency;
3077 target = 2291A5C1175CAFCA001D4920 /* expt825 */;
3078 targetProxy = 2291A5E7175CB20E001D4920 /* PBXContainerItemProxy */;
2857 }; 3079 };
2858 22CDE92E16E9EB9300366D0A /* PBXTargetDependency */ = { 3080 22CDE92E16E9EB9300366D0A /* PBXTargetDependency */ = {
2859 isa = PBXTargetDependency; 3081 isa = PBXTargetDependency;
@@ -3045,6 +3267,11 @@
3045 target = 31EEABFA156AAF9D00714D05 /* mps */; 3267 target = 31EEABFA156AAF9D00714D05 /* mps */;
3046 targetProxy = 3114A658156E95B1001E0AA3 /* PBXContainerItemProxy */; 3268 targetProxy = 3114A658156E95B1001E0AA3 /* PBXContainerItemProxy */;
3047 }; 3269 };
3270 3114A65B156E95B4001E0AA3 /* PBXTargetDependency */ = {
3271 isa = PBXTargetDependency;
3272 target = 3114A64B156E9596001E0AA3 /* cbstest */;
3273 targetProxy = 3114A65A156E95B4001E0AA3 /* PBXContainerItemProxy */;
3274 };
3048 3114A675156E9619001E0AA3 /* PBXTargetDependency */ = { 3275 3114A675156E9619001E0AA3 /* PBXTargetDependency */ = {
3049 isa = PBXTargetDependency; 3276 isa = PBXTargetDependency;
3050 target = 31EEABFA156AAF9D00714D05 /* mps */; 3277 target = 31EEABFA156AAF9D00714D05 /* mps */;
@@ -3178,30 +3405,84 @@
3178/* End PBXTargetDependency section */ 3405/* End PBXTargetDependency section */
3179 3406
3180/* Begin XCBuildConfiguration section */ 3407/* Begin XCBuildConfiguration section */
3181 22ABDC531758FD0C00965593 /* Debug */ = { 3408 2291A5BA175CAB2F001D4920 /* Debug */ = {
3182 isa = XCBuildConfiguration; 3409 isa = XCBuildConfiguration;
3183 buildSettings = { 3410 buildSettings = {
3184 GCC_GENERATE_TEST_COVERAGE_FILES = YES; 3411 GCC_GENERATE_TEST_COVERAGE_FILES = YES;
3185 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES; 3412 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
3186 PRODUCT_NAME = fbmtest; 3413 PRODUCT_NAME = awlutth;
3187 }; 3414 };
3188 name = Debug; 3415 name = Debug;
3189 }; 3416 };
3190 22ABDC541758FD0C00965593 /* Release */ = { 3417 2291A5BB175CAB2F001D4920 /* Release */ = {
3191 isa = XCBuildConfiguration; 3418 isa = XCBuildConfiguration;
3192 buildSettings = { 3419 buildSettings = {
3193 GCC_GENERATE_TEST_COVERAGE_FILES = NO; 3420 GCC_GENERATE_TEST_COVERAGE_FILES = NO;
3194 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO; 3421 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
3195 PRODUCT_NAME = fbmtest; 3422 PRODUCT_NAME = awlutth;
3196 }; 3423 };
3197 name = Release; 3424 name = Release;
3198 }; 3425 };
3199 22ABDC551758FD0C00965593 /* WE */ = { 3426 2291A5BC175CAB2F001D4920 /* WE */ = {
3200 isa = XCBuildConfiguration; 3427 isa = XCBuildConfiguration;
3201 buildSettings = { 3428 buildSettings = {
3202 GCC_GENERATE_TEST_COVERAGE_FILES = NO; 3429 GCC_GENERATE_TEST_COVERAGE_FILES = NO;
3203 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO; 3430 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
3204 PRODUCT_NAME = fbmtest; 3431 PRODUCT_NAME = awlutth;
3432 };
3433 name = WE;
3434 };
3435 2291A5CE175CAFCA001D4920 /* Debug */ = {
3436 isa = XCBuildConfiguration;
3437 buildSettings = {
3438 GCC_GENERATE_TEST_COVERAGE_FILES = YES;
3439 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
3440 PRODUCT_NAME = expt825;
3441 };
3442 name = Debug;
3443 };
3444 2291A5CF175CAFCA001D4920 /* Release */ = {
3445 isa = XCBuildConfiguration;
3446 buildSettings = {
3447 GCC_GENERATE_TEST_COVERAGE_FILES = NO;
3448 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
3449 PRODUCT_NAME = expt825;
3450 };
3451 name = Release;
3452 };
3453 2291A5D0175CAFCA001D4920 /* WE */ = {
3454 isa = XCBuildConfiguration;
3455 buildSettings = {
3456 GCC_GENERATE_TEST_COVERAGE_FILES = NO;
3457 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
3458 PRODUCT_NAME = expt825;
3459 };
3460 name = WE;
3461 };
3462 2291A5E0175CB05F001D4920 /* Debug */ = {
3463 isa = XCBuildConfiguration;
3464 buildSettings = {
3465 GCC_GENERATE_TEST_COVERAGE_FILES = YES;
3466 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = YES;
3467 PRODUCT_NAME = exposet0;
3468 };
3469 name = Debug;
3470 };
3471 2291A5E1175CB05F001D4920 /* Release */ = {
3472 isa = XCBuildConfiguration;
3473 buildSettings = {
3474 GCC_GENERATE_TEST_COVERAGE_FILES = NO;
3475 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
3476 PRODUCT_NAME = exposet0;
3477 };
3478 name = Release;
3479 };
3480 2291A5E2175CB05F001D4920 /* WE */ = {
3481 isa = XCBuildConfiguration;
3482 buildSettings = {
3483 GCC_GENERATE_TEST_COVERAGE_FILES = NO;
3484 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO;
3485 PRODUCT_NAME = exposet0;
3205 }; 3486 };
3206 name = WE; 3487 name = WE;
3207 }; 3488 };
@@ -4330,12 +4611,32 @@
4330/* End XCBuildConfiguration section */ 4611/* End XCBuildConfiguration section */
4331 4612
4332/* Begin XCConfigurationList section */ 4613/* Begin XCConfigurationList section */
4333 22ABDC521758FD0C00965593 /* Build configuration list for PBXNativeTarget "fbmtest" */ = { 4614 2291A5B9175CAB2F001D4920 /* Build configuration list for PBXNativeTarget "awlutth" */ = {
4615 isa = XCConfigurationList;
4616 buildConfigurations = (
4617 2291A5BA175CAB2F001D4920 /* Debug */,
4618 2291A5BB175CAB2F001D4920 /* Release */,
4619 2291A5BC175CAB2F001D4920 /* WE */,
4620 );
4621 defaultConfigurationIsVisible = 0;
4622 defaultConfigurationName = Release;
4623 };
4624 2291A5CD175CAFCA001D4920 /* Build configuration list for PBXNativeTarget "expt825" */ = {
4625 isa = XCConfigurationList;
4626 buildConfigurations = (
4627 2291A5CE175CAFCA001D4920 /* Debug */,
4628 2291A5CF175CAFCA001D4920 /* Release */,
4629 2291A5D0175CAFCA001D4920 /* WE */,
4630 );
4631 defaultConfigurationIsVisible = 0;
4632 defaultConfigurationName = Release;
4633 };
4634 2291A5DF175CB05F001D4920 /* Build configuration list for PBXNativeTarget "exposet0" */ = {
4334 isa = XCConfigurationList; 4635 isa = XCConfigurationList;
4335 buildConfigurations = ( 4636 buildConfigurations = (
4336 22ABDC531758FD0C00965593 /* Debug */, 4637 2291A5E0175CB05F001D4920 /* Debug */,
4337 22ABDC541758FD0C00965593 /* Release */, 4638 2291A5E1175CB05F001D4920 /* Release */,
4338 22ABDC551758FD0C00965593 /* WE */, 4639 2291A5E2175CB05F001D4920 /* WE */,
4339 ); 4640 );
4340 defaultConfigurationIsVisible = 0; 4641 defaultConfigurationIsVisible = 0;
4341 defaultConfigurationName = Release; 4642 defaultConfigurationName = Release;
@@ -4530,6 +4831,16 @@
4530 defaultConfigurationIsVisible = 0; 4831 defaultConfigurationIsVisible = 0;
4531 defaultConfigurationName = Release; 4832 defaultConfigurationName = Release;
4532 }; 4833 };
4834 3114A653156E9596001E0AA3 /* Build configuration list for PBXNativeTarget "cbstest" */ = {
4835 isa = XCConfigurationList;
4836 buildConfigurations = (
4837 3114A654156E9596001E0AA3 /* Debug */,
4838 3114A655156E9596001E0AA3 /* Release */,
4839 3183880615DC30CC008E4EA0 /* WE */,
4840 );
4841 defaultConfigurationIsVisible = 0;
4842 defaultConfigurationName = Release;
4843 };
4533 3114A669156E95D9001E0AA3 /* Build configuration list for PBXNativeTarget "btcv" */ = { 4844 3114A669156E95D9001E0AA3 /* Build configuration list for PBXNativeTarget "btcv" */ = {
4534 isa = XCConfigurationList; 4845 isa = XCConfigurationList;
4535 buildConfigurations = ( 4846 buildConfigurations = (
diff --git a/mps/code/mpsicv.c b/mps/code/mpsicv.c
index 2ddd4344c59..4a3c95abe83 100644
--- a/mps/code/mpsicv.c
+++ b/mps/code/mpsicv.c
@@ -6,6 +6,7 @@
6 */ 6 */
7 7
8#include "testlib.h" 8#include "testlib.h"
9#include "mpslib.h"
9#include "mpscamc.h" 10#include "mpscamc.h"
10#include "mpsavm.h" 11#include "mpsavm.h"
11#include "mpscmv.h" 12#include "mpscmv.h"
@@ -582,6 +583,7 @@ int main(int argc, char *argv[])
582 void *marker = &marker; 583 void *marker = &marker;
583 584
584 randomize(argc, argv); 585 randomize(argc, argv);
586 mps_lib_assert_fail_install(assert_die);
585 587
586 die(mps_arena_create(&arena, mps_arena_class_vm(), TEST_ARENA_SIZE), 588 die(mps_arena_create(&arena, mps_arena_class_vm(), TEST_ARENA_SIZE),
587 "arena_create"); 589 "arena_create");
diff --git a/mps/code/mpsioan.c b/mps/code/mpsioan.c
index 966847575fb..77b27ee1712 100644
--- a/mps/code/mpsioan.c
+++ b/mps/code/mpsioan.c
@@ -1,16 +1,27 @@
1/* mpsioan.c: RAVENBROOK MEMORY POOL SYSTEM I/O IMPLEMENTATION (ANSI) 1/* mpsioan.c: RAVENBROOK MEMORY POOL SYSTEM I/O IMPLEMENTATION (ANSI)
2 * 2 *
3 * $Id$ 3 * $Id$
4 * Copyright (c) 2001 Ravenbrook Limited. See end of file for license. 4 * Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
5 * 5 *
6 * .readership: For MPS client application developers and MPS developers. 6 * .readership: For MPS client application developers and MPS developers.
7 * .sources: <design/io/> 7 * .sources: <design/io/>
8 */ 8 */
9 9
10#include "mpsio.h" 10#include "mpsio.h"
11
12#include "mpstd.h" 11#include "mpstd.h"
13 12
13/* We don't want to use the ANSI assert() to check that the interface
14 * is being used correctly, because it's not controlled by the MPS
15 * variety mechanism: we might end up with assertions being turned on
16 * in the HOT variety or turned off in the COOL variety (depending on
17 * whether or not the client program compiles the MPS with NDEBUG
18 * defined). So we include "check.h" and use AVER() instead. See
19 * job003504. If you are developing your own plinth, you should
20 * consider whether to use your own preferred assertion mechanism
21 * instead.
22 */
23#include "check.h"
24
14#ifdef MPS_OS_XC 25#ifdef MPS_OS_XC
15#include "osxc.h" 26#include "osxc.h"
16#endif 27#endif
@@ -53,15 +64,20 @@ mps_res_t mps_io_create(mps_io_t *mps_io_r)
53void mps_io_destroy(mps_io_t mps_io) 64void mps_io_destroy(mps_io_t mps_io)
54{ 65{
55 FILE *f = (FILE *)mps_io; 66 FILE *f = (FILE *)mps_io;
56 ioFile = NULL; /* Should check f == ioFile */ 67 AVER(f == ioFile);
68 AVER(f != NULL);
69
70 ioFile = NULL;
57 (void)fclose(f); 71 (void)fclose(f);
58} 72}
59 73
60 74
61mps_res_t mps_io_write(mps_io_t mps_io, void *buf, size_t size) 75mps_res_t mps_io_write(mps_io_t mps_io, void *buf, size_t size)
62{ 76{
63 FILE *f = (FILE *)mps_io; /* Should check f == ioFile */ 77 FILE *f = (FILE *)mps_io;
64 size_t n; 78 size_t n;
79 AVER(f == ioFile);
80 AVER(f != NULL);
65 81
66 n = fwrite(buf, size, 1, f); 82 n = fwrite(buf, size, 1, f);
67 if(n != 1) 83 if(n != 1)
@@ -73,8 +89,10 @@ mps_res_t mps_io_write(mps_io_t mps_io, void *buf, size_t size)
73 89
74mps_res_t mps_io_flush(mps_io_t mps_io) 90mps_res_t mps_io_flush(mps_io_t mps_io)
75{ 91{
76 FILE *f = (FILE *)mps_io; /* Should check f == ioFile */ 92 FILE *f = (FILE *)mps_io;
77 int e; 93 int e;
94 AVER(f == ioFile);
95 AVER(f != NULL);
78 96
79 e = fflush(f); 97 e = fflush(f);
80 if(e == EOF) 98 if(e == EOF)
@@ -86,7 +104,7 @@ mps_res_t mps_io_flush(mps_io_t mps_io)
86 104
87/* C. COPYRIGHT AND LICENSE 105/* C. COPYRIGHT AND LICENSE
88 * 106 *
89 * Copyright (C) 2001-2002 Ravenbrook Limited <http://www.ravenbrook.com/>. 107 * Copyright (C) 2001-2013 Ravenbrook Limited <http://www.ravenbrook.com/>.
90 * All rights reserved. This is an open source license. Contact 108 * All rights reserved. This is an open source license. Contact
91 * Ravenbrook for commercial licensing options. 109 * Ravenbrook for commercial licensing options.
92 * 110 *
diff --git a/mps/code/mpslib.h b/mps/code/mpslib.h
index f74bd986fa6..323cfa55f5c 100644
--- a/mps/code/mpslib.h
+++ b/mps/code/mpslib.h
@@ -16,30 +16,60 @@
16#include <stddef.h> 16#include <stddef.h>
17#include "mps.h" /* mps_clock_t */ 17#include "mps.h" /* mps_clock_t */
18 18
19/* Return the token that will be returned by I/O functions when the end
20 of file is reached. Analogous to `EOF` from stdio.h. */
19extern int mps_lib_get_EOF(void); 21extern int mps_lib_get_EOF(void);
20#define mps_lib_EOF (mps_lib_get_EOF()) 22#define mps_lib_EOF (mps_lib_get_EOF())
21 23
24/* An anonymous structure type used to represent files. Analagous to
25 `FILE *` from stdio.h. */
22typedef struct mps_lib_stream_s mps_lib_FILE; 26typedef struct mps_lib_stream_s mps_lib_FILE;
23 27
28/* Return the standard output and standard error streams. Analagous to
29 `stdout` and `stderr` from stdio.h. */
24extern mps_lib_FILE *mps_lib_get_stderr(void); 30extern mps_lib_FILE *mps_lib_get_stderr(void);
25extern mps_lib_FILE *mps_lib_get_stdout(void); 31extern mps_lib_FILE *mps_lib_get_stdout(void);
26#define mps_lib_stderr (mps_lib_get_stderr()) 32#define mps_lib_stderr (mps_lib_get_stderr())
27#define mps_lib_stdout (mps_lib_get_stdout()) 33#define mps_lib_stdout (mps_lib_get_stdout())
28 34
35/* Send a character or string to a stream. Analagous to `fputc` and `fputs`
36 from stdio.h. */
29extern int mps_lib_fputc(int, mps_lib_FILE *); 37extern int mps_lib_fputc(int, mps_lib_FILE *);
30extern int mps_lib_fputs(const char *, mps_lib_FILE *); 38extern int mps_lib_fputs(const char *, mps_lib_FILE *);
31 39
32extern void mps_lib_assert_fail(const char *); 40/* Assertion handler. When the MPS detects an illegal condition, it calls
33 41 `mps_lib_assert_fail` with the source code filename, line number, and
42 a string representing the condition. That function should log or report
43 the condition, and preferably allow for debugging, though in a production
44 environment it can return and the MPS will attempt to continue, though
45 this may cause failure of the process soon after. */
46extern void mps_lib_assert_fail(const char *, unsigned, const char *);
47
48/* The default ANSI plinth in mpsliban.c allows the assertion handler to be
49 replaced by passing a replacement to `mps_lib_assert_fail_install`,
50 which returns the previous handler. This is for convenience so that
51 a complete replacement plinth need not be supplied just to achieve the
52 same thing. The MPS itself does not use `mps_lib_assert_fail_install`
53 and so it need not be supplied by the plinth. */
54typedef void (*mps_lib_assert_fail_t)(const char *, unsigned, const char *);
55extern mps_lib_assert_fail_t mps_lib_assert_fail_install(mps_lib_assert_fail_t);
56
57
58/* Set, copy, or compare memory. Analagous to `memset`, `memcpy`, and
59 `memcmp` from string.h. */
34extern void *(mps_lib_memset)(void *, int, size_t); 60extern void *(mps_lib_memset)(void *, int, size_t);
35extern void *(mps_lib_memcpy)(void *, const void *, size_t); 61extern void *(mps_lib_memcpy)(void *, const void *, size_t);
36extern int (mps_lib_memcmp)(const void *, const void *, size_t); 62extern int (mps_lib_memcmp)(const void *, const void *, size_t);
37 63
38 64/* Return a measure of time since process start. Equivalent to `clock`
65 from time.h. */
39extern mps_clock_t mps_clock(void); 66extern mps_clock_t mps_clock(void);
40extern mps_clock_t mps_clocks_per_sec(void); 67extern mps_clock_t mps_clocks_per_sec(void);
41 68
42 69
70/* Return a telemetry control word from somewhere. This controls which kinds
71 of events get output to the telemetry stream. Each bit in the word
72 switches on the corresponding EventKind defined in eventcom.h. */
43extern unsigned long mps_lib_telemetry_control(void); 73extern unsigned long mps_lib_telemetry_control(void);
44 74
45 75
diff --git a/mps/code/mpsliban.c b/mps/code/mpsliban.c
index deca56d630f..4ca88a7c7ed 100644
--- a/mps/code/mpsliban.c
+++ b/mps/code/mpsliban.c
@@ -66,13 +66,30 @@ int mps_lib_fputs(const char *s, mps_lib_FILE *stream)
66} 66}
67 67
68 68
69void mps_lib_assert_fail(const char *message) 69static void mps_lib_assert_fail_default(const char *file,
70 unsigned line,
71 const char *condition)
70{ 72{
71 fflush(stdout); /* synchronize */ 73 fflush(stdout); /* synchronize */
72 fprintf(stderr, "\nMPS ASSERTION FAILURE: %s\n\nRECENT EVENTS:\n", message); 74 fprintf(stderr, "%s:%u: MPS ASSERTION FAILED: %s\n", file, line, condition);
73 EventDump((mps_lib_FILE *)stderr);
74 fflush(stderr); /* make sure the message is output */ 75 fflush(stderr); /* make sure the message is output */
75 abort(); 76 ASSERT_ABORT(); /* see config.h */
77}
78
79static mps_lib_assert_fail_t mps_lib_assert_handler = mps_lib_assert_fail_default;
80
81void mps_lib_assert_fail(const char *file,
82 unsigned line,
83 const char *condition)
84{
85 mps_lib_assert_handler(file, line, condition);
86}
87
88mps_lib_assert_fail_t mps_lib_assert_fail_install(mps_lib_assert_fail_t handler)
89{
90 mps_lib_assert_fail_t old_handler = mps_lib_assert_handler;
91 mps_lib_assert_handler = handler;
92 return old_handler;
76} 93}
77 94
78 95
@@ -181,6 +198,7 @@ unsigned long mps_lib_telemetry_control(void)
181 if (striequal(word, #name)) \ 198 if (striequal(word, #name)) \
182 mask |= (1ul << EventKind##name); 199 mask |= (1ul << EventKind##name);
183 EventKindENUM(TELEMATCH, X) 200 EventKindENUM(TELEMATCH, X)
201#undef TELEMATCH
184 } 202 }
185 203
186 return mask; 204 return mask;
diff --git a/mps/code/poolamc.c b/mps/code/poolamc.c
index 823455abbd2..1558c9c18f2 100644
--- a/mps/code/poolamc.c
+++ b/mps/code/poolamc.c
@@ -1146,6 +1146,7 @@ static Res AMCBufferFill(Addr *baseReturn, Addr *limitReturn,
1146 amcGen gen; 1146 amcGen gen;
1147 Serial genNr; 1147 Serial genNr;
1148 SegPrefStruct segPrefStruct; 1148 SegPrefStruct segPrefStruct;
1149 PoolGen pgen;
1149 1150
1150 AVERT(Pool, pool); 1151 AVERT(Pool, pool);
1151 amc = Pool2AMC(pool); 1152 amc = Pool2AMC(pool);
@@ -1161,6 +1162,8 @@ static Res AMCBufferFill(Addr *baseReturn, Addr *limitReturn,
1161 gen = amcBufGen(buffer); 1162 gen = amcBufGen(buffer);
1162 AVERT(amcGen, gen); 1163 AVERT(amcGen, gen);
1163 1164
1165 pgen = &gen->pgen;
1166
1164 /* Create and attach segment. The location of this segment is */ 1167 /* Create and attach segment. The location of this segment is */
1165 /* expressed as a generation number. We rely on the arena to */ 1168 /* expressed as a generation number. We rely on the arena to */
1166 /* organize locations appropriately. */ 1169 /* organize locations appropriately. */
@@ -1168,7 +1171,7 @@ static Res AMCBufferFill(Addr *baseReturn, Addr *limitReturn,
1168 alignedSize = SizeAlignUp(size, ArenaAlign(arena)); 1171 alignedSize = SizeAlignUp(size, ArenaAlign(arena));
1169 segPrefStruct = *SegPrefDefault(); 1172 segPrefStruct = *SegPrefDefault();
1170 SegPrefExpress(&segPrefStruct, SegPrefCollected, NULL); 1173 SegPrefExpress(&segPrefStruct, SegPrefCollected, NULL);
1171 genNr = PoolGenNr(&gen->pgen); 1174 genNr = PoolGenNr(pgen);
1172 SegPrefExpress(&segPrefStruct, SegPrefGen, &genNr); 1175 SegPrefExpress(&segPrefStruct, SegPrefGen, &genNr);
1173 MPS_ARGS_BEGIN(args) { 1176 MPS_ARGS_BEGIN(args) {
1174 MPS_ARGS_ADD_FIELD(args, amcKeySegType, p, &gen->type); /* .segtype */ 1177 MPS_ARGS_ADD_FIELD(args, amcKeySegType, p, &gen->type); /* .segtype */
@@ -1188,17 +1191,25 @@ static Res AMCBufferFill(Addr *baseReturn, Addr *limitReturn,
1188 1191
1189 /* Put the segment in the generation indicated by the buffer. */ 1192 /* Put the segment in the generation indicated by the buffer. */
1190 ++gen->segs; 1193 ++gen->segs;
1191 gen->pgen.totalSize += alignedSize; 1194 pgen->totalSize += alignedSize;
1192 /* If ramping, don't count survivors in newSize. */ 1195
1193 if(amc->rampMode != RampRAMPING 1196 /* If ramping, or if the buffer is a large proportion of the
1194 || buffer != amc->rampGen->forward 1197 * generation size, don't count it towards newSize. */
1195 || gen != amc->rampGen) 1198
1199 /* TODO: Find a better hack for this, which is really a work-around
1200 * for a nasty problem in the collection scheduling strategy.
1201 * See job003435. NB 2013-03-07. */
1202
1203 if((size < (pgen->chain->gens[genNr].capacity * 1024.0 / 4.0)) &&
1204 (amc->rampMode != RampRAMPING
1205 || buffer != amc->rampGen->forward
1206 || gen != amc->rampGen))
1196 { 1207 {
1197 gen->pgen.newSize += alignedSize; 1208 pgen->newSize += alignedSize;
1198 } else { 1209 } else {
1199 Seg2amcSeg(seg)->new = FALSE; 1210 Seg2amcSeg(seg)->new = FALSE;
1200 } 1211 }
1201 PoolGenUpdateZones(&gen->pgen, seg); 1212 PoolGenUpdateZones(pgen, seg);
1202 1213
1203 base = SegBase(seg); 1214 base = SegBase(seg);
1204 *baseReturn = base; 1215 *baseReturn = base;
diff --git a/mps/code/poolawl.c b/mps/code/poolawl.c
index 68675722aa8..652a2ce52d3 100644
--- a/mps/code/poolawl.c
+++ b/mps/code/poolawl.c
@@ -351,7 +351,7 @@ static Bool AWLCanTrySingleAccess(Arena arena, AWL awl, Seg seg, Addr addr)
351 if(AWLHaveTotalSALimit) { 351 if(AWLHaveTotalSALimit) {
352 if(awl->succAccesses >= AWLTotalSALimit) { 352 if(awl->succAccesses >= AWLTotalSALimit) {
353 STATISTIC(awl->stats.declined++); 353 STATISTIC(awl->stats.declined++);
354 EVENT2(AWLDeclineTotal, seg, awl->succAccesses); 354 EVENT2(AWLDeclineTotal, seg, (EventFU)awl->succAccesses);
355 return FALSE; /* decline single access because of total limit */ 355 return FALSE; /* decline single access because of total limit */
356 } 356 }
357 } 357 }
@@ -362,7 +362,7 @@ static Bool AWLCanTrySingleAccess(Arena arena, AWL awl, Seg seg, Addr addr)
362 if(AWLHaveSegSALimit) { 362 if(AWLHaveSegSALimit) {
363 if(awlseg->singleAccesses >= AWLSegSALimit) { 363 if(awlseg->singleAccesses >= AWLSegSALimit) {
364 STATISTIC(awl->stats.declined++); 364 STATISTIC(awl->stats.declined++);
365 EVENT2(AWLDeclineSeg, seg, awlseg->singleAccesses); 365 EVENT2(AWLDeclineSeg, seg, (EventFU)awlseg->singleAccesses);
366 return FALSE; /* decline single access because of segment limit */ 366 return FALSE; /* decline single access because of segment limit */
367 } 367 }
368 } 368 }
diff --git a/mps/code/poolmfs.c b/mps/code/poolmfs.c
index b26bdc9d05c..3f596c5d251 100644
--- a/mps/code/poolmfs.c
+++ b/mps/code/poolmfs.c
@@ -1,7 +1,7 @@
1/* poolmfs.c: MANUAL FIXED SMALL UNIT POOL 1/* poolmfs.c: MANUAL FIXED SMALL UNIT POOL
2 * 2 *
3 * $Id$ 3 * $Id$
4 * Copyright (c) 2001-2012 Ravenbrook Limited. See end of file for license. 4 * Copyright (c) 2001-2013 Ravenbrook Limited. See end of file for license.
5 * 5 *
6 * This is the implementation of the MFS pool class. 6 * This is the implementation of the MFS pool class.
7 * 7 *
@@ -111,7 +111,6 @@ static Res MFSInit(Pool pool, ArgList args)
111 extendBy = unitSize; 111 extendBy = unitSize;
112 } 112 }
113 113
114 AVER(unitSize >= UNIT_MIN);
115 AVER(extendBy >= unitSize); 114 AVER(extendBy >= unitSize);
116 115
117 mfs = PoolPoolMFS(pool); 116 mfs = PoolPoolMFS(pool);
@@ -119,6 +118,8 @@ static Res MFSInit(Pool pool, ArgList args)
119 118
120 mfs->unroundedUnitSize = unitSize; 119 mfs->unroundedUnitSize = unitSize;
121 120
121 if (unitSize < UNIT_MIN)
122 unitSize = UNIT_MIN;
122 unitSize = SizeAlignUp(unitSize, MPS_PF_ALIGN); 123 unitSize = SizeAlignUp(unitSize, MPS_PF_ALIGN);
123 extendBy = SizeAlignUp(extendBy, ArenaAlign(arena)); 124 extendBy = SizeAlignUp(extendBy, ArenaAlign(arena));
124 125
@@ -336,7 +337,7 @@ Bool MFSCheck(MFS mfs)
336 337
337/* C. COPYRIGHT AND LICENSE 338/* C. COPYRIGHT AND LICENSE
338 * 339 *
339 * Copyright (C) 2001-2012 Ravenbrook Limited <http://www.ravenbrook.com/>. 340 * Copyright (C) 2001-2013 Ravenbrook Limited <http://www.ravenbrook.com/>.
340 * All rights reserved. This is an open source license. Contact 341 * All rights reserved. This is an open source license. Contact
341 * Ravenbrook for commercial licensing options. 342 * Ravenbrook for commercial licensing options.
342 * 343 *
diff --git a/mps/code/poolncv.c b/mps/code/poolncv.c
index ef0b67eb75e..3df734a3df8 100644
--- a/mps/code/poolncv.c
+++ b/mps/code/poolncv.c
@@ -8,6 +8,7 @@
8#include "pooln.h" 8#include "pooln.h"
9#include "mpsavm.h" 9#include "mpsavm.h"
10#include "testlib.h" 10#include "testlib.h"
11#include "mpslib.h"
11 12
12 13
13static void testit(ArenaClass class, ArgList args) 14static void testit(ArenaClass class, ArgList args)
diff --git a/mps/code/poolsnc.c b/mps/code/poolsnc.c
index 85e822bb396..49cdceeb25d 100644
--- a/mps/code/poolsnc.c
+++ b/mps/code/poolsnc.c
@@ -359,6 +359,17 @@ static Bool sncFindFreeSeg(Seg *segReturn, SNC snc, Size size)
359} 359}
360 360
361 361
362/* SNCVarargs -- decode obsolete varargs */
363
364static void SNCVarargs(ArgStruct args[MPS_ARGS_MAX], va_list varargs)
365{
366 args[0].key = MPS_KEY_FORMAT;
367 args[0].val.format = va_arg(varargs, Format);
368 args[1].key = MPS_KEY_ARGS_END;
369 AVER(ArgListCheck(args));
370}
371
372
362/* SNCInit -- initialize an SNC pool */ 373/* SNCInit -- initialize an SNC pool */
363 374
364static Res SNCInit(Pool pool, ArgList args) 375static Res SNCInit(Pool pool, ArgList args)
@@ -664,6 +675,7 @@ DEFINE_POOL_CLASS(SNCPoolClass, this)
664 this->name = "SNC"; 675 this->name = "SNC";
665 this->size = sizeof(SNCStruct); 676 this->size = sizeof(SNCStruct);
666 this->offset = offsetof(SNCStruct, poolStruct); 677 this->offset = offsetof(SNCStruct, poolStruct);
678 this->varargs = SNCVarargs;
667 this->init = SNCInit; 679 this->init = SNCInit;
668 this->finish = SNCFinish; 680 this->finish = SNCFinish;
669 this->bufferFill = SNCBufferFill; 681 this->bufferFill = SNCBufferFill;
diff --git a/mps/code/protw3.c b/mps/code/protw3.c
index 72235a763a5..37d886644f6 100644
--- a/mps/code/protw3.c
+++ b/mps/code/protw3.c
@@ -44,7 +44,6 @@ void ProtSet(Addr base, Addr limit, AccessSet mode)
44LONG WINAPI ProtSEHfilter(LPEXCEPTION_POINTERS info) 44LONG WINAPI ProtSEHfilter(LPEXCEPTION_POINTERS info)
45{ 45{
46 LPEXCEPTION_RECORD er; 46 LPEXCEPTION_RECORD er;
47 ULONG_PTR iswrite;
48 ULONG_PTR address; 47 ULONG_PTR address;
49 AccessSet mode; 48 AccessSet mode;
50 Addr base, limit; 49 Addr base, limit;
@@ -68,15 +67,22 @@ LONG WINAPI ProtSEHfilter(LPEXCEPTION_POINTERS info)
68 67
69 AVER(er->NumberParameters >= 2); 68 AVER(er->NumberParameters >= 2);
70 69
71 iswrite = er->ExceptionInformation[0]; /* 0 read; 1 write */ 70 switch (er->ExceptionInformation[0]) {
72 AVER(iswrite == 0 || iswrite == 1); 71 case 0: /* read */
73 72 case 8: /* execute */
74 /* Pages cannot be made write-only, so an attempt to write must
75 * also cause a read-access if necessary */
76 if(iswrite)
77 mode = AccessREAD | AccessWRITE;
78 else
79 mode = AccessREAD; 73 mode = AccessREAD;
74 break;
75 case 1: /* write */
76 /* Pages cannot be made write-only, so an attempt to write must
77 also cause a read-access if necessary */
78 mode = AccessREAD | AccessWRITE;
79 break;
80 default:
81 /* <http://msdn.microsoft.com/en-us/library/aa363082%28VS.85%29.aspx> */
82 NOTREACHED;
83 mode = AccessREAD | AccessWRITE;
84 break;
85 }
80 86
81 address = er->ExceptionInformation[1]; 87 address = er->ExceptionInformation[1];
82 88
diff --git a/mps/code/qs.c b/mps/code/qs.c
index 2bf41c4c8f4..13b2070da19 100644
--- a/mps/code/qs.c
+++ b/mps/code/qs.c
@@ -23,6 +23,7 @@
23 */ 23 */
24 24
25#include "testlib.h" 25#include "testlib.h"
26#include "mpslib.h"
26#include "mps.h" 27#include "mps.h"
27#include "mpsavm.h" 28#include "mpsavm.h"
28#include "mpscamc.h" 29#include "mpscamc.h"
@@ -528,6 +529,7 @@ int main(int argc, char *argv[])
528 void *r; 529 void *r;
529 530
530 randomize(argc, argv); 531 randomize(argc, argv);
532 mps_lib_assert_fail_install(assert_die);
531 533
532 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE), 534 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE),
533 "mps_arena_create"); 535 "mps_arena_create");
diff --git a/mps/code/sacss.c b/mps/code/sacss.c
index 6501a12e952..1241caff19c 100644
--- a/mps/code/sacss.c
+++ b/mps/code/sacss.c
@@ -12,6 +12,7 @@
12#include "mps.h" 12#include "mps.h"
13 13
14#include "testlib.h" 14#include "testlib.h"
15#include "mpslib.h"
15 16
16#include <stdio.h> 17#include <stdio.h>
17#include "mpstd.h" 18#include "mpstd.h"
@@ -191,6 +192,7 @@ int main(int argc, char *argv[])
191 mps_arena_t arena; 192 mps_arena_t arena;
192 193
193 randomize(argc, argv); 194 randomize(argc, argv);
195 mps_lib_assert_fail_install(assert_die);
194 196
195 die(mps_arena_create(&arena, mps_arena_class_vmnz(), testArenaSIZE), 197 die(mps_arena_create(&arena, mps_arena_class_vmnz(), testArenaSIZE),
196 "mps_arena_create"); 198 "mps_arena_create");
diff --git a/mps/code/segsmss.c b/mps/code/segsmss.c
index 5f325a30e8f..f5f064cc59f 100644
--- a/mps/code/segsmss.c
+++ b/mps/code/segsmss.c
@@ -16,6 +16,7 @@
16#include "fmtdy.h" 16#include "fmtdy.h"
17#include "fmtdytst.h" 17#include "fmtdytst.h"
18#include "testlib.h" 18#include "testlib.h"
19#include "mpslib.h"
19#include "chain.h" 20#include "chain.h"
20#include "mpscams.h" 21#include "mpscams.h"
21#include "mpsavm.h" 22#include "mpsavm.h"
@@ -855,6 +856,7 @@ int main(int argc, char *argv[])
855 void *r; 856 void *r;
856 857
857 randomize(argc, argv); 858 randomize(argc, argv);
859 mps_lib_assert_fail_install(assert_die);
858 860
859 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE), 861 die(mps_arena_create(&arena, mps_arena_class_vm(), testArenaSIZE),
860 "arena_create"); 862 "arena_create");
diff --git a/mps/code/steptest.c b/mps/code/steptest.c
index 61ec888801b..159ecda4096 100644
--- a/mps/code/steptest.c
+++ b/mps/code/steptest.c
@@ -9,6 +9,7 @@
9#include "fmtdy.h" 9#include "fmtdy.h"
10#include "fmtdytst.h" 10#include "fmtdytst.h"
11#include "testlib.h" 11#include "testlib.h"
12#include "mpslib.h"
12#include "mpm.h" 13#include "mpm.h"
13#include "mpscamc.h" 14#include "mpscamc.h"
14#include "mpsavm.h" 15#include "mpsavm.h"
@@ -492,6 +493,7 @@ int main(int argc, char *argv[])
492 prepare_clock(); 493 prepare_clock();
493 494
494 randomize(argc, argv); 495 randomize(argc, argv);
496 mps_lib_assert_fail_install(assert_die);
495 497
496 while (test_number < TESTS) { 498 while (test_number < TESTS) {
497 mps_arena_t arena; 499 mps_arena_t arena;
diff --git a/mps/code/teletest.c b/mps/code/teletest.c
index b857494da73..5b74a2a8908 100644
--- a/mps/code/teletest.c
+++ b/mps/code/teletest.c
@@ -10,6 +10,7 @@
10#include "mps.h" 10#include "mps.h"
11#include "mpsavm.h" 11#include "mpsavm.h"
12#include "testlib.h" 12#include "testlib.h"
13#include "mpslib.h"
13 14
14#include <stdlib.h> 15#include <stdlib.h>
15 16
diff --git a/mps/code/testlib.c b/mps/code/testlib.c
index b55e2876ac5..7634fcf181c 100644
--- a/mps/code/testlib.c
+++ b/mps/code/testlib.c
@@ -327,6 +327,7 @@ void verror(const char *format, va_list args)
327 fflush(stdout); /* synchronize */ 327 fflush(stdout); /* synchronize */
328 vfprintf(stderr, format, args); 328 vfprintf(stderr, format, args);
329 fprintf(stderr, "\n"); 329 fprintf(stderr, "\n");
330 fflush(stderr); /* make sure the message is output */
330 exit(1); 331 exit(1);
331} 332}
332 333
@@ -373,6 +374,15 @@ void cdie(int res, const char *s)
373} 374}
374 375
375 376
377/* assert_die -- always die on assertion */
378
379void assert_die(const char *file, unsigned line, const char *condition)
380{
381 error("%s:%u: MPS ASSERTION FAILED: %s\n", file, line, condition);
382}
383
384
385
376/* C. COPYRIGHT AND LICENSE 386/* C. COPYRIGHT AND LICENSE
377 * 387 *
378 * Copyright (c) 2001-2013 Ravenbrook Limited <http://www.ravenbrook.com/>. 388 * Copyright (c) 2001-2013 Ravenbrook Limited <http://www.ravenbrook.com/>.
diff --git a/mps/code/testlib.h b/mps/code/testlib.h
index 1d0ee79289b..9df253d797e 100644
--- a/mps/code/testlib.h
+++ b/mps/code/testlib.h
@@ -159,6 +159,15 @@ extern void die_expect(mps_res_t res, mps_res_t expected, const char *s);
159extern void cdie(int res, const char *s); 159extern void cdie(int res, const char *s);
160 160
161 161
162/* assert_die -- always die on assertion
163 *
164 * The MPS assertion handler may not stop in the HOT variety,
165 * preventing tests from detecting defects. This one does.
166 */
167
168void assert_die(const char *file, unsigned line, const char *condition);
169
170
162/* error, verror -- die with message */ 171/* error, verror -- die with message */
163 172
164extern void error(const char *format, ...); 173extern void error(const char *format, ...);
diff --git a/mps/code/trace.c b/mps/code/trace.c
index 9401696ba2d..041b136711f 100644
--- a/mps/code/trace.c
+++ b/mps/code/trace.c
@@ -732,6 +732,8 @@ found:
732 arena->busyTraces = TraceSetAdd(arena->busyTraces, trace); 732 arena->busyTraces = TraceSetAdd(arena->busyTraces, trace);
733 AVERT(Trace, trace); 733 AVERT(Trace, trace);
734 734
735 EVENT3(TraceCreate, trace, arena, (EventFU)why);
736
735 /* We suspend the mutator threads so that the PoolWhiten methods */ 737 /* We suspend the mutator threads so that the PoolWhiten methods */
736 /* can calculate white sets without the mutator allocating in */ 738 /* can calculate white sets without the mutator allocating in */
737 /* buffers under our feet. */ 739 /* buffers under our feet. */
@@ -1681,7 +1683,7 @@ Res TraceStart(Trace trace, double mortality, double finishingTime)
1681 AVER(finishingTime >= 0.0); 1683 AVER(finishingTime >= 0.0);
1682 1684
1683 arena = trace->arena; 1685 arena = trace->arena;
1684 1686
1685 /* From the already set up white set, derive a grey set. */ 1687 /* From the already set up white set, derive a grey set. */
1686 1688
1687 /* @@@@ Instead of iterating over all the segments, we could */ 1689 /* @@@@ Instead of iterating over all the segments, we could */
@@ -1789,6 +1791,11 @@ Res TraceStart(Trace trace, double mortality, double finishingTime)
1789 1791
1790 /* @@ DIAG for rate of scanning here. */ 1792 /* @@ DIAG for rate of scanning here. */
1791 1793
1794 EVENT8(TraceStart, trace, mortality, finishingTime,
1795 trace->condemned, trace->notCondemned,
1796 trace->foundation, trace->white,
1797 trace->rate);
1798
1792 STATISTIC_STAT(EVENT7(TraceStatCondemn, trace, 1799 STATISTIC_STAT(EVENT7(TraceStatCondemn, trace,
1793 trace->condemned, trace->notCondemned, 1800 trace->condemned, trace->notCondemned,
1794 trace->foundation, trace->rate, 1801 trace->foundation, trace->rate,
diff --git a/mps/code/walkt0.c b/mps/code/walkt0.c
index 83170ec4929..3e8c8ce8293 100644
--- a/mps/code/walkt0.c
+++ b/mps/code/walkt0.c
@@ -9,6 +9,7 @@
9#include "fmtdy.h" 9#include "fmtdy.h"
10#include "fmtdytst.h" 10#include "fmtdytst.h"
11#include "testlib.h" 11#include "testlib.h"
12#include "mpslib.h"
12#include "mpscamc.h" 13#include "mpscamc.h"
13#include "mpsavm.h" 14#include "mpsavm.h"
14#include "mpstd.h" 15#include "mpstd.h"
@@ -201,6 +202,7 @@ int main(int argc, char *argv[])
201 void *r; 202 void *r;
202 203
203 randomize(argc, argv); 204 randomize(argc, argv);
205 mps_lib_assert_fail_install(assert_die);
204 206
205 die(mps_arena_create(&arena, mps_arena_class_vm(), 207 die(mps_arena_create(&arena, mps_arena_class_vm(),
206 testArenaSIZE), 208 testArenaSIZE),
diff --git a/mps/code/zcoll.c b/mps/code/zcoll.c
index ad2f272ceb4..66b4d268b8d 100644
--- a/mps/code/zcoll.c
+++ b/mps/code/zcoll.c
@@ -55,6 +55,7 @@
55 */ 55 */
56 56
57#include "testlib.h" 57#include "testlib.h"
58#include "mpslib.h"
58#include "mps.h" 59#include "mps.h"
59#include "mpscamc.h" 60#include "mpscamc.h"
60#include "mpsavm.h" 61#include "mpsavm.h"
@@ -838,6 +839,7 @@ static void testscriptA(const char *script)
838int main(int argc, char *argv[]) 839int main(int argc, char *argv[])
839{ 840{
840 randomize(argc, argv); 841 randomize(argc, argv);
842 mps_lib_assert_fail_install(assert_die);
841 843
842 /* 1<<19 == 524288 == 1/2 Mebibyte */ 844 /* 1<<19 == 524288 == 1/2 Mebibyte */
843 /* 16<<20 == 16777216 == 16 Mebibyte */ 845 /* 16<<20 == 16777216 == 16 Mebibyte */
diff --git a/mps/code/zmess.c b/mps/code/zmess.c
index cd4ef83dd7c..6a117eb985b 100644
--- a/mps/code/zmess.c
+++ b/mps/code/zmess.c
@@ -100,6 +100,7 @@
100 */ 100 */
101 101
102#include "testlib.h" 102#include "testlib.h"
103#include "mpslib.h"
103#include "mps.h" 104#include "mps.h"
104#include "mpscamc.h" 105#include "mpscamc.h"
105#include "mpsavm.h" 106#include "mpsavm.h"
@@ -490,6 +491,7 @@ int main(int argc, char *argv[])
490{ 491{
491 492
492 randomize(argc, argv); 493 randomize(argc, argv);
494 mps_lib_assert_fail_install(assert_die);
493 495
494 /* Scripts that should fail (uncomment to show failure is detected) */ 496 /* Scripts that should fail (uncomment to show failure is detected) */
495 /*testscriptA("C.");*/ 497 /*testscriptA("C.");*/