1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-27 09:11:48 -07:00
Commit graph

115 commits

Author SHA1 Message Date
Richard Brooksby
44f80af1ec Merging branch mps/branch/2016-03-13/without-reservation into master sources.
Copied from Perforce
 Change: 190106
 ServerID: perforce.ravenbrook.com
2016-03-15 13:19:27 +00:00
Richard Brooksby
d54be414d9 Merging branch/2016-03-12/pause into the master sources.
Copied from Perforce
 Change: 190053
 ServerID: perforce.ravenbrook.com
2016-03-15 06:31:08 +00:00
Gareth Rees
2a3c4e0590 Address points made by rb in review <https://info.ravenbrook.com/mail/2016/03/14/18-48-19/0/>
Copied from Perforce
 Change: 190031
 ServerID: perforce.ravenbrook.com
2016-03-14 20:10:14 +00:00
Richard Brooksby
1025b28674 Eliminating withreservoirpermit and all its variants.
Copied from Perforce
 Change: 190005
 ServerID: perforce.ravenbrook.com
2016-03-13 21:04:01 +00:00
Richard Brooksby
cc6262ae66 Basic removal of the reservoir pool from code and design.
Copied from Perforce
 Change: 190000
 ServerID: perforce.ravenbrook.com
2016-03-13 20:32:24 +00:00
Gareth Rees
459a9f775d Implement pause time control.
Copied from Perforce
 Change: 189921
 ServerID: perforce.ravenbrook.com
2016-03-12 22:08:26 +00:00
Richard Brooksby
078ac268d5 Catch-up merge from branch/2015-08-06/config to remove arenaconfigure.
Copied from Perforce
 Change: 189335
 ServerID: perforce.ravenbrook.com
2016-02-25 22:59:06 +00:00
Richard Brooksby
f8341520c2 Catch-up merge from master sources.
Copied from Perforce
 Change: 189265
 ServerID: perforce.ravenbrook.com
2016-02-17 11:04:51 +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
a2f78d0df6 Catch-up merge from masters.
Copied from Perforce
 Change: 188921
 ServerID: perforce.ravenbrook.com
2016-01-19 16:22:39 +00:00
Gareth Rees
d2662a861e Catch-up merge from branch/2015-08-11/policy to branch/2015-08-25/tradeoff.
Copied from Perforce
 Change: 188250
 ServerID: perforce.ravenbrook.com
2015-09-04 19:13:28 +01:00
Gareth Rees
db81205af5 Move policy for mps_arena_step to policy module.
Copied from Perforce
 Change: 188238
 ServerID: perforce.ravenbrook.com
2015-09-04 15:25:37 +01:00
Gareth Rees
49635c2e86 Fix bug introduced by change 188219: the end of the interval is not the same as the available collection time.
Copied from Perforce
 Change: 188223
 ServerID: perforce.ravenbrook.com
2015-09-04 08:53:23 +01:00
Gareth Rees
c2488346e7 There can only be an emergency when a trace is busy, so check this.
Copied from Perforce
 Change: 188220
 ServerID: perforce.ravenbrook.com
2015-09-03 20:14:06 +01:00
Gareth Rees
6f0c939e2f Arenastep considers collecting the world after finishing a trace (not just on entry if no traces are busy).
ArenaStep does not care about quanta, so call TraceAdvance instead of TracePoll.

Copied from Perforce
 Change: 188219
 ServerID: perforce.ravenbrook.com
2015-09-03 19:11:49 +01:00
Gareth Rees
0ff67113ae Separate the values "more work to do?" and "amount of work done" in tracepoll. previously, the code used "amount of work done > 0" when it needed "more work to do?" but that's not right, because on the last two calls to traceadvance, no "work" is done (because reclaim work is not measured), but there may still be more work to do.
Copied from Perforce
 Change: 188218
 ServerID: perforce.ravenbrook.com
2015-09-03 15:51:37 +01:00
Gareth Rees
61bae42d43 Introduce new type work representing a measure of work done by the collector. use this systematically to make the code clearer.
Copied from Perforce
 Change: 188210
 ServerID: perforce.ravenbrook.com
2015-09-03 13:01:55 +01:00
Gareth Rees
85595290d3 Accumulate trace metrics in arenapark.
Copied from Perforce
 Change: 188208
 ServerID: perforce.ravenbrook.com
2015-09-03 11:50:28 +01:00
Gareth Rees
dd676e2919 New functions policypoll and policypollagain.
Update design.strategy.

Copied from Perforce
 Change: 188165
 ServerID: perforce.ravenbrook.com
2015-08-25 13:27:17 +01:00
Gareth Rees
46280a07ab New function policycollectiontime estimates the time needed to collect the arena. mysterious constants are given names and moved to config.h.
Copied from Perforce
 Change: 188160
 ServerID: perforce.ravenbrook.com
2015-08-21 15:27:14 +01:00
Richard Brooksby
a555f2d348 Clarifying situations in which arenaaccess might find the barrier already down. see <https://info.ravenbrook.com/mail/2015/07/14/15-08-55/0/>.
Copied from Perforce
 Change: 188033
 ServerID: perforce.ravenbrook.com
