mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-23 13:27:36 +00:00
No description
New method arena->class->compact: ArenaCompact, ArenaTrivCompact, VMCompact [arena.c, arenavm.c, mpm.h, mpmst.h, mpmtypes.h] trace.c, arenavm.c: - call ArenaCompact() at traceReclaim; - also record trace->preTraceArenaReserved, to show pre- and peak-vmem during a collection arenavm.c: - on VMCompact(), destroy any empty chunks (except the primary); - emit VMCompact diag for all client-requested collections, plus any others where chunks were gained or lost during the collection; - VMCompact diag shows vmem: pre-collection, peak, amount returned, and final - VMCompact diag also shows trace stats: cond, live / % / stuck(pip), notCond - M_whole, M_frac: print counts of bytes as Megabytes and thousandths (also, in VMArenaFinish, null out arena->primary in VMArenaFinish, so it is not left dangling). mpm.c: new "$3" format for 0-padding 3-char-wide field, for thousandths of a MB tract.c -- fix ChunkCache defects: - previously, if cache is empty (chunkCache->chunk == NULL) then other fields are *undefined*; but code looks at them anyway (!) without first checking chunkCache->chunk; - change it (.chunk.empty.fields) so that, if cache is empty, other fields have defined values: cache-using code may look at them, and they are chosen so that no cache hit will occur. --> this fixes crashing defect shown by changelist 170072 - AVERT(ChunkCache) in the many places it should be checked; - use AVERT_CRITICAL in ChunkEncache, because it is called by ChunkOfAddr; - drop never-read chunkCache->pageTableBase and pageTableLimit fields: they were used for ChunkOfSeg(), back when each SegStruct was actually a PageStruct is some chunk's PageStructTable; see VMArenaChunkOfSeg() in //info.ravenbrook.com/project/mps/branch/2001-08-13/trunk/src/arenavm.chttps://github.com/Ravenbrook/mps/issues/46 - there's no need for arena to initialise the chunk cache; this allows en/decache functions to be local to tract.c (ie. declared static) zcoll.c: How to get rid of all the objects, so full collect really collects all automatic objects: - Rootdrop() helps, but we can still retain a 1.2MB object; - stackwipe() does not help much -- these unwanted ambig refs are being left on the stack by MPS code that runs between mps_arena_collect and the flip! - therefore StackScan(0/1) to destroy stack+reg root before full collect: it's the only way to be sure. Reproducibility: - give Make() a random? switch, acted on by df() = diversity function, to allow bypass of rnd(); - ZRndStateSet, to set the seed for rnd() Unpark: - release after mps_arena_collect (job002206) Output: - print_M: Megabytes more useful than Mebibytes - move printf announcing Destroying arena etc to just before, not just after, we do it. testlib.c/h -- Reproducibility: - fix rnd_state so a rnd_state getter is possible; - testlib.h += rnd_state_t, rnd_state(), rnd_state_set(), rnd_state_set_v2() vmix.c: add VM_ix_Create_ok/VM_ix_Destroy diags (note: not in vmw3.c yet) trace.c: no newline on "traceFindGrey" diag please locus.c: no newline on "condemn gens" diag please diag.c: just VMCompact diag readme.txt -- update for release. Copied from Perforce Change: 170102 ServerID: perforce.ravenbrook.com |
||
|---|---|---|
| mps | ||