Gareth Rees
9dc8bd1e70
Because of the requirement to make popped objects dead in a timely fashion, we can only implement lightweight pops to an address in the buffer. in particular we can't support pending pops, which means that there's no need for the fields in the allocation point that support pending pops.
...
Copied from Perforce
Change: 187232
ServerID: perforce.ravenbrook.com
2014-10-13 12:46:28 +01:00
Gareth Rees
fce7e87366
It's neater to pad out free segments instead of adding a field to the segment structure.
...
Copied from Perforce
Change: 187231
ServerID: perforce.ravenbrook.com
2014-10-13 11:07:16 +01:00
Gareth Rees
fa4429dae1
Make finaltest more strict so that it catches job003884.
...
Fix mps_pool_free_size for AWL and LO in the hot variety.
Copied from Perforce
Change: 187230
ServerID: perforce.ravenbrook.com
2014-10-13 11:04:30 +01:00
Gareth Rees
28df311912
Update the design of the frame pop algorithm, with justification.
...
Copied from Perforce
Change: 187225
ServerID: perforce.ravenbrook.com
2014-10-12 15:24:53 +01:00
Gareth Rees
2b679e0f02
Fix scanning/walking for snc:
...
Record which segments are free and don't walk them (objects in these segments are dead).
If a buffered segment has a pending pop, don't scan or walk objects beyond the address that's going to be popped to (these objects are also dead).
Don't try to do a lightweight pop to an address that's not in the segment attached to the buffer -- the segment being popped to (and any other segments on the stack in between) are now dead, and the only way to mark them as being dead is to do a heavyweight pop.
Copied from Perforce
Change: 187224
ServerID: perforce.ravenbrook.com
2014-10-12 15:20:57 +01:00
Gareth Rees
064c3cea16
Add sncss test case to xcode project.
...
Copied from Perforce
Change: 187222
ServerID: perforce.ravenbrook.com
2014-10-12 13:58:26 +01:00
Gareth Rees
25cf17d45e
Don't set a frame pointer at the limit of a segment, as this is ambiguous: is it at the limit of the segment, or at the base of the segment that's adjacent in memory?
...
Copied from Perforce
Change: 187220
ServerID: perforce.ravenbrook.com
2014-10-12 11:58:13 +01:00
Gareth Rees
78ee0e2cb4
Check that the found segment belongs to the right pool.
...
Copied from Perforce
Change: 187219
ServerID: perforce.ravenbrook.com
2014-10-12 11:20:55 +01:00
Gareth Rees
44cad37717
New test case sncss.
...
Copied from Perforce
Change: 187217
ServerID: perforce.ravenbrook.com
2014-10-11 21:07:29 +01:00
Gareth Rees
3cebca5713
Make walkt0 test case much more stringent: it now checks the size and count of the objects found in the walk.
...
Add SNC to the walkt0 test case.
Copied from Perforce
Change: 187216
ServerID: perforce.ravenbrook.com
2014-10-11 18:06:05 +01:00
Gareth Rees
64d9eb5d2c
Add totalsize and freesize methods for snc.
...
Copied from Perforce
Change: 187215
ServerID: perforce.ravenbrook.com
2014-10-11 18:04:05 +01:00
Gareth Rees
87d334ee07
New function dylan_ispad determines if an object is a padding object. (this is for use by test cases, to check that pools have accounted correctly for padding objects.)
...
Copied from Perforce
Change: 187214
ServerID: perforce.ravenbrook.com
2014-10-11 17:56:27 +01:00
Gareth Rees
5e2ff95048
Branching master to branch/2014-10-11/snc.
...
Copied from Perforce
Change: 187210
ServerID: perforce.ravenbrook.com
2014-10-11 13:38:51 +01:00
Gareth Rees
8c3e1f4d6c
Link snc in the file-at-a-time builds, so that they match the mps.c builds.
...
Copied from Perforce
Change: 187208
ServerID: perforce.ravenbrook.com
2014-10-11 12:08:24 +01:00
Gareth Rees
42633ca624
Turn off the spare memory on the mvff pool so that it returns freed memory to the arena immediately.
...
Free the initial allocations so that the result determination is accurate.
Copied from Perforce
Change: 187206
ServerID: perforce.ravenbrook.com
2014-10-11 00:57:28 +01:00
Gareth Rees
34c8efce22
Specifying assertcond rather than assertline is likely to be more robust against code changes.
...
Copied from Perforce
Change: 187203
ServerID: perforce.ravenbrook.com
2014-10-10 22:55:48 +01:00
Gareth Rees
18a618cfe1
Need to take spare committed memory into account when checking that memory usage hasn't gone up after a collection.
...
Copied from Perforce
Change: 187202
ServerID: perforce.ravenbrook.com
2014-10-10 22:43:07 +01:00
Gareth Rees
f49ea829b9
In function/45.c, read from ambig[i] to prevent the compiler from optimizing away the array and so allowing p[i] to die.
...
In function/12.c, add a garbage collection to check that the allocation point protocol is being followed. Ensure there's an ambiguous reference to reserved objects before committin them.
Copied from Perforce
Change: 187200
ServerID: perforce.ravenbrook.com
2014-10-10 22:14:22 +01:00
Gareth Rees
90b8c2128f
Use .function for the tag here, because docutils doesn't turn .f into a link.
...
Copied from Perforce
Change: 187198
ServerID: perforce.ravenbrook.com
2014-10-10 19:37:35 +01:00
Gareth Rees
28ceede8dc
Job003495 is fixed, so mmqa test function/171.c now passes.
...
Reduce workload in function/171.c by a factor of 10 so that it completes in a reasonable amount of time.
Copied from Perforce
Change: 187194
ServerID: perforce.ravenbrook.com
2014-10-10 17:35:59 +01:00
Gareth Rees
92fceb127f
Job003739 is fixed, so mmqa test function/51.c passes.
...
Copied from Perforce
Change: 187192
ServerID: perforce.ravenbrook.com
2014-10-10 17:21:36 +01:00
Gareth Rees
8a529f4ba5
There's no such type as mps_count_t, so don't refer to it in the documentation!
...
Copied from Perforce
Change: 187191
ServerID: perforce.ravenbrook.com
2014-10-10 17:17:38 +01:00
Gareth Rees
faf6789c71
Cast arguments to the correct type to avoid them being decoded incorrectly by the varargs interface.
...
Copied from Perforce
Change: 187190
ServerID: perforce.ravenbrook.com
2014-10-10 17:14:09 +01:00
Gareth Rees
712b443baf
Make mmqa test suite compile and run on linux (specifically lii6ll).
...
Avoid compiler warnings about unused variables and bad casts.
Copied from Perforce
Change: 187188
ServerID: perforce.ravenbrook.com
2014-10-10 16:58:01 +01:00
Gareth Rees
f24a66c722
It's better to run from test directory -- otherwise testsets will have to be rewritten.
...
Copied from Perforce
Change: 187187
ServerID: perforce.ravenbrook.com
2014-10-10 16:56:34 +01:00
Gareth Rees
51209768de
Explain how to run the mmqa test suite on any unix.
...
Remove unused variables and avoid pointer->int conversions, so that the MMQA tests will run on platform lii6gc.
Copied from Perforce
Change: 187185
ServerID: perforce.ravenbrook.com
2014-10-10 15:32:30 +01:00
Gareth Rees
1276a299d3
Update the record of passing test cases.
...
Copied from Perforce
Change: 187183
ServerID: perforce.ravenbrook.com
2014-10-10 14:07:13 +01:00
Gareth Rees
dddab0caf3
Fix mmqa test function/136.c:
...
* Turn off the spare memory on the MVFF pool so that it returns freed memory to the arena immediately.
* Allocate something in the MV pool initially so that the span and block pools have some capacity.
* Stop the test if there isn't room in the MVFF to allocate 2 big blocks.
* Change the test success criterion so that it passes on 64-bit.
Copied from Perforce
Change: 187182
ServerID: perforce.ravenbrook.com
2014-10-10 14:04:41 +01:00
Gareth Rees
30eb2e9b27
It's now safe to allocate large objects in mvff pools.
...
Copied from Perforce
Change: 187180
ServerID: perforce.ravenbrook.com
2014-10-10 12:43:20 +01:00
Gareth Rees
8fb1e64614
Don't talk about "segments" in the pool documentation (this is a detail of the implementation, and may change).
...
The restriction that "buffered allocation can't allocate across segment boundaries" no longer affects MVFF as the pool no longer uses segments.
Copied from Perforce
Change: 187179
ServerID: perforce.ravenbrook.com
2014-10-10 12:42:29 +01:00
Gareth Rees
db01741686
Turn off the spare memory on the mvff pool so that it returns freed memory to the arena immediately.
...
Copied from Perforce
Change: 187177
ServerID: perforce.ravenbrook.com
2014-10-10 12:30:17 +01:00
Gareth Rees
5cf7a4aa4e
Turn off the hysteresis on the mvff pool so that we are testing the arena hysteresis only.
...
Copied from Perforce
Change: 187175
ServerID: perforce.ravenbrook.com
2014-10-10 12:08:12 +01:00
Gareth Rees
ae4328ad5a
Fix the definition of mps_key_spare_field so that you can set this keyword argument when creating an mvff pool. add test cases that use this feature.
...
Copied from Perforce
Change: 187174
ServerID: perforce.ravenbrook.com
2014-10-10 12:05:23 +01:00
Gareth Rees
6959f52a97
Remove call to deprecated macro mps_args_done.
...
Copied from Perforce
Change: 187171
ServerID: perforce.ravenbrook.com
2014-10-10 11:21:22 +01:00
Gareth Rees
5eaa1f50ef
Add note that the mps does not throw or catch exceptions, as suggested by rb < https://info.ravenbrook.com/mail/2014/10/09/15-07-32/0/ >. gloss "freestanding" and "hosted" to help explain why.
...
Copied from Perforce
Change: 187169
ServerID: perforce.ravenbrook.com
2014-10-10 10:52:44 +01:00
Gareth Rees
05ac242c57
If you try to create a client arena that's too small for the full complement of zones, return mps_res_memory instead of asserting.
...
If you try to create a virtual memory arena that's too small for the full complement of zones, round up the size to the minimum instead of asserting.
Copied from Perforce
Change: 187164
ServerID: perforce.ravenbrook.com
2014-10-08 22:16:56 +01:00
Gareth Rees
51a264446a
Amc now asserts that references (unless ambiguous) are aligned to the pool alignment.
...
Copied from Perforce
Change: 187162
ServerID: perforce.ravenbrook.com
2014-10-08 21:13:34 +01:00
Gareth Rees
00229b0479
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
f3cf67c792
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
973518c36a
No need to detect "mps assertion failed" -- assertions are captured via mmqa_assert_handler.
...
Copied from Perforce
Change: 187153
ServerID: perforce.ravenbrook.com
2014-10-07 22:15:36 +01:00
Gareth Rees
2108c78cc0
Fix test cases: mps_arena_class_vmnz no longer exists, use mps_arena_class_vm instead.
...
Copied from Perforce
Change: 187152
ServerID: perforce.ravenbrook.com
2014-10-07 22:14:22 +01:00
Gareth Rees
88ca7174e7
Remove unused(boot) as boot is not unused.
...
No need for NOOP -- even without the UNUSED statement above it, an empty block would be legal in C.
Copied from Perforce
Change: 187147
ServerID: perforce.ravenbrook.com
2014-10-07 10:20:28 +01:00
Gareth Rees
3e5e2f2595
Rename "page" to "grain" in mvffreduce. use unused_size for an unused closure argument.
...
Copied from Perforce
Change: 187140
ServerID: perforce.ravenbrook.com
2014-10-04 16:09:27 +01:00
Gareth Rees
e6ce992ef2
Use one step period each run (not four) so that the test completes in a reasonable amount of time in the cool variety, but choose the step period randomly so as to get broader coverage.
...
Copied from Perforce
Change: 187130
ServerID: perforce.ravenbrook.com
2014-10-03 09:30:55 +01:00
Gareth Rees
efd677fe45
Document the assertion that you get if you destroy a pool containing objects registered for finalization, and then continue to run the garbage collector.
...
Copied from Perforce
Change: 187121
ServerID: perforce.ravenbrook.com
2014-10-02 13:05:26 +01:00
Gareth Rees
2b424af0a5
Remove unused argument 'buckets' from scheme table_find. (this broke the xcode build on os x.)
...
Copied from Perforce
Change: 187116
ServerID: perforce.ravenbrook.com
2014-10-02 11:42:33 +01:00
Gareth Rees
4f25a133fd
Better place for test suite readme, also more convenient to run from top-level directory.
...
Copied from Perforce
Change: 187111
ServerID: perforce.ravenbrook.com
2014-10-02 11:09:03 +01:00
Gareth Rees
83a93881a2
Design.mps.ring.naming: "when one structure parent contains one ring of child structures, the field in parent is usually known as childring, and the field in child is known as parentring". so the field in chunkstruct should be named arenaring.
...
Copied from Perforce
Change: 187084
ServerID: perforce.ravenbrook.com
2014-09-29 20:54:00 +01:00
Gareth Rees
b1dd12faaa
Remove unused variables remainderbase and remainderlimit.
...
Copied from Perforce
Change: 187082
ServerID: perforce.ravenbrook.com
2014-09-29 09:55:24 +01:00
Gareth Rees
ae41e87726
Fix bug in event_desc macro introduced in change 187071.
...
Copied from Perforce
Change: 187081
ServerID: perforce.ravenbrook.com
2014-09-29 09:48:47 +01:00