1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-25 08:12:11 -07:00
Commit graph

178 commits

Author SHA1 Message Date
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
32d42e00cd Catch-up merge from master sources to branch/2015-08-25/tradeoff.
Copied from Perforce
 Change: 189891
 ServerID: perforce.ravenbrook.com
2016-03-12 15:13:15 +00:00
Gareth Rees
4623be4a03 Rename chain.h to locus.h, for consistency with other modules, where the interface has the same name as the implemention.
Copied from Perforce
 Change: 189682
 ServerID: perforce.ravenbrook.com
2016-03-06 18:56:32 +00:00
Richard Brooksby
14774ccd06 Eliminating closure_size from area scanners and root registration functions, as it isn't all that useful.
Copied from Perforce
 Change: 189491
 ServerID: perforce.ravenbrook.com
2016-03-01 15:59:06 +00:00
Richard Brooksby
3804af1803 Catch-up merge from master sources to branch/2015-09-04/stack.
Copied from Perforce
 Change: 189370
 ServerID: perforce.ravenbrook.com
2016-02-27 00:54:00 +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
b929dbbe4c Moving scanning accounting to tracescanarea and creating analogous formatscan.
Copied from Perforce
 Change: 189325
 ServerID: perforce.ravenbrook.com
2016-02-19 12:11:50 +00:00
Richard Brooksby
4487895475 Detabifying code and restructuredtext files.
Copied from Perforce
 Change: 189309
 ServerID: perforce.ravenbrook.com
2016-02-18 19:58:13 +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
ae80015f4b Lifting assumptions about area scanners closer to interface.
Copied from Perforce
 Change: 189191
 ServerID: perforce.ravenbrook.com
2016-02-15 16:46:09 +00:00
Richard Brooksby
7df6c140f8 Generalising tracescanarea to be a checking wrapper for all area scanners.
Copied from Perforce
 Change: 189190
 ServerID: perforce.ravenbrook.com
2016-02-15 15:44:57 +00:00
Richard Brooksby
85a2d8683f Lifting and generalising area scanners to allow flexible tagging schemes.
Copied from Perforce
 Change: 189189
 ServerID: perforce.ravenbrook.com
2016-02-15 15:30:08 +00:00
Richard Brooksby
0277d49079 Lifting area scanners into client-side code.
These versions also produce tighter loops under Clang.

Copied from Perforce
 Change: 189188
 ServerID: perforce.ravenbrook.com
2016-02-14 00:57:28 +00:00
Richard Brooksby
27730a09d7 Fixing misuse of format header offset to decode tagging. see <https://info.ravenbrook.com/mail/2016/02/11/17-20-12/0/> point 5.
Copied from Perforce
 Change: 189134
 ServerID: perforce.ravenbrook.com
2016-02-11 21:32:41 +00:00
Richard Brooksby
31870a9b95 Renaming tracescanareamasked to tracescanareatagged
Copied from Perforce
 Change: 189133
 ServerID: perforce.ravenbrook.com
2016-02-11 20:39:57 +00:00
Richard Brooksby
aff58a3f60 Catch up merge from master sources.
Copied from Perforce
 Change: 189130
 ServerID: perforce.ravenbrook.com
2016-02-10 21:10:25 +00:00
Gareth Rees
144990c99d Add accesssetcheck and check accessset arguments.
Copied from Perforce
 Change: 188251
 ServerID: perforce.ravenbrook.com
2015-09-04 20:15:36 +01:00
Gareth Rees
ea6250898a New function mps_root_create_reg_masked applies a mask and pattern test to all words in registers and on the stack when scanning them. this supports tagged references in these locations.
Consistently use the type "Word *" for pointers into the stack or into saved registers.
Remove TraceScanAreaTagged.

Copied from Perforce
 Change: 188231
 ServerID: perforce.ravenbrook.com
2015-09-04 12:22:03 +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
1437590cb3 Move the arenaemergency test up to policypollagain.
Copied from Perforce
 Change: 188217
 ServerID: perforce.ravenbrook.com
2015-09-03 15:39:39 +01:00
Gareth Rees
68489eec1e Move the clearing of the emergency flag down into tracedestroy{init,finish}.
Copied from Perforce
 Change: 188216
 ServerID: perforce.ravenbrook.com
2015-09-03 15:35:38 +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
f1441b58d1 Don't start a trace unless there's work to do.
Copied from Perforce
 Change: 188204
 ServerID: perforce.ravenbrook.com
