Richard Brooksby
4ce753ec45
Abstracting partially mapped page tables into a sparsearray abstract datatype, removing a great deal of complexity from the vm arena, and some unnecessary double-initialisation and scanning loops during allocation.
...
Copied from Perforce
Change: 184333
ServerID: perforce.ravenbrook.com
2014-02-12 17:32:20 +00:00
Richard Brooksby
b4c03d0ef1
Clarifying how the beginning of the page table gets unmapped.
...
Copied from Perforce
Change: 184332
ServerID: perforce.ravenbrook.com
2014-02-12 15:06:04 +00:00
Richard Brooksby
0833d101a0
Responding to review comments. see < https://info.ravenbrook.com/mail/2014/02/12/11-30-00/0/ >.
...
Copied from Perforce
Change: 184331
ServerID: perforce.ravenbrook.com
2014-02-12 11:31:00 +00:00
Richard Brooksby
763c6af2bc
Purging half of the spare memory, rather than just enough to get under the limit, so that there aren’t many small unmaps, and many scans for spare pages.
...
Copied from Perforce
Change: 184326
ServerID: perforce.ravenbrook.com
2014-02-11 18:26:00 +00:00
Richard Brooksby
d3f9686d30
Fixing boundary cases for unmapping page table pages when there aren’t a nice whole number of descriptors on each page.
...
Copied from Perforce
Change: 184325
ServerID: perforce.ravenbrook.com
2014-02-11 17:18:21 +00:00
Richard Brooksby
3077840ff8
Adding a cache of free pages per zone to the arena, so that we recycle single pages fast, especially after each reclaim.
...
Copied from Perforce
Change: 184324
ServerID: perforce.ravenbrook.com
2014-02-11 15:23:32 +00:00
Richard Brooksby
2b5e126c48
Further tidying up of the page descriptor and naming.
...
Copied from Perforce
Change: 184323
ServerID: perforce.ravenbrook.com
2014-02-11 14:14:16 +00:00
Richard Brooksby
40e4e93dec
Encoding the page state in the bottom two bits of the first field, rather than using up a whole word, in order to make room for a free list pointer.
...
Copied from Perforce
Change: 184322
ServerID: perforce.ravenbrook.com
2014-02-11 13:41:57 +00:00
Richard Brooksby
4329661aca
Improving commentary on page table unmapping code in response to review. see < https://info.ravenbrook.com/mail/2014/01/31/17-26-12/0/ >.
...
Copied from Perforce
Change: 184291
ServerID: perforce.ravenbrook.com
2014-02-04 16:56:36 +00:00
Richard Brooksby
d206bd35b9
Changes from review comments made in < https://info.ravenbrook.com/mail/2014/01/31/13-40-25/0/ >.
...
ArenaSpareCommitExceeded changed to ArenaPurgeSpare so that the arena can properly reduce the amount of spare memory when setting the commit limit etc.
pagesMarkAllocated promptly unmaps page table pages in its error path.
Miscellaneous clarifications and extra checking.
Copied from Perforce
Change: 184267
ServerID: perforce.ravenbrook.com
2014-01-31 15:21:21 +00:00
Richard Brooksby
e5f2846a2d
Keeping a single ring of spare chunks in the vm arena, in lru order, so that spare pages are unmapped closer to lru.
...
Copied from Perforce
Change: 184251
ServerID: perforce.ravenbrook.com
2014-01-31 09:36:42 +00:00
Richard Brooksby
8861cdcb2b
Using a more robust page table unmapping method that catches pages previously left mapped in the error page of pagesmarkallocated.
...
Test run passes.
Copied from Perforce
Change: 184250
ServerID: perforce.ravenbrook.com
2014-01-31 02:05:11 +00:00
Richard Brooksby
b937a0b8fc
Attempting to correct the unmapping of the page table. still doesn’t quite work.
...
Copied from Perforce
Change: 184249
ServerID: perforce.ravenbrook.com
2014-01-31 00:03:32 +00:00
Richard Brooksby
ecc0ab3dfe
Abolishing the spare pages bit table.
...
Not quite working yet. This code fails to unmap unused page table pages, and so triggers an assertion at chunk finish.
Copied from Perforce
Change: 184246
ServerID: perforce.ravenbrook.com
2014-01-30 19:58:36 +00:00
Richard Brooksby
9c70f44c70
Adding spare pages to a ring within each chunk, so that they can be found without a bit table scan.
...
Spare pages are returned to the OS using the ring in roughly LRU order.
Only enough spare pages are returned to maintain hysteresis, rather than all of them.
Nearly ready to strip out the noSparePages bit table.
Copied from Perforce
Change: 184245
ServerID: perforce.ravenbrook.com
2014-01-30 19:58:36 +00:00
Richard Brooksby
9e197b6a79
Fix broken hysteresis in tract mapping. only purge spare pages if it’s possible to free a chunk, rather than speculatively every reclaim. see < https://info.ravenbrook.com/mail/2014/01/25/17-37-52/0/ >.
...
Copied from Perforce
Change: 184125
ServerID: perforce.ravenbrook.com
2014-01-25 18:00:51 +00:00
Richard Brooksby
f906187add
iterating over segments using the pool and segment rings, rather than scanning the tract table, which may be full of irrelevant tracts, especially when non-gc pools are large. see < https://info.ravenbrook.com/mail/2014/01/25/12-16-09/0/ >.
...
Copied from Perforce
Change: 184120
ServerID: perforce.ravenbrook.com
2014-01-25 15:33:10 +00:00
Richard Brooksby
76b66a7083
Adding a rash configuration to xcode builds.
...
Copied from Perforce
Change: 184117
ServerID: perforce.ravenbrook.com
2014-01-25 15:25:52 +00:00
Richard Brooksby
6e8d189002
Ignoring a.out (default output from cc).
...
Copied from Perforce
Change: 184116
ServerID: perforce.ravenbrook.com
2014-01-25 15:24:28 +00:00
Richard Brooksby
728ea5e066
Inclusion order mysteriously prevents profiling under xcode.
...
Copied from Perforce
Change: 184111
ServerID: perforce.ravenbrook.com
2014-01-24 16:00:49 +00:00
Richard Brooksby
8086cc7cad
Merging the "dj" benchmark from the benchmarking development branch.
...
Copied from Perforce
Change: 184106
ServerID: perforce.ravenbrook.com
2014-01-24 15:29:28 +00:00
Richard Brooksby
e37946b6f9
Catch-up merge from master.
...
Copied from Perforce
Change: 184103
ServerID: perforce.ravenbrook.com
2014-01-24 14:22:27 +00:00
Gareth Rees
f1c066dab4
Remove obsolete file osxc.h.
...
Copied from Perforce
Change: 183954
ServerID: perforce.ravenbrook.com
2014-01-12 21:57:54 +00:00
Gareth Rees
158e4ea974
Test case libcbt.c is obsolete: mpslibcb mechanism was removed in change 179279.
...
Copied from Perforce
Change: 183952
ServerID: perforce.ravenbrook.com
2014-01-12 21:29:53 +00:00
Gareth Rees
b8f0a9195c
Clarify decision to preserve/reclaim in amcreclaimnailed, avoiding ternary operator inside the if condition.
...
Copied from Perforce
Change: 183948
ServerID: perforce.ravenbrook.com
2014-01-12 11:21:21 +00:00
Gareth Rees
75e5c45a53
Remove unused (and unusable) macros arenarootring() and arenatracering().
...
Copied from Perforce
Change: 183947
ServerID: perforce.ravenbrook.com
2014-01-12 11:19:35 +00:00
Gareth Rees
7a2a16aa73
Ignore build products for new platform lii6ll.
...
Ignore telemetry database mpiso*.sql.
Copied from Perforce
Change: 183942
ServerID: perforce.ravenbrook.com
2014-01-11 21:37:19 +00:00
Gareth Rees
e184ad8938
Rename spi3.c to spw3i3mv.c as it is windows- and microsoft- specific.
...
Copied from Perforce
Change: 183939
ServerID: perforce.ravenbrook.com
2014-01-10 20:51:13 +00:00
Gareth Rees
902c10954b
Merge branch/2013-05-17/emergency into the master sources.
...
This change refactors MVTBufferFill and makes related improvements to improve the clarity of the code.
Copied from Perforce
Change: 183935
ServerID: perforce.ravenbrook.com
2014-01-10 18:52:08 +00:00
Gareth Rees
ff2ff70345
Change result type of abqpush, abqpop and abqpeek to bool.
...
Copied from Perforce
Change: 183934
ServerID: perforce.ravenbrook.com
2014-01-10 18:44:46 +00:00
Gareth Rees
1049386b6f
Make improvements (mostly to comments) based on reviews:
...
https://info.ravenbrook.com/mail/2014/01/10/15-57-50/0/
https://info.ravenbrook.com/mail/2014/01/10/15-40-47/0/
Copied from Perforce
Change: 183932
ServerID: perforce.ravenbrook.com
2014-01-10 18:18:06 +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
Gareth Rees
ba3aaeb575
Clarify comment above bufferisreset: by "all pointers into the region" it actually means "the base, init, alloc, and limit pointers".
...
Copied from Perforce
Change: 183637
ServerID: perforce.ravenbrook.com
2013-11-04 15:31:58 +00:00
Gareth Rees
e82e3c4a21
Improve documentation of thread- and exception-safety precautions.
...
Copied from Perforce
Change: 183635
ServerID: perforce.ravenbrook.com
2013-11-04 15:14:47 +00:00
Gareth Rees
b45fc17861
Put testsetsize back to its original value of 200, so that randomsizealigned does not invoke undefined behaviour by right-shifting by more than the word width.
...
Copied from Perforce
Change: 183617
ServerID: perforce.ravenbrook.com
2013-10-31 09:39:09 +00:00
Gareth Rees
535f7e6bdc
Add comments and assertions to make it clearer how btfindresrange and btfindresrangehigh work. in particular, explain why the possible unsigned integer underflow in btfindresrangehigh is safe.
...
Copied from Perforce
Change: 183613
ServerID: perforce.ravenbrook.com
2013-10-30 15:53:19 +00:00
Gareth Rees
d943faa62b
Don't call mvtsegfree from mvtfinish: we don't know whether or not there was any fragmented (unavailable) space in this segment, and so we can't keep the accounting correct. add assertion in mvtsegfree that detects incorrect accounting.
...
Copied from Perforce
Change: 183610
ServerID: perforce.ravenbrook.com
2013-10-30 13:15:09 +00:00
Gareth Rees
c59ff51131
The next release of the mps will be 1.112.0, so update version.c.
...
Update the version creating procedure: version.c is now the only file containing the release number.
Copied from Perforce
Change: 183548
ServerID: perforce.ravenbrook.com
2013-10-10 14:29:31 +01:00
Gareth Rees
5b19a26400
Improve wording of comment.
...
Copied from Perforce
Change: 183526
ServerID: perforce.ravenbrook.com
2013-10-04 11:50:19 +01:00
Gareth Rees
1289bde3ed
Fix broken mps_key_pool_debug_options keyword argument.
...
Copied from Perforce
Change: 183524
ServerID: perforce.ravenbrook.com
2013-10-04 11:05:56 +01:00
Gareth Rees
6971ab5691
Document that you can specify mps_key_rank when creating an allocation point on an ams pool. make mps_key_rank default to mps_rank_exact().
...
Copied from Perforce
Change: 183515
ServerID: perforce.ravenbrook.com
2013-10-02 15:44:34 +01:00
Gareth Rees
b5004beb4b
Make keyword mps_key_ams_support_ambiguous optional, with default value false. update documentation accordingly.
...
Copied from Perforce
Change: 183513
ServerID: perforce.ravenbrook.com
2013-10-02 15:14:57 +01: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
bb857594bd
Merge branch/2013-08-21/lii6ll/... into the master sources, adding new supported platform lii6ll (linux, x86-64, clang/llvm).
...
Copied from Perforce
Change: 183503
ServerID: perforce.ravenbrook.com
2013-10-01 14:04:36 +01:00
Gareth Rees
68f5280528
Avoid comparison of unsigned >= 0 so that we can compile without warnings under gcc -wextra.
...
Copied from Perforce
Change: 183501
ServerID: perforce.ravenbrook.com
2013-10-01 11:10:59 +01:00
Gareth Rees
73989d332e
Raise an error if variety is something other than rash, hot, or cool.
...
Copied from Perforce
Change: 183499
ServerID: perforce.ravenbrook.com
2013-10-01 10:53:09 +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
Gareth Rees
1e97a6a193
Turn on -wextra -wwrite-strings when compiling with gcc or clang.
...
Add missing initializer to mps_args_none.
Change "char *" to "const char *" where necessary.
Copied from Perforce
Change: 183494
ServerID: perforce.ravenbrook.com
2013-09-30 17:18:52 +01:00
Gareth Rees
55ef6fce3c
New supported platform lii6ll (linux, x86-64, clang/llvm).
...
Copied from Perforce
Change: 183414
ServerID: perforce.ravenbrook.com
2013-09-11 10:27:22 +01:00
Gareth Rees
98306c0095
Make the mps compilable under clang/llvm 3.0 with the -ansi -pedantic options:
...
Avoid if with empty body by adding NOOP.
Avoid extended offsetof in expansion of PageOfTract, linkOfMessage, linkOfRing, and Pool2AMST macros.
Copied from Perforce
Change: 183413
ServerID: perforce.ravenbrook.com
2013-09-11 10:21:12 +01:00