2015-07-14 17:18:00 +01:00
Gareth Rees
bdc1a92a18 Assert if a thread dies while registered, but make a best effort to continue working after the assertion, by marking the thread as dead and moving it to a ring of dead threads.
Copied from Perforce
 Change: 187393
 ServerID: perforce.ravenbrook.com
2014-10-25 17:41:42 +01:00
Gareth Rees
e6fb28764c Rename lockreleasempm to lockrelease. this name was changed because of a clash with a symbol in scriptworks, and that's no longer a concern. see <https://info.ravenbrook.com/project/mps/import/2001-09-27/mminfo/doc/meeting/general/1997-02-19>. if we get symbol name clashes in future, we can try the .name.single strategy, or maybe objcopy --prefix.
Copied from Perforce
 Change: 187322
 ServerID: perforce.ravenbrook.com
2014-10-21 22:35:30 +01:00
Gareth Rees
e3f6b44cc2 Don't use avert unless the arena lock is held (it's not thread-safe in all varieties). add design explaining this.
Copied from Perforce
 Change: 187238
 ServerID: perforce.ravenbrook.com
2014-10-13 14:36:15 +01:00
Gareth Rees
23dda3d644 New constant rankmin gives the minimum rank. use this (rather than 0 or rankambig) to better express the intention.
Copied from Perforce
 Change: 187156
 ServerID: perforce.ravenbrook.com
