Richard Brooksby
83fc7866c9
Tidying up naming of write barrier deferral.
...
Copied from Perforce
Change: 189960
ServerID: perforce.ravenbrook.com
2016-03-13 13:26:24 +00:00
Richard Brooksby
0b3c65766e
Fixing incomplete merge that missed out disabling the write barrier, but corrupted the segment summaries.
...
Copied from Perforce
Change: 189954
ServerID: perforce.ravenbrook.com
2016-03-13 12:16:01 +00:00
Richard Brooksby
54de13427b
Integrating write barrier deferral changes from branch/2014-08-18/non-incremental.
...
p4 integrate branch/2014-08-18/non-incremental/...@186975,186988 branch/2016-03-13/defer-write-barrier/...
Copied from Perforce
Change: 189943
ServerID: perforce.ravenbrook.com
2016-03-13 11:27:21 +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
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
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
David Lovemore
476ce386fe
Added more control over write barrier. in particular separated scans after a hit.
...
Copied from Perforce
Change: 186988
ServerID: perforce.ravenbrook.com
2014-08-27 11:21:18 +01:00
David Lovemore
d2439c4be7
Added experimental control over write barrier eagerness.
...
The write barrier is only raised after three unnecessary scans.
Copied from Perforce
Change: 186975
ServerID: perforce.ravenbrook.com
2014-08-21 15:53:57 +01:00
David Lovemore
a1d1c3ff6e
Use write barrier in incremental mode.
...
This was previously completely disabled.
Copied from Perforce
Change: 186973
ServerID: perforce.ravenbrook.com
2014-08-21 14:03:09 +01:00
David Lovemore
9da3ff7bee
Add mps_key_arena_incremental option.
...
Avoid read and write barrier in non-incremental mode.
Add --non-incremental option to gcbench
Copied from Perforce
Change: 186969
ServerID: perforce.ravenbrook.com
2014-08-20 13:03:20 +01:00
David Lovemore
2d10c3a141
Collections now non-incremental. simple change to tracepoll to make collections do work until they are finished.
...
Copied from Perforce
Change: 186964
ServerID: perforce.ravenbrook.com
2014-08-18 12:06:03 +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
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