This is an archive of the discontinued LLVM Phabricator instance.

[XRay] Use TSC delta encoding for custom/typed events
ClosedPublic

Authored by dberris on Nov 5 2018, 11:23 PM.

Details

Summary

This change updates the version number for FDR logs to 5, and update the
trace processing to support changes in the custom event records.

In the runtime, since we're already writing down the record preamble to
handle CPU migrations and TSC wraparound, we can use the same TSC delta
encoding in the custom event and typed event records that we use in
function event records. We do the same change to typed events (which
were unsupported before this change in the trace processing) which now
show up in the trace.

Future changes should increase our testing coverage to make custom and
typed events as first class entities in the FDR mode log processing
tools.

This change is also a good example of how we end up supporting new
record types in the FDR mode implementation. This shows the places where
new record types are added and supported.

Depends on D54139.

Diff Detail

Repository
rL LLVM

Event Timeline

dberris created this revision.Nov 5 2018, 11:23 PM
mboerger added inline comments.Nov 5 2018, 11:56 PM
compiler-rt/lib/xray/xray_fdr_logging.cc
157 ↗(On Diff #172712)

why'd you not add dots at the end, these comments are all sentences.

llvm/lib/XRay/RecordInitializer.cpp
178 ↗(On Diff #172712)

why assert and not return an error?

dberris updated this revision to Diff 172717.Nov 6 2018, 12:59 AM
dberris marked an inline comment as done.

Address comments by @mboerger.

llvm/lib/XRay/RecordInitializer.cpp
178 ↗(On Diff #172712)

This invariant is required for the following math to make sense (getting the difference between the OffsetPtr and BeginOffset). Throughout LLVM, these invariants are checked through assertions, and aren't really recoverable errors from the caller's perspective.

mboerger accepted this revision.Nov 6 2018, 6:45 PM

LGTM

This revision is now accepted and ready to land.Nov 6 2018, 6:45 PM
This revision was automatically updated to reflect the committed changes.