Gareth Rees
d55dc069ab
Merge branch 'branch/2020-08-24/eintr'
2020-08-30 09:24:08 +01:00
Gareth Rees
c13b7610d3
Set sa_restart flag when calling sigaction().
...
This ensures that if a mutator thread is blocked in a system call when
the MPS handles a signal, the system call will not fail with EINTR but
instead will be restarted.
Add a test case for the thread suspend and resume signals.
2020-08-30 09:23:35 +01:00
Gareth Rees
2172c24889
Use correct function for creating arena.
...
Since we are passing a list of keyword arguments, we must call the
keyword-taking function (mps_arena_create_k) and not the deprecated
varargs function (mps_arena_create).
2020-08-24 17:17:37 +01:00
Gareth Rees
8d5068b5ab
Avoid using deprecated function mps_tramp.
...
Use mps_root_create_thread in preference to mps_root_create_reg.
New test harness run_test passes pointer to cold end of stack, since this is needed by many tests.
Copied from Perforce
Change: 195917
2019-01-09 16:17:17 +00:00
Gareth Rees
c68dfd2ac4
Use keyword argument interface to avoid underpromotion of arguments.
...
Copied from Perforce
Change: 195911
2019-01-08 14:43:41 +00:00
Gareth Rees
cdb8c9bc5e
Merge branch/2018-08-01/land-insert-steal into the master sources.
...
Copied from Perforce
Change: 194968
2018-08-13 14:42:25 +01:00
Gareth Rees
059f4906eb
Need to set the spare commit limit in order for the committed memory to go down.
...
Copied from Perforce
Change: 194956
2018-08-13 12:54:03 +01:00
Gareth Rees
5323dedb45
Add some test coverage for mps_key_spare, mps_arena_spare, and mps_arena_spare_set.
...
Copied from Perforce
Change: 194945
2018-08-13 10:09:45 +01:00
Gareth Rees
c9c8c03249
Use mps_class_mvff_debug.
...
Copied from Perforce
Change: 194866
2018-08-02 14:26:20 +01:00
Gareth Rees
9e5c14a5d1
Replace mv debug with mvff debug.
...
Remove some remaining occurrences of mpscvm.h.
Copied from Perforce
Change: 194865
2018-08-02 14:20:23 +01:00
Gareth Rees
3fcea3ce5d
New land functions landinsertsteal and landdeletesteal and unit test.
...
Use LandInsertSteal instead of arenaFreeLandInsertSteal.
Add regression test for job004102.
Copied from Perforce
Change: 194861
2018-08-02 13:16:15 +01:00
Gareth Rees
c89813834d
Replace deprecatd mv with mvff in test cases.
...
Delete eventrep and replay modules -- these have been broken for a long time.
Copied from Perforce
Change: 194843
2018-08-01 13:10:09 +01:00
Gareth Rees
5c8e6891bb
Update mmqa tests to cope with the removal of mv:
...
* Fix typo in argerr/41.c.
* Delete argerr/43.c and argerr/44.c: MVFF doesn't take a maximum size argument so we can't test for erroneous values of this argument.
* Fix assertion condition in conerr/59.c.
* In function/136.c, need to specify extend-by for second pool, now that it's an MVFF pool.
* function/224.c now passes (fragmentation is avoided because MVFF allocations can cross extent boundaries).
Copied from Perforce
Change: 194712
2018-07-23 11:05:31 +01:00
Gareth Rees
08ca826368
Ensure that mmqa tests require either a pass or a specified failure.
...
Copied from Perforce
Change: 194668
2018-07-16 12:57:42 +01:00
Gareth Rees
b68376aa8c
Mmqa tests function/{7,21,22}.c now pass on 32-bit platforms.
...
MMQA tests function/{8,98}.c now pass on 64-bit platforms.
Copied from Perforce
Change: 194599
2018-07-11 16:24:47 +01:00
Gareth Rees
9b4f5dfc0e
Avoid "warning c4334: '<<': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)" from microsoft visual c.
...
Copied from Perforce
Change: 194586
2018-07-11 13:13:17 +01:00
Gareth Rees
cd9e76a6de
Check that traces with no condemned objects can be started and finished without error in each automatic pool class. regression test for job004086.
...
Copied from Perforce
Change: 194475
2018-07-06 14:26:54 +01:00
Gareth Rees
97f8625195
Fix issues identified in review https://info.ravenbrook.com/mail/2018/07/03/10-10-11/0/
...
Copied from Perforce
Change: 194382
2018-07-03 13:04:21 +01:00
Gareth Rees
a8ac974415
Avoid "conversion from 'size_t' to 'unsigned long', possible loss of data" warnings from microsoft visual c.
...
Copied from Perforce
Change: 192462
ServerID: perforce.ravenbrook.com
2016-09-26 16:59:35 +01:00
Gareth Rees
cc0d5a2b25
Avoid parentheses in parameters so that the test case passes on windows.
...
Copied from Perforce
Change: 192457
ServerID: perforce.ravenbrook.com
2016-09-26 16:17:38 +01:00
Gareth Rees
31db2e055c
Platform alignment is 16 on w3i6mv, so use mps_pf_align to avoid alignment failure.
...
Copied from Perforce
Change: 192456
ServerID: perforce.ravenbrook.com
2016-09-26 16:13:39 +01:00
Gareth Rees
3398d94ecf
Avoid warnings from gcc 4.2 on freebsd.
...
Copied from Perforce
Change: 192310
ServerID: perforce.ravenbrook.com
2016-09-12 14:39:55 +01:00
Gareth Rees
665d8197f0
Use area roots (instead of a thread root) to ensure that objects are finalized reliably even in the hot variety.
...
Copied from Perforce
Change: 192235
ServerID: perforce.ravenbrook.com
2016-09-08 10:57:07 +01:00
Gareth Rees
c2e44cb103
The awl pool contains only weak references to objects that died, so the mps may be able to deduce (via its summary) that it does not need to be condemned, even to collect the world.
...
Copied from Perforce
Change: 192226
ServerID: perforce.ravenbrook.com
2016-09-07 10:20:39 +01:00
Gareth Rees
7e0675d595
Fix mmqa function test cases so that they run on windows. in detail:
...
1. On w3i6mv, int and long are 32 bits, so these types can't be used to hold a size_t or an mps_word_t. See 26.c, 38.c, 47.c, 66.c, 123.c, 136.c, 164.c, 165.c, 200.c, 203.c, 204.c, 205.c, 206.c, 207.c, 215.c, 223.c.
2. The Windows command line doesn't cope with parentheses. See 170.c.
3. The natural platform alignment is 16 bytes on w3i6mv, so allocations into pools using the default alignment need to be rounded up. See 21.c, 22.c, 203.c, 204.c, 205.c.
4. Microsoft Visual C/C++ is fussy about signed/unsigned comparison. See 226.c.
5. windows.h defines a SIZE macro so you can't use it as a parameter. See 232.c.
Copied from Perforce
Change: 191569
ServerID: perforce.ravenbrook.com
2016-04-22 15:44:58 +01:00
Gareth Rees
11a5f2bf29
Arenacompact can be called via tracedestroyinit too.
...
Copied from Perforce
Change: 190949
ServerID: perforce.ravenbrook.com
2016-04-11 19:47:52 +01:00
Gareth Rees
7660e38f3e
Catch-up merge from master sources to branch/2015-08-11/compact.
...
Copied from Perforce
Change: 190901
ServerID: perforce.ravenbrook.com
2016-04-11 14:40:44 +01:00
Gareth Rees
d0bc388308
Remove mmqa test cases for the reservoir.
...
Copied from Perforce
Change: 190018
ServerID: perforce.ravenbrook.com
2016-03-13 22:44:49 +00:00
Gareth Rees
8a43718971
Avoid unused variable warnings.
...
Copied from Perforce
Change: 189978
ServerID: perforce.ravenbrook.com
2016-03-13 14:58:09 +00:00
Gareth Rees
2bdef084ba
Avoid warnings when compiling argerr/{146,147,148}.c with gcc.
...
Test cases conerr/{53,54}.c rely on junk in uninitialized local variables, so ensure that there is some.
Test case function/72.c relies on an object moving, but it might be pinned by an ambiguous reference from the stack, so don't register the stack as a root.
Copied from Perforce
Change: 189964
ServerID: perforce.ravenbrook.com
2016-03-13 14:16:39 +00:00
Gareth Rees
5899074dfb
A few more mmqa speedups.
...
Copied from Perforce
Change: 189948
ServerID: perforce.ravenbrook.com
2016-03-13 11:42:53 +00:00
Gareth Rees
37fc360ffe
Speed up more mmqa test cases. on my laptop, the whole mmqa test suite (or at least the passing subset) now takes 5 minutes in the hot variety and 11 minutes in the cool variety.
...
Copied from Perforce
Change: 189947
ServerID: perforce.ravenbrook.com
2016-03-13 11:42:32 +00:00
Gareth Rees
f0eb2eb500
Speed up mmqa test cases by reducing iterations. additionally:
...
* Take test options as parameters=.
* Rename BLAH to VERBOSE.
* Clearer reporting of slotHigh, arenaHigh, firstFit options to MVFF.
* Report times in seconds (not centiseconds).
* Reduce the commit limit exponentially and stop when too small.
* Ramp entering/leaving probabilities are scaled by iterations.
Copied from Perforce
Change: 189899
ServerID: perforce.ravenbrook.com
2016-03-12 18:27:38 +00:00
Gareth Rees
aa45b563da
Move blatting to a function so that its local variables don't remain on the stack and pin down objects.
...
Copied from Perforce
Change: 189714
ServerID: perforce.ravenbrook.com
2016-03-07 17:31:55 +00:00
Richard Brooksby
43741faecf
Catch up merge from master sources.
...
Copied from Perforce
Change: 189088
ServerID: perforce.ravenbrook.com
2016-02-03 16:56:04 +00:00
Richard Brooksby
e64e5b2e25
Backing out the introduction of mps_arena_configure. see < https://info.ravenbrook.com/mail/2016/01/15/11-56-45/0 >.
...
Copied from Perforce
Change: 189081
ServerID: perforce.ravenbrook.com
2016-02-03 15:52:05 +00:00
Richard Brooksby
1ac6033058
Catch-up merge from masters.
...
Copied from Perforce
Change: 188928
ServerID: perforce.ravenbrook.com
2016-01-20 11:04:09 +00:00
Richard Brooksby
49ef7fe552
Catch up merge from master sources.
...
Adding instructions for running tests on OS X.
Copied from Perforce
Change: 188917
ServerID: perforce.ravenbrook.com
2016-01-18 15:16:41 +00:00
Gareth Rees
6ea9bc7894
Rename mps_key_arena_commit_limit and mps_key_arena_spare_commit_limit as mps_key_commit_limit and mps_key_spare_commit_limit respectively, as suggested by nb in review.
...
Copied from Perforce
Change: 188286
ServerID: perforce.ravenbrook.com
2015-09-08 16:21:27 +01:00
Gareth Rees
c7a49cf109
New macro arenachunkring encapsulates getting the chunk ring for an arena.
...
RingLength now returns Count, not Size.
New test case checks that chunks are added and removed from the arena as memory is allocated and freed.
Copied from Perforce
Change: 188133
ServerID: perforce.ravenbrook.com
2015-08-11 12:03:45 +01:00
Gareth Rees
bdfc9df9d5
New test case 231: create/configure arena with too-small commit limit.
...
Copied from Perforce
Change: 188118
ServerID: perforce.ravenbrook.com
2015-08-10 20:29:21 +01:00
Gareth Rees
b5f1802c6b
Apply commit limit (and spare commit limit) during arena creation, to avoid exceeding the limit and then discovering that we've done so.
...
Add test case for arena hitting commit limit during creation.
Copied from Perforce
Change: 188106
ServerID: perforce.ravenbrook.com
2015-08-10 15:27:26 +01:00
Gareth Rees
56e56e4ff4
Catch-up merge from branch/2015-08-10/arena-create to branch/2015-08-06/config.
...
Copied from Perforce
Change: 188104
ServerID: perforce.ravenbrook.com
2015-08-10 12:49:36 +01:00
Gareth Rees
c966e6c33e
Correct the test for too-small client arena sizes.
...
Add automated test case for client arenas with small sizes.
Copied from Perforce
Change: 188099
ServerID: perforce.ravenbrook.com
2015-08-10 11:41:58 +01:00
Gareth Rees
098b4da32d
New function mps_arena_configure provides keyword argument interface to changing the properties of an arena.
...
New keyword arguments MPS_KEY_ARENA_COMMIT_LIMIT and MPS_KEY_SPARE_ARENA_COMMIT_LIMIT can be passed to mps_arena_create_k or mps_arena_configure.
Deprecate mps_arena_commit_limit_set and mps_arena_spare_commit_limit_set.
Copied from Perforce
Change: 188085
ServerID: perforce.ravenbrook.com
2015-08-06 17:02:51 +01:00
Gareth Rees
ba370c09f4
Tweak order of operations so that stack temporary doesn't keep many objects alive.
...
Copied from Perforce
Change: 187953
ServerID: perforce.ravenbrook.com
2015-06-16 10:44:09 +01:00
Gareth Rees
79f234b217
Arguments to the varargs function mps_pool_create must be cast, otherwise the default c promotion rules will result in a constant value lke 64 being protomoted to int (4 bytes) but decoded (wrongly) as size_t (8 bytes).
...
Copied from Perforce
Change: 187943
ServerID: perforce.ravenbrook.com
2015-06-15 19:34:45 +01:00
Gareth Rees
e269e9c283
100 pools are not enough to exceed the commit limit; try 1000 instead.
...
Copied from Perforce
Change: 187941
ServerID: perforce.ravenbrook.com
2015-06-15 18:26:36 +01:00
Gareth Rees
8a37214504
Change file type to ktext so that qa reports the correct test name.
...
Copied from Perforce
Change: 187936
ServerID: perforce.ravenbrook.com
2015-06-15 17:05:39 +01:00
Gareth Rees
ce7dc08514
Add a section to the guide explaining how to implement malloc and free.
...
Copied from Perforce
Change: 187399
ServerID: perforce.ravenbrook.com
2014-10-25 22:31:07 +01:00