Fixing WriteF to take ULongest rather than unsigned long, and fixing intrnal assumption that Word was as big as unsigned long.
Copied from Perforce
Change: 177814
ServerID: perforce.ravenbrook.com
(Windows7) and its SDK. The w3i3m9 pseudo platform has been removed and
w3i3mv adjusted for this framework.
Copied from Perforce
Change: 175966
ServerID: perforce.ravenbrook.com
(The VMCompact diag was calculating the live percentage by dividing by condemned size. Don't do this if condemned is zero.)
Copied from Perforce
Change: 172778
ServerID: perforce.ravenbrook.com
The VMCompact diag was calculating the live percentage by dividing by condemned size. Don't do this if condemned is zero.
Copied from Perforce
Change: 170441
ServerID: perforce.ravenbrook.com
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
arenavm.c VMCompact diag: also emit where chunks were gained but not lost during collection -- that is: collections where there was a vmem increase, and ArenaCompact was *not* able to return any chunks.
Copied from Perforce
Change: 170101
ServerID: perforce.ravenbrook.com
arenavm.c, trace.c, mpmst.h -- trace->preTraceArenaReserved, to show pre- and peak-vmem during collection
Copied from Perforce
Change: 170098
ServerID: perforce.ravenbrook.com
arenavm.c:
- M_whole, M_frac: print count of bytes as Megabytes
- diag on VMCompact after all client-requested traces, plus any others where we returned a chunk.
- show vmem change, and also trace cond, live / % / stuck(pip), notCond
mpm.c -- new "$3" format for 0-padding 3-char-wide field, for thousandths of a MB
zcoll.c -- try some new parameters for tests
diag.c -- just VMCompact diag
Copied from Perforce
Change: 170097
ServerID: perforce.ravenbrook.com
arenavm.c -- move chunk-return into new function "VMCompact".
(also, in VMArenaFinish, null out arena->primary in VMArenaFinish, so it is not left dangling).
arena.c, arenavm.c, mpm.h, mpmst.h, mpmtypes.h:
arena->class->compact: ArenaCompact, ArenaTrivCompact, VMCompact
trace.c -- traceReclaim calls ArenaCompact!
Copied from Perforce
Change: 170095
ServerID: perforce.ravenbrook.com