Gareth Rees
61a58b9b50
Fix problems noted by rb in review < https://info.ravenbrook.com/mail/2014/06/18/14-06-43/0/ >
...
Copied from Perforce
Change: 186667
ServerID: perforce.ravenbrook.com
2014-06-18 15:36:35 +01:00
Gareth Rees
ef7bb2c997
Catch-up merge from branch/2014-05-28/align to branch/2014-06-14/vm.
...
Copied from Perforce
Change: 186664
ServerID: perforce.ravenbrook.com
2014-06-17 15:52:16 +01:00
Gareth Rees
5fb05e31b6
Fix problems noted by dl in review < https://info.ravenbrook.com/mail/2014/06/17/13-35-38/0/ >.
...
Copied from Perforce
Change: 186662
ServerID: perforce.ravenbrook.com
2014-06-17 15:15:32 +01:00
Gareth Rees
e95af3fb0e
Store the vm descriptor in the vmarena and vmchunk structures.
...
Copied from Perforce
Change: 186624
ServerID: perforce.ravenbrook.com
2014-06-14 15:12:26 +01:00
Gareth Rees
8d9b6c0884
Improve the diff and make the vm implementations more closely parallel.
...
Copied from Perforce
Change: 186591
ServerID: perforce.ravenbrook.com
2014-06-13 17:59:37 +01:00
Gareth Rees
f39706c2be
Now that we can call vmpagesize without having a vm to hand, the implementation of vmcreate can be simpler: in particular, the grain size can already be correctly rounded up.
...
Copied from Perforce
Change: 186590
ServerID: perforce.ravenbrook.com
2014-06-13 17:39:58 +01:00
Gareth Rees
8c3e5886b4
Vmpagesize now takes no arguments -- this avoids suggesting (incorrectly) that it might return a different value for each vm.
...
New function ProtGranularity returns the protection granularity of the operating system. (On all currently supported operating systems this is the same as the granularity of memory mapping returned by VMPageSuze, but it's important to separate these concepts.) MPMCheck asserts that the granularity of memory mapping is a multiple of the granularity of protection.
Client arena supports MPS_KEY_ARENA_GRAIN_SIZE.
Some of the test cases set the arena grain size.
Copied from Perforce
Change: 186588
ServerID: perforce.ravenbrook.com
2014-06-13 17:19:23 +01:00
Gareth Rees
8acd14d9dd
Configurable grain size for client arenas.
...
Copied from Perforce
Change: 186579
ServerID: perforce.ravenbrook.com
2014-06-13 16:24:55 +01:00
Gareth Rees
76b164e48c
Catch-up merge from master sources @186573 to branch/2014-05-28/align.
...
Copied from Perforce
Change: 186574
ServerID: perforce.ravenbrook.com
2014-06-13 15:37:20 +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
72c680ccce
User size should be aligned up to the platform alignment (for convenience).
...
Add test cases.
Copied from Perforce
Change: 186571
ServerID: perforce.ravenbrook.com
2014-06-13 15:18:28 +01:00
Gareth Rees
66f3338574
Catch-up merge from master sources @186554 to branch/2014-05-17/chunk-tree.
...
Copied from Perforce
Change: 186563
ServerID: perforce.ravenbrook.com
2014-06-13 14:25:09 +01:00
Gareth Rees
cd291a5f7a
Merge branch/2014-06-11/grain into branch/2014-05-28/align.
...
Copied from Perforce
Change: 186561
ServerID: perforce.ravenbrook.com
2014-06-13 13:35:14 +01:00
Gareth Rees
a6c1da3a83
Restore the chunk ring.
...
Copied from Perforce
Change: 186558
ServerID: perforce.ravenbrook.com
2014-06-13 12:31:47 +01:00
Gareth Rees
2fa5f5688d
New function arenachunktreetraverse ensures that calls to chunkofaddr are reliably detected.
...
Copied from Perforce
Change: 186550
ServerID: perforce.ravenbrook.com
2014-06-12 20:28:50 +01:00
Gareth Rees
9aa93127ba
Remove obsolete macro arenachunkring.
...
Copied from Perforce
Change: 186549
ServerID: perforce.ravenbrook.com
2014-06-12 19:52:43 +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
3aabbcfa48
Rename vmgrainsize to vmpagesize (because it is in fact the operating system page size) and to avoid confusion with the arena grain size.
...
Copied from Perforce
Change: 186543
ServerID: perforce.ravenbrook.com
2014-06-12 17:18:50 +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
a6ea56c348
Use unused_pointer and unused_size now we have 'em.
...
Copied from Perforce
Change: 186492
ServerID: perforce.ravenbrook.com
2014-06-11 13:59:02 +01:00
Gareth Rees
ebfb9af464
Fix problems identified by rb in review < https://info.ravenbrook.com/mail/2014/06/05/14-58-24/0/ >.
...
Copied from Perforce
Change: 186451
ServerID: perforce.ravenbrook.com
2014-06-08 22:10:21 +01:00
Gareth Rees
4a59d4e9b7
Fix problems identified by rb in review < https://info.ravenbrook.com/mail/2014/05/29/13-01-02/0/ >.
...
Copied from Perforce
Change: 186347
ServerID: perforce.ravenbrook.com
2014-05-29 14:50:36 +01:00
Gareth Rees
1e773a75fe
Tree_traverse_and_delete is a better name than tree_destroy.
...
Generalize this macro so it can be used in all three cases.
Copied from Perforce
Change: 186228
ServerID: perforce.ravenbrook.com
2014-05-21 11:38:59 +01:00
Gareth Rees
f5e11efb38
Improvements following review.
...
Copied from Perforce
Change: 186227
ServerID: perforce.ravenbrook.com
2014-05-21 00:43:06 +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
d947fe9ff5
Replace the chunk ring with a chunk tree.
...
Fix bug in SplayFindNext (LESS and GREATER the wrong way round).
Copied from Perforce
Change: 186157
ServerID: perforce.ravenbrook.com
2014-05-17 17:05:42 +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
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
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
8624638093
Default value for mps_key_arena_size makes it easier to create arenas.
...
Copied from Perforce
Change: 185472
ServerID: perforce.ravenbrook.com
2014-04-11 21:15:09 +01:00
Gareth Rees
b70e268929
Fix problems found by coverity. see < https://info.ravenbrook.com/mail/2014/04/10/23-23-42/0/ > for full analysis.
...
Copied from Perforce
Change: 185445
ServerID: perforce.ravenbrook.com
2014-04-11 00:26:48 +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
c94be13bdf
Improved support for pelles c:
...
* Refactor nmake files so that a compiler-specific makefile is included; move Microsoft Visual C-specific options to mv.nmk.
* Add nmake files for Pelles (w3i3pc.nmk and pc.nmk).
* Rename spw3i3mv.c to spw3i3.c and spw3i6mv.c to spw3i6.c since these are also used by Pelles C.
* Make reasonable changes to the source code to avoid warnings from Pelles C:
** check results of function calls;
** avoid useless return values;
** undef max before defining it;
** ensure printf formats are checkable;
** move notreached() assertions to the end of blocks;
** suppress warnings in cases where the code shouldn't be changed ("Unreachable code", "Inline assembly code is not portable", "Structured Exception Handling is not portable").
Copied from Perforce
Change: 184977
ServerID: perforce.ravenbrook.com
2014-03-24 18:23:29 +00:00
Richard Brooksby
10f3818649
Merging branch/2014-01-17/cbs-tract-alloc into master.
...
Copied from Perforce
Change: 184783
ServerID: perforce.ravenbrook.com
2014-03-13 15:28:06 +00:00
Richard Brooksby
a2f3b72b3c
Return the correct reason that arena extension failed.
...
Copied from Perforce
Change: 184777
ServerID: perforce.ravenbrook.com
2014-03-13 13:48:43 +00:00
Richard Brooksby
2a7fd3c326
Incomplete response to code review. see < https://info.ravenbrook.com/mail/2014/03/07/11-21-03/0/ >.
...
Copied from Perforce
Change: 184735
ServerID: perforce.ravenbrook.com
2014-03-11 16:39:11 +00:00
Richard Brooksby
d62ff57a76
Removing redundant blacklisting event.
...
Copied from Perforce
Change: 184603
ServerID: perforce.ravenbrook.com
2014-02-28 13:46:51 +00:00
Richard Brooksby
eb75944742
Adding a keyword to the arena to disable zoned allocation.
...
Copied from Perforce
Change: 184599
ServerID: perforce.ravenbrook.com
2014-02-28 13:20:06 +00:00
Richard Brooksby
3309e4e7f4
Implementing allocation in the client arena class.
...
Copied from Perforce
Change: 184596
ServerID: perforce.ravenbrook.com
2014-02-28 11:23:59 +00:00
Richard Brooksby
01f030d637
Removing unused fields from vmarenastruct.
...
Copied from Perforce
Change: 184567
ServerID: perforce.ravenbrook.com
2014-02-26 17:37:16 +00:00
Richard Brooksby
51578a6bad
Removing the freering allocation cache, which breaks the cbs abstraction and does not give any benefit once we’re allocating from zonecbss.
...
Copied from Perforce
Change: 184529
ServerID: perforce.ravenbrook.com
2014-02-25 11:35:18 +00:00
Gareth Rees
f01363221e
Refactor the computation of the chunk size into its own function, thus avoiding an "unreachable code" error from clang.
...
Copied from Perforce
Change: 184482
ServerID: perforce.ravenbrook.com
2014-02-24 21:32:22 +00:00
Richard Brooksby
a298b3874b
Attempting to combine fast page allocation with cbs allocation. currently not working properly, as the cbs and free page rings overlap.
...
Copied from Perforce
Change: 184471
ServerID: perforce.ravenbrook.com
2014-02-19 11:04:18 +00:00
Richard Brooksby
9d0644c05e
Removing unused variable discovered by gcc.
...
Copied from Perforce
Change: 184380
ServerID: perforce.ravenbrook.com
2014-02-19 10:55:10 +00:00
Richard Brooksby
4dff43a172
Catch-up merge from master, mainly to pick up spare-ring merge.
...
Copied from Perforce
Change: 184365
ServerID: perforce.ravenbrook.com
2014-02-18 13:47:49 +00:00
Richard Brooksby
e4e59aa9bb
Minor updates in response to review. see https://info.ravenbrook.com/mail/2014/02/17/16-27-18/0/
...
Copied from Perforce
Change: 184354
ServerID: perforce.ravenbrook.com
2014-02-17 16:45:12 +00:00