Gareth Rees
e38d608024
Assert if you try to create a pool using a format from another arena, a pool using a chain from another arena, or a root using a thread from another arena.
...
Copied from Perforce
Change: 187268
ServerID: perforce.ravenbrook.com
2014-10-14 22:21:43 +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
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
39e8b866cf
Rename mps_class_t to mps_pool_class_t for clarity.
...
Retain a typedef for mps_class_t for backwards compatibility.
Copied from Perforce
Change: 187065
ServerID: perforce.ravenbrook.com
2014-09-27 13:37:38 +01:00
Gareth Rees
5cd56a290f
Provide a default value for mps_key_awl_find_dependent.
...
Copied from Perforce
Change: 186784
ServerID: perforce.ravenbrook.com
2014-07-02 10:39:28 +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
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
181fe2d26a
Use xyzpool macros systematically as suggested by nb in < https://info.ravenbrook.com/mail/2014/06/11/20-47-37/0/ >
...
Copied from Perforce
Change: 186529
ServerID: perforce.ravenbrook.com
2014-06-12 14:25:00 +01:00
Gareth Rees
41e2d84377
Rename "arena alignment" to "arena grain size" to avoid confusion with ordinary structure alignment.
...
Copied from Perforce
Change: 186503
ServerID: perforce.ravenbrook.com
2014-06-11 17:13:03 +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
79dfa22348
Remove unused variable oldfree (obsoleted by accounting reform).
...
Copied from Perforce
Change: 186460
ServerID: perforce.ravenbrook.com
2014-06-09 19:22:04 +01:00
Gareth Rees
f2447e74fd
Fix the build on fri3gc.
...
Copied from Perforce
Change: 186436
ServerID: perforce.ravenbrook.com
2014-06-08 15:20:50 +01:00
Gareth Rees
e8bb8ecedb
Encapsulate the artifical ageing and reclaiming that's need to ensure that all the memory in a segment is accounted as free. addresses point made by rb in < https://info.ravenbrook.com/mail/2014/06/02/15-43-00/0/ >
...
Copied from Perforce
Change: 186428
ServerID: perforce.ravenbrook.com
2014-06-08 13:12:12 +01:00
Gareth Rees
9fb9c2f319
Rename poolgen functions to make it clear that they only handle accounting.
...
Copied from Perforce
Change: 186368
ServerID: perforce.ravenbrook.com
2014-05-30 12:29:42 +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
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
4c655eba6a
Fix rash build on os x by adding the unused attribute to functions declared static that are not called in the rash variety.
...
Copied from Perforce
Change: 185915
ServerID: perforce.ravenbrook.com
2014-05-01 12:18:00 +01:00
Gareth Rees
d9e0b8883c
Awl now returns segments to the arena when they are free.
...
Copied from Perforce
Change: 185906
ServerID: perforce.ravenbrook.com
2014-04-30 16:34:40 +01:00
Gareth Rees
cd099a2aae
Better names for poolgen functions.
...
Accounting for segment splitting and merging.
Accounting for allocation and freeing in segsmss.
Copied from Perforce
Change: 185894
ServerID: perforce.ravenbrook.com
2014-04-30 13:49:26 +01:00
Gareth Rees
405fde886f
Revert a couple of whitespace changes to simplify the diffs.
...
Copied from Perforce
Change: 185891
ServerID: perforce.ravenbrook.com
2014-04-30 12:59:04 +01:00
Gareth Rees
25d595211a
Undo seghasbuffer change, to simplify the diffs.
...
Copied from Perforce
Change: 185890
ServerID: perforce.ravenbrook.com
2014-04-30 12:56:30 +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
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
284482353a
The alignment of an awl pool is now set to the format alignment, as documented. the alignment restriction on pointers is now based on sizeof(void *), not mps_pf_align.
...
Copied from Perforce
Change: 185357
ServerID: perforce.ravenbrook.com
2014-04-08 18:29:25 +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
306401504d
Check classes after defining them.
...
Copied from Perforce
Change: 185228
ServerID: perforce.ravenbrook.com
2014-04-04 12:51:07 +01:00
Gareth Rees
32d10cd02a
Make mps_args_done obsolete.
...
Copied from Perforce
Change: 184543
ServerID: perforce.ravenbrook.com
2014-02-26 12:47:27 +00:00
Richard Brooksby
483133a19d
Fixing awl and lo to actually allocate in the generation requested.
...
Copied from Perforce
Change: 184269
ServerID: perforce.ravenbrook.com
2014-01-31 15:27:51 +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
Richard Brooksby
e0c8a8f1c0
The chain parameter to amc is now optional, defaulting to the arena’s default chain.
...
AWL and LO accept a chain parameter, and also default to the arena’s default chain, rather than creating their own dummy chains.
Copied from Perforce
Change: 184227
ServerID: perforce.ravenbrook.com
2014-01-30 13:00:46 +00:00
Richard Brooksby
4a4ba7d343
The awl and lo pools were allocating their segments along with other pool’s generation 1, while accounting sizes into generation 0. in fact, this “generation 1” was really a kind of placement “clump” and the segments really lived in generation 0. however, this confused the new chainalloc because there are no longer any “clumps” maintained by the arena, causing awlut to fail. fixed awl and lo to be truthful about the generation they’re allocating in. placement concerns have been removed.
...
Copied from Perforce
Change: 184220
ServerID: perforce.ravenbrook.com
2014-01-29 17:15:31 +00:00
Richard Brooksby
d8e81ae3c3
Abolishing the redundant generation to zone map in the vm arena, and replacing it with chainalloc, which allocates segments within a generation.
...
Generations from different chains will no longer share the same zone sets, and will not be collected together. To get this behaviour, use the same chain, as documented.
Copied from Perforce
Change: 184213
ServerID: perforce.ravenbrook.com
2014-01-29 12:54:05 +00:00
Gareth Rees
7b16ae5a45
Use macro nonnegative so that we can keep asserting that values are >= 0 without provoking "unsigned comparison >= 0 is always true" warnings from gcc.
...
Copied from Perforce
Change: 183505
ServerID: perforce.ravenbrook.com
2013-10-01 14:27:52 +01:00
Gareth Rees
4950182f38
Avoid warnings when compiling with -wwrite-strings:
...
* Use const char * in places where we want to assign string constants.
Avoid warnings when compiling with -Wextra:
* Avoid if statement with empty body in amcsshe.c
* Avoid comparison of unsigned >= 0.
Copied from Perforce
Change: 183498
ServerID: perforce.ravenbrook.com
2013-10-01 10:52:45 +01:00
Richard Brooksby
8a9d451ff8
Catch-up merge from custom/cet/main to master.
...
Includes installable assertion handler, events in circular memory buffers, LARGEADDRESSAWARE, etc.
Copied from Perforce
Change: 182176
ServerID: perforce.ravenbrook.com
2013-05-24 19:42:46 +01:00
Richard Brooksby
690db0f51d
Catch up merge from mps master to keyword arguments development branch.
...
Copied from Perforce
Change: 181890
ServerID: perforce.ravenbrook.com
2013-05-17 14:37:48 +01:00
Richard Brooksby
a2c89c2c40
Making clear the size of the array of args passed to varargs conversion methods.
...
Copied from Perforce
Change: 181845
ServerID: perforce.ravenbrook.com
2013-05-16 03:12:11 +01:00
Gareth Rees
e76d53158f
Make forward declarations of various functions consistent with their actual declarations.
...
Copied from Perforce
Change: 181788
ServerID: perforce.ravenbrook.com
2013-05-15 14:18:28 +01:00
Gareth Rees
10c13b2a54
New macro mps_arg and revised macro mps_args_add mean that client programs no longer need to know which keyword argument goes in which field. revise documentation accordingly.
...
Copied from Perforce
Change: 181736
ServerID: perforce.ravenbrook.com
2013-05-12 17:21:03 +01:00
Richard Brooksby
8b430778b6
Replacing varargs passed to seginit with keyword argument list.
...
Copied from Perforce
Change: 181679
ServerID: perforce.ravenbrook.com
2013-05-09 17:34:01 +01:00
Richard Brooksby
b4e1f173db
Changing required keyword arguments to cause an assertion rather than return a status code, and removing repetition in how this is expressed.
...
Copied from Perforce
Change: 181674
ServerID: perforce.ravenbrook.com
2013-05-09 15:15:40 +01:00
Richard Brooksby
3ab047467f
Macroizing keyword definitions and adding more keyword argument checking methods.
...
Copied from Perforce
Change: 181647
ServerID: perforce.ravenbrook.com
2013-05-08 23:40:40 +01:00
Richard Brooksby
e67939cabb
Pushing varargs decoding into a pool class method. much simpler.
...
Copied from Perforce
Change: 181642
ServerID: perforce.ravenbrook.com
2013-05-08 22:43:51 +01:00
Richard Brooksby
fcef8c8a63
Eliminating mps_key_varargs and instead decoding deprecated varargs in one place in mpsi.c, so that each pool or other class doesn't have to deal with them.
...
Copied from Perforce
Change: 181638
ServerID: perforce.ravenbrook.com
2013-05-08 17:24:11 +01:00
Richard Brooksby
a8afd8e6f4
Converting pools to use keyword arguments, mostly, and so far inconsistently, but at least it compiles.
...
Copied from Perforce
Change: 181635
ServerID: perforce.ravenbrook.com
2013-05-08 16:21:12 +01:00
Richard Brooksby
f53a5e569d
Configuring awl pool to give give up and scan an entire segment after 200 single access hits, after observing open dylan bootstrap on ubuntu 12 hammering the table and making no progress.
...
AWL pool no longer tries a single access if the trace band has reached rank WEAK, since it doesn't need to.
Copied from Perforce
Change: 179434
ServerID: perforce.ravenbrook.com
2012-09-11 21:21:26 +01:00
Richard Brooksby
dd039bfbdc
Fixing bugs introduced by type puns passed through scanning methods, discovered by offsetting mps_ss_s from the beginning of scanstatestruct.
...
Adding a pseudo-target "find-puns" which, on FreeBSD mostly, prints useful warnings about strict aliasing rule violations.
Fixing more strict aliasing rule violations found by the above.
Copied from Perforce
Change: 179358
ServerID: perforce.ravenbrook.com
2012-09-07 23:48:14 +01:00
Richard Brooksby
ddcce429f4
Abolishing eventgen.pl. event structures are now expanded by the preprocessor.
...
Abolishing event formats. Each event now has its own structure.
Event parameters are now written directly into the event buffer, rather than being copied twice.
Copied from Perforce
Change: 179010
ServerID: perforce.ravenbrook.com
2012-08-21 22:48:11 +01:00
David Lovemore
0c22e4fb5a
Fixed up long constants and shifts that needed to be cast to correct type.
...
Copied from Perforce
Change: 178095
ServerID: perforce.ravenbrook.com
2012-05-03 16:38:47 +01:00