2015-09-02 21:55:24 +01:00
Gareth Rees
837818ccb4 Refactor tracequantum into tracepoll and traceadvance. (tracequantum was formerly called from arenapark, but that doesn't care about the quantum size.)
Copied from Perforce
 Change: 188198
 ServerID: perforce.ravenbrook.com
2015-09-02 10:50:00 +01:00
Gareth Rees
32acad85ea New function policystarttrace decides whether to start a trace.
Copied from Perforce
 Change: 188154
 ServerID: perforce.ravenbrook.com
2015-08-20 16:57:33 +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
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
b0d20ed749 Catch-up merge from master sources @186540 to branch/2014-05-17/chunk-tree.
Copied from Perforce
 Change: 186546
 ServerID: perforce.ravenbrook.com
2014-06-12 17:55:16 +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
9ed5301da2 Refer to rb's e-mail for potential optimization.
Copied from Perforce
 Change: 186524
 ServerID: perforce.ravenbrook.com
2014-06-12 12:18:30 +01:00
Gareth Rees
c2c38dedcc Catch-up merge from master sources @186481 to branch/2014-05-17/chunk-tree.
Copied from Perforce
 Change: 186491
 ServerID: perforce.ravenbrook.com
2014-06-11 13:52:31 +01:00
Gareth Rees
6aae3bfb23 Catch-up merge from master sources @186213 to branch/2014-05-17/chunk-tree.
Copied from Perforce
 Change: 186214
 ServerID: perforce.ravenbrook.com
2014-05-20 19:11:50 +01:00
Gareth Rees
5f84d4c3db Clarify tracefix logic by unwinding the nested conditions.
Change the arena's chunk tree from a splay tree to an ordinary tree (so that it's not possible to accidentally splay it and leave it unbalanced).
New function TreeFindNext allows us to implement TractFirst and TractNext without having to splay the tree.
Make sure all operations on the chunk tree leave it balanced. But don't balance the tree directly in ChunkFinish() because this is only ever called in a loop where multiple chunks are being deleted from the tre. Instead use the sequence TreeToVine -- iterate and delete -- TreeBalance. The new macro TREE_DESTROY assists with this.
No need any more for ArenaIsReservedAddr, CHUNK_OF_ADDR, TRACT_OF_ADDR.
Update design documentation.

Copied from Perforce
 Change: 186212
 ServerID: perforce.ravenbrook.com
2014-05-20 18:12:37 +01:00
Gareth Rees
b2f8c11ebb Catch-up merge from master sources @186174 to branch/2014-04-30/poolgen.
Copied from Perforce
 Change: 186185
 ServerID: perforce.ravenbrook.com
2014-05-19 14:59:19 +01:00
Gareth Rees
a4611cb411 Catch-up merge from master sources @186077 to branch/2014-04-23/awl.
Copied from Perforce
 Change: 186110
 ServerID: perforce.ravenbrook.com
2014-05-15 10:17:41 +01:00
Gareth Rees
95ee3a4568 Check the trace argument to tracequantum.
Copied from Perforce
 Change: 186027
 ServerID: perforce.ravenbrook.com
2014-05-12 13:35:21 +01:00
Gareth Rees
920a58cc29 Improve formatting of poolgendescribe and tracedescribe.
Add ArenaDescribe calls to amcss and finalcv to get coverage of PoolGenDescribe, TraceDescribe, and MRGDescribe.

Copied from Perforce
 Change: 186010
 ServerID: perforce.ravenbrook.com
2014-05-11 21:13:55 +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
641a75cf5e Avoid the need for newsizeatcreate by emitting events for the pool generations in tracecreate instead of tracestart.
Get rid of proflow member of GenDescStruct (it was unused).
Use STATISTIC to avoid updating segs, freeSize, oldSize, and oldDeferredSize in non-checking varieties.
Add design for pool generation accounting.

Copied from Perforce
 Change: 185930
 ServerID: perforce.ravenbrook.com
2014-05-01 19:00:08 +01:00
Gareth Rees
799ecf0420 Output all the pool generation accounting information.
Copied from Perforce
 Change: 185911
 ServerID: perforce.ravenbrook.com
2014-04-30 17:39:37 +01:00
Gareth Rees
e62efa1619 Use double-entry book-keeping and bank reconciliation to ensure the soundness and completeness of the pool generation size accounting.
Copied from Perforce
 Change: 185888
 ServerID: perforce.ravenbrook.com
2014-04-30 12:14:54 +01:00
Gareth Rees
b3d827b6fb Pool generations now refer directly to their generation (not via a chain and a generation number).
Allocation into a generation now via PoolGenAlloc (not ChainAlloc).
The "top generation" logic is encapsulated in the function ChainGen.

Copied from Perforce
 Change: 185877
 ServerID: perforce.ravenbrook.com
2014-04-30 11:18:44 +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
28a6bfe289 Explain traceaddwhite failure logic as requested by nb in <https://info.ravenbrook.com/mail/2014/04/24/12-10-09/0/>.
Copied from Perforce
 Change: 185800
 ServerID: perforce.ravenbrook.com
2014-04-25 17:41:56 +01:00
Gareth Rees
fb56a08e49 Tracecondemnzones could leave the white set inconsistent if traceaddwhite failed. add an assertion to cover this case (corresponding to the similar assertion in tracecondemnall).
Copied from Perforce
 Change: 185765
 ServerID: perforce.ravenbrook.com
2014-04-23 20:22:19 +01:00
Gareth Rees
e7d41a8fde Fix bugs in condemn logic:
1. TraceStartCollectAll now condemns all segments in pools with AttrGC (not just pools attached to generation zero of some chain, as before).
2. ChainDeferral now looks at all generations in the chain, so that the chain is condemned if any generation's new size is greater than its capacity (not just generation zero, as before).
3. ChainCondemnAuto now condemns all generations up to and including the highest generation whose new size is greater than its capacity (rather than, as before, up to and excluding the lowest generation whose new size is lower than its capacity).
Update finaltest.c so that it has a mode in which it allocates in generation 1 of a chain and with the arena released so that the above fixes are tested. Remove the MPS_KEY_GEN workarounds from awlut and awluthe as these are no longer needed.

Copied from Perforce
 Change: 185741
 ServerID: perforce.ravenbrook.com
2014-04-22 17:53:47 +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