1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-05 05:41:40 -07:00
Commit graph

148 commits

Author SHA1 Message Date
Gareth Rees
a8d9fcc694 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
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
Gareth Rees
456d747b61 Rename segpref to locuspref -- this structure describes preferences for the placement of any kind of address, not just segments.
Add LocusPrefDescribe and use it in MVFFDescribe.

Copied from Perforce
 Change: 187061
 ServerID: perforce.ravenbrook.com
2014-09-27 11:27:00 +01:00
Gareth Rees
77f35a9979 Fix problems identified by nb in review <https://info.ravenbrook.com/mail/2014/07/24/12-21-04/0/>.
Copied from Perforce
 Change: 186945
 ServerID: perforce.ravenbrook.com
2014-08-06 16:18:34 +01:00
Gareth Rees
aadc2f2da6 Catch-up merge from master sources @186573 to branch/2014-05-28/align.
Copied from Perforce
 Change: 186631
 ServerID: perforce.ravenbrook.com
2014-06-14 16:11:20 +01:00
Gareth Rees
341617adf0 More modular to assign the primary chunk in arenachunkinsert.
Copied from Perforce
 Change: 186621
 ServerID: perforce.ravenbrook.com
2014-06-14 14:34:10 +01:00
Gareth Rees
e40740db1c Fix defects found by coverity <https://info.ravenbrook.com/mail/2014/06/13/18-12-37/0/>
Copied from Perforce
 Change: 186604
 ServerID: perforce.ravenbrook.com
2014-06-13 21:45:46 +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
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
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
74a03398c0 Fix arenadescribetracts:
* Return value from TreeVisitor is Bool, not Res, so pass Res back via a closure.
* Can't use TRACT_TRACT_FOR while iterating over the chunk tree, because that macro uses ChunkOfAddr. (A plain loop is simpler.)
* Mustn't try to describe unallocated tracts -- they might not even be mapped into memory. So consult the allocTable.
Make tract functions more robust:
* TractCheck must only check the pool if there is one (otherwise it segfaults for unallocated tracts)
* TractLimit can't look up the arena via TractPool, because the tract might not have a pool. So pass in the arena as an argument.

Copied from Perforce
 Change: 186547
 ServerID: perforce.ravenbrook.com
2014-06-12 18:46:49 +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
b12e31ed9d Fix problems identified by dl in review <https://info.ravenbrook.com/mail/2014/06/12/15-04-02/0/>.
Copied from Perforce
 Change: 186542
 ServerID: perforce.ravenbrook.com
2014-06-12 17:11:09 +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
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
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
26e8aecdf2 Rename grainsizecheck as arenagrainsizecheck.
Copied from Perforce
 Change: 186506
 ServerID: perforce.ravenbrook.com
2014-06-11 17:33:10 +01:00
Gareth Rees
99f2473bd8 One last occurrence of arena->alignment.
Copied from Perforce
 Change: 186504
 ServerID: perforce.ravenbrook.com
2014-06-11 17:27:25 +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
dc84b7e826 Oops, fumbled the merge.
Copied from Perforce
 Change: 186493
 ServerID: perforce.ravenbrook.com
2014-06-11 14:02:22 +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
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
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
3c486bd581 Fix problems identified by rb in review <https://info.ravenbrook.com/mail/2014/06/04/15-13-24/0/>.
Copied from Perforce
 Change: 186449
 ServerID: perforce.ravenbrook.com
2014-06-08 20:28:33 +01:00
Gareth Rees
b8c39883ea Pass and check special closure values unused_pointer, unused_size instead of null, 0.
Copied from Perforce
 Change: 186352
 ServerID: perforce.ravenbrook.com
2014-05-29 15:28:33 +01:00
Richard Brooksby
e0c1ed0734 Clarifying a couple of comments most likely messed up by search-and-replace edits.
Copied from Perforce
 Change: 186344
 ServerID: perforce.ravenbrook.com
2014-05-28 17:42:11 +01:00
Gareth Rees
e35f3b1b6c Fix problems identified by dl in review <https://info.ravenbrook.com/mail/2014/05/23/12-44-54/0/>.
Copied from Perforce
 Change: 186300
 ServerID: perforce.ravenbrook.com
2014-05-25 20:49:22 +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
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
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
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
5dbf068b5e Restore "avoid" mechanism in arenaallocpage.
Make sure that we can tear down the arena if ArenaCreate fails:
1. Don't set hasFreeCBS until the block pool has some pages.
2. Finish the CBS block pool in ArenaFinish, not ArenaDestroy.
3. Delete the chunk from the arena's free CBS before destroying the chunk, just in case the chunk contains pages from the CBS's block pool.

Copied from Perforce
 Change: 186177
 ServerID: perforce.ravenbrook.com
2014-05-19 12:24:11 +01:00
Gareth Rees
2c54df97c5 No need to store primary chunk in the closure: can get it via the arena.
Copied from Perforce
 Change: 186164
 ServerID: perforce.ravenbrook.com
2014-05-18 22:27:07 +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
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
3d1db4eab6 Use cbs subclasses to implement the fast-find and find-in-zones features. this avoids the need to control behaviour by passing booleans, and it means that there is no wasted space in the cbs block structure when these features are not used.
Bring splay tree design up to date; add missing diagrams; move it to the "current" section of the manual.

Copied from Perforce
 Change: 185294
 ServerID: perforce.ravenbrook.com
2014-04-07 15:36:18 +01:00
Gareth Rees
0c2cd2ab6d Catch-up merge from master sources to branch/2014-03-30/addrset.
Copied from Perforce
 Change: 185288
 ServerID: perforce.ravenbrook.com
2014-04-07 15:02:09 +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
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
b9e2c81084 Test the failover module (both always and never failing over).
Fix result code bug in failoverInsert.
Test all result codes in fotest.
Tidy up code and documentation.

Copied from Perforce
 Change: 185207
 ServerID: perforce.ravenbrook.com
2014-04-03 14:46:58 +01:00
Gareth Rees
10c511ff58 Landiargs -> liargs for terseness and consistency.
Copied from Perforce
 Change: 185147
 ServerID: perforce.ravenbrook.com
2014-04-01 23:39:03 +01:00
Gareth Rees
7c640f78d2 First draft of land design.
Copied from Perforce
 Change: 185146
 ServerID: perforce.ravenbrook.com
2014-04-01 23:35:23 +01:00