Richard Brooksby
3dd201bf47
Turning pool init methods the right way in, so that they each call the next method up the class hierarchy.
...
Copied from Perforce
Change: 190858
ServerID: perforce.ravenbrook.com
2016-04-10 17:49:08 +01:00
Richard Brooksby
111136891e
Adding instinit and instfinish and using them as next methods in seginit, segfinish, etc.
...
Copied from Perforce
Change: 190857
ServerID: perforce.ravenbrook.com
2016-04-10 15:33:17 +01:00
Richard Brooksby
3154cbed7d
Making arenas properly inherit from instances, and converting remaining method calls to use the method macro, while noting uses which are inside-out.
...
Copied from Perforce
Change: 190856
ServerID: perforce.ravenbrook.com
2016-04-10 14:00:55 +01:00
Richard Brooksby
3bc19084f6
Fixing mustbea to not return a void *.
...
Copied from Perforce
Change: 190849
ServerID: perforce.ravenbrook.com
2016-04-08 20:29:33 +01:00
Richard Brooksby
5a0c818945
Explicitly making inststruct the prefix of instances, eliminating pointer punning of class pointers, and reducing likelihood of editing errors.
...
Copied from Perforce
Change: 190830
ServerID: perforce.ravenbrook.com
2016-04-08 17:51:21 +01:00
Richard Brooksby
09e73dd1da
Renaming protocolinst to inst and protocolclass to instclass to make naming consistent with other classes.
...
Copied from Perforce
Change: 190822
ServerID: perforce.ravenbrook.com
2016-04-08 17:51:20 +01:00
Richard Brooksby
32de0701e0
Removing always-zero offset from pool class structure.
...
Copied from Perforce
Change: 190819
ServerID: perforce.ravenbrook.com
2016-04-08 17:51:20 +01:00
Richard Brooksby
e041841a88
Moving common fields into the base class, starting with the class name.
...
Copied from Perforce
Change: 190816
ServerID: perforce.ravenbrook.com
2016-04-08 17:51:19 +01:00
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
339445436b
Catch-up merge from master sources to branch/2014-10-13/format.
...
Copied from Perforce
Change: 190060
ServerID: perforce.ravenbrook.com
2016-03-15 10:02:21 +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
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
e102a56958
Use a reference count to discover cases where a format is deleted when a pool is still using it, as suggested by rb < https://info.ravenbrook.com/mail/2014/10/16/13-35-06/0/ >.
...
Copied from Perforce
Change: 187279
ServerID: perforce.ravenbrook.com
2014-10-16 22:59:00 +01:00
Gareth Rees
411e38946d
Remove unused pool {fill,empty}{mutator,internal}size statistics.
...
Copied from Perforce
Change: 187270
ServerID: perforce.ravenbrook.com
2014-10-14 22:37:55 +01:00
Gareth Rees
66dfd1a69a
Improved assertion messages when a required keyword argument is not found. instead of "unreachable code", the assertion message is the name of the missing key.
...
Copied from Perforce
Change: 187267
ServerID: perforce.ravenbrook.com
2014-10-14 22:05:30 +01:00
Gareth Rees
e185863a15
Check alignment of address given to poolfree.
...
Copied from Perforce
Change: 187265
ServerID: perforce.ravenbrook.com
2014-10-14 16:54:10 +01:00
Gareth Rees
9c044f7542
Simpler and more robust to add the pool to the formatring in poolinit, after we know that the initialization has succeeded.
...
Copied from Perforce
Change: 187261
ServerID: perforce.ravenbrook.com
2014-10-14 10:07:41 +01:00
Gareth Rees
821dc9114d
Attach the pools using a format to a ring in the format, so that when we destroy the format, we can check that no pools are using it.
...
Copied from Perforce
Change: 187253
ServerID: perforce.ravenbrook.com
2014-10-13 22:44:20 +01:00
Gareth Rees
5f35b7f792
Use the method suffix only for methods in classes; use visitor or function for other kinds of functions.
...
New document guide.impl.c.naming sets out the rules for naming.
Copied from Perforce
Change: 187159
ServerID: perforce.ravenbrook.com
2014-10-07 23:48:55 +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
David Lovemore
3b97cae580
Catch up merge from master/...@186577
...
Copied from Perforce
Change: 186582
ServerID: perforce.ravenbrook.com
2014-06-13 16:38:20 +01:00
Gareth Rees
1b7de24015
Some assertions with && crept back in. split them up so that we get as much information as possible from an assertion failure.
...
Copied from Perforce
Change: 186577
ServerID: perforce.ravenbrook.com
2014-06-13 15:52:50 +01:00
Gareth Rees
bf97a59af1
Catch-up merge from master sources @186564 to branch/2014-06-11/grain.
...
Copied from Perforce
Change: 186572
ServerID: perforce.ravenbrook.com
2014-06-13 15:30:46 +01:00
Gareth Rees
16fa4aa36c
Fix problems identified by rb in review < https://info.ravenbrook.com/mail/2014/06/13/13-52-14/0/ >.
...
Copied from Perforce
Change: 186570
ServerID: perforce.ravenbrook.com
2014-06-13 15:16: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
266a75b639
Catch-up merge from master sources @186536 to branch/2014-05-15/size.
...
Copied from Perforce
Change: 186539
ServerID: perforce.ravenbrook.com
2014-06-12 16:46:36 +01:00
Gareth Rees
bb44aa1f51
Catch-up merge from master sources @186528 to branch/2014-04-15/mvffnoseg.
...
Copied from Perforce
Change: 186534
ServerID: perforce.ravenbrook.com
2014-06-12 15:59:39 +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
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
dbc6f9cd32
Catch-up merge from branch/2014-04-15/mvffnoseg @186485 to branch/2014-05-15/size.
...
Copied from Perforce
Change: 186487
ServerID: perforce.ravenbrook.com
2014-06-11 13:17:14 +01:00
Gareth Rees
365e431f21
Catch-up merge from master sources @186481 to branch/2014-04-15/mvffnoseg.
...
Copied from Perforce
Change: 186484
ServerID: perforce.ravenbrook.com
2014-06-11 12:42:58 +01:00
David Lovemore
c14a0e5e3e
Amc now respects mps_key_extend_by keyword argument.
...
AMC also uses MPS_KEY_LARGE_SIZE keyword argument to specify what size objects need to be to live on their own segment.
Copied from Perforce
Change: 186480
ServerID: perforce.ravenbrook.com
2014-06-11 12:12:44 +01:00
Gareth Rees
d6b83892af
Remove unused pool class attributes.
...
Bring method descriptions up to date in pool class design.
Copied from Perforce
Change: 186446
ServerID: perforce.ravenbrook.com
2014-06-08 19:54:24 +01:00
Gareth Rees
5ea427ae6e
Fix compilation on windows.
...
Fix bug in ArenaDescribeTracts (only described the first tract).
Copied from Perforce
Change: 186215
ServerID: perforce.ravenbrook.com
2014-05-20 19:19:14 +01:00
Gareth Rees
463139ecc4
Use treefind instead of splaytreefind to search the chunk tree.
...
Balance the chunk tree after insertion and deletion.
Avoid calling TractFirst and TractNext in ArenaDescribeTracts and PoolOfRange.
Copied from Perforce
Change: 186199
ServerID: perforce.ravenbrook.com
2014-05-19 20:19:50 +01:00
Gareth Rees
16ccef5e2d
New public functions mps_pool_total_size and mps_pool_free_size.
...
Old (undocumented) functions mps_{mv,mvff,mvt}_size and mps_{mv,mvff,mvt}_free_size are now macros for the new public functions.
New pool methods PoolTotalSize and PoolFreeSize, with implementations for public pool classes except SNC.
Coverage of the new functions in apss and mpmss for the manual pool classes, and in finaltest for the automatic pool classes.
Copied from Perforce
Change: 186118
ServerID: perforce.ravenbrook.com
2014-05-15 17:01:59 +01:00
Gareth Rees
7818a73504
Merge branch/2014-02-23/mvff-tune into branch/2014-04-15/mvffnoseg.
...
Copied from Perforce
Change: 186079
ServerID: perforce.ravenbrook.com
2014-05-13 16:10:51 +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
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
dde2cb855b
Catch-up merge from master sources to branch/2014-01-15/nailboard.
...
Copied from Perforce
Change: 185275
ServerID: perforce.ravenbrook.com
2014-04-07 10:38:08 +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
fd07236307
Tidy-up of attributes and pool classes:
...
* Bring design up to date.
* New function PoolHasAttr encapsulates attribute checking.
* Abstract classes are abstract and mustn't be checked.
* The dummy pool class in fotest needs a size.
* Abstract pool classes null out methods that they can't provide a generic implementation for, to force subclasses to provide one.
* New function PoolTrivFramePopPending provides a generic implementation of that method.
* Rename PoolNoFreeWalk to PoolTrivFreeWalk since it has NOOP rather than NOTREACHED.
* Check that AttrMOVINGGC implies AttrGC.
* Remove unimplemented attributes (BUF_RESERVE, BUF_ALLOC, INCR_RB, INCR_WB, PM)
* AMC now inherits from AMCZ instead of the other way round. This is simpler: AMC adds features to AMCZ rather than AMCZ taking features away (and not quite getting it right).
* Similarly, LO inherits from AbstractSegBufPoolClass + PoolClassMixInCollect so that it doesn't have to clear AttrSCAN and the scan methods.
* Fix bug in MFSCheck -- mustn't check unroundedUnitSize >= UNIT_MIN since small unit sizes are rounded up to UNIT_MIN.
* Don't see AttrFREE in MRG (since no free method is supplied).
* Check AttrSCAN systematically (in PoolScan and SegCheck) rather than opportunistically in TraceStart and TraceQuantum.
Copied from Perforce
Change: 185231
ServerID: perforce.ravenbrook.com
2014-04-04 17:05:08 +01:00
Gareth Rees
fc7bdbd4dd
Fixed dl's review comments < https://info.ravenbrook.com/mail/2014/04/01/13-28-17/0/ >.
...
Copied from Perforce
Change: 185127
ServerID: perforce.ravenbrook.com
2014-04-01 17:02:00 +01:00
Gareth Rees
b7018a3fca
Poolfix is on the critical path, so use aver_critical rather than aver.
...
Copied from Perforce
Change: 184693
ServerID: perforce.ravenbrook.com
2014-03-08 10:23:09 +00:00
Richard Brooksby
91ed6eb0d9
Instead of aggressively returning every page it can, mvff takes a parameter for the proportion of spare space to hold in its free lists before attempting to return space to the arena.
...
Copied from Perforce
Change: 184498
ServerID: perforce.ravenbrook.com
2014-02-24 23:04:31 +00:00
Richard Brooksby
cd840766ca
Adding mps_key_gen generation keyword to pools that take a chain (except amc), so that you can specify which generation to allocate in by default. this allows some flexibility when the client can predict the lifetimes of objects.
...
The AWL and LO pools allocate into generation 1 of the arena default chain if neither MPS_KEY_CHAIN or MPS_KEY_GEN is specified, simulating the default setup before the chain-zones branch.
Copied from Perforce
Change: 184231
ServerID: perforce.ravenbrook.com
2014-01-30 14:27:09 +00:00
Gareth Rees
bcfad58d3c
Merge custom cet mainline into the master sources. this includes fixes for job003519 (clock values in text telemetry logs on windows have top 32 bits zero), job003536 (cet office can't replicate 100k snowmen in reasonable time), job003651 (stack overflows are not reliably handled).
...
Copied from Perforce
Change: 183926
ServerID: perforce.ravenbrook.com
2014-01-10 14:16:08 +00:00