diff options
author | Ben Gamari <ben@well-typed.com> | 2019-02-05 11:51:52 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2019-10-22 12:17:00 -0400 |
commit | 912e440e6f0277730b2ad611097f96588cc435a3 (patch) | |
tree | 3dce1b77ab9477342d24730aec229010f3098f29 /rts/Trace.h | |
parent | 06d51c4ef776ee1bf66e3603b4c6e4e2acf8ba3c (diff) | |
download | haskell-912e440e6f0277730b2ad611097f96588cc435a3.tar.gz |
rts: Tracing support for nonmoving collection events
This introduces a few events to mark key points in the nonmoving
garbage collection cycle. These include:
* `EVENT_CONC_MARK_BEGIN`, denoting the beginning of a round of
marking. This may happen more than once in a single major collection
since we the major collector iterates until it hits a fixed point.
* `EVENT_CONC_MARK_END`, denoting the end of a round of marking.
* `EVENT_CONC_SYNC_BEGIN`, denoting the beginning of the post-mark
synchronization phase
* `EVENT_CONC_UPD_REM_SET_FLUSH`, indicating that a capability has
flushed its update remembered set.
* `EVENT_CONC_SYNC_END`, denoting that all mutators have flushed their
update remembered sets.
* `EVENT_CONC_SWEEP_BEGIN`, denoting the beginning of the sweep portion
of the major collection.
* `EVENT_CONC_SWEEP_END`, denoting the end of the sweep portion of the
major collection.
Diffstat (limited to 'rts/Trace.h')
-rw-r--r-- | rts/Trace.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/rts/Trace.h b/rts/Trace.h index be4d844a6b..9b52c3cb65 100644 --- a/rts/Trace.h +++ b/rts/Trace.h @@ -304,6 +304,14 @@ void traceHeapProfSampleCostCentre(StgWord8 profile_id, CostCentreStack *stack, StgWord residency); #endif /* PROFILING */ +void traceConcMarkBegin(void); +void traceConcMarkEnd(StgWord32 marked_obj_count); +void traceConcSyncBegin(void); +void traceConcSyncEnd(void); +void traceConcSweepBegin(void); +void traceConcSweepEnd(void); +void traceConcUpdRemSetFlush(Capability *cap); + void flushTrace(void); #else /* !TRACING */ @@ -344,6 +352,14 @@ void flushTrace(void); #define traceHeapProfSampleCostCentre(profile_id, stack, residency) /* nothing */ #define traceHeapProfSampleString(profile_id, label, residency) /* nothing */ +#define traceConcMarkBegin() /* nothing */ +#define traceConcMarkEnd(marked_obj_count) /* nothing */ +#define traceConcSyncBegin() /* nothing */ +#define traceConcSyncEnd() /* nothing */ +#define traceConcSweepBegin() /* nothing */ +#define traceConcSweepEnd() /* nothing */ +#define traceConcUpdRemSetFlush(cap) /* nothing */ + #define flushTrace() /* nothing */ #endif /* TRACING */ |