2014-10-07 22:31:12 +01:00
Gareth Rees
7ede9ffdb7 Arenafinalize now asserts that the object belongs to a finalizable (attrgc) pool. (it's a programming error to try to register a non-finalizable object for finalization.)
Can't test this behaviour via the smoke tests, unfortunately.
Document the performance problem with mps_definalize, so that users aren't tempted into using it inappropriately.

Copied from Perforce
 Change: 187109
 ServerID: perforce.ravenbrook.com
2014-10-02 10:27:57 +01:00
Gareth Rees
2d0f425428 Ensure that code of the form if (condition) statement; is split over two lines, so that it is possible to set a breakpoint on the statement in a debugger.
This change was agreed in 1997 (see <https://info.ravenbrook.com/project/mps/mail/1997/08/19/13-44/0.txt>), so it's about time it was implemented.

Copied from Perforce
 Change: 187071
 ServerID: perforce.ravenbrook.com
2014-09-27 22:57:02 +01:00
Gareth Rees
10afd0ee3b Cast all arguments to the writef function to make it easy to check that none of the necessary casts have been omitted.
New macro WriteFYesNo makes it easy to describe a Boolean.
Describe more structure elements for ABQ, Arena, Buffer, Format, MFS, Root, Seg.

Copied from Perforce
 Change: 187063
 ServerID: perforce.ravenbrook.com
2014-09-27 12:49:30 +01:00
Gareth Rees
c71e35f3c1 Catch-up merge from masters sources @186519 to branch/2014-04-17/describe.
Copied from Perforce
 Change: 186526
 ServerID: perforce.ravenbrook.com
2014-06-12 13:45:22 +01:00
Gareth Rees
35985c3587 Catch-up merge from master sources @186035 to branch/2014-03-25/ansi.
Copied from Perforce
 Change: 186040
 ServerID: perforce.ravenbrook.com
2014-05-12 18:42:33 +01:00
Gareth Rees
e7f41fe61b Park the arena before destroying the default chain, to ensure that there are no traces using that chain.
Fix test cases that used automatic collection, but destroyed data structures without parking the arena.
Document the requirement on mps_chain_destroy and add the assertion to "common assertions and their causes".

Copied from Perforce
 Change: 186021
 ServerID: perforce.ravenbrook.com
2014-05-12 11:19:57 +01:00
Gareth Rees
2b41ec58db Catch-up merge from master sources @185999 to branch/2014-04-17/describe.
Copied from Perforce
 Change: 186003
 ServerID: perforce.ravenbrook.com
2014-05-11 18:33:02 +01:00
Gareth Rees
add3e4bf93 Consistent order stream, depth.
Copied from Perforce
 Change: 186001
 ServerID: perforce.ravenbrook.com
2014-05-11 18:30:23 +01:00
Gareth Rees
c44f2d6a20 Correct indentation of describe output by passing depth parameter to describe functions and to writef.
Call Describe functions from test cases so that we get coverage.

Copied from Perforce
 Change: 186000
 ServerID: perforce.ravenbrook.com
2014-05-11 18:20:38 +01:00
Gareth Rees
4ed8190265 Back out change 185626 (violates the design.mps.writef.snazzy).
Copied from Perforce
 Change: 185941
 ServerID: perforce.ravenbrook.com
2014-05-02 12:44:31 +01:00
Gareth Rees
7b9d33799e Catch-up merge from master sources to branch/2014-03-25/ansi.
Copied from Perforce
 Change: 185907
 ServerID: perforce.ravenbrook.com
2014-04-30 16:51:30 +01:00
David Lovemore
fb7363db2e Rename bool(v) to boolof(v) to fix clash with the windows header file windows.h
Copied from Perforce
 Change: 185841
 ServerID: perforce.ravenbrook.com
2014-04-28 13:14:04 +01:00
Gareth Rees
3d92d21dba New function chaindescribe describes a chain.
Also GenDescDescribe and PoolGenDescribe.
GlobalsDescribe now describes chains.

Copied from Perforce
 Change: 185727
 ServerID: perforce.ravenbrook.com
2014-04-22 00:53:18 +01:00
Gareth Rees
8f6b41e9ac New function tracedescribe.
Copied from Perforce
 Change: 185631
 ServerID: perforce.ravenbrook.com
2014-04-17 14:22:19 +01:00
Gareth Rees
d83fbf6b09 Correct indentation of describe output.
Copied from Perforce
 Change: 185626
 ServerID: perforce.ravenbrook.com
2014-04-17 13:36:42 +01:00
Gareth Rees
4e48a196e5 Check the poolring so that there is an assertion failure (not a crash) if the client fails to destroy a pool.
Copied from Perforce
 Change: 185527
 ServerID: perforce.ravenbrook.com
2014-04-14 22:31:24 +01:00
Gareth Rees
2987353125 Check rings before destroying the control pool, so that you get an assertion when a ring points into space that is about to be unmapped, instead of a crash after it has been unmapped.
Copied from Perforce
 Change: 185495
 ServerID: perforce.ravenbrook.com
2014-04-13 20:51:10 +01:00
Gareth Rees
ab57c07df5 Turn on -wduplicate-enum and -wmissing-variable-declarations options for clang. ensure the mps compiles with these options.
Copied from Perforce
 Change: 185466
 ServerID: perforce.ravenbrook.com
2014-04-11 15:17:20 +01:00
Gareth Rees
391e7e6c83 Add -wconversion to the options for gcc. ensure that the mps builds.
Copied from Perforce
 Change: 185463
 ServerID: perforce.ravenbrook.com
2014-04-11 14:25:15 +01:00
Gareth Rees
d939167b1e Catch-up merge from master sources to branch/2014-03-25/ansi.
Copied from Perforce
 Change: 185305
 ServerID: perforce.ravenbrook.com
2014-04-07 16:04:58 +01:00
Gareth Rees
4fb11404b9 Can't can't checkd_nosig(ring, &arenaring) because &arenaring is never null and gcc will warn about a constant comparison.
Copied from Perforce
 Change: 185279
 ServerID: perforce.ravenbrook.com
2014-04-07 13:22:21 +01:00
Gareth Rees
0ffc9ec788 Can't use checkd_nosig(tree, ...) because treeempty is null.
arena->enabledMessageTypes might be NULL.

Copied from Perforce
 Change: 185271
 ServerID: perforce.ravenbrook.com
2014-04-07 10:14:40 +01:00
Gareth Rees
bcea6812fc Improve control over checking:
1. Where Type is a pointer type with a signature, replace CHECKL(TypeCheck(val)) with CHECKD(Type, val).
2. Where Type is a pointer type with no signature, replace CHECKL(TypeCheck(val)) with CHECKD_NOSIG(Type, val).
3. Where Type is a pointer type with a signature, but the structure is not visible at point of checking, replace CHECKL(TypeCheck(val)) with CHECKD_NOSIG(Type, val). Reference <design/check/#.hidden-type>
4. Make BTCheck extern and use it where possible.
5. Replace AVER(TypeCheck(val)) with AVERT(Type, val).

Copied from Perforce
 Change: 185263
 ServerID: perforce.ravenbrook.com
2014-04-06 22:51:05 +01:00
Gareth Rees
643ab5a49a Improve clarity of product configuration so that names more explicitly indicate what they do:
* CONFIG_POLL_NONE (because the user-visible consequence is that polling is no longer supported; was CONFIG_PROTECTION_NONE).
* DISABLE_LOCKS (was THREAD_SINGLE).
* DISABLE_SHIELD (was THREAD_SINGLE && PROTECTION_NONE)
* DISABLE_REMEMBERED_SET (was PROTECTION_NONE)
When the shield is disabled, ArenaLeave asserts that there are no busy traces, and ArenaPoll is a no-op.
By having functions implemented using the corresponding macro, we can avoid duplicated code, and avoid testing DISABLE_SHIELD in global.c.
Remove all remaining references to MPS_PROD_EPCORE.

Copied from Perforce
 Change: 185176
 ServerID: perforce.ravenbrook.com
2014-04-02 15:48:57 +01:00
Gareth Rees
5770143183 Remove comment from rb "the thread_single and protection_none build configs aren't regularly tested, though they might well be useful for embedded custom targets. should test them." -- this configuration is now tested by "make test" on the linux and freebsd platforms.
Copied from Perforce
 Change: 185054
 ServerID: perforce.ravenbrook.com
2014-03-27 15:57:34 +00:00