In low memory situations, ControlAlloc may be unable to allocate
memory for GC messages. This needs to work flawlessly, but is
hard to test. To simulate it for testing purposes, do macro-magic
in traceanc.c, before the definition of TraceIdMessagesCreate.
Test all designed behaviour of TraceIdMessagesCreate failing.
See <design/message-gc#lifecycle>.
Copied from Perforce
Change: 166959
ServerID: perforce.ravenbrook.com
pre-allocate GC messages after the first trace, and verify that
everything still works, droppedMessages is incremented, and reported
as non-zero (in diagnostic varieties only) by global.c on
ArenaDestroy. Test passes.
Copied from Perforce
Change: 166956
ServerID: perforce.ravenbrook.com
re-create them immediately after a trace sends its last message.
Store them, one per TraceId, in ArenaStruct. Cope correctly if they
cannot be created (ControlAlloc fails). Destroy them correctly on
mps_arena_destroy. See job001989 and design/message-gc#lifecycle
(not yet written).
Copied from Perforce
Change: 166918
ServerID: perforce.ravenbrook.com
is not essential to Trace objects. (p4 integ'd from trace.c to
preserve ancestry).
Copied from Perforce
Change: 166900
ServerID: perforce.ravenbrook.com
and objects. So functions are now:
main
testscriptA
testscriptB
testscriptC
FAILS: intended failure of final script (to show that it does catch
failures).
Copied from Perforce
Change: 166877
ServerID: perforce.ravenbrook.com
Add it to makefiles.
Make a start on test file:
main
main2
test
testscript
So far, only counts messages, does not get _gc or _gs_start, does not
yet test finalization messages. But works, so useful checkpoint.
Copied from Perforce
Change: 166876
ServerID: perforce.ravenbrook.com
use DYLAN_* and make_dylan_vector facilities from fmtdytst
remove exact root p -- illegal reference to an incomplete object
use stack scanning instead
rename root as myroot to avoid confusion with mps root objects
Copied from Perforce
Change: 166864
ServerID: perforce.ravenbrook.com
message.c: rename MessageClocked() as MessageIsClocked()
check.h: better name in future improvement comments
Copied from Perforce
Change: 166801
ServerID: perforce.ravenbrook.com
function; MPS calls it synchronously on collection start/stop
(immediately after posting start/stop message). The callback
receives two ints: alertcode (start|stop; see mps.h), and whycode
(trace->why). Note: callback is also called for heap walk
start/stop.
amcss.c: show start/stop alerts.
Copied from Perforce
Change: 166703
ServerID: perforce.ravenbrook.com
- Keep counts of both collection start messages and collection end
messages. Upon receipt of these messages, format the collection
start/end reports as 'brackets' (makes it easier to see whether
allocation continues during the collection or not).
- If mps_collections has changed, report() messages before doing
anything else.
- (source code clarity) Guess that the naked "4" in the
mps_arena_has_addr test means "hitsWanted", and label it.
Copied from Perforce
Change: 166689
ServerID: perforce.ravenbrook.com
message.c: maintain postedClock field, set it with mps_clock() at post time;
amcss.c: call and display mps_message_clock() on _gc_start & _gc messages.
Copied from Perforce
Change: 166677
ServerID: perforce.ravenbrook.com
mpmst.h) to check it still builds, having rearranged
message functions into a consistent order.
Copied from Perforce
Change: 166588
ServerID: perforce.ravenbrook.com